Basic Support for MASM/TASM v2.x
Chinese | English
中文 in Gitee
Basic language support for assembly in DOS environment.
It may be suitable for studying MASM/TASM in DOSBox
or courses like Principles and Peripheral Technology of Microprocessor.
- Language Support: Offers grammar validation, basic outline view, hover tips, and code formatting support for DOS assembly language
- Status Bar: Quick access to switch DOS emulator and assembler independently, with executable paths shown
- Run and Debug: Right-click on the VS Code editor panel to run and debug your code
- Diagnose: Processes the output of ASM tools and displays diagnostics in VS Code
- Supports all platforms including Web — see Platform Support
- Note: This extension is built for learning assembly in DOS, and it does not work with Win32 assembly
Demo
Demo 1: Language Features
| Format Code |
Diagnose |
 |
 |
The extension provides language features such as hover hints, code formatting, and jump to definition for the assembly language ID.
The built-in formatter follows the style of sample .asm files:
- Labels at column 0, instructions indented with tabs
- Top-level directives (
.386, .model, .STACK, include, etc.) stay at column 0
- Blank lines preserved as truly empty
- Original operand spacing and comments preserved
- Formatting is idempotent — running it twice produces the same result
- Use the Format Document command (
Shift+Alt+F) to apply formatting.
You can also use other assembly language support extensions (e.g., the asm-collection language ID) by installing ASM Code Lens.
Demo 2: Run and Debug
| Using TASM via DOSBox |
Using MASM via jsdos |
 |
 |
When editing assembly files, right-click in the editor panel to access the following options:
- Open Emulator: Launch DOSBox and prepare the runtime environment
- Run ASM Code: Assemble, link, and execute the program
- Debug ASM Code: Assemble, link, and debug the program
Run/Debug Notes
- The extension copies your file to an isolated directory before assembling, to keep your workspace clean.
- Note that this extension is not optimized for complex projects.
Project Configuration with dosasm.jsonc
For multi-file projects or custom build workflows, you can place a dosasm.jsonc file in your project directory. When you right-click an .asm file to run/debug, the extension searches upward from the file's directory for dosasm.jsonc. If found, it uses the configuration defined there instead of the default settings.
Example dosasm.jsonc (see dosasm.jsonc v1):
Template variables:
${file} — the full path of the assembly file in DOS
${filename} — the file path without extension
${actionFolder} — the directory containing the dosasm.jsonc file
${<built-in>/TASM.jsdos} — the extracted bundle folder path (the extension automatically extracts the .jsdos zip bundle and mounts the resulting folder)
How it works:
- The
action.before commands set up the DOS environment (mount drives, set PATH, etc.)
- The
action.run commands assemble, link, and execute the program
- The
action.debug commands assemble, link, and launch the debugger
- The
action.open commands are used when opening the emulator without running
- When
dosasm.jsonc is found, the default single-file mount behavior is skipped — the before section fully controls the environment setup
Copy file before run/debug:
action.copyFileAs (string | null): Controls whether the active file is copied before run/debug
- String: file is copied to this path (relative to the action folder)
- null: file is not copied, the original file path is used directly
- Bundle extraction:
${<built-in>/TASM.jsdos} references a built-in .jsdos zip bundle. The extension extracts this bundle to a folder and replaces the variable with the folder path, so you can mount it as a DOS drive
This extension interfaces with the DOSBox(-X) binary via Node.js's child_process module.
You must install DOSBox or DOSBox-X first to use this feature.
Since VS Code is primarily built with JavaScript (TypeScript), we support the WebAssembly (Wasm) version of DOSBox(-X) — namely js-dos.
The extension bundles all required js-dos files, and it uses js-dos as the default DOS emulator for Web platform support.
Docs & Acknowledgments & Licenses
Enjoy! 😊