① windows 10 匯編環境的搭建
1 工具准備
1)下載
工具介紹:DOSBox 是一個 DOS 模擬程序,由於它採用的是 SDL 庫,所以可以很方便的移植到其他的平台。目前,DOSBox 已經支持在 Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系統中運行。不少DOS下的游戲都可以直接在該平台上運行。
2)下載MASM32
工具介紹:MASM32是國外的MASM愛好者Steve Hutchesson自行整理和編寫的一個軟體包,目前最高版本為11r版。MASM32並非指Microsoft的MASM宏匯編器,而是包含了不同版本工具組建的匯編開發工具包。它的匯編編譯器是MASM6.0以上版本中的Ml.exe,資源編譯器是Microsoft Visual Studio中的Rc.exe,32位鏈接器是Microsoft Visual Studio中的Link.exe,同時包含有其他的一些如Lib.exe和DumpPe.exe等工具。
注意:也可以直接下載由參考資料3作者提供的masm工具壓縮包,裡麵包含必要的匯編、鏈接、調試工具(網路網盤下載)。
2 安裝工具
1)安裝DOSBOX
安裝下載到的DOSBox0.74-win32-installer.exe,直接一路Next完成安裝。
2)配置DOSBOX
創建一個用於保存匯編工具(如MASM、Link、DEBUG等工具)和匯編文件(*.asm)的目錄,如:E:\DEBUG。
打開DOSBOX的安裝根目錄(默認安裝路徑:C:\Program Files\DOSBox-0.74),雙擊文件DOSBox 0.74 Options.bat,運行該批處理文件後系統會用文本文檔Notepad打開配置文件dosbox-0.74.conf。
將游標定位到dosbox-0.74.conf文件的[autoexec]節點(一般在該文件末尾),在文件中添加以下內容:
[plain] view plain
MOUNT C D:\DEBUG # 將目錄D:\DEBUG掛載為DOSBOX下的C:
set PATH=$PATH$;D:\DEBUG # 將D:\DEBUG寫入環境變數PATH中
3)安裝MASM32
可解壓安裝下載到的masm32v11r.zip,按默認配置安裝即可。
安裝結束後,可直接利用masm32v11r中的gedit.exe程序編寫、編譯和鏈接asm匯編程序。
注意,MASM32的替代方案:可直接從其他電腦上復制匯編工具DEBUG.EXE、EDIT.EXE、LINK.EXE、MASM.EXE等工具復制到E:\DEBUG文件夾下(復制時注意不能將32位系統中找到的上述工具復制到64位系統中使用)
3 樣常式序
1)運行DOSBOX,在命令符C:\>下輸入命令:EDIT文件名.asm,啟動EDIT.EXE進入代碼編輯狀態,並輸入如下樣常式序:
[plain] view plain
code segment
assume cs:code
start:
mov ax,5h
mov bx,6h
add ax,bx
mov ah,4ch ; 調用DOS的4C號功能
int 21h ; 退出DEBUG狀態,返回DOS
code ends
end start
2)保存文件後返回DOSBOX的命令行,輸入命令:MASM文件名.asm,生成目標文件文件名.OBJ(生成過程中可以修改目標文件名,直接回車可保持默認目標文件名)。
注意:此時可能生成三個文件:*.obj、*.lst和*.crf文件。其中,列表文件*.lst和交叉引用文件非必選,前者是匯編語言匯編的機器語言與匯編語言對照表,可用於調試;後者給出了用戶定義的所有符號和對每個符號定義、引用的行號。
3)輸入命令:LINK文件名.OBJ,鏈接生成可執行文件文件名.EXE。
注意:由於在上述代碼中未定義堆棧段,故在鏈接時會提示:LINK : warning L4021: no stack segment,因不會影響執行文件的生成,故暫時忽略。
另外,此時可能生成兩個文件:*.exe和*.map文件。其中,地址映射文件*.map給出內存地址分配的有關信息。
4)輸入命令:DEBUG文件名.EXE,在DEBUG的命令提示符「-」出現後開始調試,以下是部分調試命令及截圖:
輸入命令:R,查看程序運行前的寄存器組初始值;
輸入命令:U,查看程序反匯編代碼。從反匯編代碼中可看出,變數會被匯編為直接定址方式,使用變數在數據段內的有效地址表示。
輸入命令:T,單步調試;
輸入命令:D,觀察內存變化(D後不帶地址或范圍,默認顯示上一個D命令之後的80位元組內容);
輸入命令:G 地址,程序從當前位置直接運行到指定地址處停下。
輸入命令:E 地址修改內存中的內容,如:E DS:0100,輸入空格可逐個位元組修改,回車停止修改。