本學期學校安排有匯編語言這門課,需要自己搭建匯編語言開發環境,特此寫下本文記錄搭建過程.
關于搭建匯編語言開發環境的教程,我也找了許多,可看下來卻依舊一頭霧水,經過本人摸索,同時結合網上教程,欲寫下這篇易懂的文章.
工具介紹:DOSBox是一個DOS模擬程序,由于它采用的是SDL庫,所以可以很方便的移植到其他的平臺.目前,DOSBox已經支持在Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系統中運行.不少DOS下的游戲都可以直接在該平臺上運行.
工具官網:DOSBox, an x86 emulator with DOS
項目主頁:https://sourceforge.net/projects/dosbox/
下載鏈接1(32位): http://sourceforge.net/projects/dosbox/files/dosbox/0.74/DOSBox0.74-win32-installer.exe/download/
下載鏈接2(這個是我下載好的,可能會快一點): https://idefun.lanzoux.com/i4TQgm4zjkf/
下載鏈接: https://idefun.lanzoux.com/i4TQgm4zjkf/
匯編工具截圖
雙擊運行DOSBox安裝程序
點擊next
選擇安裝位置(我選擇都是D:\DOSBox)然后點擊install即可
安裝位置要記得,后面要用
安裝完畢創建一個工作目錄(目錄位置及目錄名可自定義)
我的是在D:/DOSBox/Debug
之后再在Debug下創建兩個文件夾ASM(放自己寫的匯編程序)和MASM(放匯編工具)
將匯編工具放入MASM文件夾
打開DOSBox安裝目錄(我的在D:\DOSBox)
打開后找到DOSBox 0.74 Options.bat這個批處理文件
直接雙擊運行會出現一個記事本
使用快捷鍵Ctrl+F查找其中的[autoexec]部分(一般在文件末尾)
在文件中添加下列內容并保存
MOUNT F D:\DOSBox\Debug
set PATH=%PATH%;F:\MASM;
F:
cd F:\ASM
cls
命令解釋:
#掛載工作目錄掛載到虛擬盤符F(虛擬盤符可自定義,命令不區分大小寫)
MOUNT F D:\DOSBox\Debug
#添加系統臨時變量(此時的F代表的是D:\DOSBox\Debug)
set PATH=%PATH%;F:\MASM;
#轉到F盤符
F:
#切換到F:\ASM目錄
cd F:\ASM
#執行一次清屏
cls
如果不加cls,打開會是這樣
加上cls,打開會是這樣(我覺得更美觀,依個人喜好)
注意:不進行此種配置的話,每次打開DOSBox是需要手動輸入上述命令,非常麻煩
快捷鍵 | 作用 |
Alt+Enter | 切換全屏 |
Ctr+F1 | 改變鍵盤映射 |
Alt+Pause | 暫停模擬 |
Ctrl+Alt+F5 | 開始/停止錄制視頻 |
Ctrl+F4 | 交換掛載的磁盤映像,也就是更新磁盤文件 |
Ctrl+F5 | 截圖 |
Ctrl+F6 | 開始/停止錄制聲音 |
Ctrl+F7 | 減少跳幀 |
Ctrl+F8 | 增加跳幀 |
Ctrl+F9 | 關閉DOSBOX |
Ctrl+F10 | 捕捉/釋放鼠標 |
Ctrl+F11 | 模擬減速 |
Ctrl+F12 | 加速模擬 |
Alt+F12 | 不鎖定速 |
注意:以上快捷鍵我并沒有全部測試,更多詳細信息參見README.txt(在DOSBox安裝目錄中的Documentation里面)
初始的界面很小,且不能直接拉伸界面,所以有需要的可以按照下面的方法調整一下
雙擊打開DOSBox 0.74 Options.bat
使用快捷鍵Ctrl+F查找windowresolution字段
將
windowresolution=original
output=surface
改為
windowresolution=800x500 #800x500為自定義大小,可修改
output=opengl
注意:不用刪除原來的語句,在前面加上#注釋掉即可
保存后,重啟DOSBox生效
關于創建并編輯文件,如果你的工作目錄(掛載的目錄)有EDIT.COM文件(我提供的匯編工具包中有),那么你就可以在DOSBox中創建并編輯文件,如果沒有請使用我提供的工具包或者耐心往下看.
打開DOSBox使用下面命令創建并編輯test.asm文件
edit test.asm
回車后進入下面界面即可進行編輯(注意:鼠標箭頭只能在編輯器里活動,想將鼠標退出來的話可以用Ctrl+F10組合鍵退出)
下面以此種方式創建test.asm文件
新建文本文檔,將下面代碼復制到里面并保存
datas segment
buf db'Hello, World!$'
datas ends
stacks segment stack
db 200 dup(0)
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
mov dx,seg buf
lea dx,buf
mov ah,09h
int 21h
mov ah,4ch
int 21h
codes ends
end start
之后重命名為test.asm
打開DOSBox輸入下面命令
masm test.asm
回車后會詢問文件名,建議直接回車
編譯程序提示輸入交叉引用文件的名稱,這個文件同列表文件一樣,是編譯器將源程序編譯為目標文件過程中產生的中間結果.可以讓編譯器不生成這個文件,直接按Enter鍵即可
可以像上圖一樣分別輸入文件名,打開ASM查看如下
本文全部默認即不分別輸入文件名直接回車
打開ASM文件夾查看如下
繼續輸入命令
link test.obj
運行完畢,查看ASM文件夾
繼續執行下列命令
debug test.exe
debug是Dos、Windows提供的實模式(8086方式)程序的調試工具
命令 | 作用 |
R命令 | 查看、改變CPU寄存器的內容 |
D命令 | 查看內存中的內容(機器指令形式)(16進制顯示) |
E命令 | 改寫內存中的內容,即提供指令(使用機器指令),用得比較少,多為A命令 |
U命令 | 查看內存中的內容(將機器指令形式轉換為匯編指令的形式)(反編譯) |
T命令 | 執行一條匯編(機器)指令(就是執行當前指令緩沖器中的指令) |
A命令 | 相比較E,使用匯編指令進行內存修改——向內存提供機器指令 |
P命令 | 在遇到匯編指令為int xx 時,使用p指令結束(否則CPU會指向一個 |
G命令 | 執行完exe運行結果顯示 |
Q命令 | 退出debug |
?命令 | 查看指令幫助 |
標識名 | 置位 | 復位 |
溢出Overflow(是否) | OV | NV |
向Direction(減量/增量) | DN | UP |
中斷Interrupt(允許/屏蔽) | EI | DI |
符號Sign(負正) | NG | PL |
零Zero(是否) | ZR | NZ |
輔助進位Auxiliary Carry(是否) | AC | NA |
奇偶Parity(偶奇) | PE | PO |
進位Carry(是否) | CY | NC |
改變標志位的值
rf
直接回車退出修改
使用D命令,debug將輸出3部分內容:
在一進入debug后,用D命令直接查看,將列出debug預設的地址處的內容
使用d 段地址:偏移地址查看(以d 1000:0為例)
格式:d 段地址:偏移地址
使用"d 段地址:偏移地址"的格式來查看,debug將列出從指定內存單元開始的128個內存單元的內容
在使用"d 段地址:偏移地址"之后,接著使用D命令,可列出后續的內容
也可以指定D命令的查看范圍,此時采用"d 段地址:起始偏移地址 結尾偏移地址"的格式
若輸入的地址不是16的倍數,則輸出效果是這樣的
將內存1000:0-1000:9單元中的內容分別寫為0、1、2、3....、9,可以用"e 段地址:起始地址 數據 數據 數據 ……"的格式來進行
用E命令以提問的方式來逐個地修改從某一地址開始的內存單元中的內容
可以用E命令向內存中寫入字符
也可以用E命令向內存中寫入字符串
用E命令向內存中寫入機器碼,用T命令執行內存中的機器碼
e 1000:0 b8 01 00 b9 02 00 01 c8
機器碼 | 對應的匯編指令 |
b80100 | mov ax,0001 |
b90200 | mov cx,0002 |
01c8 | add ax,cx |
用E命令向從1000:0開始的內存單元中寫入了8個字節的機器碼
用D命令查看內存1000:0~1000:1f中的數據(從數據的角度看一下寫入的內容)
用U命令查看從1000:0開始的內存單元中的機器指令和他們所對應的匯編指令
對機器代碼反匯編顯示
u 地址
該命令從指定地址開始,反匯編32個字節,若地址省略,則從上一個U命令的最后一個指令的下一個單元開始顯示32個字節
u 范圍
輸入?查看更多命令
結果如下:
最近看王爽老師的《匯編語言》,看賀利堅老師的講課視頻學習匯編語言。
用的dosbox配合masm編寫調試程序,在dosbox下寫程序感覺很別扭。
現在需要一個更好的集成IDE一樣的開發環境。我試用了emu8086等軟件。
最后發現使用MasmPlus+Dosbox就能很好的配合。另外還支持win32程序的開發。
廢了很大力氣將用的軟件都組合了起來,感覺很方便,分享給大家使用。
綠色,解壓后即可使用。
鏈接:https://pan.baidu.com/s/13dlMZ76ghlMnlHRnr34MbQ?pwd=763w
提取碼:763w
解壓雙擊MASMPlus.exe執行。
使用DOS EXE工程模板,那個DOS COM的程序在Dosbox里執行會有亂碼,感覺很奇怪。
第一個DOS EXE ,獨立單個文件擴展名叫asm就行。
全部編譯完成后,選擇工具里的DOSBOX。
然后就打開dosbox了并自動運行編譯的exe,工具被裝載到Z盤,并被設置為當前路徑,可以使用debug.exe和edit.exe等程序。
有語法提示,能寫dos exe 也能win32 的程序,另外把資源編輯的程序也加入到了工具里。我個人覺得非常好用debugDD里面放的是工具。