1. 程式人生 > >使用DOSBox在x64位下搭建彙編環境win7、8、10

使用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進入程式碼編輯狀態,並輸入如下樣例程式:

  1. code    segment  
  2.         assume cs:code  
  3.         start:  
  4.             mov ax,5h  
  5.             mov bx,6h  
  6.             add ax,bx  
  7.             mov ah,4ch    ; 呼叫DOS的4C號功能  
  8.             int 21h       ; 退出DEBUG狀態,返回DOS  
  9. code    ends  
  10.         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)