❶ 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 常用命令,其他命令請參考有關書籍。
❸ 請問在DOS環境下編譯程序時,即執行debug命令的程序編譯時,輸入錯誤了,應該如何撤銷不再提示error
DEBUG是常用的匯編語言級調試工具,為匯編語言程序員提供了分析指令、跟蹤程序的有效手段
如何進入Debug程序?
答:在命令提示符下輸入「debug」回車即可
懂得匯編的朋友,相信看懂下面命令是沒多大問題的。
常用命令:
-A 匯編 格式:A 起始地址
例如:輸入「A」,回車,然後輸入「MOV AX,10」回車。再按一次回車,則退出匯編狀態。
-U 反匯編 格式:U 起始地址 結束地址
例如:接上面,輸入「U」,回車,即可看到結果。
以下不再舉例,類似上面,有待自己研究,這樣記得更牢。謝謝!
-T 單步執行 格式:T 起始地址 運行指令數
-G 斷點執行 格式:G 起始地址 斷點地址 結束地址
-D 數據顯示 格式: D 起始地址 結束地址
-R 顯示修改寄存器
格式:R 寄存器名
-P 單步執行,不進入中斷
格式:T 起始地址 運行指令數
-F 連續填入內存內容
格式:起始地址 結束地址 要填入的數值系列
-E 單個修改內存內容
格式: E 地址 填入內容
-Q 退出debug狀態
格式: Q 回車
不常用命令:
-M 內存搬家指令:
格式:M 起始地址 結束地址 目的地址
-H 16進制加法:
格式:H 操作數1 操作數2
結果顯示:加法結果 減法結果
❹ DEBUG 指令都有哪些 最好詳細說明下
常用的就兩個a(匯編)和u(反匯編),其它可以去網上查,很多的。
Debug:A(匯編)
直接將 8086/8087/8088 記憶碼合並到內存。
該命令從匯編語言語句創建可執行的機器碼。所有數值都是十六進制格式,必須按一到四個字元輸入這些數值。在引用的操作代碼(操作碼)前指定前綴記憶碼。
a [address]
參數
address
指定鍵入匯編語言指令的位置。對 address 使用十六進制值,並鍵入不以「h」字元結尾的每個值。如果不指定地址,a 將在它上次停止處開始匯編。
有關將數據輸入到指定位元組中的信息,請單擊「相關主題」列表中的 Debug E(鍵入)。
有關反匯編位元組的信息,請單擊「相關主題」列表中的 Debug U(反匯編)。
說明
使用記憶碼
段的替代記憶碼為 cs:、ds:、es: 和 ss:。遠程返回的記憶碼是 retf。字元串處理的記憶碼必須明確聲明字元串大小。例如,使用 movsw 可以移動 16 位的字串,使用 movsb 可以移動 8 位位元組串。
匯編跳轉和調用
匯編程序根據位元組替換自動將短、近和遠的跳轉及調用匯編到目標地址。通過使用 near 或 far 前綴可以替代這樣的跳轉或調用,如下例所示:
-a0100:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以將 near 前綴縮寫為 ne。
區分字和位元組內存位置
當某個操作數可以引用某個字內存位置或者位元組內存位置時,必須用前綴 word ptr 或者前綴 byte ptr 指定數據類型。可接受的縮寫分別是 wo 和 by。以下範例顯示兩種格式:
dec wo [si]
neg byte ptr [128]
指定操作數
Debug 使用包括在中括弧 ([ ]) 的操作數引用內存地址的習慣用法。這是因為另一方面 Debug 不能區分立即操作數和內存地址的操作數。以下範例顯示兩種格式:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用偽指令
使用 a 命令提供兩個常用的偽指令:db 操作碼,將位元組值直接匯編到內存,dw 操作碼,將字值直接匯編到內存。以下是兩個偽指令的範例:
db 1,2,3,4,"THIS IS AN EXAMPLE"
db 'THIS IS A QUOTATION MARK:"'
db "THIS IS A QUOTATION MARK:'"
dw 1000,2000,3000,"BACH"
範例
a 命令支持所有形式的間接注冊命令,如下例所示:
add bx,34[bp 2].[si-1]
pop [bp di]
push [si] )
還支持所有操作碼同義詞,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
對於 8087 操作碼,必須指定 wait 或 fwait 前綴,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
❺ Debug都有哪些命令啊
DOS命令之DEBUG命令詳解
關鍵詞: DEBUG命令
DEBUG是DOS中的一個外部命令,從DOS 1.0起就帶有此命令,因此可見此命令的重要性了。雖然此命令的功能非常強大,可以解決許多問題,可是對許多人來說,尤其是初學者來說,卻非常不易掌握。因此,現將DEBUG的命令詳細介紹一番,以讓大家知道它的使用。
Debug:A(匯編)
直接將 8086/8087/8088 記憶碼合並到內存。
該命令從匯編語言語句創建可執行的機器碼。所有數值都是十六進制格式,必須按一到四個字元輸入這些數值。在引用的操作代碼(操作碼)前指定前綴記憶碼。
a [address]
參數
address
指定鍵入匯編語言指令的位置。對 address 使用十六進制值,並鍵入不以「h」字元結尾的每個值。如果不指定地址,a 將在它上次停止處開始匯編。
有關將數據輸入到指定位元組中的信息,請單擊「相關主題」列表中的 Debug E(鍵入)。
有關反匯編位元組的信息,請單擊「相關主題」列表中的 Debug U(反匯編)。
說明
使用記憶碼
段的替代記憶碼為 cs:、ds:、es: 和 ss:。遠程返回的記憶碼是 retf。字元串處理的記憶碼必須明確聲明字元串大小。例如,使用 movsw 可以移動 16 位的字串,使用 movsb 可以移動 8 位位元組串。
匯編跳轉和調用
匯編程序根據位元組替換自動將短、近和遠的跳轉及調用匯編到目標地址。通過使用 near 或 far 前綴可以替代這樣的跳轉或調用,如下例所示:
-a0100:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以將 near 前綴縮寫為 ne。
區分字和位元組內存位置
當某個操作數可以引用某個字內存位置或者位元組內存位置時,必須用前綴 word ptr 或者前綴 byte ptr 指定數據類型。可接受的縮寫分別是 wo 和 by。以下範例顯示兩種格式:
dec wo [si]
neg byte ptr [128]
指定操作數
Debug 使用包括在中括弧 ([ ]) 的操作數引用內存地址的習慣用法。這是因為另一方面 Debug 不能區分立即操作數和內存地址的操作數。以下範例顯示兩種格式:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用偽指令
使用 a 命令提供兩個常用的偽指令:db 操作碼,將位元組值直接匯編到內存,dw 操作碼,將字值直接匯編到內存。以下是兩個偽指令的範例:
db 1,2,3,4,"THIS IS AN EXAMPLE"
db 'THIS IS A QUOTATION MARK:"'
db "THIS IS A QUOTATION MARK:'"
dw 1000,2000,3000,"BACH"
範例
a 命令支持所有形式的間接注冊命令,如下例所示:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
還支持所有操作碼同義詞,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
對於 8087 操作碼,必須指定 wait 或 fwait 前綴,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
Debug:C(比較)
比較內存的兩個部分。
c range address
參數
range
指定要比較的內存第一個區域的起始和結束地址,或起始地址和長度。有關有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
address
指定要比較的第二個內存區域的起始地址。有關有效 address 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
說明
如果 range 和 address 內存區域相同,Debug 將不顯示任何內容而直接返回到 Debug 提示符。如果有差異,Debug 將按如下格式顯示:
address1 byte1 byte2 addess2
範例
以下命令具有相同效果:
c100,10f 300
c100l10 300
每個命令都對 100h 到 10Fh 的內存數據塊與 300h 到 30Fh 的內存數據塊進行比較。
Debug 響應前面的命令並顯示如下信息(假定 DS = 197F):
197F:0100 4D E4 197F:0300
197F:0101 67 99 197F:0301
197F:0102 A3 27 197F:0302
197F:0103 35 F3 197F:0303
197F:0104 97 BD 197F:0304
197F:0105 04 35 197F:0305
197F:0107 76 71 197F:0307
197F:0108 E6 11 197F:0308
197F:0109 19 2C 197F:0309
197F:010A 80 0A 197F:030A
197F:010B 36 7F 197F:030B
197F:010C BE 22 197F:030C
197F:010D 83 93 197F:030D
197F:010E 49 77 197F:030E
197F:010F 4F 8A 197F:030F
注意列表中缺少地址 197F:0106 和 197F:0306。這表明那些地址中的值是相同的。
Debug:D(轉儲)
顯示一定范圍內存地址的內容。
d [range]
參數
range
指定要顯示其內容的內存區域的起始和結束地址,或起始地址和長度。有關有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。如果不指定 range,Debug 程序將從以前 d 命令中所指定的地址范圍的末尾開始顯示 128 個位元組的內容。
有關顯示寄存器內容的信息,請單擊「相關主題」列表中的 Debug R(寄存器)。
說明
當使用 d 命令時,Debug 以兩個部分顯示內存內容:十六進制部分(每個位元組的值都用十六進制格式表示)和 ASCII 碼部分(每個位元組的值都用 ASCII 碼字元表示)。每個非列印字元在顯示的 ASCII 部分由句號 (.) 表示。每個顯示行顯示 16 位元組的內容,第 8 位元組和第 9 位元組之間有一個連字元。每個顯示行從 16 位元組的邊界上開始。
範例
假定鍵入以下命令:
dcs:100 10f
Debug 按以下格式顯示範圍中的內容:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER......
如果在沒有參數的情況下鍵入 d 命令,Debug 按以前範例中所描述的內容來編排顯示格式。顯示的每行以比前一行的地址大 16 個位元組(如果是顯示 40 列的屏幕,則為 8 個位元組)的地址開頭。
對於後面鍵入的每個不帶參數的 d 命令,Debug 將緊接在最後顯示的命令後立即顯示位元組內容。
如果鍵入以下命令,Debug 將從 CS:100 開始顯示 20h 個位元組的內容:
dcs:100 l 20
如果鍵入以下命令,Debug 將顯示範圍從 CS 段的 100h 到 115h 中所有位元組的內容:
dcs:100 115
Debug:E(鍵入)
將數據輸入到內存中指定的地址。
可以按十六進制或 ASCII 格式鍵入數據。以前存儲在指定位置的任何數據全部丟失。
e address [list]
參數
address
指定輸入數據的第一個內存位置。
list
指定要輸入到內存的連續位元組中的數據。
有關集成記憶碼的信息,請單擊「相關主題」列表中的 Debug A(匯編)。
有關顯示內存部分內容的信息,請單擊「相關主題」列表中的 Debug D (轉儲)。
說明
使用 address 參數
如果在沒有指定可選的 list 參數的值情況下指定 address 的值,Debug 將顯示地址和內容,在下一行重復地址,並等待您的輸入。此時,您可以執行下列操作之一:
替換位元組值。為此,請在當前值後鍵入新值。如果您鍵入的值不是有效的十六進制值,或該值包含兩個以上的數字,則 Debug 不會回顯無效或額外的字元。
進入下一個位元組。為此,請按 SPACEBAR(空格鍵)。要更改該位元組中的值,請在當前值後鍵入新值。如果按 SPACEBAR(空格鍵)時,移動超過了 8 位界限,Debug 程序將顯示新的一行並在行首顯示新地址。
返回到前一個位元組。為此,請按 HYPHEN 鍵 (-)。可以反復按 HYPHEN 鍵 (-) 向後移動超過多個位元組。在按 HYPHEN 時,Debug 開始新行並顯示當前地址和位元組值。
停止執行 e 命令。為此,請按 ENTER 鍵。在任何位元組位置都可以按 ENTER。
使用 list 參數
如果指定 list 參數的值,隨後的 e 命令將使用列表中的值替換現有的位元組值。如果發生錯誤,將不更改任何位元組值。
List 值可以是十六進制位元組或字元串。使用空格、逗號或製表符來分隔值。必須將字元串包括在單或雙引號中。
範例
假定鍵入以下命令:
ecs:100
Debug 按下面的格式顯示第一個位元組的內容:
04BA:0100 EB.
要將該值更改為 41,請在插入點鍵入 41,如下所示:
04BA:0100 EB.41_
可以用一個 e 命令鍵入連續的位元組值。在鍵入新值後按 SPACEBAR(空格鍵),而不是按 ENTER 鍵。Debug 顯示下一個值。在此範例中,如果按三次 SPACEBAR(空格鍵),Debug 將顯示下面的值:
04BA:0100 EB.41 10. 00. BC._
要將十六進制值 BC 更改為 42,請在插入點鍵入 42,如下所示:
04BA:0100 EB.41 10. 00. BC.42_
假定決定值 10 應該是 6F。要糾正該值,請按 HYPHEN 鍵兩次以返回到地址 0101(值 10)。Debug 顯示以下內容:
04BA:0100 EB.41 10. 00. BC.42-
04BA:0102 00.-
04BA:0101 10._
在插入點鍵入 6f 更改值,如下所示:
04BA:0101 10.6f_
按 ENTER 停止 e 命令並返回到 Debug 提示符下。
以下是字元串項的範例:
eds:100 "This is the text example"
該字元串將從 DS:100 開始填充 24 個位元組
Debug:F(填充)
使用指定的值填充指定內存區域中的地址。
可以指定十六進制或 ASCII 格式表示的數據。任何以前存儲在指定位置的數據將會丟失。
f range list
參數
range
指定要填充內存區域的起始和結束地址,或起始地址和長度。關於有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
list
指定要輸入的數據。List 可以由十六進制數或引號包括起來的字元串組成。
說明
使用 range 參數
如果 range 包含的位元組數比 list 中的數值大,Debug 將在 list 中反復指派值,直到 range 中的所有位元組全部填充。
如果在 range 中的任何內存損壞或不存在,Debug 將顯示錯誤消息並停止 f 命令。
使用 list 參數
如果 list 包含的數值多於 range 中的位元組數,Debug 將忽略 list 中額外的值。
範例
假定鍵入以下命令:
f04ba:100l100 42 45 52 54 41
作為響應,Debug 使用指定的值填充從 04BA:100 到 04BA:1FF 的內存位置。Debug 重復這五個值直到 100h 個位元組全部填滿為止。
Debug:G(轉向)
運行當前在內存中的程序。
g [=address] [breakpoints]
參數
=address
指定當前在內存中要開始執行的程序地址。如果不指定 address,Windows 2000 將從 CS:IP 寄存器中的當前地址開始執行程序。
breakpoints
指定可以設置為 g 命令的部分的 1 到 10 個臨時斷點。
有關執行循環、重復的字元串指令、軟體中斷或子程序的信息,請單擊「相關主題」列表中的 Debug P(執行)。
有關執行指令的信息,請單擊「相關主題」列表中的 Debug T(跟蹤)。
Debug:H(十六進制)
對指定的兩個參數執行十六進制運算。
h value1 value2
參數
value1
代表從 0 到 FFFFh 范圍內的任何十六進制數字。
value2
代表從 0 到 FFFFh 范圍內第二個十六進制數字。
說明
Debug 首先將指定的兩個參數相加,然後從第一個參數中減去第二個參數。這些計算的結果顯示在一行中:先計算和,然後計算差。
範例
假定鍵入以下命令:
h19f 10a
Debug 執行運算並顯示以下結果。
02A9 0095
Debug:I(輸入)
從指定的埠讀取並顯示一個位元組值。
i port
參數
port
按地址指定輸入埠。地址可以是 16 位的值。
有關將位元組值發送到輸出埠的信息,請單擊「相關主題」列表中的 Debug O(輸出)。
範例
假定鍵入以下命令:
i2f8
同時假定埠的位元組值是 42h。Debug 讀取該位元組,並將其值顯示如下:
42
Debug:L(載入)
將某個文件或特定磁碟扇區的內容載入到內存。
要從磁碟文件載入 BX:CX 寄存器中指定的位元組數內容,請使用以下語法:
l [address]
要略過 Windows 2000 文件系統並直接載入特定的扇區,請使用以下語法:
l address drive start number
參數
address
指定要在其中載入文件或扇區內容的內存位置。如果不指定 address,Debug 將使用 CS 寄存器中的當前地址。
drive
指定包含讀取指定扇區的磁碟的驅動器。該值是數值型:0 = A, 1 = B, 2 = C 等。
start
指定要載入其內容的第一個扇區的十六進制數。
number
指定要載入其內容的連續扇區的十六進制數。只有要載入特定扇區的內容而不是載入 debug 命令行或最近的 Debug n(名稱)命令中指定的文件時,才能使用 drive、start 和 number 參數。
有關指定用於 l 命令的文件的信息,請單擊「相關主題」列表中的 Debug n(名稱)。
有關寫入調試到磁碟的文件的信息,請單擊「相關主題」列表中的 Debug w(寫入)。
注意
使用不帶參數的 l 命令
當使用不帶參數的 l 命令時,在 debug 命令行上指定的文件將載入到內存中,從地址 CS:100 開始。Debug 同時將 BX 和 CX 寄存器設置為載入的位元組數。如果不在 debug 命令行指定文件,所裝入的文件將是最近使用 n 命令經常指定的文件。
使用具有 address 參數的 1 命令
如果使用帶 address 參數的 l 命令,Debug 將從內存位置 address 開始載入文件或指定扇區的內容。
使用帶全部參數的 l 命令
如果使用帶所有參數的 l 命令,Debug 將載入指定磁碟扇區的內容而不是載入文件。
載入特定扇區的內容
指定范圍內的每個扇區均從 drive 讀取。Debug 從 start 開始載入,直到在 number 中指定的扇區數中的內容全部被載入。
載入 .exe 文件
Debug 忽略 .exe 文件的地址 address 參數。如果指定 .exe 文件,Debug 將文件重新定位到 .exe 文件的標題中指定的載入地址。在 .exe 文件被載入到內存前,標題自身從 .exe 文件脫離,因此磁碟上的 .exe 文件大小與內存中的不同。如果要檢查整個 .exe 文件,請使用不同的擴展名重命名文件。
打開十六進制文件
Debug 將具有 .hex 擴展名的文件認為十六進制格式文件。鍵入不帶參數的 l 命令,可以載入從十六進制文件中指定的地址處開始的十六進制文件。如果鍵入的 l 命令包含 address 參數,Debug 將把指定的地址加到在十六進制文件中找到的地址上,以確定起始地址。
範例
假定啟動 Debug 並鍵入以下命令:
nfile.com
現在可以鍵入 l 命令以載入 File.com。Debug 將載入文件並顯示 Debug 提示符。
假定需要從驅動器 C 將起始邏輯扇區為 15 (0Fh) 的 109 (6Dh) 個扇區的內容載入到起始地址為 04BA:0100 的內存中。為此,請鍵入以下命令:
l04ba:100 2 0f 6d
Debug:M(移動)
將一個內存塊中的內容復制到另一個內存塊中。
m range address
參數
range
指定要復制內容的內存區域的起始和結束地址,或起始地址和長度。
address
指定要將 range 內容復制到該位置的起始地址。
說明
復制操作對現有數據的影響
如果新數據沒有寫入正在被復制的數據塊中的地址,則源數據將保持不變。但是,如果目標塊已經包含數據(就象它在覆蓋副本操作中一樣),則將改寫該數據。(覆蓋復制操作是指那些目標數據塊部分內容覆蓋原數據塊部分內容的操作。)
執行覆蓋復制操作
m 命令執行目標地址的覆蓋復制操作,而不丟失數據。將改寫的地址內容首先復制。因此,如果將較高位地址的數據復制到較低位地址,則復制操作從原塊的最低位地址開始並向最高位地址進行。反之,如果要將數據從低地址復制到高地址,復制操作從原塊的最高地址開始,向最低地址進行。
範例
假定鍵入以下命令:
mcs:100 110 cs:500
Debug 首先將 CS:110 地址中的內容復制到地址 CS:510 中,然後將 CS:10F 地址中的內容復制到 CS:50F 中,如此操作直至將 CS:100 地址中的內容復制到地址 CS:500 中。要查看結果,請使用 Debug d(轉儲)命令,並使用 m 命令指定目標地址
Debug:N(名稱)
指定 Debug l(載入)或 w(寫入)命令的可執行文件的名稱,或者指定正在調試的可執行文件的參數。
n [drive:][path] filename
要指定測試的可執行文件的參數,請使用以下語法:
n file-parameters
參數
如果在沒有參數的情況下使用,則 n 命令清除當前規范。
[drive:][path] filename
指定要測試的可執行文件的位置和名稱。
file-parameters
為正在測試的可執行文件指定參數和開關。
有關將文件或指定磁碟扇區的內容載入到內存中的信息,請單擊「相關主題」列表中的 Debug L(載入)。
有關寫入調試到磁碟的文件的信息,請單擊「相關主題」列表中的 Debug W(寫入)。
說明
n 命令的兩個用途
可以按兩種方式使用 n 命令。首先,您可以使用它以指定後面的 l(載入)或 w(寫入)命令所使用的文件。如果在沒有命名所調試文件的情況下啟動 Debug,必須在使用 l 命令載入文件之前使用命令 nfilename。在 CS:5C 為文件控制塊 (FCB) 正確編排文件名的格式。其次,可以使用 n 命令指定被調試文件的命令行參數和開關。