搭建一個順手的組語開發環境是學習與專案開發的第一步。本文以 Windows 平台搭配 MASM32 SDK 為例,詳細說明從作業系統安裝、工具獲取、環境變數設定、工作目錄建立到驗證編譯鏈接的完整流程,並提供實用的批次檔範本與 DOS 視窗操作技巧。
setup.exe,假設安裝至 D:\masm32。D:\masm32\bin 加入 PATH,建議使用專屬批次檔隔離環境。D:\exercises 存放原始碼與輸出。ML.EXE 與 LINK.EXE 是否正常運作。為避免污染全域環境,建議建立專用啟動批次檔 asmenv.cmd:
@echo off
set MASMHOME=D:\masm32
set PATH=.;%PATH%;%MASMHOME%\bin
@echo on
放置於 C:\mycmd\asmenv.cmd,並在系統 PATH 加入 C:\mycmd (Win98 編輯 AUTOEXEC.BAT,Win2000+ 於「系統變數」編輯 PATH)。此法優點:
. 置於 PATH 首位,優先使用當前目錄工具。開啟命令提示字元 (Win98: command,Win2000+: cmd),依序輸入:
asmenv
d:
cd \exercises
ml /help
link /?
若顯示大量參數說明,代表編譯器 (ML.EXE) 與連結器 (LINK.EXE) 已就緒。若出現 'ml' 不是內部或外部命令,請檢查 %MASMHOME%\bin 是否確實在 PATH 中。
| 工具 | 常用參數 | 說明 |
|---|---|---|
ML.EXE | /c /coff /Cp /nologo | 組譯為 COFF 目標檔,保留大小寫 |
LINK.EXE | /SUBSYSTEM:WINDOWS /LIBPATH:"D:\masm32\lib" | 連結為 Windows GUI 程式 |
RC.EXE | /r /fo"out.res" "in.rc" | 編譯資源腳本 |
CVTRES.EXE | /MACHINE:IX86 "out.res" | 資源轉 COFF 目標檔 |
@echo off
set MASMHOME=D:\masm32
set PATH=%MASMHOME%\bin;%PATH%
ml /c /coff /Cp /nologo main.asm
rc /r /fo main.res main.rc
link /SUBSYSTEM:WINDOWS /LIBPATH:"%MASMHOME%\lib" main.obj main.res /OUT:main.exe
儲存為 build.bat 放在專案目錄,單指令完成編譯、資源編譯、連結。
Win10/11 新版命令提示字元/終端機已支援直接 Ctrl+C/V 及滑鼠選取自動複製。
nasm、yasm、gas (GNU as) 等組譯器,搭配 ld 連結器。~/.bashrc 或 ~/.profile:export PATH=$PATH:/opt/nasm/bin。| 現象 | 可能原因 | 解決方向 |
|---|---|---|
ml 無法辨識 | PATH 未含 bin 目錄 | 檢查 asmenv.cmd 路徑與系統 PATH |
| 連結錯誤 LNK2001 | 缺少 includelib 或 /LIBPATH | 確認 includelib user32.lib kernel32.lib 及連結器路徑 |
| 資源編譯失敗 | rc.exe 版本不符或路徑錯誤 | 使用 MASM32 附屬 rc.exe,指定完整路徑 |
| 執行檔閃退 | 缺少 ExitProcess 或訊息迴圈錯誤 | 檢查 WinMain 返回與 ExitProcess 呼叫 |
良好的環境建置能讓您專注於組語邏輯而非工具鏈瑣事。掌握 asmenv.cmd 隔離環境、build.bat 自動化建置、DOS 視窗編輯技巧,即可輕鬆開啟 Windows 組語開發之旅。