古詩詞大全網 - 成語經典 - debug命令有什麽作用?如何使用?

debug命令有什麽作用?如何使用?

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