Sublime Text 不支持汇编调试,需通过外部工具链联动;核心是用 DOSBox -debug 模式启动 DEBUG.EXE 或 TD,并配合 asm.bat 和 .sublime-build 调用,Sublime 仅负责启动与路径传递,不参与交互或源码映射。

Sublime Text 本身不支持汇编调试,得靠外部工具链联动
Sublime Text 是纯文本编辑器,没有内置汇编调试器(不像 Visual Studio 或 Radare2)。所谓“调试”,实际是手动或脚本化调用 DEBUG.EXE、TD(Turbo Debugger)或 DOSBox 内置的 -debug 模式,再配合 Sublime 的构建系统把输出/错误回传到面板。关键不是“在 Sublime 里点 F5 调试”,而是让编译后的 .exe 能在可控环境中单步执行并观察寄存器/内存。
DOSBox 启动时加 -debug 参数才能进调试模式
默认双击运行 .exe 不会触发调试界面;必须显式启用 DOSBox 的调试子系统。常见错误是只写 DOSBOX.exe hello.exe,结果程序一闪而过——因为没开调试入口。
-
DOSBOX.exe -debug -c "hello.exe":启动即进 DEBUG.EXE 环境,可输入t(trace)、r(register)、d(dump memory)等命令 - 若用
TD(需提前把TD.EXE放进 DOSBox 的C:\目录),应写成DOSBOX.exe -c "td hello.exe" -
-c后的命令必须用英文双引号包裹,路径含空格时尤其关键 - 确保
hello.exe和TD.EXE/DEBUG.EXE在同一 DOSBox 挂载目录下(如Z:\),否则td找不到文件
构建系统里不能直接调用 DEBUG.EXE,要分两步走
Sublime 的 cmd 构建命令本质是 shell 调用,而 DEBUG.EXE 是交互式 DOS 程序,无法被 Sublime 控制台捕获 stdin/stdout。强行写进 cmd 会导致构建卡死或报错 'DEBUG' is not recognized(因它不在 Windows PATH,而在 DOSBox 内部)。
- 正确做法:在
asm.bat末尾不直接跑DEBUG,而是启动带-debug的 DOSBox 并加载目标程序 - 例如修改
asm.bat最后一行:D:\DOSBox-0.74\DOSBOX.exe -debug -c "Z:\%1.exe" -
ASM.sublime-build中的"cmd"仍只调用asm.bat,不越级干预 DOSBox 启动逻辑 - 避免在构建系统里设
"shell": true同时又调交互程序——Sublime 构建面板不是终端模拟器,不支持交互式等待
寄存器/内存观察依赖 DOSBox 调试器自身,Sublime 只负责启动和路径传递
你看到的 AX=1234 BX=0000 是 DEBUG.EXE 或 TD 输出的,Sublime 做不了解析或高亮。容易忽略的点是:DOSBox 的 -debug 模式默认不显示符号信息,所有地址都是十六进制裸值,没法直接对应源码行号。
- 想关联源码,必须用
TD(Turbo Debugger),它支持加载.lst或.map文件,但 MASM32 默认不生成这些——需在ml.exe加/Fl参数生成列表文件 -
asm.bat中改汇编命令为:D:\masm32\bin\ml.exe /c /Fl %1.asm,再手动把%1.lst放进 DOSBox 的调试目录 - TD 启动后按
Alt+L加载列表,才能看到mov ax, data对应哪一行机器码 - Sublime 无法自动跳转到源码对应行——那是 IDE 的功能,Sublime 这里只是个“启动按钮”
-debug(0.74+ 才稳定)。别指望一键 F5 断点,先确认 DOSBOX.exe -debug -c "debug" 能弹出 DEBUG 提示符再说。


















