版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
匯編語言程序設(shè)計(jì)Debug是DOS,Windows都提供的實(shí)模式(8086方式)程序的調(diào)試工具,使用它可以查看CPU各種寄存器中的內(nèi)容,內(nèi)存的情況和在機(jī)器碼級跟蹤程序的運(yùn)行。本實(shí)驗(yàn)內(nèi)容進(jìn)入和退出DEBUG程序;學(xué)會Debug中的D命令、E命令、R命令、T命令、A命令、G命令等的使用,對于U命令、N命令、W命令等,也應(yīng)該使用一下;用Debug驗(yàn)證加法、減法、帶借位減、堆棧操作指令、乘法、除法的功能;內(nèi)存操作數(shù)及各種尋址方式的使用;調(diào)試程序DEBUGDEBUG程序的調(diào)用DEBUG命令的格式DEBUG的命令1.DEBUG程序的調(diào)用在DOS提示符下,可如下鍵入DEBUG啟動調(diào)試程序:
DEBUG[路徑\文件名][參數(shù)1][參數(shù)2]DEBUG后可以不帶文件名,僅運(yùn)行DEBUG程序。需要時(shí),再用N和L命令調(diào)入被調(diào)試程序。命令中可以指定文件名,則在運(yùn)行DEBUG的同時(shí),還將指定的程序調(diào)入內(nèi)存;參數(shù)1/2是被調(diào)試程序所需要用的參數(shù)。在DEBUG程序調(diào)入后,根據(jù)有無調(diào)試程序及其類型相應(yīng)設(shè)置寄存器組的內(nèi)容,發(fā)出DEBUG的提示符“-”,此時(shí)就可用DEBUG命令來調(diào)試程序。1.DEBUG程序的調(diào)用運(yùn)行DEBUG程序時(shí),如果不帶被調(diào)試程序,則所有段寄存器值相等,都指向當(dāng)前可用的主存段;除SP之外的通用寄存器都設(shè)置為0,而 SP指示當(dāng)前堆棧頂在這個(gè)段的尾部;IP=0100h;狀態(tài)標(biāo)志都是清0狀態(tài)。運(yùn)行DEBUG程序時(shí),如果帶入的被調(diào)試程序擴(kuò)展名不是.EXE,則BX,CX包含被調(diào)試文件大小的字節(jié)數(shù)(BX為高16位),其他同不帶被調(diào)試程序的情況。運(yùn)行DEBUG程序時(shí),如果帶入的被調(diào)試程序擴(kuò)展名是.EXE,則需要重新定位。此時(shí),CS:IP和SS:SP根據(jù)被調(diào)試程序確定,分別指向代碼段和堆棧段。DS=ES指向當(dāng)前可用的主存段,BX,CX包含被調(diào)試文件大小的字節(jié)數(shù)(BX為高16位),其他通用寄存器為0,狀態(tài)標(biāo)志都是清0狀態(tài)。2.DEBUG命令的格式DEBUG的命令都是一個(gè)字母,后跟一個(gè)或多個(gè)參數(shù):
字母[參數(shù)]命令的使用中注意:字母不分大小寫;只使用16進(jìn)制數(shù),沒有后綴字母;分隔符(空格和逗號)只在兩個(gè)數(shù)值之間是必須的,命令和參數(shù)間可無分隔符;每個(gè)命令只有按了回車鍵后才有效,可以用Ctrl+Break中止命令的執(zhí)行;命令如果不符合DEBUG的規(guī)則,則將以“error”提示,并用“^”指示錯(cuò)誤位置。命令的參數(shù)許多命令的參數(shù)是主存邏輯地址,形式是“段基地址:偏移地址”。其中,段基地址可以是段寄存器或數(shù)值;偏移地址是數(shù)值。如果不輸入段地址,則采用默認(rèn)值,可以是默認(rèn)段寄存器值。如果沒有提供偏移地址,則通常就是當(dāng)前偏移地址。對主存操作的命令還支持地址范圍這種參數(shù),它的形式是“開始地址結(jié)束地址”(結(jié)束地址不能具有段地址),或者是“開始地址L字節(jié)長度”。3.DEBUG的命令顯示命令D(Dump)修改命令E(Enter)填充命令F(Fill)寄存器命令R(Register)匯編命令A(yù)(Assembler)反匯編命令U(Unassembler)運(yùn)行命令G(Go)跟蹤命令T(Trace)繼續(xù)命令、退出命令Q(Quit)、命名命令、裝入命令寫盤命令、其他命令(1)顯示命令D(Dump)D命令顯示主存單元的內(nèi)容,格式如下:D[地址] ;顯示當(dāng)前或指定開始地址的主存內(nèi)容D[范圍] ;顯示指定范圍的主存內(nèi)容一個(gè)D命令只顯示“8行×16個(gè)字節(jié)”(80列顯示模式)內(nèi)容。例如:-d100 ;顯示數(shù)據(jù)段100h開始的主存單元-dcs:0 ;顯示代碼段的主存內(nèi)容-d2f0L20 ;顯示ds:2f0h開始的20h個(gè)主存數(shù)據(jù)(1)顯示命令D(Dump)例如,顯示當(dāng)前(接上一個(gè)D命令顯示的最后一個(gè)地址)主存內(nèi)容:-d1492:0100 41EBEA5EE30BF7C2-0100741C803C2E74
A..^……t..<.t1492:0110
47833E75E002750A-803E7CE134008114 G.>u..u..>|.4………1492:0170
751AEB12525153E8-28010AC07558807C u…RQS.(…uX.|邏輯地址連續(xù)16個(gè)字節(jié)的主存內(nèi)容16個(gè)字節(jié)的主存內(nèi)容的ASCII字符顯示不可顯示字符用點(diǎn)“.”表示(2)修改命令E(Enter)E命令用于修改主存內(nèi)容,有兩種格式:
E地址 ;格式1,修改指定地址的內(nèi)容 E地址數(shù)據(jù)表 ;格式2,用數(shù)據(jù)表的數(shù)據(jù)修改指定地 ;址的內(nèi)容格式1,是逐個(gè)單元相繼修改的方法。例如:鍵入 eds:100DEBUG顯示原來內(nèi)容,用戶可以直接輸入新數(shù)據(jù),然后按空格鍵顯示下一個(gè)單元的內(nèi)容,或者按“-”鍵顯示上一個(gè)單元的內(nèi)容;不需要修改可以直接按空格或“-”鍵;這樣,用戶可以不斷修改相繼單元的內(nèi)容,直到用回車鍵結(jié)束該命令為止。(2)修改命令E(Enter)格式2,可以一次修改多個(gè)單元,例如:-eds:100F3’XYZ’8D
;用F3/’X’/’Y’/’Z’/8D這5個(gè)數(shù)據(jù)替代DS:0100~0104的原來內(nèi)容若是數(shù)字,要用分隔符(空格或逗號)隔開。例如:-eds:100F378787A8D(3)填充命令F(Fill)F命令用于對一個(gè)主存區(qū)域填寫內(nèi)容,同時(shí)改寫原來的內(nèi)容,其格式為:
F范圍數(shù)據(jù)表該命令用數(shù)據(jù)表寫入指定范圍的主存。如果數(shù)據(jù)個(gè)數(shù)超過了指定的范圍,則忽略多出的項(xiàng);如果數(shù)據(jù)個(gè)數(shù)小于指定的范圍,則重復(fù)使用這些數(shù)據(jù),直到填滿指定范圍。例如: -F0137:010001061,2,3,4,5,6,7命令執(zhí)行后可用-D0137:01000106來顯示。邏輯地址形式(4)寄存器命令R(Register)R命令用于顯示和修改處理器的寄存器,它有三種格式: R ;格式1,顯示所有寄存器內(nèi)容和標(biāo)志位 ;狀態(tài)
R寄存器名 ;格式2,顯示和修改指定寄存器 RF ;格式3,顯示和修改標(biāo)志位格式1,例如,當(dāng)剛進(jìn)入DEBUG時(shí),就可以執(zhí)行該命令,顯示示例如下:AX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000DS=18E4ES=18E4SS=18E4IP=0100NVUPDIPLNZNAPONC18E4:0100C70604023801MOVWORDPTR[0204],0138DS:0204=0000所有寄存器的值,包括各個(gè)標(biāo)志狀態(tài)當(dāng)前CS:IP處的指令相應(yīng)單元的內(nèi)容(4)寄存器命令R(Register)格式2,例如,鍵入 rax DEBUG給出當(dāng)前AX內(nèi)容,冒號后用于輸入數(shù)據(jù),如不修改則按ENTER鍵。格式3,DEBUG將顯示當(dāng)前各個(gè)標(biāo)志位的狀態(tài)。顯示的符號及其狀態(tài)如表F1.1所示,用戶只要輸入這些符號就可以修改對應(yīng)的標(biāo)志狀態(tài),鍵入順序可以任意。表F1.1標(biāo)志狀態(tài)的表示符號標(biāo)志置位符號1復(fù)位符號0溢出OFOVNV方向DFDNUP中斷IFEIDI符號SFNGPL零位ZFZRNZ輔助AFACNA奇偶PFPEPO進(jìn)位CFCYNC(5)匯編命令A(yù)(Assembler)格式:
A[地址] ;從指定地址開始匯編指令A(yù)命令中如果沒有指定地址,則接著上一個(gè)A命令的最后一個(gè)單元開始;若還沒有使用過A命令,則從當(dāng)前CS:IP開始。輸入A命令后,就可以輸入8086指令,DEBUG將它們匯編成機(jī)器代碼,相繼地存放在指定地址開始的存儲區(qū)中,記住最后要輸入一個(gè)回車結(jié)束A命令。進(jìn)行匯編的步驟如下;輸入?yún)R編命令A(yù)[地址],按回車。DEBUG提示地址,等待用戶輸入新指令;(5)匯編命令A(yù)(Assembler)輸入?yún)R編指令,按回車;如上繼續(xù)輸入?yún)R編指令,直到輸入所有指令;不輸入內(nèi)容就按回車,結(jié)束匯編,返回DEBUG的提示符狀態(tài)。A命令支持標(biāo)準(zhǔn)的8086(和8087浮點(diǎn))指令系統(tǒng)以及匯編語句格式,但要注意以下一些規(guī)則:所有輸入的數(shù)值都是16進(jìn)制數(shù);段超越指令需要在相應(yīng)指令前,單獨(dú)一行輸入;段間(遠(yuǎn))返回的助記符要使用RETF;A命令也支持最常用的兩個(gè)偽指令DB和DW。(6)反匯編命令U(Unassembler)格式:
U[地址] ;從指定地址開始,反匯編32個(gè)字節(jié)(80列顯 ;示模式)
U范圍 ;對指定范圍的主存內(nèi)容進(jìn)行匯編U命令中如果沒有指定地址,則接著上一個(gè)U命令的最后一個(gè)單元開設(shè);若還沒有使用過U命令,則從當(dāng)前CS:IP開始。例如:
-U
14C8:0000 B8CD14 MOV AX,14CD 14C8:0003 8ED8 MVO DS,AX …邏輯地址指令的機(jī)器代碼對應(yīng)的指令匯編格式(7)運(yùn)行命令G(Go)格式:
G[=地址][斷點(diǎn)地址1,斷點(diǎn)地址2,…,斷點(diǎn)地址10]G命令等號后的地址指定程序段運(yùn)行的起始地址,如不指定從當(dāng)前的CS:IP開始運(yùn)行。斷點(diǎn)地址如果只有偏移地址,則默認(rèn)是代碼段CS;斷點(diǎn)可以沒有,但最多只能有10個(gè)。G命令輸入后,從指定地址處開始運(yùn)行程序,直到遇到斷點(diǎn)或者程序正常結(jié)束。程序遇到斷點(diǎn)(實(shí)際上就是斷點(diǎn)中斷指令I(lǐng)NT3),停止執(zhí)行,并顯示當(dāng)前所有寄存器和標(biāo)志位的內(nèi)容,以及下一條將要執(zhí)行的指令(顯示內(nèi)容同R命令),以便觀察程序運(yùn)行到此的情況。(7)運(yùn)行命令G(Go)程序正常結(jié)束,將顯示“Programterminatednormally”。注意,G命令以及后面的T和P命令要指向正確的指令代碼,否則會出現(xiàn)不可預(yù)測的結(jié)果,例如“死機(jī)”。(8)跟蹤命令T(Trace)格式:T[=地址] ;逐條指令跟蹤T[=地址][數(shù)值] ;多條指令跟蹤從指定地址起執(zhí)行一條或數(shù)值參數(shù)指定條數(shù)的指令后停下來,每條指令執(zhí)行后都要顯示所有寄存器和標(biāo)志位的值以及下一條指令。如未指定地址則從當(dāng)前CS:IP開始執(zhí)行。注意:給出的執(zhí)行地址前有一個(gè)等號,否則會被認(rèn)為是被跟蹤指令的條數(shù)(數(shù)值)。T跟蹤命令也常被稱為單步命令。T命令逐條指令執(zhí)行程序,遇到子程序(CALL)或中斷調(diào)用(INTn)指令也不例外,也會進(jìn)入到子程序或中斷服務(wù)程序當(dāng)中執(zhí)行。(9)繼續(xù)命令P(Proceed)格式:
P[=地址][數(shù)值]P命令類似T命令,只是不會進(jìn)入子程序或中斷服務(wù)程序中。當(dāng)不需要調(diào)試子程序或中斷服務(wù)程序時(shí),要用P命令。(10)退出命令Q(Quit)格式:
QQ命令使DEBUG程序退出,返回DOS。Q命令無存盤功能,可使用W命令存盤。(11)命名命令N(Name)格式:
N文件標(biāo)識符1[,文件標(biāo)識符2]N命令把一個(gè)或兩個(gè)文件標(biāo)識符存入DEBUG的文件控制塊FCB中,以便在其后用L或W命令把文件裝入或存盤。文件標(biāo)識符就是包含路徑的文件全名。(12)裝入命令L(Load)格式:
L[地址] ;格式1:裝入由N命令指定的文件
L地址驅(qū)動器扇區(qū)號扇區(qū)數(shù) ;格式2:裝入指定磁盤 ;扇區(qū)范圍的內(nèi)容格式1,裝載一個(gè)文件到給定的主存地址處;如未指定地址,則裝入CS:100開始的存儲區(qū);對于COM和EXE文件,則一定裝入CS:100位置處。格式2,裝載磁盤的若干扇區(qū)(最多80h)到指定的主存地址處;默認(rèn)段地址是CS。其中,0表示A盤,1表示B盤,2表示C盤,……。例如將硬盤C的DOS引導(dǎo)扇區(qū)(邏輯扇區(qū)號為0的一個(gè)扇區(qū))內(nèi)容裝入,然后查看的命令是:
-L0201 -DCS:0(13)寫盤命令W(Write)格式:
W[地址] ;格式1,將由N命令指定的文件寫入磁盤
W地址驅(qū)動器扇區(qū)號扇區(qū)數(shù) ;格式2:把數(shù)據(jù)寫入 ;指定磁盤扇區(qū)范圍格式1,將指定開始地址的數(shù)據(jù)寫入一個(gè)文件(這個(gè)文件應(yīng)該已經(jīng)用N命令命名);如未指定地址則從CS:IP開始。要寫入文件的字節(jié)數(shù)應(yīng)先放入BX(高字)和CX(低字)中。如果采用這個(gè)W命令保存可執(zhí)行程序,擴(kuò)展名應(yīng)是COM;它不能寫入具有EXE和HEX擴(kuò)展名的文件。(13)寫盤命令W(Write)格式2,將指定地址的數(shù)據(jù)寫入磁盤的若干扇區(qū)(最多80h);如果沒有給出段地址,則默認(rèn)段是CS。其他說明同L命令。格式2直接對磁盤寫入,沒有經(jīng)過DOS文件系統(tǒng)管理,所以一定要小心,否則可能無法利用DOS文件系統(tǒng)讀寫。(14)其他命令比較命令C(Compare)C范圍地址 ;將指定范圍的內(nèi)容與指定地址的內(nèi)容 ;比較16進(jìn)制數(shù)計(jì)算命令H(Hex)H數(shù)字1,數(shù)字2 ;同時(shí)計(jì)算兩個(gè)16進(jìn)制數(shù)字 ;和與差輸入命令I(lǐng)(Input)I端口地址 ;從指定I/O端口輸入一個(gè)字節(jié), ;并顯示其他命令輸出命令O(Output)O端口地址字節(jié)數(shù)據(jù) ;將數(shù)據(jù)輸出到指定的 ;I/O端口傳送命令M(Move)M范圍地址 ;將指定范圍的內(nèi)容傳送到指定 ;指定地址處查找命令S(Search)S范圍地址 ;在指定范圍內(nèi)查找指定的數(shù)據(jù)練習(xí):進(jìn)入Debug:進(jìn)入Windows操作系統(tǒng),輸入cmd回車,輸入debug回車。
練習(xí):輸入-r查看或者修改寄存器,可以修改CSIP來指向要執(zhí)行匯編的內(nèi)存地址
-r回車查看 -rax回車修改ax的值
-rcs回車修改cs的值 -rip回車修改ip的值
練習(xí):
用R命令查看、改變CPU寄存器的內(nèi)容。輸入【r】顯示內(nèi)容:修改某個(gè)寄存器xx,可以使用:【r
xx】后確認(rèn),如:注:默認(rèn)的都是十六進(jìn)制的,在冒號后面就可輸入心
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國塑膠玩具行業(yè)并購重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國個(gè)人護(hù)理電器行業(yè)全國市場開拓戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國汗蒸館行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國紅外探測器行業(yè)全國市場開拓戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國經(jīng)濟(jì)型酒店行業(yè)并購重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國碳納米管行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 自動噴水系統(tǒng)設(shè)計(jì)規(guī)范
- 建設(shè)三北工程-促進(jìn)社會和諧
- 2025年鋼球全陶瓷軸承項(xiàng)目可行性研究報(bào)告
- 江西省吉安市峽江縣2023-2024學(xué)年九年級上學(xué)期期末化學(xué)試題
- 竣工驗(yàn)收消防查驗(yàn)和消防驗(yàn)收
- 衛(wèi)生院崗位風(fēng)險(xiǎn)分級和監(jiān)管制度工作方案
- 2016-2023年大慶醫(yī)學(xué)高等??茖W(xué)校高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 供應(yīng)商審核培訓(xùn)教程
- 整合營銷策劃-標(biāo)準(zhǔn)化模板
- 物業(yè)前期介入與承接查驗(yàn)要點(diǎn)精講培訓(xùn)
- 四川省廣元市2022-2023學(xué)年八年級上學(xué)期語文期末試卷(含答案)
- 抗震支吊架-檢驗(yàn)批質(zhì)量驗(yàn)收記錄
- 【APP違規(guī)收集個(gè)人信息的法律問題分析9800字(論文)】
- 商品房預(yù)售合同簽約證明和預(yù)告登記申請書
- 質(zhì)量管理體系成熟度評估表
評論
0/150
提交評論