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 support try me in your browser by click vscode.dev.
- Note: This extension is built for learning assembly in DOS, and it does not work with Win32 assembly
| 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., theasm-collectionlanguage ID) by installing ASM Code Lens.
| 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
- 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.
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 thedosasm.jsoncfile${<built-in>/TASM.jsdos}— the extracted bundle folder path (the extension automatically extracts the.jsdoszip bundle and mounts the resulting folder)
How it works:
- The
action.beforecommands set up the DOS environment (mount drives, set PATH, etc.) - The
action.runcommands assemble, link, and execute the program - The
action.debugcommands assemble, link, and launch the debugger - The
action.opencommands are used when opening the emulator without running - When
dosasm.jsoncis found, the default single-file mount behavior is skipped — thebeforesection 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.jsdoszip 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.
- Special thanks to my teacher, Mr. Han. Wishing 2020 and the coming 2021 to be happy and fulfilling years.
- Inspired by Woodykaixa's masm-code project
- Thanks to the excellent DOS emulators: DOSBox-x, DOSBox, caiiiycuk's js-dos, and msdos-player
- Thanks to Roncho's extension Assembly (TASM) and blindtiger's masm for reference on assembly language support
- We welcome issues and pull requests to help improve this extension
- Acknowledgments
- Additional Information: Wiki
Enjoy! 😊



