DEBUG的参数说明
??DEBUG是為匯編語言設計的一種高度工具,它通過單步、設置斷點等方式為匯編語言程序員提供了非常有效的調(diào)試手段。
一、DEBUG程序的調(diào)用
??? 在DOS的提示符下,可鍵入命令:
??????? C:/DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]
??? 其中,文件名是被調(diào)試文件的名字。如用戶鍵入文件,則DEBUG將指定的文件裝入存儲器中,用戶可對其進行調(diào)試。如果未鍵入文件名,則用戶可以用當前存儲器的內(nèi)容工作,或者用DEBUG命令N和L把需要的文件裝入存儲器后再進行調(diào)試。命令中的D指定驅(qū)動器PATH為路徑,PARM1和PARM2則為運行被調(diào)試文件時所需要的命令參數(shù)。
??? 在DEBUG程序調(diào)入后,將出現(xiàn)提示符,此時就可用DEBUG命令來調(diào)試程序。
二、DEBUG的主要命令
??? 1、顯示存儲單元的命令D(DUMP),格式為:
??? _D[address]或_D[range]
??? 例如,按指定范圍顯示存儲單元內(nèi)容的方法為:
??? -d100 120
18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...
18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.
??????? 7
18E4:0120 8B
??? 其中0100至0120是DEBUG顯示的單元內(nèi)容,左邊用十六進制表示每個字節(jié),右邊用ASCII字符表示每個字節(jié),·表示不可顯示的字符。這里沒有指定段地址,D命令自動顯示DS段的內(nèi)容。如果只指定首地址,則顯示從首地址開始的80個字節(jié)的內(nèi)容。如果完全沒有指定地址,則顯示上一個D命令顯示的最后一個單元后的內(nèi)容。
2、修改存儲單元內(nèi)容的命令有兩種。
??? ·輸入命令E(ENTER),有兩種格式如下:第一種格式可以用給定的內(nèi)容表來替代指定范圍的存儲單元內(nèi)容。命令格式為:
??? -E address[list]
例如,-E DS:100 F3'XYZ'8D
??? 其中F3,'X','Y','Z'和各占一個字節(jié),該命令可以用這五個字節(jié)來替代存儲單元DS:0100到0104的原先的內(nèi)容。
??? 第二種格式則是采用逐個單元相繼修改的方法。命令格式為:
??? -E address
例如,-E DS:100
??? 則可能顯示為:
??????? 18E4:0100 89.-
??? 如果需要把該單元的內(nèi)容修改為78,則用戶可以直接鍵入78,再按“空格”鍵可接著顯示下一個單元的內(nèi)容,如下:
??? 18E4:0100 89.78 1B.-
??? 這樣,用戶可以不斷修改相繼單元的內(nèi)容,直到用ENTER鍵結(jié)束該命令為止。
??? ·填寫命令F(FILL),其格式為:
??? -F range list
例如:-F 4BA:0100 5 F3'XYZ'8D
??? 使04BA:0100~0104單元包含指定的五個字節(jié)的內(nèi)容。如果list中的字節(jié)數(shù)超過指定的范圍,則忽略超過的項;如果list的字節(jié)數(shù)小于指定的范圍,則重復使用list填入,直到填滿指定的所有單元為止。
3)檢查和修改寄存器內(nèi)容的命令R(register),它有三種格式如下:
??? ·顯示CPU內(nèi)所有寄存器內(nèi)容和標志位狀態(tài),其格式為:
??????? -R
例如,-r
??? AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
??? DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC
??? 18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000
??? ·顯示和修改某個寄存器內(nèi)容,其格式為:
??? -R register name
例如,鍵入
??? -R AX
??? 系統(tǒng)將響應如下:
??? AX F1F4
??? :
即AX寄存器的當前內(nèi)容為F1F4,如不修改則按ENTER鍵,否則,可鍵入欲修改的內(nèi)容,如:
??? -R bx
??? BX 0369
??? :059F
則把BX寄存器的內(nèi)容修改為059F。
??? ·顯示和修改標志位狀態(tài),命令格式為:
??????? -RF系統(tǒng)將響應,如:
??????? OV DN EI NG ZR AC PE CY-
??? 此時,如不修改其內(nèi)容可按ENTER鍵,否則,可鍵入欲修改的內(nèi)容,如:
??????? OV DN EI NG ZR AC PE CY-PONZDINV
??? 即可,可見鍵入的順序可以是任意的。
4)運行命令G,其格式為:
??? -G[=address1][address2[address3…]]
??? 其中,地址1指定了運行的起始地址,如不指定則從當前的CS:IP開始運行。后面的地址均為斷點地址,當指令執(zhí)行到斷點時,就停止執(zhí)行并顯示當前所有寄存器及標志位的內(nèi)容,和下一條將要執(zhí)行的指令。
5)跟蹤命令T(Trace),有兩種格式:
??? ·逐條指令跟蹤
??? -T [=address]
??? 從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存器內(nèi)容及標志位的值。如未指定地址則從當前的CS:IP開始執(zhí)行。
??? ·多條指令跟蹤
??? -T [=address][value]
??? 從指定地址起執(zhí)行n條指令后停下來,n由value指定。
6)匯編命令A(Assemble),其格式為:
??? -A[address]
??? 該命令允許鍵入?yún)R編語言語句,并能把它們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區(qū)中。必須注意:DEBUG把鍵入的數(shù)字均看成十六進制數(shù),所以如要鍵入十進制數(shù),則其后應加以說明,如100D。
7)反匯編命令U(Unassemble)有兩種格式。
??? ·從指定地址開始,反匯編32個字節(jié),其格式為:
??? -U[address]
例如:
??? -u100
??? 18E4:0100 C70604023801?? MOV?? WORD PTR[0204],0138
??? 18E4:0106 C70606020002?? MOV?? WORD PTR[0206],0200
??? 18E4:010C C70606020202?? MOV?? WORD PTR[0208],0202
??? 18E4:0112 BBO4O2 ??????????????? MOV ??? BX,0204
??? 18E4:0115 E80200 ??????????????? CALL 011A
??? 18E4:0118 CD20 ??????????? INT?? 20
??? 18E4:011A 50 ?????????????? PUSH AX
??? 18E4:011B 51 ?????????????? PUSH CX
??? 18E4:011C 56 ?????????????? PUSH SI
??? 18E4:011D 57 ?????????????? PUSH DI
??? 18E4:011E 8B37 MOV SI,[BX]
如果地址被省略,則從上一個U命令的最后一條指令的下一個單元開始顯示32個字節(jié)。
??? ·對指定范圍內(nèi)的存儲單元進行反匯編,格式為:
??? -U[range]
例如:
??? -u100 10c
??? 18E4:0100 C70604023801 MOV WORD PTR[0204],0138
??? 18E4:0106 C70606020002 MOV WORD PTR[0206],0200
??? 18E4:010C C70606020202 MOV WORD PTR[0208],0202
或
??? -u100 112???
??? 18E4:0100 C70604023801 MOV WORD PTR[0204],0138
??? 18E4:0106 C70606020002 MOV WORD PTR[0206],0200
??? 18E4:010C C70606020202 MOV WORD PTR[0208],0202
??? 可見這兩種格式是等效的。
8)命名命令N(Name),其格式為:
??? -N filespecs [filespecs]
命令把兩個文件標識符格式化在CS:5CH和CS:6CH的兩個文件控制塊中,以便在其后用L或W命令把文件裝入存盤。filespecs的格式可以是:
[d:][path] filename[.ext]
例如,
??? -N myprog
??? -L
??? -
可把文件myprog裝入存儲器。
9)裝入命令(Load),有兩種功能。
??? ·把磁盤上指定扇區(qū)范圍的內(nèi)容裝入到存儲器從指定地址開始的區(qū)域中。其格式為:
??? -L[address[drive sector sector]
??? ·裝入指定文件,其格式為:
??? -L[address]
此命令裝入已在CS:5CH中格式化了文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開始的存儲區(qū)中。
10)寫命令W(Write),有兩種功能。
??? ·把數(shù)據(jù)寫入磁盤的指定扇區(qū)。其格式為:
??????? -W address drive sector sector
??? ·把數(shù)據(jù)寫入指定的文件中。其格式為:
??????? -W[address]
此命令把指定的存儲區(qū)中的數(shù)據(jù)寫入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數(shù)據(jù)從CS:0100開始。要寫入文件的字節(jié)數(shù)應先放入BX和CX中。
11)退出DEBUG命令Q(Quit),其格式為:
??? -Q
它退出DEBUG,返回DOS。本命令并無存盤功能,如需存盤應先使用W命令。
總結(jié)
以上是生活随笔為你收集整理的DEBUG的参数说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苏州住房公积金个人怎么提取
- 下一篇: 保险公司破产了我买的保险怎么办 保险倒闭