8086/8088匯編語言,是在DOS環(huán)境下運行的編程語言,匯編語言是針對8086/8088 CPU的,凡兼容80X86指令系統(tǒng)的CPU ,都可以正常運行調(diào)試。如目前使用的Windows 2000 / Windows 2003 / Windows XP等系統(tǒng)下都可以編輯、調(diào)試匯編語言程序。
一、進(jìn)入編輯調(diào)試環(huán)境 1.開始→運行,在運行框輸入CMD而后回車,即進(jìn)入DOS環(huán)境。
2.開始→程序→附件→C:命令提示符,也可進(jìn)入DOS 環(huán)境。
二、使用到的軟件程序
1.源程序編輯軟件:EDIT.EXE,也可用其他任意編輯軟件,如Windows環(huán)境下記事本,但最后擴(kuò)展名要改為.ASM,否則無法匯編。
2.匯編程序(MASM.EXE或TASM.EXE),將編輯好的.ASM源程序匯編成目標(biāo)文件.OBJ。OBJ是程序編譯后的二進(jìn)制文件,在通過鏈接器和資源文件鏈接就成exe文件,OBJ只給出了程序的相對地址,而EXE是絕對地址。
3.連接程序(LINK.EXE或TLINK.EXE),LINK又稱鏈接器,把一個或多個目標(biāo)文件(.obj)鏈接成可執(zhí)行(.exe)文件。
4.調(diào)試程序(DEBUG.EXE或TD.EXE),DEBUG,俗稱“抓臭蟲”, DOS系統(tǒng)有力的偵錯,跟蹤程序運行,檢查系統(tǒng)數(shù)據(jù)的工具程序,它是在字符界面下以單字符命令方式工作。要很好地使用它必須具備一定的匯編程序設(shè)計和硬件基本知識的能力,當(dāng)然,它為匯編語言程序員提供了有效的調(diào)試手段。
需要說明的是,EDIT、MASM、LINK、DEBUG是微軟操作系統(tǒng)推出的匯編連接調(diào)試工具。在一般教學(xué)上使用就足夠了。
而TASM、TLINK、TD是Borland公司推出的。到目前為止,TASM的最后一個版本是5.0版,這個版本支持WIN32編程,并單獨為WIN32編程附帶有一整套32位程序:32位的編譯器TASM32.EXE、連接器TLINK32.EXE和資源編譯器BRC32.EXE。與這些32位程序?qū)?yīng)的16位工具在軟件包中依然存在,文件名為TASM.EXE,TLINK.EXE和BRC.EXE等。
三、程序編輯、匯編、連接操作步驟
下面以編輯下面小例子,程序運行時在屏幕上顯示“1 2 3 4 5 6 7 8 9”九個數(shù)字。說明匯編語言程序編輯過程。
例5,編程,在屏幕上顯示1-9數(shù)字,中間留一空格,用INT 21H 2#調(diào)用。
程序:(xqb5.asm)
title 在屏幕上顯示1_9 ASCII數(shù)字
STACK SEGMENT PARA STACK 'SHOW1_9'
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START: MOV CL,0H ;計數(shù)單元置初值0
MOV BL,30H ;ASCII"0"
AGAIN: MOV DL,20H ;顯示ASCII空格
MOV AH,2 ;2#調(diào)用
INT 21H
INC BL ;bl--bl+1
MOV DL,BL
MOV AH,2 ;2#調(diào)用,顯示ASCII字符
INT 21H
INC CL
CMP CL,09H ;比較cl<=9?
JNE SHORT AGAIN ;若cl<=9,轉(zhuǎn)again
MOV AH,4CH ;若cl>9,退出程序,反dos
INT 21H
CODE ENDS
END START
??;運行驗證:
??;匯編、連接后,直接C:\123\>xqb5 <回車>
;顯示1 2 3 4 5 6 7 8 9
;按Ctrl+C,返回DOS窗口.
1.確定源程序的存放目錄
通過Windows的資源管理器找到C盤的根目錄,在C盤的根目錄窗口中點擊右鍵,在彈出的菜單中選擇“新建”→“文件夾”,并把新建的文件夾命名為123。并把EDIT.EXE、MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷貝到此目錄中。
2.編輯源程序XQB5.ASM
(1)開始→運行→在彈出的窗口中輸入CMD,點確定,進(jìn)入DOS窗口
(2)執(zhí)行CD \123 ;進(jìn)入123子目錄
(3)執(zhí)行EDIT XQB5.ASM 回車。顯示EDIT編輯窗口。按上例格式進(jìn)行編輯。菜單可以用Alt鍵激活,然后用方向鍵選擇菜單項,也可以直接用Alt-F打開File文件菜單,用Alt-E打開Edit編輯菜單,等等。
(4)編輯完后,存盤。用Alt-F打開File菜單,用其中的Save功能將文件存盤。如果在鍵入EDIT命令時未給出源程序文件名,則這時會彈出一個“Save as”窗口,在這個窗口中輸入你想要保存的源程序的路徑和文件名(本例中為C:\123\XQB5.ASM)。
注:也可用Windows環(huán)境下記事本進(jìn)行編輯,存盤為.TXT文件,但要重新改名后擴(kuò)展名要為.ASM。
3.匯編源程序形成目標(biāo)文件OBJ
使用MASM匯編程序?qū)庉嫼玫腁SM文件進(jìn)行匯編,形成OBJ目標(biāo)文件,同時也對ASM文件進(jìn)行查錯,顯示錯誤之處所在的行。
執(zhí)行開始→程序→附件→命令提示符,打開DOS命令提示符窗口,然后用CD 命令轉(zhuǎn)到源程序目錄\123下。
C:>CD \123<回車>
C:\123>MASM XQB5.ASM<回車>
系統(tǒng)會提示讓你輸入目標(biāo)文件名(Object filename),并在方括號中顯示默認(rèn)的目標(biāo)文件名,建議輸入目標(biāo)文件的完整路徑名,如:C:\123\XQB5.OBJ〈回車〉。后面的兩個提示為可選項,直接按回車。注意,若打開MASM程序時未給出源程序名,則MASM程序會首先提示讓你輸入源程序文件名(Source filename),此時輸入源程序文件名XQB5.ASM并回車,然后進(jìn)行的操作與上面完全相同。
如果沒有錯誤,MASM就會在當(dāng)前目錄下建立一個HELLO.OBJ文件(名字與源文件名相同,只是擴(kuò)展名不同)。如果源文件有錯誤,MASM會指出錯誤的行號和錯誤的原因。源程序的錯誤類型有兩類:
(1)警告錯誤(Warning Errors)。警告錯誤不影響程序的運行,但可能會得出錯誤的結(jié)果。此例中無警告錯誤。
(2)嚴(yán)重錯誤(Severe Errors)。對于嚴(yán)重錯誤,MASM將無法生成OBJ文件。
在錯誤信息中,園括號里的數(shù)字為有錯誤的行號,后面給出了錯誤類型及具體錯誤原因。如果出現(xiàn)了嚴(yán)重錯誤,你必須重新進(jìn)入EDIT編輯器,根據(jù)錯誤的行號和錯誤原因來改正源程序中的錯誤,直到匯編沒有錯為止。
4.使用LINK連接程序形成可執(zhí)行文件EXE
匯編程序產(chǎn)生的是二進(jìn)制目標(biāo)文件(OBJ文件),并不是可執(zhí)行文件,要想使我們編制的程序能夠運行,還必須用連接程序(LINK.EXE)把OBJ文件轉(zhuǎn)換為可執(zhí)行的EXE文件。在DOS窗口具體操作如下:
C:>CD \123 <回車>
C:\123>LINK xqb5.OBJ <回車>
進(jìn)入LINK程序后,都會提示讓你輸入可執(zhí)行文件名(Run file),并在方括號中顯示默認(rèn)的可執(zhí)行文件名,建議輸入可執(zhí)行文件的完整路徑名,如:C:\123\XQB5.EXE〈回車〉。后面的兩個提示為可選項,直接按回車。注意,若打開LINK程序時未給出OBJ文件名,則LINK程序會首先提示讓你輸入OBJ文件名(Object Modules),此時輸入OBJ文件名xqb5.OBJ并回車,然后進(jìn)行的操作與上面完全相同。
如果沒有錯誤,LINK就會建立一個xqb.EXE文件。如果OBJ文件有錯誤,LINK會指出錯誤的原因。如鏈接時有其它錯誤。須檢查修改源程序,重新匯編、連接,直到正確。
5.運行連接好的可執(zhí)行程序EXE
建立了xqb5.EXE文件后,就可以直接在DOS下運行此程序,如下所示:
C:\ CD\123
C:\123> xqb5〈回車〉
1 2 3 4 5 6 7 8 9
按Ctrl+C,返回原目錄.
C:\123>
程序運行結(jié)束后,返回DOS。如果運行結(jié)果正確,那么程序運行結(jié)束時結(jié)果會直接顯示在屏幕上。有些程序需按Ctrl+c鍵或Ctrl+Break來終止程序運行。如果程序不顯示結(jié)果,或程序進(jìn)入死循環(huán),這就要用DEBUG或TD來調(diào)試。
6.程序調(diào)試
調(diào)試程序可用DEBUG或TD來調(diào)試,也可在程序中設(shè)置斷點,分段調(diào)試。
Debug是為DOS提供的有力的偵錯,跟蹤程序運行,檢查系統(tǒng)數(shù)據(jù)的工具程序,它是在字符界面下以單字符命令方式工作。要很好地使用它必須具備一定的匯編程序設(shè)計和硬件基本知識的能力。
TD是一功能較強(qiáng)的調(diào)試跟蹤工具,在DOS窗口,執(zhí)行C:\123> TD xqb5.exe,即可啟動并載入XQB>EXE文件。CPU窗口顯示了CPU和內(nèi)存的整個狀態(tài)。利用CPU窗口可以:
* 在代碼區(qū)內(nèi)使用嵌入?yún)R編,輸入指令或?qū)Τ绦蜻M(jìn)行臨時性修改。
* 存取數(shù)據(jù)區(qū)中任何數(shù)據(jù)結(jié)構(gòu)下的字節(jié),并以多種格式顯示或改變它們。
* 檢查和改變寄存器(包括標(biāo)志寄存器)的內(nèi)容。
CPU窗口分為五個區(qū)域:代碼區(qū)、寄存器區(qū)、標(biāo)志區(qū)、數(shù)據(jù)區(qū)和堆棧區(qū)。
在五個區(qū)域中,光標(biāo)所在區(qū)域稱為當(dāng)前區(qū)域,用戶可以使用Tab鍵或Shift-Tab鍵切換當(dāng)前區(qū)域,也可以在相應(yīng)區(qū)中單擊鼠標(biāo)左鍵選中某區(qū)為當(dāng)前區(qū)。