必须安装masm/tasm插件(tekin-cn版)并配合dosbox,配置emulator为dosbox、masmor tasm为tasm、tasm path指向含tasm.exe/tlink.exe/debug.exe的目录,且dosbox需在[autoexec]中正确mount并设置path。

TASM插件在VSCode里不能直接编译运行8086汇编,必须配合DOSBox模拟器 + 正确的路径挂载,否则右键“编译”会卡住或报 command not found 错误。
VSCode里装哪个插件才真正有用
只装 x86 and x86_64 Assembly 只能高亮语法,没用;关键要装 MASM/TASM 插件(作者是 tekin-cn,不是其他同名插件)。
这个插件的作用是:把右键菜单里的“编译”“调试”操作,翻译成对 tasm.exe、tlink.exe、debug.exe 的调用,并自动传入当前文件路径和输出目录。
安装后必须做两件事:
- 打开插件设置,把
Masmtasm.ASM: Emulator改为dosbox(不是jsdos,后者不支持debug) - 把
Masmtasm.ASM: MASMor TASM设为TASM(如果你用的是TASM套件,不是MASM) - 确认
Masmtasm.ASM: TASM Path指向你解压后的tasm.exe所在目录(例如C:\tasm),且该目录下同时有tlink.exe和debug.exe
DOSBox挂载路径写错会导致所有命令失败
VSCode插件调用 tasm 时,实际是在DOSBox里执行的。所以你本地的 tasm.exe 必须能被DOSBox访问到——靠的是 mount 和 PATH 配置。
常见错误配置:
- 在DOSBox配置文件(如
%LOCALAPPDATA%\DOSBox\dosbox-0.74-3.conf)末尾只写了mount c: C:\tasm,但没加c:切换盘符,导致后续tasm命令找不到 -
set PATH=%PATH%;c:\tasm写在了[autoexec]外面,DOSBox启动时不执行 - 路径含中文或空格(比如
C:\我的汇编\tools),DOSBox直接拒绝识别
正确写法(放在配置文件末尾的 [autoexec] 区块内):
[autoexec] mount c: C:\tasm c: set PATH=%PATH%;c:\tasm
改完重启DOSBox,进命令行敲 tasm 应该显示帮助信息,否则插件一定失败。
右键“编译”没反应?检查 .asm 文件头和 end 标签
VSCode插件依赖源码结构识别入口点,不是所有合法8086语法都能被它解析。
它默认只认这种格式:
- 必须有
assume cs:code, ds:data(哪怕你没显式定义data段) - 必须有明确的代码段起始标签(比如
start:或main proc) - 结尾必须是
end start(start要和前面的标签名一致) - 不能用
.model small+.stack这种MASM宏,TASM不原生支持,会报undefined symbol
最简可运行模板(保存为 hello.asm):
data segment
msg db 'Hello, 8086!$'
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
lea dx, msg
mov ah, 09h
int 21h
mov ah, 4Ch
int 21h
code ends
end start
debug调试时黑窗一闪就关?因为没加暂停逻辑
VSCode插件调用 debug.exe hello.exe 后,DOSBox会立即执行并退出,你根本看不到寄存器状态。
解决办法只有两个:
- 在
debug启动后手动输g(go)运行,再输q(quit)退出,中间可以输r看寄存器、d ds:0看内存 - 更稳的方式:不要用插件的“调试”,改用终端手动进DOSBox,然后依次敲:
tasm hello.asm→tlink hello.obj→debug hello.exe
注意:debug 不能加载 .exe 以外的格式,如果 tlink 出错生成了 .com,debug 会报 invalid file format —— 这时候得用 debug hello.com,但插件默认只认 .exe 后缀,容易踩坑。











