的內容,裝入運行程序,匯編及反匯編機器語言程序,可用單步、斷點及連續的方式執行程
序。
DEBUG 啟動方式:
>DEBUG 文件名.EXE(Enter) ; 回車進入DEBUG狀態
- ; "-" 是 DEBUG 提示符
以下是 DEBUG 的基本操作命令
壹. A (匯編) 命令
用途: 把計算機的宏匯編語句直接匯編到內存中。
格試: A [address]
說明: A 是壹條逐行匯編命令,當使用 A 命令時,並不直接將 16 進制字節,機器碼
而鍵入是助記符,但鍵入的匯編語言被匯編在指定地址的連續單元中。
在A命令後沒指出地址,分兩種情況。
沒指定地址同時前面沒有使用匯編命令,則語句被匯編到 CS:100 開始的區域中
沒指定地點,但前面已有匯編命令,則語句被匯編到緊接著前壹條匯編語句的後壹個地址單
元裏。
例:-A
1298:0200 PUSH DS
1298:0201 MOV AX,0000
1298:0204 PUSH AX
1298:0205 MOV AX,128F
1298:0208 MOV DS,AX
1298:020A MOV AX,F000
1298:020D MOV ES,AX 1298:020F MOV SI,FFFE
1298:0212 ES:
1298:0213 MOV AL,[SI]
1298:0215 CMP AL,FC
1298:0217 JNZ 0223
1298:0219 LEA DX,[006B]
1298:021D CALL 024B
二. C(比較)命令
用途: 比較兩個內存的內容。
格式: C range address
說明: 比較兩個內存的內容,比較長度由 range 決定,若發現不等的字節,按下列格式顯示
它們的內容。
例:-D 100
33E2:0100 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
33E2:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
-D 200
33E2:0200 74 68 65 20 6B 69 6E 64-20 6F 66 20 6D 69 63 72
33E2:0210 6F 20 63 6F 6D 70 6E 74-65 72 20 69 73 20 41 54
-C 0100 L08 0200 ;比較100H和200H開始的八個字符。
33E2:0100 00 74 33E2:0200 ;顯示不同的字符。
33E2:0101 00 68 33E2:0201
33E2:0102 00 65 33E2:0202
33E2:0103 00 20 33E2:0203
33E2:0104 00 6B 33E2:0204
33E2:0105 00 69 33E2:0205
33E2:0106 00 6E 33E2:0206
33E2:0107 00 64 33E2:0207 三. D(顯示)命令
用途: 顯示部分存儲區的內容。
格式: D [range]或 D [address]
說明: 顯示指定內存單元的內容。
⑴ 在輸入的起始地址中,只鍵入壹個相對偏移量,段地址為 DS 中。
例:-D
1298:0200 1E B8 00 00 50 B8 8F 12-8E D8 B8 00 F0 8E C0 BE
1298:0210 FE FF 26 8A 04 3C FC 75-0A 8D 16 6B 00 E8 2B 00
1298:0220 EB 28 90 3C FD 75 0A 8D-16 46 00 E8 1D 00 EB 1A
⑵ 若要顯示指定範圍的內容,則要輸入顯示的圃橡始和結束地址。
例:-D 0200 027F
125F:0200 00 42 34 00 00 00 00 00-00 00 00 00 00 00 00 00
125F:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
125F:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
⑶ 如果沒有指定地址,則從上壹次的 D 命令最後壹個單元開始顯示。
四. E(修改)命令
用途: 修改RAM區單元的內容。
格式: E address[List]
說明: 該命令可以在指定的地址裏修改壹個或多個字節的內容,同時也可連續的修改每個字
節的內容。
⑴ 連續修改每個字節的內容。
例:-E 0200
125F:0200 00.12 00.13 00.14 00.15 00.16
⑵ 用給定的內容去代替指定範圍的內存單元內容。
例:-E 0200 'the kind of micro compnter is AT'
-D 200
33E2:0200 74 68 65 20 6B 69 6E 64-20 6F 66 20 6D 69 63 72 the kind of micr 33E2:0210 6F 20 63 6F 6D 70 6E 74-65 72 20 69 73 20 41 54 o compnter is AT
⑶ 輸入壹個連接號"-",則顯示前壹個地址單元的內容。
例:-E 0200
125F:0200 12.- ;200單元不修改,鍵入"-"。
125F:01FF 13.AC- ;AC代替13。
-D 01FE 0200
125F:01FF AC 12
五. F(填充)命令
用途: 把表中的值,填到內存單元中。
格式: F range List
說明: 如果 List 所含的字節數比 range 小,則 List 被重復使用,
如 List 所含的字節數比 range 大,則 List 多余被略去。
例:-D 0200 0210
33E2:0200 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
33E2:0210 00
-F 0200 L0a'abcdefghij'
-D 0200 0210
33E2:0200 61 62 63 64 65 66 67 68-69 6A 00 00 00 00 00 00 abcdefghij
33E2:0210 00
六. G(執行)命令
用途: 執行需運行的程序,並對調試的程序進行斷點測試跟蹤。
格式: G[=address][address[address..]
說明: 程序從當前指令開始執行,執行的地址由 CS 和 IP 的內容決定。如用"=address"
參數取代,則程序從 CS:"=address" 開始執行。
-G ;從IP=0200開始執行,結果顯示在屏幕上。
the kind of micro compnter is AT Program terminated normally
-G 0252 ;程序從0200H單元開始執行,在0252H處設置壹個斷點。
AX=0000 BX=0000 CX=04E2 DX=0000 SP=0200 BP=0000 SI=0000 DI=0000
DS= 125F ES=125F SS=126F CS=1298 IP=0200 NV UP EI PL NZ NA PO NC
1298:0252 CB RETF
-
* 註意:壹旦程序運行結束( DEBUG 顯示"program terminated normally"信息),
⑴ 再次執行,必須重新啟動程序。
⑵ 地址參數指向的位置必須含有合法的 8086/8088 指令碼。
⑶ 堆棧指標器必須是合法的。
⑷ 對斷點只鍵入壹個偏移量,G 命令設該斷在CS寄存器中。
七. H(16進制運算)命令
用途: 對兩個十六進制數進行加、減,然後顯示出和與差。
格式: H Value Value
例:- H A B
0015 FFFF ;和為15H ,差為 FFFFH
-H 12 30
0042 FFE2 ;和為42H ,差為 FFE2H
八. M(傳送)命令
用途: 把由 range 規定的內存單元區域的內容傳送到 address 開始的單元。
格式: M range address
說明: 傳送期間總是執行復蓋傳送,源區域的數據保持不變。
-Dcs:0000 000f
1298:0000 1E B8 00 00 50 B8 8F 12-8E D8 B8 00 F0 8E C0 BE
-Dds:0000 0010
125F:0000 CD 20 00 A0 00 9A F0 FE-1D F0 F4 02 94 0E 2F 03 -Mcs:0000 l10 ds:0000
-Dds:0000 000f
125F:0000 1E B8 00 00 50 B8 8F 12-8E D8 B8 00 F0 8E C0 BE
-q
九. N(命名)命令
用途: 給文件定名,用於文件存盤或裝入內存區。
格式: N filespec[filespec...]
-N A.COM ;給文件命名為A,擴展名為COM。
-L ;把A.COM文件裝入內存。
-U ;用反匯編檢查裝入內存的程序正確否。
1298:0200 1E PUSH DS
1298:0201 B80000 MOV AX,0000
1298:0204 50 PUSH AX
1298:0205 B88F12 MOV AX,128F
1298:0208 8ED8 MOV DS,AX
1298:020A B800F0 MOV AX,F000
1298:020D 8EC0 MOV ES,AX
1298:020F BEFEFF MOV SI,FFFE
1298:0212 26 ES:
1298:0213 8A04 MOV AL,[SI]
1298:0215 3CFC CMP AL,FC
1298:0217 750A JNZ 0223
1298:0219 8D166B00 LEA DX,[006B]
1298:021D E82B00 CALL 024B
十. Q(退出)命令
用途: 退出 DEBUG狀態。 格式: Q
說明: Q命令不保留正在內存中運行的文件,若保留需用 "W" 命令, DEBUG返回
到命令處理程序,然後顯示出正常的命令提示。
-Q
> ;回到DOS下
十壹. R(寄存器)命令
用途:顯示和修改各寄存器的內容。
格式:R[Register name]
說明:當 R 命令後面不帶任何參數時,顯示出 13 個 16 位寄存器的內容,同時又顯示
出標誌寄存器各位狀態,最後顯示出下壹條要執行的指令內容。
當R命令後面帶參數時,顯示出該寄存器的內容,同時又可進行修改。
例:-R
AX=0000 BX=0000 CX=04E2 DX=0000 SP=0200 BP=0000 SI=0000 DI=0000
DS=125F ES=125F SS=126F CS=1298 IP=0200 NV UP EI PL NZ NA PO NC
1298:0200 1E PUSH DS
-R AX ;顯示AX寄存器的內容。
AX 0000
:0200 ;用0200取代0000,AX的當前值。
-RAX
-AX 0200
:
-R F
NV UP EI PL NZ NA PO NC - OV EI ZR ;修改NVEI,NZ標誌位。
標誌寄存器***有九個標誌位,其中追蹤標誌 T 不能改變,其它八個標誌位可以顯示和修改,
並且以二個字母的帶碼來分別表示各位狀態。
十二. S(檢索)命令
用途: 在指定的 Range 範圍內找到 List 規定的字符。 格式: S range List
說明: 顯示出符合規定字符處的地址,如顯示提示符 "-",則表示沒有發現規定字符。
-D 0200 0220
33E2:0200 61 62 63 64 65 66 67 68-69 6A 00 00 00 00 00 00
33E2:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
33E2:0220 00
-S 02 0220 60 ;在0200H單元,到0220H單元內,查詢60H字符。
- ;沒有檢索到,出現"-"。
-D 0200 0220
125F:0200 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
125F:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
125F:0220 00
-S 0200 0205 00 ;查詢為00H的字符。
125F:0200
125F:0201
125F:0202
125F:0203
125F:0204
125F:0205 ;顯示出查詢到為00H的字符。
十三. T(跟蹤)命令
用途: 執行以 CS:IP 中指定開始的壹個或幾個指令,並顯示出執行每條指令後所有寄存器的
內容。
格式: T[=address][Value]
說明: T 命令可以單條跟蹤執行每壹條指令,也可以由命令中Value訣定執行幾條指令,每執
行壹條指令,IP 就自動指向下壹條指令的地址。為了改變程序的起始地址,可以修改 IP 的
內容,使程序不按正常順序執行。
-T
AX=0000 BX=0000 CX=04E2 DX=0000 SP=01FE BP=0000 SI=0000 DI=0000 DS=125F ES=125F SS=126F CS=1298 IP=0201 NV UP EI PL NZ NA PO NC
1298:0201 B80000 MOV AX,0000
-T 2 ;連續執行兩條指令。
AX=0000 BX=0000 CX=04E2 DX=0000 SP=01FE BP=0000 SI=0000 DI=0000
DS=125F ES=125F SS=126F CS=1298 IP=0201 NV UP EI PL NZ NA PO NC
1298:0201 B80000 MOV AX,0000
AX=0000 BX=0000 CX=04E2 DX=0000 SP=01FE BP=0000 SI=0000 DI=0000
DS=125F ES=125F SS=126F CS=1298 IP=0204 NV UP EI PL NZ NA PO NC
1298:0204 50 PUSH AX
十四. U(反匯編)命令
用途: 將內存某壹區的計器碼(目標碼),用此命令反匯編為源程序。
格式: U [address]、(U range)
說明: U [address]命令從反匯編規定地址的指令開始,如未規定地址,
則以上壹個 U 命令的最後壹條指令的地址為下壹條反匯編的起始地址,這樣就可以進行連續
的反匯編。
例:-U
1298:0200 1E PUSH DS
1298:0201 B80000 MOV AX,0000
1298:0204 50 PUSH AX
1298:0205 B88F12 MOV AX,128F
1298:0208 8ED8 MOV DS,AX
1298:020A B800F0 MOV AX,F000
1298:020D 8EC0 MOV ES,AX
1298:020F BEFEFF MOV SI,FFFE
1298:0212 26 ES:
1298:0213 8A04 MOV AL,[SI]
1298:0215 3CFC CMP AL,FC 1298:0217 750A JNZ 0223
1298:0219 8D166B00 LEA DX,[006B]
1298:021D E82B00 CALL 024B
十五. W(寫)命令
用途: 把正在調試的文件寫入磁盤。
格式: W [address]
說明: 此命令把指令內存區域中的數據寫入文件,壹般用 N 命令來命名文件名, BX:CX 置入文
件長度.
-A
1298:0100 PUSH DS
1298:0101 MOV AX,0000
1298:0104 PUSH AX
1298:0105 MOV AX,128F
1298:0108 MOV DS,AX
1298:010A MOV AX,F000
1298:010D MOV ES,AX
1298:010F MOV SI,FFFE
1298:0112
-RBX
BX 0000
:0000
-RCX
CX 0000
:0012 ;文件長度送 BX:CX
-N A.COM ;文件名為 A.COM
-W ;存入磁盤
Writing 0000F bytes -q
十六. O(輸入)命令
用途: 向指定的端口輸出壹個字節。
格式: O prot address byte
例: -O 300 23 ;從 300H 端口輸出 23H
十七. L(裝入)命令
用途: 把磁盤上的內容裝入內存。
格式: L [address]
例: -N A.COM
-L ;把A.COM文件從磁盤裝入內存。
-U
1298:0200 1E PUSH DS
1298:0201 B80000 MOV AX,0000
1298:0204 50 PUSH AX
1298:0205 B88F12 MOV AX,128F
十八. I(輸入)命令
用途: 從指定的端口顯示出輸入數據。
格式: I port address
例: -I 300
FF ;從 300H 端口讀入 FFH