Subject:DEBUG命令詳解 Editor:admin Time:2004-3-20 20:15 Read:11118 Score:7 Print |
Preface: DEBUG是DOS中的一個外部命令...... |
Content: DEBUG是DOS中的一個外部命令,從DOS 1.0起就帶有此命令,因此可見此命令的重要性了。雖然此命令的功能非常強大,可以解決許多問題,可是對許多人來說,尤其是初學(xué)者來說,卻非常不易掌握。因此,現(xiàn)將DEBUG的命令詳細介紹一番,以讓大家知道它的使用。 Debug:A(匯編)
該命令從匯編語言語句創(chuàng)建可執(zhí)行的機器碼。所有數(shù)值都是十六進制格式,必須按一到四個字符輸入這些數(shù)值。在引用的操作代碼(操作碼)前指定前綴記憶碼。
address 指定鍵入?yún)R編語言指令的位置。對 address 使用十六進制值,并鍵入不以“h”字符結(jié)尾的每個值。如果不指定地址,a 將在它上次停止處開始匯編。 有關(guān)將數(shù)據(jù)輸入到指定字節(jié)中的信息,請單擊“相關(guān)主題”列表中的 Debug E(鍵入)。 有關(guān)反匯編字節(jié)的信息,請單擊“相關(guān)主題”列表中的 Debug U(反匯編)。
使用記憶碼 段的替代記憶碼為 cs:、ds:、es: 和 ss:。遠程返回的記憶碼是 retf。字符串處理的記憶碼必須明確聲明字符串大小。例如,使用 movsw 可以移動 16 位的字串,使用 movsb 可以移動 8 位字節(jié)串。
匯編程序根據(jù)字節(jié)替換自動將短、近和遠的跳轉(zhuǎn)及調(diào)用匯編到目標(biāo)地址。通過使用 near 或 far 前綴可以替代這樣的跳轉(zhuǎn)或調(diào)用,如下例所示: -a0100:0500 可以將 near 前綴縮寫為 ne。
當(dāng)某個操作數(shù)可以引用某個字內(nèi)存位置或者字節(jié)內(nèi)存位置時,必須用前綴 word ptr 或者前綴 byte ptr 指定數(shù)據(jù)類型??山邮艿目s寫分別是 wo 和 by。以下范例顯示兩種格式: dec wo [si]
Debug 使用包括在中括號 ([ ]) 的操作數(shù)引用內(nèi)存地址的習(xí)慣用法。這是因為另一方面 Debug 不能區(qū)分立即操作數(shù)和內(nèi)存地址的操作數(shù)。以下范例顯示兩種格式: mov ax,21 ; load AX with 21h
使用 a 命令提供兩個常用的偽指令:db 操作碼,將字節(jié)值直接匯編到內(nèi)存,dw 操作碼,將字值直接匯編到內(nèi)存。以下是兩個偽指令的范例: db 1,2,3,4,"THIS IS AN EXAMPLE"
a 命令支持所有形式的間接注冊命令,如下例所示: add bx,34[bp+2].[si-1] 還支持所有操作碼同義詞,如下例所示: loopz 100 對于 8087 操作碼,必須指定 wait 或 fwait 前綴,如下例所示: fwait fadd st,st(3) ; this line assembles
range 指定要比較的內(nèi)存第一個區(qū)域的起始和結(jié)束地址,或起始地址和長度。有關(guān)有效的 range 值的信息,請單擊“相關(guān)主題”列表中的“Debug 說明”。 address 指定要比較的第二個內(nèi)存區(qū)域的起始地址。有關(guān)有效 address 值的信息,請單擊“相關(guān)主題”列表中的“Debug 說明”。
如果 range 和 address 內(nèi)存區(qū)域相同,Debug 將不顯示任何內(nèi)容而直接返回到 Debug 提示符。如果有差異,Debug 將按如下格式顯示: 范例 以下命令具有相同效果: c100,10f 300 每個命令都對 100h 到 10Fh 的內(nèi)存數(shù)據(jù)塊與 300h 到 30Fh 的內(nèi)存數(shù)據(jù)塊進行比較。 Debug 響應(yīng)前面的命令并顯示如下信息(假定 DS = 197F): 197F:0100 4D E4 197F:0300 注意列表中缺少地址 197F:0106 和 197F:0306。這表明那些地址中的值是相同的。
range 指定要顯示其內(nèi)容的內(nèi)存區(qū)域的起始和結(jié)束地址,或起始地址和長度。有關(guān)有效的 range 值的信息,請單擊“相關(guān)主題”列表中的“Debug 說明”。如果不指定 range,Debug 程序?qū)囊郧?d 命令中所指定的地址范圍的末尾開始顯示 128 個字節(jié)的內(nèi)容。 有關(guān)顯示寄存器內(nèi)容的信息,請單擊“相關(guān)主題”列表中的 Debug R(寄存器)。
范例 Debug:E(鍵入) 將數(shù)據(jù)輸入到內(nèi)存中指定的地址。 e address [list] 參數(shù) 說明 使用 address 參數(shù) 如果在沒有指定可選的 list 參數(shù)的值情況下指定 address 的值,Debug 將顯示地址和內(nèi)容,在下一行重復(fù)地址,并等待您的輸入。此時,您可以執(zhí)行下列操作之一: 替換字節(jié)值。為此,請在當(dāng)前值后鍵入新值。如果您鍵入的值不是有效的十六進制值,或該值包含兩個以上的數(shù)字,則 Debug 不會回顯無效或額外的字符。 如果指定 list 參數(shù)的值,隨后的 e 命令將使用列表中的值替換現(xiàn)有的字節(jié)值。如果發(fā)生錯誤,將不更改任何字節(jié)值。 List 值可以是十六進制字節(jié)或字符串。使用空格、逗號或制表符來分隔值。必須將字符串包括在單或雙引號中。 范例 假定鍵入以下命令: ecs:100 Debug 按下面的格式顯示第一個字節(jié)的內(nèi)容: 04BA:0100 EB. 要將該值更改為 41,請在插入點鍵入 41,如下所示: 04BA:0100 EB.41_ 可以用一個 e 命令鍵入連續(xù)的字節(jié)值。在鍵入新值后按 SPACEBAR(空格鍵),而不是按 ENTER 鍵。Debug 顯示下一個值。在此范例中,如果按三次 SPACEBAR(空格鍵),Debug 將顯示下面的值: 04BA:0100 EB.41 10. 00. BC._ 要將十六進制值 BC 更改為 42,請在插入點鍵入 42,如下所示: 04BA:0100 EB.41 10. 00. BC.42_ 假定決定值 10 應(yīng)該是 6F。要糾正該值,請按 HYPHEN 鍵兩次以返回到地址 0101(值 10)。Debug 顯示以下內(nèi)容: 04BA:0100 EB.41 10. 00. BC.42- 在插入點鍵入 6f 更改值,如下所示: 04BA:0101 10.6f_ 按 ENTER 停止 e 命令并返回到 Debug 提示符下。 以下是字符串項的范例: eds:100 "This is the text example" 該字符串將從 DS:100 開始填充 24 個字節(jié) Debug:F(填充) 使用指定的值填充指定內(nèi)存區(qū)域中的地址。 可以指定十六進制或 ASCII 格式表示的數(shù)據(jù)。任何以前存儲在指定位置的數(shù)據(jù)將會丟失。
range 指定要填充內(nèi)存區(qū)域的起始和結(jié)束地址,或起始地址和長度。關(guān)于有效的 range 值的信息,請單擊“相關(guān)主題”列表中的“Debug 說明”。 list 指定要輸入的數(shù)據(jù)。List 可以由十六進制數(shù)或引號包括起來的字符串組成。
使用 range 參數(shù) 如果 range 包含的字節(jié)數(shù)比 list 中的數(shù)值大,Debug 將在 list 中反復(fù)指派值,直到 range 中的所有字節(jié)全部填充。 如果在 range 中的任何內(nèi)存損壞或不存在,Debug 將顯示錯誤消息并停止 f 命令。
如果 list 包含的數(shù)值多于 range 中的字節(jié)數(shù),Debug 將忽略 list 中額外的值。
假定鍵入以下命令: f04ba:100l100 42 45 52 54 41 作為響應(yīng),Debug 使用指定的值填充從 04BA:100 到 04BA:1FF 的內(nèi)存位置。Debug 重復(fù)這五個值直到 100h 個字節(jié)全部填滿為止。
=address 指定當(dāng)前在內(nèi)存中要開始執(zhí)行的程序地址。如果不指定 address,Windows 2000 將從 CS:IP 寄存器中的當(dāng)前地址開始執(zhí)行程序。 breakpoints 指定可以設(shè)置為 g 命令的部分的 1 到 10 個臨時斷點。 有關(guān)執(zhí)行循環(huán)、重復(fù)的字符串指令、軟件中斷或子程序的信息,請單擊“相關(guān)主題”列表中的 Debug P(執(zhí)行)。 有關(guān)執(zhí)行指令的信息,請單擊“相關(guān)主題”列表中的 Debug T(跟蹤)。 Debug:H(十六進制) 對指定的兩個參數(shù)執(zhí)行十六進制運算。
value1 代表從 0 到 FFFFh 范圍內(nèi)的任何十六進制數(shù)字。 value2 代表從 0 到 FFFFh 范圍內(nèi)第二個十六進制數(shù)字。
Debug 首先將指定的兩個參數(shù)相加,然后從第一個參數(shù)中減去第二個參數(shù)。這些計算的結(jié)果顯示在一行中:先計算和,然后計算差。
假定鍵入以下命令: h19f 10a Debug 執(zhí)行運算并顯示以下結(jié)果。 Debug:I(輸入)
i port 參數(shù) port 按地址指定輸入端口。地址可以是 16 位的值。 有關(guān)將字節(jié)值發(fā)送到輸出端口的信息,請單擊“相關(guān)主題”列表中的 Debug O(輸出)。
假定鍵入以下命令: i2f8 同時假定端口的字節(jié)值是 42h。Debug 讀取該字節(jié),并將其值顯示如下:
將某個文件或特定磁盤扇區(qū)的內(nèi)容加載到內(nèi)存。 要從磁盤文件加載 BX:CX 寄存器中指定的字節(jié)數(shù)內(nèi)容,請使用以下語法: l [address] 要略過 Windows 2000 文件系統(tǒng)并直接加載特定的扇區(qū),請使用以下語法: l address drive start number
address 指定要在其中加載文件或扇區(qū)內(nèi)容的內(nèi)存位置。如果不指定 address,Debug 將使用 CS 寄存器中的當(dāng)前地址。 drive 指定包含讀取指定扇區(qū)的磁盤的驅(qū)動器。該值是數(shù)值型:0 = A, 1 = B, 2 = C 等。 start 指定要加載其內(nèi)容的第一個扇區(qū)的十六進制數(shù)。 number 指定要加載其內(nèi)容的連續(xù)扇區(qū)的十六進制數(shù)。只有要加載特定扇區(qū)的內(nèi)容而不是加載 debug 命令行或最近的 Debug n(名稱)命令中指定的文件時,才能使用 drive、start 和 number 參數(shù)。 有關(guān)指定用于 l 命令的文件的信息,請單擊“相關(guān)主題”列表中的 Debug n(名稱)。 有關(guān)寫入調(diào)試到磁盤的文件的信息,請單擊“相關(guān)主題”列表中的 Debug w(寫入)。
使用不帶參數(shù)的 l 命令 當(dāng)使用不帶參數(shù)的 l 命令時,在 debug 命令行上指定的文件將加載到內(nèi)存中,從地址 CS:100 開始。Debug 同時將 BX 和 CX 寄存器設(shè)置為加載的字節(jié)數(shù)。如果不在 debug 命令行指定文件,所裝入的文件將是最近使用 n 命令經(jīng)常指定的文件。
如果使用帶 address 參數(shù)的 l 命令,Debug 將從內(nèi)存位置 address 開始加載文件或指定扇區(qū)的內(nèi)容。
如果使用帶所有參數(shù)的 l 命令,Debug 將加載指定磁盤扇區(qū)的內(nèi)容而不是加載文件。
指定范圍內(nèi)的每個扇區(qū)均從 drive 讀取。Debug 從 start 開始加載,直到在 number 中指定的扇區(qū)數(shù)中的內(nèi)容全部被加載。
Debug 忽略 .exe 文件的地址 address 參數(shù)。如果指定 .exe 文件,Debug 將文件重新定位到 .exe 文件的標(biāo)題中指定的加載地址。在 .exe 文件被加載到內(nèi)存前,標(biāo)題自身從 .exe 文件脫離,因此磁盤上的 .exe 文件大小與內(nèi)存中的不同。如果要檢查整個 .exe 文件,請使用不同的擴展名重命名文件。
Debug 將具有 .hex 擴展名的文件認為十六進制格式文件。鍵入不帶參數(shù)的 l 命令,可以加載從十六進制文件中指定的地址處開始的十六進制文件。如果鍵入的 l 命令包含 address 參數(shù),Debug 將把指定的地址加到在十六進制文件中找到的地址上,以確定起始地址。
假定啟動 Debug 并鍵入以下命令: nfile.com 現(xiàn)在可以鍵入 l 命令以加載 File.com。Debug 將加載文件并顯示 Debug 提示符。 假定需要從驅(qū)動器 C 將起始邏輯扇區(qū)為 15 (0Fh) 的 109 (6Dh) 個扇區(qū)的內(nèi)容加載到起始地址為 04BA:0100 的內(nèi)存中。為此,請鍵入以下命令:
將一個內(nèi)存塊中的內(nèi)容復(fù)制到另一個內(nèi)存塊中。 m range address
range 指定要復(fù)制內(nèi)容的內(nèi)存區(qū)域的起始和結(jié)束地址,或起始地址和長度。 address 指定要將 range 內(nèi)容復(fù)制到該位置的起始地址。 說明 復(fù)制操作對現(xiàn)有數(shù)據(jù)的影響 如果新數(shù)據(jù)沒有寫入正在被復(fù)制的數(shù)據(jù)塊中的地址,則源數(shù)據(jù)將保持不變。但是,如果目標(biāo)塊已經(jīng)包含數(shù)據(jù)(就象它在覆蓋副本操作中一樣),則將改寫該數(shù)據(jù)。(覆蓋復(fù)制操作是指那些目標(biāo)數(shù)據(jù)塊部分內(nèi)容覆蓋原數(shù)據(jù)塊部分內(nèi)容的操作。)
m 命令執(zhí)行目標(biāo)地址的覆蓋復(fù)制操作,而不丟失數(shù)據(jù)。將改寫的地址內(nèi)容首先復(fù)制。因此,如果將較高位地址的數(shù)據(jù)復(fù)制到較低位地址,則復(fù)制操作從原塊的最低位地址開始并向最高位地址進行。反之,如果要將數(shù)據(jù)從低地址復(fù)制到高地址,復(fù)制操作從原塊的最高地址開始,向最低地址進行。
假定鍵入以下命令: mcs:100 110 cs:500 Debug:N(名稱)
指定 Debug l(加載)或 w(寫入)命令的可執(zhí)行文件的名稱,或者指定正在調(diào)試的可執(zhí)行文件的參數(shù)。
n file-parameters
如果在沒有參數(shù)的情況下使用,則 n 命令清除當(dāng)前規(guī)范。 指定要測試的可執(zhí)行文件的位置和名稱。 file-parameters 為正在測試的可執(zhí)行文件指定參數(shù)和開關(guān)。 有關(guān)將文件或指定磁盤扇區(qū)的內(nèi)容加載到內(nèi)存中的信息,請單擊“相關(guān)主題”列表中的 Debug L(加載)。 有關(guān)寫入調(diào)試到磁盤的文件的信息,請單擊“相關(guān)主題”列表中的 Debug W(寫入)。
n 命令的兩個用途 可以按兩種方式使用 n 命令。首先,您可以使用它以指定后面的 l(加載)或 w(寫入)命令所使用的文件。如果在沒有命名所調(diào)試文件的情況下啟動 Debug,必須在使用 l 命令加載文件之前使用命令 nfilename。在 CS:5C 為文件控制塊 (FCB) 正確編排文件名的格式。其次,可以使用 n 命令指定被調(diào)試文件的命令行參數(shù)和開關(guān)。
以下四個內(nèi)存區(qū)域都會受到 n 命令的影響: 內(nèi)存位置 CS:5C CS:6C CS:80 CS:81
假定已經(jīng)啟動 Debug,并加載了正在調(diào)試的程序 Prog.com。接著您決定為 Prog.com 指定兩個參數(shù)并運行此程序。以下是此范例的命令序列: debug prog.com 在這種情況下,Debug g(轉(zhuǎn)向)命令會運行該程序,就好像您已在 Windows 2000 命令提示符后鍵入了如下命令: prog param1 param2 所以,測試和調(diào)試反映 Prog.com 通常的運行時間環(huán)境。 在下面的命令序列中,第一個 n 命令將 File1.exe 指定為后接的 l(加載)命令的文件,該命令將 File1.exe 加載到內(nèi)存。第二個 n 命令指定 File1.exe 將使用的參數(shù)。最后,g 命令將運行 File1.exe 文件,就好像您在 Windows 2000 命令行中鍵入了 File1 File2.dat File2.dat 一樣。 nfile1.exe 注意 Debug:O(輸出)
將字節(jié)值發(fā)送到輸出端口。
port 通過地址指定輸出端口。端口地址可以是 16 位值。 byte-value 指定要指向 port 的字節(jié)值。 有關(guān)從輸入端口讀取字節(jié)值的信息,請單擊“相關(guān)主題”列表中的 Debug I(輸入)。 范例 要將字節(jié)值 4Fh 發(fā)送到地址為 2F8h 的輸出端口,請鍵入以下命令: Debug:P(執(zhí)行)
執(zhí)行循環(huán)、重復(fù)的字符串指令、軟件中斷或子例程;或通過任何其他指令跟蹤。
=address 指定第一個要執(zhí)行指令的位置。如果不指定地址,則默認地址是在 CS:IP 寄存器中指定的當(dāng)前地址。 number 指定在將控制返回給 Debug 之前要執(zhí)行的指令數(shù)。默認值為 1。 有關(guān)運行當(dāng)前在內(nèi)存中程序的信息,請單擊“相關(guān)主題”列表中的 Debug G(轉(zhuǎn)向)。 有關(guān)執(zhí)行指令的信息,請單擊“相關(guān)主題”列表中的 Debug T(跟蹤)。
當(dāng) p 命令將控制從 Debug 傳送到要測試的程序時,該程序不間斷運行,直到循環(huán)、重復(fù)字符串指令、軟件中斷或者完成了指定地址的子例程為止,或者直到執(zhí)行了指定數(shù)量的機器指令為止??刂品祷氐?Debug。 地址參數(shù)的限制 如果 address 參數(shù)沒有指定段,Debug 將使用被測試程序的 CS 寄存器。如果省略 address,程序?qū)?CS:IP 寄存器所指定的地址開始執(zhí)行。必須在 address 參數(shù)之前使用等號 (=) 以便將它與 number 參數(shù)區(qū)分。如果在指定地址處的指令不是循環(huán)、重復(fù)的字符串指令、軟件中斷或子例程,則 p 命令與 Debug t(跟蹤)命令的作用相同。 使用 p 命令顯示的郵件 當(dāng) p 執(zhí)行完一段說明后,Debug 顯示出程序的寄存器內(nèi)容、標(biāo)志的狀態(tài)以及下一段將要被執(zhí)行的指令的解碼形式。
不能使用 p 命令跟蹤只讀內(nèi)存 (ROM)。 范例 假定正在測試的程序在地址 CS:143F 處包含一個 call 指令。要運行 call 目標(biāo)位置的子程序然后將控制返回到 Debug,請鍵入以下命令: p=143f Debug 按以下格式顯示結(jié)果: Debug:Q(退出)
停止 Debug 會話,不保存當(dāng)前測試的文件。 當(dāng)您鍵入 q 以后,控制返回到 Windows 2000 的命令提示符。
該命令不帶參數(shù)。 Debug:R(寄存器)
無 如果在沒有參數(shù)的情況下使用,則 r 命令顯示所有寄存器的內(nèi)容以及寄存器存儲區(qū)域中的標(biāo)志。 register-name 指定要顯示其內(nèi)容的寄存器名。 有關(guān)顯示內(nèi)存部分內(nèi)容的信息,請單擊“相關(guān)主題”列表中的 Debug D(轉(zhuǎn)儲)。 有關(guān)反匯編字節(jié)的信息,請單擊“相關(guān)主題”列表中的 Debug U(反匯編)。
使用 r 命令 如果指定了寄存器名稱,Windows 2000 將顯示以十六進制標(biāo)記表示的寄存器的 16 位值,并將冒號顯示為提示符。如果要更改包含在寄存器中的值,除非鍵入新值并按 ENTER 鍵;否則,請按 ENTER 鍵返回 Debug 提示符。 有效寄存器名 以下是 register-name 的有效值:ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc 及 f。ip 和 pc 都引用指令指針。 如果指定寄存器名稱,而不是從前面的列表中指定,Windows 2000 將顯示以下消息: br error 使用 f 字符而不是寄存器名 如果鍵入 f 字符代替寄存器名,Debug 將每個標(biāo)記的當(dāng)前設(shè)置顯示為兩字母代碼,然后顯示 Debug 提示符。要更改標(biāo)志的設(shè)置,請從下表中鍵入適當(dāng)?shù)膬勺帜复a: 標(biāo)志名 溢出 方向 中斷 正負 零 輔助進位 奇偶校驗 進位
用 r 命令顯示的郵件 如果為標(biāo)記指定了多個值,Debug 將顯示以下消息: df error 如果指定沒有在前面的表中列出的標(biāo)志代碼,Debug 將顯示以下消息: bf error 在這兩種情況下,Debug 將忽略所有在無效項目之后指定的設(shè)置。 Debug 的默認設(shè)置 在啟動 Debug 時,會將段寄存器設(shè)置到空閑內(nèi)存的低端,指令指針設(shè)置為 0100h,清除所有標(biāo)志,并且將其余寄存器設(shè)置為零,除了被設(shè)置為 FFEEh 的 sp 之外。 Debug:R
要查看所有寄存器的內(nèi)容、所有標(biāo)記的狀態(tài)和當(dāng)前位置的指令解碼表,請鍵入以下命令: r 如果當(dāng)前位置是 CS:11A,顯示外觀將類似于以下內(nèi)容: AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000 要只查看標(biāo)志的狀態(tài),請鍵入以下命令: rf Debug 按以下格式顯示信息: NV UP DI NG NZ AC PE NC - _ 現(xiàn)在,您可以按任意順序鍵入一個或多個有效的標(biāo)志值,其中可以有或沒有空格,如下所示: nv up di ng nz ac pe nc - pleicy Debug 結(jié)束 r 命令并顯示 Debug 提示符。要查看更改,請鍵入 r 或 rf 命令。Debug 將顯示以下內(nèi)容: NV UP EI PL NZ AC PE CY - _ Debug:S(搜索)
在某個地址范圍搜索一個或多個字節(jié)值的模式。
range 指定要搜索范圍的開始和結(jié)束地址。有關(guān) range 參數(shù)有效值的信息,請單擊“相關(guān)主題”列表中的 Debug。 list 指定一個或多個字節(jié)值的模式,或要搜索的字符串。用空格或逗號分隔每個字節(jié)值和下一個字節(jié)值。將字符串值包括在引號中。
如果 list 參數(shù)包含多個字節(jié)值,Debug 將只顯示出現(xiàn)字節(jié)值的第一個地址。如果 list 只包含一個字節(jié)值,Debug 將顯示指定范圍內(nèi)出現(xiàn)該值的所有地址。
假定需要查找包含值 41 并且范圍從 CS:100 到 CS:110 的所有地址。為此,請鍵入以下命令: scs:100 110 41 Debug 按以下格式顯示結(jié)果: 04BA:0104 以下命令在 CS:100 到 CS:1A0 的范圍內(nèi)搜索字符串“Ph”。 Debug:U(反匯編)
無 如果在沒有參數(shù)的情況下使用,則 u 命令分解 20h 字節(jié)(默認值),從前面 u 命令所顯示地址后的第一個地址開始。 range 指定要反匯編代碼的起始地址和結(jié)束地址,或起始地址和長度。有關(guān) range 參數(shù)有效值的信息,請單擊“相關(guān)主題”列表中的 Debug。 有關(guān)集成記憶碼的信息,請單擊“相關(guān)主題”列表中的 Debug A(匯編)。 有關(guān)顯示內(nèi)存部分內(nèi)容的信息,請單擊“相關(guān)主題”列表中的 Debug D(轉(zhuǎn)儲)。 范例
要反匯編 16 (10h) 字節(jié),從地址 04BA:0100 開始,請鍵入以下命令: u04ba:100l10 Debug 按以下格式顯示結(jié)果: 04BA:0100 206472 AND [SI+72],AH 如果只顯示從 04BA:0100 到 04BA:0108 特定地址的信息,請鍵入以下命令: u04ba:0100 0108 Debug 顯示以下內(nèi)容: 04BA:0100 206472 AND [SI+72],AH Debug:W(寫入)
將文件或特定分區(qū)寫入磁盤。 要將在 BX:CX 寄存器中指定字節(jié)數(shù)的內(nèi)容寫入磁盤文件,請使用以下語法:
w address drive start number
address 指定要寫到磁盤文件的文件或部分文件的起始內(nèi)存地址。如果不指定 address,Debug 程序?qū)?CS:100 開始。關(guān)于 address 參數(shù)有效值的信息,請在“相關(guān)主題”列表中單擊 Debug。 drive 指定包含目標(biāo)盤的驅(qū)動器。該值是數(shù)值型:0 = A, 1 = B, 2 = C,等等。 start 指定要寫入第一個扇區(qū)的十六進制數(shù)。 number 指定要寫入的扇區(qū)數(shù)。 有關(guān)指定用于 w 命令的文件的信息,請單擊“相關(guān)主題”列表中的 Debug N(名稱)。 有關(guān)將文件或文件扇區(qū)內(nèi)容加載到內(nèi)存中的信息,請單擊“相關(guān)主題”列表中的 Debug L(加載)。 說明 必須在啟動 Debug 時或者在最近的 Debug n(名稱)命令中指定磁盤文件的名字。這兩種方法都可以將地址 CS:5C 處文件控制塊的文件名正確地編排格式。
如果使用了 Debug g(轉(zhuǎn)向)、t(跟蹤)、p(執(zhí)行)或 r(寄存器)命令,必須在使用無參數(shù)的 w 命令之前,將 BX:CX 寄存器復(fù)位。 將修改后的文件寫入磁盤 如果修改文件但不更改文件名、長度或起始地址,Debug 仍然可以正確地將文件寫入源磁盤位置。 w 命令的限制 不能用該命令寫入 .exe 或 .hex 文件。 警告 因為略過 Windows 2000 文件句柄,所以寫入特定的分區(qū)非常危險。如果鍵入錯誤的值,則磁盤文件結(jié)構(gòu)很容易被損壞。 范例 假定要將起始地址為 CS:100 的內(nèi)存內(nèi)容寫入到驅(qū)動器 B 的磁盤中。需要將數(shù)據(jù)從磁盤的邏輯扇區(qū)號 37h 開始并持續(xù) 2Bh 個扇區(qū)。為此,鍵入以下命令: wcs:100 1 37 2b 當(dāng)寫操作完成時,Debug 再次顯示 Debug 提示符。 Debug:XA(分配擴展內(nèi)存) 分配擴展內(nèi)存的指定頁面數(shù)。 要使用擴展內(nèi)存,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展內(nèi)存規(guī)范 (LIM EMS) 的擴展內(nèi)存設(shè)備驅(qū)動程序。
count 指定要分配的擴展內(nèi)存的 16KB 頁數(shù)。 有關(guān)使用擴展內(nèi)存的其他 Debug 命令的信息,請單擊“相關(guān)主題”列表中的 XD(釋放擴展內(nèi)存)、XM(映射擴展內(nèi)存頁)或 XS(顯示擴展內(nèi)存狀態(tài))。 說明 如果指定的頁面數(shù)可用,則 Debug 將顯示消息,此消息表明所創(chuàng)建的句柄的十六進制數(shù);否則,Debug 將顯示錯誤消息。
Debug:XA 范例 要分配擴展內(nèi)存的 8 個頁面,請鍵入以下命令: xa8 如果命令成功,Debug 將顯示類似的以下消息: Debug:XD(釋放擴展內(nèi)存)
要使用擴展內(nèi)存,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展內(nèi)存規(guī)范 (LIM EMS) 的擴展內(nèi)存設(shè)備驅(qū)動程序。
handle 指定要釋放的句柄。 有關(guān)使用擴展內(nèi)存的其他 Debug 命令的信息,請單擊“相關(guān)主題”列表中 XA(分配擴展內(nèi)存)、XM(映射擴展內(nèi)存頁) 或 XS(顯示擴展內(nèi)存狀態(tài))。 范例 要釋放句柄 0003,請鍵入以下命令: xd 0003 如果命令成功,Debug 將顯示下列消息: Debug:XM(映射擴展內(nèi)存頁)
要使用擴展內(nèi)存,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展內(nèi)存規(guī)范 (LIM EMS) 的擴展內(nèi)存設(shè)備驅(qū)動程序。
lpage 指定要映射到物理頁 ppage 的擴展內(nèi)存的邏輯頁面號。 ppage 指定將 lpage 映射到的物理頁面號。 handle 指定句柄。 有關(guān)使用擴展內(nèi)存的其他 Debug 命令的信息,請單擊“相關(guān)主題”列表中的 XA(分配擴展內(nèi)存)、XD(釋放擴展內(nèi)存)或 XS(顯示擴展內(nèi)存)。
要將句柄 0003 的邏輯頁 5 映射到物理頁 2,請鍵入以下命令: xm 5 2 0003 如果命令成功,Debug 將顯示下列消息: Logical page 05 mapped to physical page 02 Debug:XS(顯示擴展內(nèi)存狀態(tài))
要使用擴展內(nèi)存,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展內(nèi)存規(guī)范 (LIM EMS) 的擴展內(nèi)存設(shè)備驅(qū)動程序。
該命令不帶參數(shù)。 有關(guān)使用擴展內(nèi)存的其他 Debug 命令的信息,請單擊“相關(guān)主題”列表中的 XA(分配擴展內(nèi)存)、XD(釋放擴展內(nèi)存)或 XM(映射擴展內(nèi)存頁)。
Debug 顯示的信息有如下格式: Handle xx has xx pages allocated
要顯示擴展內(nèi)存信息,請鍵入以下命令: xs Debug 顯示與以下類似的信息: Handle 0000 has 0000 pages allocated |