Linux 下使用 MASM 編譯組合語言
文章目錄
最近在學習王爽的《匯編語言》(組合語言),書裡面教的內容以 16 位元的 Intel 8086 CPU 為學習平台,而教科書上使用的編譯器是微軟的 MASM,語法也是針對 MASM 的,而非開源跨平台的 NASM,所以不能直接在 Linux 編譯執行,需要用 DOSBox 模擬 DOS 環境才行,MASM 比較封閉且支援平台少,如位元的果你打算學組合語言的話建議學 NASM 語法,要不是學校要求用 MASM 我也想用 NASM 編譯。
安裝 DOSBox
DOSBox 使用 GPL 許可證發佈,各大 Linux 發行版軟體倉庫應該都有。
|
|
下載 MASM 程式
本來想說 Windows 目錄裡面應該有 MASM 的工具,後來的版本好像拿掉了,之後在網路上找到了並打包了一份上傳到 Google 雲端硬碟。
下載連結:百度雲(網友上傳,提取碼:3akd
) | Google Drive
設定
我們要先建立一個目錄來存放我們寫的程式碼和 MASM 工具,並在 DOSBox 啟動時掛載才能使用。
|
|
然後把下載的 MASM 解壓放到 ~/dos/masm
中準備掛載。
產生設定檔
在終端機不帶參數執行 DOSBox,會自動產生設定檔。
|
|
掛載設定
設定檔存在 ~/.dosbox/
,裡面有個副檔名為 .conf
的檔案。
$ ls ~/.dosbox
dosbox-0.74-3.conf
在設定檔最後 [autoexec]
的地方寫入掛載指令,這幾行指令的作用是將 ~/dos
掛載到 DOSBox 的 D 槽,並將 masm
加入環境變數。
|
|
如果你找不到 DOSBox 的設定檔,直接在 DOSBox 輸入下面指令也可以。
|
|
執行測試
終端裡輸入 dosbox
,DOSBox 會讀取先前修改的設定檔,自動執行 [autoexec]
裡的指令,如果輸入 masm
能執行的話就可以開始編譯了,第一個會問檔名,輸入後按 Enter,剩下的問題都保持預設,直接 Enter 跳過。
然後 link
動態連結 obj
檔案,產生 exe
可執行檔,用法跟前面的 masm
大同小異,像這樣就會產生 sum.exe
。
dir
可以檢視當前目錄下的資料夾和檔案,和 Bash 的 ls
功能相同,如果編譯過程沒出現錯誤訊息就能看見你剛才編譯完成的 exe
。
debug
也能正常操作,可以用這工具檢視記憶體內容,按 q
退出。
Reference
文章作者 Chun Yu
上次更新 2019-10-08