① debug常用命令
以下是 Debug 命令列表:
? 顯示 Debug 命令列表。
a 匯編 8086/8087/8088 記憶碼。
c 比較內存的兩個部分。
d 顯示部分內存的內容。
e 從指定地址開始,將數據輸入到內存。
f 使用指定值填充一段內存。
g 運行在內存中的可執行文件。
h 執行十六進制運算。
i 顯示來自特定埠的 1 位元組值。
l 將文件或磁碟扇區內容載入到內存。
m 復制內存塊中的內容
/n 為 l 或 w 命令指定文件,或者指定正在測試的文件的參數。
o 向輸出埠發送 1 個位元組的值。
p 執行循環、重復的字元串指令、軟體中斷或子常式。
q 停止 Debug 會話。
r 顯示或改變一個或多個寄存器。
s 在部分內存中搜索一個或多個位元組值的模式。
t 執行一條指令,然後顯示所有寄存器的內容、所有標志的狀態和 Debug 下一步要執行的指令的解碼形式。
u 反匯編位元組並顯示相應的原語句。
w 將被測試文件寫入磁碟。
xa 分配擴展內存。
xd 釋放擴展內存。
xm 映射擴展內存頁。
xs 顯示擴展內存的狀態。
② 求debug命令詳解
DEBUG的常用命令
(1)匯編命令 A
格式:A[起始地址]
功能:將輸入源程序的指令匯編成目標代碼並從指定地址單元開始存放。若預設
起始地址,則從當前CS:100 地址開始存放。A 命令按行匯編,主要是用於小段
程序的匯編或對目標程序的修改。
(2)反匯編命令 U
格式1:U[起始地址]
格式2:U[起始地址][結束地址|位元組數]
功能:格式1 從指定起始地址處開始將32 個位元組的目標代碼轉換成匯編指令形
式,預設起始地址,則從當前地址CS:IP 開始。
格式2 將指定范圍的內存單元中的目標代碼轉換成匯編指令。
(3)顯示、修改寄存器命令 R
格式:R[寄存器名]
功能:若給出寄存器名,則顯示該寄存器的內容並可進行修改。預設寄存器名,
則按以下格式顯示所有寄存器的內容及當前值(不能修改)。
AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000 DS=3000 ES=23A0 CS=138E IP=0000
NV UP DI PL NZ NA PO NC
138E:0000 MOV AX,1234
-R AX ;輸入命令
AX 0014 ;顯示AX 的內容
: ;供修改,不修改按回車。
若對標志寄存器進行修改,輸入:-RF
屏幕顯示如下信息,分別表示OF、DF、IF、SF、ZF、AF、PF、CF 的狀態。
NV UP DI PL NZ NA PO NC
不修改按回車鍵。要修改需個別輸入一個或多個此標志的相反值,再按回車鍵。
R 命令只能顯示、修改16 位寄存器。
(4)顯示存儲單元命令 D
格式1:D[起始地址]
格式2:D[起始地址][結束地址|位元組數]
功能:格式1 從起始地址開始按十六進制顯示80H 個單元的內容,每行16 個單
元,共8 行,每行右邊顯示16 個單元的ASCII 碼,不可顯示的ASCII 碼則顯示
「·」。格式2 顯示指定范圍內存儲單元的內容,其他顯示方式與格式1 一樣。
如果預設起始地址或地址范圍,則從當前的地址開始按格式1 顯示。
例如: -D 200 ;表示從DS:0200H 開始顯示128 個單元內容
-D 100 120 ;表示顯示DS:0100-DS:0120 單元的內容
說明:在DEBUG 中,地址表示方式有如下形式:
段寄存器名:相對地址,如:DS:100
段基值:偏移地址(相對地址),如:23A0:1500
(5)修改存儲單元命令 E
格式1:E[起始地址] [內容表]
格式2:E[地址]
功能:格式1 按內容表的內容修改從起始地址開始的多個存儲單元內容,即用內
容表指定的內容來代替存儲單元當前內容。
例如:—E DS:0100 'VAR' 12 34
表示從DS:0100 為起始單元的連續五個位元組單元內容依次被修改為
'V'、'A'、'R'、12H、34H。
格式2 是逐個修改指定地址單元的當前內容。
如:—E DS:0010
156F:0010 41.5F
其中156F:0010 單元原來的值是41H,5FH 為輸入的修改值。若只修改一個單元
的內容,這時按回車鍵即可;若還想繼續修改下一個單元內容,此時應按空格鍵,
就顯示下一個單元的內容,需修改就鍵入新的內容,不修改再按空格跳過,如此
重復直到修改完畢,按回車鍵返回DEBUG「-」提示符。如果在修改過程中,將
空格鍵換成按「-」鍵,則表示可以修改前一個單元的內容。
(6)運行命令 G
格式:G[=起始地址][第一斷點地址[第二斷點地址……]]
功能:CPU 從指定起始地址開始執行,依次在第一、第二等斷點處中斷。若預設
起始地址,則從當前CS:IP 指示地址開始執行一條指令。最多可設置10 個斷點。
(7)跟蹤命令 T
格式:T[起始地址][正整數]
功能:從指定地址開始執行『正整數』條指令,若預設『正整數』,表示執行一
條指令,若兩項都預設,表示從當前CS:IP 指示地址開始執行一條指令。
(8)指定文件命令 N
格式:N<文件名或擴展名>
功能:指定即將調入內存或從內存寫入磁碟的文件名。該命令應該用在L 命令和
W 命令之前。
(9)裝入命令 L
格式1:L[起始地址][盤符號][扇區號][扇區數]
格式2:L[起始地址]
功能:格式1 根據盤符號,將指定扇區的內容裝入到指定起始地址的存儲區中。
格式2 將N 命令指出的文件裝入到指定起始地址的存儲區中,若省略起始地址,
則裝入到CS:100 處或按原來文件定位約定裝入到相應位置。
(10)寫磁碟命令 W
格式1:W<起始地址>[驅動器號]<起始扇區><扇區數>
格式2:W[起始地址]
功能:格式1 把指定地址開始的內容數據寫到磁碟上指定的扇區中。
格式2 將起始地址的BX×10000H+CX 個位元組內容存放到由N 命令指定的文件中。
在格式2 的W 命令之前,除用N 命令指定存檔的文件名外,還必須將要寫的位元組
數用R 命令送入BX 和CX 中。
(11)退出命令 Q
格式:Q
功能:退出DEBUG,返回到操作系統。
以上介紹的是DEBUG 常用命令,其他命令請參考有關書籍。