MASM/TASM support for VS Code with syntax highlighting, IntelliSense, build & run, debugger, and DOS interrupt knowledge base — needs zero external tools.
Features
Syntax Highlighting
Instructions (blue), registers (orange), numbers (green), strings (red), comments (gray).
Supports .asm, .inc, .a86 files.
Code Snippets
Type main + Tab, proc, int21, db, dw, etc. for common patterns.
IntelliSense
- Mnemonic context: type
MO → suggests MOV, MOVSB, MOVSW
- Operand context: type
MOV A → suggests AX, AH, AL
- DOS functions:
MOV AH, <value> near INT 21H shows all 80+ AH function completions
Hover Documentation
Hover over any instruction (syntax + description), register, directive, or INT 21H (complete AH function table).
Real-Time Error Detection
Missing commas, unknown registers, unknown instructions flagged as you type.
Build & Run (Ctrl+Shift+F5)
| Engine |
Setting |
Description |
| Emulator (default) |
"emulator" |
Built-in 8086 CPU emulator. Works everywhere, no setup. Supports 60+ instructions, INT 21H (AH=01H,02H,09H,0AH,4CH), interactive input dialogs. |
| DOSBox |
"dosbox" or "auto" |
Assembles with real JWasm inside DOSBox, runs the EXE. Requires DOSBox installed. JWasm auto-downloaded on first use. |
Debugger (Ctrl+F5)
- Step Over (F11), Continue (Ctrl+F11), Stop (Shift+F11)
- Breakpoints (F9)
- Register TreeView with expandable high/low bytes
- Memory & Stack TreeView
- Current-line highlighting
DOS Interrupt Knowledge Base
Complete INT 21H function list (80+ entries) available in IntelliSense and hover.
Installation
- Install the VSIX:
Extensions → ⋮ → Install from VSIX... → asm-8086-toolkit-*.vsix
- Reload VS Code
Quick Start
- Create a
.asm file
- Write your 8086 assembly code
- Press Ctrl+Shift+F5 to build and run (uses internal emulator by default)
- Output appears in the ASM Emulator Output Channel
Using DOSBox (real assembler)
- Install DOSBox:
sudo apt install dosbox (Linux) or download
- Set
"assembly-8086.buildEngine": "auto" in VS Code settings
- On first build, JWasm assembler is auto-downloaded to
~/.asm-8086-toolkit/bin/
- Program is assembled and executed in DOSBox, output captured in VS Code
Settings
"assembly-8086.buildEngine": "emulator", // "emulator" | "dosbox" | "auto"
"assembly-8086.dosboxPath": "", // Path to DOSBox (empty = auto-detect)
"assembly-8086.tasmDir": "" // Path to assembler folder (empty = auto-download)
Keybindings
| Key |
Command |
| Ctrl+Shift+F5 |
Build & Run ASM |
| Ctrl+F5 |
Start Debugging |
| F11 |
Step Over |
| Ctrl+F11 |
Continue |
| Shift+F11 |
Stop Debugging |
| F9 |
Toggle Breakpoint |
Debugger
The debugger is a custom non-DAP implementation:
- Start: Place cursor on first instruction, press Ctrl+F5
- Step: F11 executes one instruction, highlights next
- Continue: Ctrl+F11 runs until breakpoint or end
- Breakpoints: F9 toggles on the current line
- View: Registers and Memory views in the ASM Debug activity bar
Example
.model small
.stack 100h
.code
main proc
mov ah, 02h
mov dl, 'H'
int 21h
mov dl, 'i'
int 21h
mov ax, 4C00h
int 21h
main endp
end main
Emulator Limitations
The built-in emulator supports 60+ common instructions and DOS INT 21H functions 01H, 02H, 09H, 0AH, 4CH. For programs using complex instructions, segment manipulation, or file I/O, switch to the DOSBox engine.
Supported Instructions
ADD, SUB, MUL, IMUL, DIV, IDIV, INC, DEC, NEG, AND, OR, XOR, NOT, SHL, SHR, SAR, ROL, ROR, RCL, RCR, MOV, MOVSB, MOVSW, XCHG, LEA, PUSH, POP, CMP, JMP, JE/JZ, JNE/JNZ, JG/JGE, JL/JLE, JA/JAE, JB/JBE, JC/JNC, JO/JNO, JS/JNS, JP/JNP, JCXZ, LOOP, LOOPE, LOOPNE, CALL, RET, RETF, IRET, INT, INTO, IN, OUT, STOSB, STOSW, LODSB, LODSW, SCASB, SCASW, CMPSB, CMPSW, REP, REPE, REPNE, NOP, HLT, CLC, STC, CMC, CLD, STD, CLI, STI, LAHF, SAHF, CBW, CWD, AAA, AAD, AAM, AAS, DAA, DAS
License
MIT