使用DOSBox在x64位下搭建彙編環境win7、8、10
軟體安裝
1. debug.exe,masm.exe,link.exe,edit.com等彙編工具,一般32位的windows系統有自帶,但64位系統下並沒有,而且將32位系統下的工具拷貝到64位系統下並不能使用。我們可以藉助DOSBox工具來使用它們。2 下載並安裝3DOSBox
下載DOSBox(http://www.dosbox.com/),然後安裝即可(可修改安裝路徑,放在D盤)。
3 準備debug.exe,masm.exe,link.exe,edit.com。
可以從Win7_32bit作業系統中拷貝一份,或者從網上下載debug.exe,masm.exe,link.exe,edit.com這幾個程式。
2. 使用
1. DOSBox安裝完成後,開啟,可發下它的提示符是:“Z:\>”,這是DOSBox裡的虛擬盤。我們需要更改到我們自己的碟符,但是如果你直接更改的話,它會提示你錯誤。你首先需要mount到自己的目錄。2. 比如我們準備將D:\DEBUG作為我們自己的彙編測試目錄,則執行“mount C D:\DEBUG”命令,這樣C碟符也就虛擬成了自己本地電腦的D:\DEBUG目錄。我們在DOSBox中切換到C碟符時,也就實際上切換到了D:\DEBUG目錄。
3. 將debug.exe,masm.exe,link.exe,edit.com放置於D:\DEBUG目錄下,我們就能在DOSBox下直接使用它們了。
3. 配置
上面我們為使用DOSBox,要mount到我們本地目錄,但是我們每一次開啟DOSBox都要進行這兩步,有點麻煩,可以通過下面的操作來儲存配置。1. 開始->所有程式->DOSBox-0.74->Options->DOSBox 0.74 Options,在文字的最後位置找到“[autoexec]”:
[autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here.
2. 然後將下面的2條命令寫在此處:第一條命令的作用是mount目錄,第二條命令的作用是mount之後切換到D碟符。
mount C D:\DEBUG D:
4. 彙編程式的編輯編譯連線
可以參考《組合語言(第2版)》Ch4.3-Ch4.6的內容,或【2】。執行DOSBOX,在命令符C:\>下輸入命令:EDIT檔名.asm,啟動EDIT.EXE進入程式碼編輯狀態,並輸入如下樣例程式:
- 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,輸入空格可逐個位元組修改,回車停止修改。
4 參考資料
1)MASM百度百科:http://baike.baidu.com/view/1754206.htm
2)DOSBOX百度百科:http://baike.baidu.com/view/716885.htm
3)Win8下用DOSBox編寫組合語言:http://www.tuicool.com/articles/v2A3mm
【1】教你如何在64位WIN7系統下配置彙編軟體並執行彙編程式(http://wenku.baidu.com/view/cdda041552d380eb62946db2.html)
【2】彙編程式開發環境搭配(http://www.cnblogs.com/BoyXiao/archive/2010/11/06/1870397.html)