我們需要安裝兩個東西,NASM 和 GCC,用來將 .asm 程式編譯成 Object file,並連結成可執行檔案

NASM

NASM 網站上下載並安裝 NASM
將 NASM 的路徑加入系統環境變數Path (預設應該是安裝在 C:\Users\用戶名\AppData\Local\bin\NASM)
加入後可以在 CMD 輸入

nasm -v

來查看是否設定成功
如果設定成功應該如下
alt text

GCC

下載並安裝 MSYS2
進入 MSYS2 MINGW64
輸入

pacman -Syu
pacman -S mingw-w64-i686-gcc

然後將 mingw32 加入系統環境變數Path(預設是安裝在 C:\msys64\mingw32\bin)
加入後重啟電腦
然後在 CMD 輸入

gcc --version

成功安裝應該顯示如下
alt text

VSCode

進入 VSCode 並新增一個資料夾(路徑不要有中文)
Ctrl+Shift+B 選擇 設定建置工作 >> 從範本建立 task.json 檔案 >> Others
task.json 更改為如下

// task.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build, Link and Run (NASM + GCC)",
            "type": "shell",
            "command": "cmd",
            "args": [
                "/c",
                "nasm -f win32 ${file} -o ${fileDirname}/${fileBasenameNoExtension}.o && gcc \"${fileDirname}/${fileBasenameNoExtension}.o\" -o \"${fileDirname}/${fileBasenameNoExtension}.exe\" -m32 -nostartfiles -lmsvcrt && \"${fileDirname}/${fileBasenameNoExtension}.exe\""
            ],
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

執行

我們創建一個 hello.asm 檔案

; hello.asm

section .data
    msg db "Hello World!", 0xd, 0xa, 0

section .text
    global _main
    extern _printf

_main:
    push msg
    call _printf
    add esp, 4
    
    xor eax, eax
    ret

按下 Ctrl+Shift+B 他就會自動編譯並執行了
alt text