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 [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
參數
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 (載入)
將某個檔或特定磁片磁區的內容載入到記憶體。
要從磁片檔載入 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 命令指定被調試檔的命令行參數和開關。
記憶體區域
以下四個記憶體區域都會受到 n 命令的影響:
記憶體位置
內容
CS:5C
文件 1 的文件控制資料塊 (FCB)
CS:6C
文件 2 的文件控制資料塊 (FCB)
CS:80
n 命令行的長度(以字元表示)
CS:81
n 命令行字元的開頭
為
n 命令指定的第一個檔案名被放在 CS:5C 的 FCB 中。如果指定第二個檔案名,此名稱將放置到 CS:6C 的 FCB 中。n
命令行上鍵入的字元數(除第一個字元之外,n)存儲在位置 CS:80。n 命令行上的實際字元(再次,除了字母 n 之外)存儲在以 CS:81
開頭的位置。注意這些字元可以是在 Windows 2000 命令提示符下鍵入的命令中有效的任何開關和分隔符號。
範例
假定已經啟動 Debug,並載入了正在調試的程式 Prog.com。接著您決定為 Prog.com 指定兩個參數並運行此程式。以下是此範例的命令序列:
debug prog.com
nparam1 param2
g
在這種情況下,Debug g(轉向)命令會運行該程式,就好像您已在 Windows 2000 命令提示符後鍵入了如下命令:
prog param1 param2
所以,測試和調試反映 Prog.com 通常的運行時間環境。
在
下面的命令序列中,第一個 n 命令將 File1.exe 指定為後接的 l(載入)命令的文件,該命令將 File1.exe
載入到記憶體。第二個 n 命令指定 File1.exe 將使用的參數。最後,g 命令將運行 File1.exe 文件,就好像您在
Windows 2000 命令行中鍵入了 File1 File2.dat File2.dat 一樣。
nfile1.exe
l
nfile2.dat file3.dat
g
注意
不
要在 n 命令的第二種形式後使用 l 命令。還要注意,如果現在使用 w(寫入)命令,Windows 2000 將使用名稱 File2.dat
保存正在調試的檔 File1.exe。為避免出現此結果,應該總是在 l 或 w 命令之前立即使用 n 命令的第一種形式。
Debug:O(輸出)
將位元組值發送到輸出埠。
o port byte-value
參數
port
通過位址指定輸出埠。埠位址可以是 16 位值。
byte-value
指定要指向 port 的位元組值。
有關從輸入埠讀取位元組值的資訊,請單擊“相關主題”列表中的 Debug I(輸入)。
範例
要將位元組值 4Fh 發送到位址為 2F8h 的輸出埠,請鍵入以下命令:
o2f8 4f
Debug (執行)
執行迴圈、重複的字串指令、軟體中斷或子常式;或通過任何其他指令跟蹤。
p [= address] [number]
參數
=address
指定第一個要執行指令的位置。如果不指定地址,則默認地址是在 CS:IP 寄存器中指定的當前位址。
number
指定在將控制返回給 Debug 之前要執行的指令數。預設值為 1。
有關運行當前在記憶體中程式的資訊,請單擊“相關主題”列表中的 Debug G(轉向)。
有關執行指令的資訊,請單擊“相關主題”列表中的 Debug T(跟蹤)。
說明
控制傳送到要測試的程式
當 p 命令將控制從 Debug 傳送到要測試的程式時,該程式不間斷運行,直到迴圈、重複字串指令、軟體中斷或者完成了指定位址的子常式為止,或者直到執行了指定數量的機器指令為止。控制返回到 Debug。
地址參數的限制
如
果 address 參數沒有指定段,Debug 將使用被測試程式的 CS 寄存器。如果省略 address,程式將從 CS:IP
寄存器所指定的位址開始執行。必須在 address 參數之前使用等號 (=) 以便將它與 number
參數區分。如果在指定位址處的指令不是迴圈、重複的字串指令、軟體中斷或子常式,則 p 命令與 Debug t(跟蹤)命令的作用相同。
使用 p 命令顯示的郵件
當 p 執行完一段說明後,Debug 顯示出程式的寄存器內容、標誌的狀態以及下一段將要被執行的指令的解碼形式。
警告
不能使用 p 命令跟蹤唯讀記憶體 (ROM)。
範例
假定正在測試的程式在位址 CS:143F 處包含一個 call 指令。要運行 call 目標位置的副程式然後將控制返回到 Debug,請鍵入以下命令:
p=143f
Debug 按以下格式顯示結果:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2246 ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC
2246:1442 7505 JNZ 144A
Debug:Q(退出)
停止 Debug 會話,不保存當前測試的檔。
當您鍵入 q 以後,控制返回到 Windows 2000 的命令提示符。
q
參數
該命令不帶參數。
有關保存檔的資訊,請單擊“相關主題”列表中的 Debug W(寫入)。
Debug:R(寄存器)
顯示或改變一個或多個 CPU 寄存器的內容。
r [register-name]
參數
無
如果在沒有參數的情況下使用,則 r 命令顯示所有寄存器的內容以及寄存器存儲區域中的標誌。
register-name
指定要顯示其內容的寄存器名。
有關顯示記憶體部分內容的資訊,請單擊“相關主題”列表中的 Debug D(轉儲)。
有關反彙編位元組的資訊,請單擊“相關主題”列表中的 Debug U(反彙編)。
說明
使用 r 命令
如果指定了寄存器名稱,Windows 2000 將顯示以十六進位標記表示的寄存器的 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 將每個標記的當前設置顯示為兩字母代碼,然後顯示 Debug 提示符。要更改標誌的設置,請從下表中鍵入適當的兩字母代碼:
標誌名
設置
清除
溢出
ov
nv
方向
dn(減)
up(增)
中斷
ei(啟用)
di(禁用)
正負
ng(負)
pl(正)
零
zr
nz
輔助進位
ac
na
奇偶校驗
pe(偶校驗)
po(奇校驗)
進位
cy
nc
可以按任何順序鍵入新的標誌值。不需要在這些值之間留出空格。要停止 r 命令,請按 ENTER 鍵。任何沒有指定新值的標誌保持不變。
用 r 命令顯示的郵件
如果為標記指定了多個值,Debug 將顯示以下消息:
df error
如果指定沒有在前面的表中列出的標誌代碼,Debug 將顯示以下消息:
bf error
在這兩種情況下,Debug 將忽略所有在無效專案之後指定的設置。
Debug 的默認設置
在啟動 Debug 時,會將段寄存器設置到空閒記憶體的低端,指令指標設置為 0100h,清除所有標誌,並且將其餘寄存器設置為零,除了被設置為 FFEEh 的 sp 之外。
Debug:R
範例
要查看所有寄存器的內容、所有標記的狀態和當前位置的指令解碼表,請鍵入以下命令:
r
如果當前位置是 CS:11A,顯示外觀將類似於以下內容:
AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000
DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC
04BA:011A CD21 INT 21
要只查看標誌的狀態,請鍵入以下命令:
rf
Debug 按以下格式顯示資訊:
NV UP DI NG NZ AC PE NC - _
現在,您可以按任意順序鍵入一個或多個有效的標誌值,其中可以有或沒有空格,如下所示:
nv up di ng nz ac pe nc - pleicy
Debug 結束 r 命令並顯示 Debug 提示符。要查看更改,請鍵入 r 或 rf 命令。Debug 將顯示以下內容:
NV UP EI PL NZ AC PE CY - _
按 ENTER 返回到 Debug 提示符。
Debug:S(搜索)
在某個位址範圍搜索一個或多個位元組值的模式。
s range list
參數
range
指定要搜索範圍的開始和結束地址。有關 range 參數有效值的資訊,請單擊“相關主題”列表中的 Debug。
list
指定一個或多個位元組值的模式,或要搜索的字串。用空格或逗號分隔每個位元組值和下一個位元組值。將字串值包括在引號中。
說明
如果 list 參數包含多個位元組值,Debug 將只顯示出現位元組值的第一個位址。如果 list 只包含一個位元組值,Debug 將顯示指定範圍內出現該值的所有地址。
範例
假定需要查找包含值 41 並且範圍從 CS:100 到 CS:110 的所有地址。為此,請鍵入以下命令:
scs:100 110 41
Debug 按以下格式顯示結果:
04BA:0104
04BA:010D
-
以下命令在 CS:100 到 CS:1A0 的範圍內搜索字串“Ph”。
scs:100 1a0 "Ph"
Debug:U(反彙編)
反彙編位元組並顯示相應的原語句,其中包括位址和位元組值。反彙編代碼看起來象已彙編文件的列表。
u [range]
參數
無
如果在沒有參數的情況下使用,則 u 命令分解 20h 位元組(預設值),從前面 u 命令所顯示位址後的第一個位址開始。
range
指定要反彙編代碼的起始位址和結束位址,或起始位址和長度。有關 range 參數有效值的資訊,請單擊“相關主題”列表中的 Debug。
有關集成記憶碼的資訊,請單擊“相關主題”列表中的 Debug A(彙編)。
有關顯示記憶體部分內容的資訊,請單擊“相關主題”列表中的 Debug D(轉儲)。
範例
要反彙編 16 (10h) 位元組,從位址 04BA:0100 開始,請鍵入以下命令:
u04ba:100l10
Debug 按以下格式顯示結果:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
04BA:0109 65 DB 65
04BA:010A 63 DB 63
04BA:010B 69 DB 69
04BA:010C 66 DB 66
04BA:010D 69 DB 69
04BA:010E 63 DB 63
04BA:010F 61 DB 61
如果只顯示從 04BA:0100 到 04BA:0108 特定位址的資訊,請鍵入以下命令:
u04ba:0100 0108
Debug 顯示以下內容:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
Debug:W(寫入)
將檔或特定分區寫入磁片。
要將在 BX:CX 寄存器中指定位元組數的內容寫入磁片檔,請使用以下語法:
w [address]
要略過 Windows 2000 檔系統並直接寫入特定的磁區,請使用以下語法:
w address drive start number
參數
address
指定要寫到磁片檔的檔或部分檔的起始記憶體位址。如果不指定 address,Debug 程式將從 CS:100 開始。關於 address 參數有效值的資訊,請在“相關主題”列表中單擊 Debug。
drive
指定包含目標盤的驅動器。該值是數值型:0 = A, 1 = B, 2 = C,等等。
start
指定要寫入第一個磁區的十六進位數。
number
指定要寫入的磁區數。
有關指定用於 w 命令的檔的資訊,請單擊“相關主題”列表中的 Debug N(名稱)。
有關將檔或檔磁區內容載入到記憶體中的資訊,請單擊“相關主題”列表中的 Debug L(載入)。
說明
必須在啟動 Debug 時或者在最近的 Debug n(名稱)命令中指定磁片檔的名字。這兩種方法都可以將位址 CS:5C 處檔控制塊的檔案名正確地編排格式。
在使用不帶參數的 w 命令之前重新設置 BX:CX
如果使用了 Debug g(轉向)、t(跟蹤)、p(執行)或 r(寄存器)命令,必須在使用無參數的 w 命令之前,將 BX:CX 寄存器復位。
將修改後的檔寫入磁片
如果修改檔但不更改檔案名、長度或起始位址,Debug 仍然可以正確地將檔寫入源磁片位置。
w 命令的限制
不能用該命令寫入 .exe 或 .hex 文件。
警告
因為略過 Windows 2000 檔控制碼,所以寫入特定的分區非常危險。如果鍵入錯誤的值,則磁片檔結構很容易被損壞。
範例
假定要將起始位址為 CS:100 的記憶體內容寫入到驅動器 B 的磁片中。需要將資料從磁片的邏輯磁區號 37h 開始並持續 2Bh 個磁區。為此,鍵入以下命令:
wcs:100 1 37 2b
當寫操作完成時,Debug 再次顯示 Debug 提示符。
Debug:XA(分配擴展記憶體)
分配擴展記憶體的指定頁面數。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xa [count]
參數
count
指定要分配的擴展記憶體的 16KB 頁數。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中的 XD(釋放擴展記憶體)、XM(映射擴展記憶體頁)或 XS(顯示擴展記憶體狀態)。
說明
如果指定的頁面數可用,則 Debug 將顯示消息,此消息表明所創建的控制碼的十六進位數;否則,Debug 將顯示錯誤消息。
Debug:XA
範例
要分配擴展記憶體的 8 個頁面,請鍵入以下命令:
xa8
如果命令成功,Debug 將顯示類似的以下消息:
Handle created=0003
Debug:XD(釋放擴展記憶體)
釋放指向擴展記憶體的控制碼。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xd [handle]
參數
handle
指定要釋放的控制碼。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中 XA(分配擴展記憶體)、XM(映射擴展記憶體頁) 或 XS(顯示擴展記憶體狀態)。
範例
要釋放控制碼 0003,請鍵入以下命令:
xd 0003
如果命令成功,Debug 將顯示下列消息:
Hdle 0003 deallocated
Debug:XM(映射擴展記憶體頁)
將屬於指定控制碼的擴展記憶體邏輯頁映射到擴展記憶體的物理頁。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xm [lpage] [ppage] [handle]
參數
lpage
指定要映射到物理頁 ppage 的擴展記憶體的邏輯頁面號。
ppage
指定將 lpage 映射到的物理頁面號。
handle
指定控制碼。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中的 XA(分配擴展記憶體)、XD(釋放擴展記憶體)或 XS(顯示擴展記憶體)。
範例
要將控制碼 0003 的邏輯頁 5 映射到物理頁 2,請鍵入以下命令:
xm 5 2 0003
如果命令成功,Debug 將顯示下列消息:
Logical page 05 mapped to physical page 02
Debug:XS(顯示擴展記憶體狀態)
顯示有關擴展記憶體狀態的資訊。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xs
參數
該命令不帶參數。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中的 XA(分配擴展記憶體)、XD(釋放擴展記憶體)或 XM(映射擴展記憶體頁)。
說明
Debug 顯示的資訊有如下格式:
Handle xx has xx pages allocated
Physical page xx = Frame segment xx
xx of a total xx EMS pages have been allocated
xx of a total xx EMS handles have been allocated
範例
要顯示擴展記憶體資訊,請鍵入以下命令:
xs
Debug 顯示與以下類似的資訊:
Handle 0000 has 0000 pages allocated
Handle 0001 has 0002 pages allocated
Physical page 00 = Frame segment C000
Physical page 01 = Frame segment C400
Physical page 02 = Frame segment C800
Physical page 03 = Frame segment CC00相關主題”列表中的 Debug W(寫入)。
說明
n 命令的兩個用途
可
以按兩種方式使用 n 命令。首先,您可以使用它以指定後面的 l(載入)或 w(寫入)命令所使用的文件。如果在沒有命名所調試檔的情況下啟動
Debug,必須在使用 l 命令載入檔之前使用命令 nfilename。在 CS:5C 為檔控制塊 (FCB)
正確編排檔案名的格式。其次,可以使用 n 命令指定被調試檔的命令行參數和開關。
記憶體區域
以下四個記憶體區域都會受到 n 命令的影響:
記憶體位置
內容
CS:5C
文件 1 的文件控制資料塊 (FCB)
CS:6C
文件 2 的文件控制資料塊 (FCB)
CS:80
n 命令行的長度(以字元表示)
CS:81
n 命令行字元的開頭
為
n 命令指定的第一個檔案名被放在 CS:5C 的 FCB 中。如果指定第二個檔案名,此名稱將放置到 CS:6C 的 FCB 中。n
命令行上鍵入的字元數(除第一個字元之外,n)存儲在位置 CS:80。n 命令行上的實際字元(再次,除了字母 n 之外)存儲在以 CS:81
開頭的位置。注意這些字元可以是在 Windows 2000 命令提示符下鍵入的命令中有效的任何開關和分隔符號。
範例
假定已經啟動 Debug,並載入了正在調試的程式 Prog.com。接著您決定為 Prog.com 指定兩個參數並運行此程式。以下是此範例的命令序列:
debug prog.com
nparam1 param2
g
在這種情況下,Debug g(轉向)命令會運行該程式,就好像您已在 Windows 2000 命令提示符後鍵入了如下命令:
prog param1 param2
所以,測試和調試反映 Prog.com 通常的運行時間環境。
在
下面的命令序列中,第一個 n 命令將 File1.exe 指定為後接的 l(載入)命令的文件,該命令將 File1.exe
載入到記憶體。第二個 n 命令指定 File1.exe 將使用的參數。最後,g 命令將運行 File1.exe 文件,就好像您在
Windows 2000 命令行中鍵入了 File1 File2.dat File2.dat 一樣。
nfile1.exe
l
nfile2.dat file3.dat
g
注意
不
要在 n 命令的第二種形式後使用 l 命令。還要注意,如果現在使用 w(寫入)命令,Windows 2000 將使用名稱 File2.dat
保存正在調試的檔 File1.exe。為避免出現此結果,應該總是在 l 或 w 命令之前立即使用 n 命令的第一種形式。
Debug:O(輸出)
將位元組值發送到輸出埠。
o port byte-value
參數
port
通過位址指定輸出埠。埠位址可以是 16 位值。
byte-value
指定要指向 port 的位元組值。
有關從輸入埠讀取位元組值的資訊,請單擊“相關主題”列表中的 Debug I(輸入)。
範例
要將位元組值 4Fh 發送到位址為 2F8h 的輸出埠,請鍵入以下命令:
o2f8 4f
Debug (執行)
執行迴圈、重複的字串指令、軟體中斷或子常式;或通過任何其他指令跟蹤。
p [= address] [number]
參數
=address
指定第一個要執行指令的位置。如果不指定地址,則默認地址是在 CS:IP 寄存器中指定的當前位址。
number
指定在將控制返回給 Debug 之前要執行的指令數。預設值為 1。
有關運行當前在記憶體中程式的資訊,請單擊“相關主題”列表中的 Debug G(轉向)。
有關執行指令的資訊,請單擊“相關主題”列表中的 Debug T(跟蹤)。
說明
控制傳送到要測試的程式
當 p 命令將控制從 Debug 傳送到要測試的程式時,該程式不間斷運行,直到迴圈、重複字串指令、軟體中斷或者完成了指定位址的子常式為止,或者直到執行了指定數量的機器指令為止。控制返回到 Debug。
地址參數的限制
如
果 address 參數沒有指定段,Debug 將使用被測試程式的 CS 寄存器。如果省略 address,程式將從 CS:IP
寄存器所指定的位址開始執行。必須在 address 參數之前使用等號 (=) 以便將它與 number
參數區分。如果在指定位址處的指令不是迴圈、重複的字串指令、軟體中斷或子常式,則 p 命令與 Debug t(跟蹤)命令的作用相同。
使用 p 命令顯示的郵件
當 p 執行完一段說明後,Debug 顯示出程式的寄存器內容、標誌的狀態以及下一段將要被執行的指令的解碼形式。
警告
不能使用 p 命令跟蹤唯讀記憶體 (ROM)。
範例
假定正在測試的程式在位址 CS:143F 處包含一個 call 指令。要運行 call 目標位置的副程式然後將控制返回到 Debug,請鍵入以下命令:
p=143f
Debug 按以下格式顯示結果:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2246 ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC
2246:1442 7505 JNZ 144A
Debug:Q(退出)
停止 Debug 會話,不保存當前測試的檔。
當您鍵入 q 以後,控制返回到 Windows 2000 的命令提示符。
q
參數
該命令不帶參數。
有關保存檔的資訊,請單擊“相關主題”列表中的 Debug W(寫入)。
Debug:R(寄存器)
顯示或改變一個或多個 CPU 寄存器的內容。
r [register-name]
參數
無
如果在沒有參數的情況下使用,則 r 命令顯示所有寄存器的內容以及寄存器存儲區域中的標誌。
register-name
指定要顯示其內容的寄存器名。
有關顯示記憶體部分內容的資訊,請單擊“相關主題”列表中的 Debug D(轉儲)。
有關反彙編位元組的資訊,請單擊“相關主題”列表中的 Debug U(反彙編)。
說明
使用 r 命令
如果指定了寄存器名稱,Windows 2000 將顯示以十六進位標記表示的寄存器的 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 將每個標記的當前設置顯示為兩字母代碼,然後顯示 Debug 提示符。要更改標誌的設置,請從下表中鍵入適當的兩字母代碼:
標誌名
設置
清除
溢出
ov
nv
方向
dn(減)
up(增)
中斷
ei(啟用)
di(禁用)
正負
ng(負)
pl(正)
零
zr
nz
輔助進位
ac
na
奇偶校驗
pe(偶校驗)
po(奇校驗)
進位
cy
nc
可以按任何順序鍵入新的標誌值。不需要在這些值之間留出空格。要停止 r 命令,請按 ENTER 鍵。任何沒有指定新值的標誌保持不變。
用 r 命令顯示的郵件
如果為標記指定了多個值,Debug 將顯示以下消息:
df error
如果指定沒有在前面的表中列出的標誌代碼,Debug 將顯示以下消息:
bf error
在這兩種情況下,Debug 將忽略所有在無效專案之後指定的設置。
Debug 的默認設置
在啟動 Debug 時,會將段寄存器設置到空閒記憶體的低端,指令指標設置為 0100h,清除所有標誌,並且將其餘寄存器設置為零,除了被設置為 FFEEh 的 sp 之外。
Debug:R
範例
要查看所有寄存器的內容、所有標記的狀態和當前位置的指令解碼表,請鍵入以下命令:
r
如果當前位置是 CS:11A,顯示外觀將類似於以下內容:
AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000
DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC
04BA:011A CD21 INT 21
要只查看標誌的狀態,請鍵入以下命令:
rf
Debug 按以下格式顯示資訊:
NV UP DI NG NZ AC PE NC - _
現在,您可以按任意順序鍵入一個或多個有效的標誌值,其中可以有或沒有空格,如下所示:
nv up di ng nz ac pe nc - pleicy
Debug 結束 r 命令並顯示 Debug 提示符。要查看更改,請鍵入 r 或 rf 命令。Debug 將顯示以下內容:
NV UP EI PL NZ AC PE CY - _
按 ENTER 返回到 Debug 提示符。
Debug:S(搜索)
在某個位址範圍搜索一個或多個位元組值的模式。
s range list
參數
range
指定要搜索範圍的開始和結束地址。有關 range 參數有效值的資訊,請單擊“相關主題”列表中的 Debug。
list
指定一個或多個位元組值的模式,或要搜索的字串。用空格或逗號分隔每個位元組值和下一個位元組值。將字串值包括在引號中。
說明
如果 list 參數包含多個位元組值,Debug 將只顯示出現位元組值的第一個位址。如果 list 只包含一個位元組值,Debug 將顯示指定範圍內出現該值的所有地址。
範例
假定需要查找包含值 41 並且範圍從 CS:100 到 CS:110 的所有地址。為此,請鍵入以下命令:
scs:100 110 41
Debug 按以下格式顯示結果:
04BA:0104
04BA:010D
-
以下命令在 CS:100 到 CS:1A0 的範圍內搜索字串“Ph”。
scs:100 1a0 "Ph"
Debug:U(反彙編)
反彙編位元組並顯示相應的原語句,其中包括位址和位元組值。反彙編代碼看起來象已彙編文件的列表。
u [range]
參數
無
如果在沒有參數的情況下使用,則 u 命令分解 20h 位元組(預設值),從前面 u 命令所顯示位址後的第一個位址開始。
range
指定要反彙編代碼的起始位址和結束位址,或起始位址和長度。有關 range 參數有效值的資訊,請單擊“相關主題”列表中的 Debug。
有關集成記憶碼的資訊,請單擊“相關主題”列表中的 Debug A(彙編)。
有關顯示記憶體部分內容的資訊,請單擊“相關主題”列表中的 Debug D(轉儲)。
範例
要反彙編 16 (10h) 位元組,從位址 04BA:0100 開始,請鍵入以下命令:
u04ba:100l10
Debug 按以下格式顯示結果:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
04BA:0109 65 DB 65
04BA:010A 63 DB 63
04BA:010B 69 DB 69
04BA:010C 66 DB 66
04BA:010D 69 DB 69
04BA:010E 63 DB 63
04BA:010F 61 DB 61
如果只顯示從 04BA:0100 到 04BA:0108 特定位址的資訊,請鍵入以下命令:
u04ba:0100 0108
Debug 顯示以下內容:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
Debug:W(寫入)
將檔或特定分區寫入磁片。
要將在 BX:CX 寄存器中指定位元組數的內容寫入磁片檔,請使用以下語法:
w [address]
要略過 Windows 2000 檔系統並直接寫入特定的磁區,請使用以下語法:
w address drive start number
參數
address
指定要寫到磁片檔的檔或部分檔的起始記憶體位址。如果不指定 address,Debug 程式將從 CS:100 開始。關於 address 參數有效值的資訊,請在“相關主題”列表中單擊 Debug。
drive
指定包含目標盤的驅動器。該值是數值型:0 = A, 1 = B, 2 = C,等等。
start
指定要寫入第一個磁區的十六進位數。
number
指定要寫入的磁區數。
有關指定用於 w 命令的檔的資訊,請單擊“相關主題”列表中的 Debug N(名稱)。
有關將檔或檔磁區內容載入到記憶體中的資訊,請單擊“相關主題”列表中的 Debug L(載入)。
說明
必須在啟動 Debug 時或者在最近的 Debug n(名稱)命令中指定磁片檔的名字。這兩種方法都可以將位址 CS:5C 處檔控制塊的檔案名正確地編排格式。
在使用不帶參數的 w 命令之前重新設置 BX:CX
如果使用了 Debug g(轉向)、t(跟蹤)、p(執行)或 r(寄存器)命令,必須在使用無參數的 w 命令之前,將 BX:CX 寄存器復位。
將修改後的檔寫入磁片
如果修改檔但不更改檔案名、長度或起始位址,Debug 仍然可以正確地將檔寫入源磁片位置。
w 命令的限制
不能用該命令寫入 .exe 或 .hex 文件。
警告
因為略過 Windows 2000 檔控制碼,所以寫入特定的分區非常危險。如果鍵入錯誤的值,則磁片檔結構很容易被損壞。
範例
假定要將起始位址為 CS:100 的記憶體內容寫入到驅動器 B 的磁片中。需要將資料從磁片的邏輯磁區號 37h 開始並持續 2Bh 個磁區。為此,鍵入以下命令:
wcs:100 1 37 2b
當寫操作完成時,Debug 再次顯示 Debug 提示符。
Debug:XA(分配擴展記憶體)
分配擴展記憶體的指定頁面數。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xa [count]
參數
count
指定要分配的擴展記憶體的 16KB 頁數。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中的 XD(釋放擴展記憶體)、XM(映射擴展記憶體頁)或 XS(顯示擴展記憶體狀態)。
說明
如果指定的頁面數可用,則 Debug 將顯示消息,此消息表明所創建的控制碼的十六進位數;否則,Debug 將顯示錯誤消息。
Debug:XA
範例
要分配擴展記憶體的 8 個頁面,請鍵入以下命令:
xa8
如果命令成功,Debug 將顯示類似的以下消息:
Handle created=0003
Debug:XD(釋放擴展記憶體)
釋放指向擴展記憶體的控制碼。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xd [handle]
參數
handle
指定要釋放的控制碼。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中 XA(分配擴展記憶體)、XM(映射擴展記憶體頁) 或 XS(顯示擴展記憶體狀態)。
範例
要釋放控制碼 0003,請鍵入以下命令:
xd 0003
如果命令成功,Debug 將顯示下列消息:
Hdle 0003 deallocated
Debug:XM(映射擴展記憶體頁)
將屬於指定控制碼的擴展記憶體邏輯頁映射到擴展記憶體的物理頁。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xm [lpage] [ppage] [handle]
參數
lpage
指定要映射到物理頁 ppage 的擴展記憶體的邏輯頁面號。
ppage
指定將 lpage 映射到的物理頁面號。
handle
指定控制碼。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中的 XA(分配擴展記憶體)、XD(釋放擴展記憶體)或 XS(顯示擴展記憶體)。
範例
要將控制碼 0003 的邏輯頁 5 映射到物理頁 2,請鍵入以下命令:
xm 5 2 0003
如果命令成功,Debug 將顯示下列消息:
Logical page 05 mapped to physical page 02
Debug:XS(顯示擴展記憶體狀態)
顯示有關擴展記憶體狀態的資訊。
要使用擴展記憶體,必須安裝符合 4.0 版的 Lotus/Intel/Microsoft 擴展記憶體規範 (LIM EMS) 的擴展記憶體設備驅動程式。
xs
參數
該命令不帶參數。
有關使用擴展記憶體的其他 Debug 命令的資訊,請單擊“相關主題”列表中的 XA(分配擴展記憶體)、XD(釋放擴展記憶體)或 XM(映射擴展記憶體頁)。
說明
Debug 顯示的資訊有如下格式:
Handle xx has xx pages allocated
Physical page xx = Frame segment xx
xx of a total xx EMS pages have been allocated
xx of a total xx EMS handles have been allocated
範例
要顯示擴展記憶體資訊,請鍵入以下命令:
xs
Debug 顯示與以下類似的資訊:
Handle 0000 has 000