導航:首頁 > 程序命令 > 匯編語言debug命令a

匯編語言debug命令a

發布時間:2023-03-27 18:39:16

1. 求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 命令指定被調試文件的命令行參數和開關。

內存區域

以下四個內存區域都會受到 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(執行)

執行循環、重復的字元串指令、軟體中斷或子常式;或通過任何其他指令跟蹤。

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 只包含一個

2. 匯編語言debug 中 G命令怎麼用

1、點擊桌面左下角的【開始】;在搜索欄目中,輸入cmd;在彈出的菜單中,選中cmd,回車。

3. debug命令有什麼作用如何使用

DEBUG是為匯編語言設計的一種高度工具,它通過單步、設置斷點等方式為匯編語言程序員提供了非常有效的調試手段。x0dx0a一、DEBUG程序的調用x0dx0a 在DOS的提示符下,可鍵入命令:x0dx0a C:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]x0dx0a 其中,文件名是被調試文件的名字。如用戶鍵入文件,則DEBUG將指定的文件裝入存儲器中,用戶可對其進行調試。如果未鍵入文件名,則用戶可以用當前存儲器的內容工作,或者用DEBUG命令N和L把需要的文件裝入存儲器後再進行調試。命令中的D指定驅動器PATH為路徑,PARM1和PARM2則為運行被調試文件時所需要的命令參數。x0dx0a 在DEBUG程序調入後,將出現提示符,此時就可用DEBUG命令來調試程序。x0dx0a二、DEBUG的主要命令x0dx0a 1、顯示存儲單元的命令D(DUMP),格式為:x0dx0a _D[address]或_D[range]x0dx0a 例如,按指定范圍顯示存儲單元內容的方法為:x0dx0a -d100 120x0dx0a18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...x0dx0a18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.x0dx0a 7x0dx0a18E4:0120 8Bx0dx0a 其中0100至0120是DEBUG顯示的單元內容,左邊用十六進製表示每個位元組,右邊用ASCII字元表示每個位元組,·表示不可顯示的字元。這里沒有指定段地址,D命令自動顯示DS段的內容。如果只指定首地址,則顯示從首地址開始的80個位元組的內容。如果完全沒有指定地址,則顯示上一個D命令顯示的最後一個單元後的內容。x0dx0a2、修改存儲單元內容的命令有兩種。x0dx0a ·輸入命令E(ENTER),有兩種格式如下:第一種格式可以用給定的內容表來替代指定范圍的存儲單元內容。命令格式為:x0dx0a -E address[list]x0dx0a例如,-E DS:100 F3'XYZƎDx0dx0a 其中F3,'X','Y','Z'和各佔一個位元組,該命令可以用這五個位元組來替代存儲單元DS:0100到0104的原先的內容。x0dx0a 第二種格式則是採用逐個單元相繼修改的方法。命令格式為:x0dx0a -E addressx0dx0a例如,-E DS:100x0dx0a 則可能顯示為:x0dx0a 18E4:0100 89.-x0dx0a 如果需要把該單元的內容修改為78,則用戶可以直接鍵入78,再按「空格」鍵可接著顯示下一個單元的內容,如下:x0dx0a 18E4:0100 89.78 1B.-x0dx0a 這樣,用戶可以不斷修改相繼單元的內容,直到用ENTER鍵結束該命令為止。x0dx0a ·填寫命令F(FILL),其格式為:x0dx0a -F range listx0dx0a例如:-F 4BA:0100 5 F3'XYZƎDx0dx0a 使04BA:0100~0104單元包含指定的五個位元組的內容。如果list中的位元組數超過指定的范圍,則忽略超過的項;如果list的位元組數小於指定的范圍,則重復使用list填入,直到填滿指定的所有單元為止。x0dx0a3)檢查和修改寄存器內容的命令R(register),它有三種格式如下:x0dx0a ·顯示CPU內所有寄存器內容和標志位狀態,其格式為:x0dx0a -Rx0dx0a例如,-rx0dx0a AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000x0dx0a DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NCx0dx0a 18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000x0dx0a ·顯示和修改某個寄存器內容,其格式為:x0dx0a -R register namex0dx0a例如,鍵入x0dx0a -R AXx0dx0a 系統將響應如下:x0dx0a AX F1F4x0dx0a :x0dx0a即AX寄存器的當前內容為F1F4,如不修改則按ENTER鍵,否則,可鍵入欲修改的內容,如:x0dx0ax0dx0a -R bxx0dx0a BX 0369x0dx0a :059Fx0dx0a則把BX寄存器的內容修改為059F。x0dx0a ·顯示和修改標志位狀態,命令格式為:x0dx0a -RF系統將響應,如:x0dx0a OV DN EI NG ZR AC PE CY-x0dx0a 此時,如不修改其內容可按ENTER鍵,否則,可鍵入欲修改的內容,如:x0dx0a OV DN EI NG ZR AC PE CY-PONZDINVx0dx0a 即可,可見鍵入的順序可以是任意的。x0dx0a4)運行命令G,其格式為:x0dx0a -G[=address1][address2[address3?]]x0dx0a 其中,地址1指定了運行的起始地址,如不指定則從當前的CS:IP開始運行。後面的地址均為斷點地址,當指令執行到斷點時,就停止執行並顯示當前所有寄存器及標志位的內容,和下一條將要執行的指令。x0dx0a5)跟蹤命令T(Trace),有兩種格式:x0dx0a ·逐條指令跟蹤x0dx0a -T [=address]x0dx0a 從指定地址起執行一條指令後停下來,顯示所有寄存器內容及標志位的值。如未指定地址則從當前的CS:IP開始執行。x0dx0a ·多條指令跟蹤x0dx0a -T [=address][value]x0dx0a 從指定地址起執行n條指令後停下來,n由value指定。x0dx0a6)匯編命令A(Assemble),其格式為:x0dx0a -A[address]x0dx0a 該命令允許鍵入匯編語言語句,並能把它們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區中。必須注意:DEBUG把鍵入的數字均看成十六進制數,所以如要鍵入十進制數,則其後應加以說明,如100D。x0dx0a7)反匯編命令U(Unassemble)有兩種格式。x0dx0a ·從指定地址開始,反匯編32個位元組,其格式為:x0dx0a -U[address]x0dx0a例如:x0dx0a -u100x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a 18E4:0112 BBO4O2 MOV BX,0204x0dx0a 18E4:0115 E80200 CALL 011Ax0dx0a 18E4:0118 CD20 INT 20x0dx0a 18E4:011A 50 PUSH AXx0dx0a 18E4:011B 51 PUSH CXx0dx0a 18E4:011C 56 PUSH SIx0dx0a 18E4:011D 57 PUSH DIx0dx0a 18E4:011E 8B37 MOV SI,[BX]x0dx0a如果地址被省略,則從上一個U命令的最後一條指令的下一個單元開始顯示32個位元組。x0dx0a ·對指定范圍內的存儲單元進行反匯編,格式為:x0dx0a -U[range]x0dx0a例如:x0dx0a -u100 10cx0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a或x0dx0a -u100 112 x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0ax0dx0a 可見這兩種格式是等效的。x0dx0a8)命名命令N(Name),其格式為:x0dx0a -N filespecs [filespecs]x0dx0a命令把兩個文件標識符格式化在CS:5CH和CS:6CH的兩個文件控制塊中,以便在其後用L或W命令把文件裝入存檔。filespecs的格式可以是:x0dx0a[d:][path] filename[.ext]x0dx0a例如,x0dx0a -N myprogx0dx0a -Lx0dx0a -x0dx0a可把文件myprog裝入存儲器。x0dx0a9)裝入命令(Load),有兩種功能。x0dx0a ·把磁碟上指定扇區范圍的內容裝入到存儲器從指定地址開始的區域中。其格式為:x0dx0a -L[address[drive sector sector]x0dx0a ·裝入指定文件,其格式為:x0dx0a -L[address]x0dx0a此命令裝入已在CS:5CH中格式化了文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開始的存儲區中。x0dx0a10)寫命令W(Write),有兩種功能。x0dx0a ·把數據寫入磁碟的指定扇區。其格式為:x0dx0a -W address drive sector sectorx0dx0a ·把數據寫入指定的文件中。其格式為:x0dx0a -W[address]x0dx0a此命令把指定的存儲區中的數據寫入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數據從CS:0100開始。要寫入文件的位元組數應先放入BX和CX中。x0dx0a11)退出DEBUG命令Q(Quit),其格式為:x0dx0a -Qx0dx0a它退出DEBUG,返回DOS。本命令並無存檔功能,如需存檔應先使用W命令。

4. debug命令怎麼用是干什麼的

Debug原意是殺蟲子。這里是機器調試工具。
他的用處有很多
啟動
Debug,它是可用於測試和調試
MS-DOS
可執行文件的程序。
Debug
[[drive:][path]
filename
[parameters]]
參數
[drive:][path]
filename
指定要測試的可執行文件的位置和名稱。
parameters
指定要測試的可執行文件所需要的任何命令行信息。
++
說明
使用
Debug
命令但不指定要測試的文件
如果使用沒有位置和文件名的
Debug
命令,然後鍵入所有的
Debug
命令以響應
Debug
提示符,連字元
(-)。
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
顯示知態擴展內存的狀態。

5. 如何使用debug

Debug是一種程序,一種調試工具,說白了就是供程序員檢查修改問題的工具。用比較正式的話說Debug是DOS,Windows都提供的實模式(也就是8086方式)程序的調試工具。其實嚴格來說,Debug是在DOS方式下使用的程序,我們在進入Debug前應該先進入DOS。而就目前我們用的計算機來說,進入DOS有以下兩種方法:

1.重啟計算機,進入DOS,此時進入的是實模式的DOS。

2.在Windows界面進入DOS,此時進入的是虛擬8086模式的DOS。

講到這里一定有人會問,實模式和虛擬8086模式什麼意思?給大家簡單講一下:

我們所說的CPU工作模式分為實模式和保護模式兩種,而虛擬8086是保護模式下一種任務的運行模式,並非CPU的工作模式。大家平時用的Windows系統是運行在保護模式下的,而計算機在剛啟動的時候是在實模式下運行,在啟動Windows系統時進入保護模式,除非關閉系統,否則不會回到實模式。如果要一直在實模式下運行,那就得使用DOS等實模式下的操作系統。但是在Windows系統中載入的DOS程序是在虛擬8086模式下運行的。當然這裡面涉及了一些DOS的相關知識,由於篇幅原因咱們在這兒就不講了,感興趣的可以留言評論一起交流。

好了,言歸正傳,回到Debug上, 這里有一點需要注意,Debug把所有數據都當成位元組處理,因此可以用它檢查內存中任何地方的位元組以及修改任何地方的位元組。它可以用於逐指令執行某個程序以驗證程序運行的正確性,也可以在機器碼這個級別追蹤執行過程、比較一個指令執行前後的值以及比較與移動內存中數據的范圍,讀寫文件與磁碟扇區。

值得一提的是,Debug在匯編語言中的應用非常廣泛,Debug的命令比較多,大約20多個,和匯編密切相關的有R命令、D命令、E命令、U命令、T命令、A命令等等,當然每個命令作用不同,比如D是查看內存內容,E是修改內存內容,T是執行一條機器指令等等,還有很多,而且都有固定的命名使用格式,這里就不一一講了,我們今天主要是讓大家知道並理解Debug的意思,關於怎麼使用它學有餘力的可以自行學習研究一下,好了,就到這里吧。

6. 在debug中怎麼用a命令寫匯編指令

運行debug xxx.exe
進入之後
輸入a回車(如果要在特定CS:IP寫代碼就輸入a XXXX:XXXX回車)
然後一條一條指令輸入回車
想結束就直接回車
然後可以用u指令來翻譯用t指令來執行

7. debug是什麼意思啊

DEBUG是計算機排除故障的意思,DEBUG在windows系統中也是極其重要的調試操作。

debug是一個dos實用程序,主要是供程序員來進行調試程序的工具,它可以檢查程序中存在的問題,可以精確到每一行代碼的正確性,在程序開發中有很大的作用。

Debug的特點

Debug把所有數據都當成位元組處理,因此可以用它檢查內存中任何地方的位元組以及修改任何地方的位元組。它可以用於逐指令執行某個程序以驗證程序運行的正確性,也可以在機器碼這個級別追蹤執行過程、比較一個指令執行前後的值以及比較與移動內存中數據的范圍,讀寫文件與磁碟扇區。

Debug在匯編語言中的應用非常廣泛,Debug的命令比較多,大約20多個,和匯編密切相關的有R命令、D命令、E命令、U命令、T命令、A命令等等。

8. debug命令中-a命令格式正確總在最後出現error

MOV AX, 478F

你寫的,缺少了逗號。

9. debug命令的詳細用法

debug命令DEBUG命令參數詳解DEBUG是一個DOS實用程序,是供程序員使用的程序調試工具,可以用它檢查內存中任何地方的位元組以及修改任何地方的位元組。它可以用於逐指令執行某個程序以驗證程序運行的正確性,也可以追蹤執行過程、比較一個指令執行前後的值以及比較與移動內存中數據的范圍,讀寫文件與磁碟扇區。它的功能包括以下幾個方面。1,直接輸入,更改,跟蹤,運行匯編語言源程序;2,觀察操作系統的內容;3,查看ROMBIOS的內容;4,觀察更改RAM內部的設置值;5,以扇區或文件的方式讀寫軟盤數據DEBUG把所有數據都作為位元組序列處理。因此它可以讀任何類型的文件。DEBUG可以識別兩種數據:十六進制數據和ASCⅡ碼字元。它的顯示格式是各個位元組的十六進制值以及值在32與126之間的位元組的相應ASCⅡ碼字元。在DEBUG中輸入數據有兩種方法:提示方法和非提示方法。在用提示方法時,用戶可以輸入要求輸入數據的命令,後跟數據所要輸入的地址。然後用戶就可以看到該地之中已有內容及一個冒號提示符。此時用戶可以在提示符下輸入一個新的值或者按下回車鍵或CTRL+C回到短橫(-)提示符。在運用非提示方法時,用戶可以輸入要輸入數據的內存地址以及要輸入的位元組。但與使用字處理程序或正文編輯程序時不一樣,在使用DEBUG時,用戶不能直接移動游標到一入口點輸入或修改數據,而要一次輸入一個或幾個位元組。在使用DEBUG時可以只涉及內存中的數據,從而一般都要指定所要處理的內存地址,地址的輸入格式是:[段地址]:[位移]。如果沒有輸入地址,DEBUG將假定為當前內存段,從位於地址100H的位元組開始。前100H位元組保留給程序段前綴使用,這一專用區域用於建立DOS與程序之間的聯系。DEBUG總是用四位十六進制數表示地址。用兩位數表示十六進制數據。講到這里大家應該對DEBUG有了初步的了解,但是光知道這些可不夠,接下來我來講講DEBUG的命令格式和命令。當輸入DEBUG調用了DEBUG程序,就會出現一個短橫提示符,用戶就可以在這一短橫後輸入DEBUG程序的命令。有些DEBUG命令會顯示一個內存地址並產生一個作為提示符的冒號。在這些提示符後,用戶可以輸入一個新值以改變所顯示位置原來的值。如果用戶不輸入一個新值而是按下回車或CTRL+C,那麼原來的值不會改變。一般用不著把地址和命令名字分開。例如,用轉儲命令D察看100號地址的數據,那麼這個命令可以用以下任一種形勢輸入:D100D100D。100D,100如果輸入的命令中出現了錯誤,DEBUG將在下一行對著錯誤的位置標記出來,例如:-s100d12^ErrorDEBUG的命令及功能如下:*A[地址]匯編命令功能:將指令直接匯編成機器碼輸入到內存中。說明:用於小段程序的匯編及修改目標程序,所有輸入的數字均採用十六進制,用戶裝入內存的匯編語句是連續存放的,若沒有指定地址,並且前面沒有使用匯編命令,改語句被匯編到CS:0100區域。例A:>DEBUG-a010008F1:0100MOVAH,0908F1:0102MOVDX,10908F1:0105INT21H;08F1:0107INT21H;debugtan.exe-u:反編譯成匯編語言程碼…………..-g100指定中斷點Programterminatednormally:另外:我們在DEBUG下可運行一個文件.EXE如:A:\>debugtan.exe-g即可開始運行此程序,和在DOS下完全一樣:*H[數值][數值]十六進制算術運算命令功能:分別顯示兩個十六進制數相加的和以及第一個數減去第二個數的差。說明:替用戶完成簡單的十六進制數的運算。例:-h453856239B5BEF15*I[埠地址]功能:從指定的埠輸入並顯示(用十六進制)的一個位元組。例:-i70F9;顯示70埠的內容為F9I命令可由80X86的64K個埠取數據*L[地址][盤號:][邏輯扇區號][扇區數]功能:將一個文件或盤的絕對扇區裝入存儲器。說明:單個L命令能夠裝入的最大扇區數是80H,其中盤號0,1,2,3……分別代表A,B,C,……出現讀盤錯,顯示錯誤信息。(1)格式1.L裝入地址驅動器名起始扇區/扇區數這種方式可把磁碟上指定扇區范圍的內容裝入到存儲器從指定地址開始的區域中,在此外扇區編號引用邏輯/扇區的方式。例:-L100001,將A驅的0扇區裝至CS:100上-d10010f08F1:0100EB3C903C53444F53-362E323202010100.L,MSDOS6.22……(2)格式2:L裝入地址這種方式可把指定文件裝入內存,裝入的文件可在進入DEBUG時指定亦可用N命令建立,格式為-n文件名:例1DEBUGtan.pas-L100例2DEBUG-ntan.pas-L100須知:L命令只能讀取邏輯扇區,不能讀取硬碟分區表L命令中所用的磁碟代碼A=00,B=01,C=02……*M[地址范圍][起始地址]數據傳送命令功能:把地址范圍內的存儲器單元的內容移到起始地址的指定地址中說明:傳送期間,源區和目標區可以部分重疊;傳送後源區域數據保持不變。例:-e1004142434445-d10010f08F1:0100414243444562626364--M100104110-d110L1F08F1:0100414243450A2119-200101200796879FABCDE……*N[盤號:][路徑][文件名][擴展名]功能:定義操作文件名。說明:可同時定義兩個操作文件,並將形成的文件控制塊相應的設置在內存CS:5C和CS:6C上,供以後的L和W命令操作之用。我們在運行程序偵錯時,在啟動DEBUG時在其後加文件程序名以及該程序的參數或運行文件,但當我們偵錯一段後,可能裝入其它文件來測試,這時我們可利用N命令來設置而無需退出DEBUG。例:A:\>DEBUGtan.exe-nyoug.pas當程序偵錯一段時間後,若要把tan.exe裝入tan1.pas則-ntanl.pas*O[埠地址][數據]輸出命令功能:發送位元組到指定的輸出埠。例:當我們遇到開機要求輸入口令時,可用如下方式取消-O7010_O7100*P[=地址][數據]進程命令功能:將一個子程序調用指令,循環指令,中斷指令或一個重復字元串指令,停止在下一條指令上。說明:在執行一條子程序調用指令,循環指令,中斷指令或一個重復字元串指令時,發出P命令去執行有關指令,並且返回到要執行的下一條指令。P命令和T一樣選用來跟蹤程序運行過程用的命令,我們可以在P命令中指定程序運行的起始地址,指令個數,如未指定則CS:IP所指定程序的地址開始一次運行一條令。P與T命令的差別在於P命令把CALL/INT當成一條指令來執行,簡化了跟蹤過程,P命令只運行RAM內存的命令,而T命令則可運行RAM和ROM里的程序。*Q退出命令。*R[寄存器]寄存器命令功能:一,顯示單個寄存器的內容,並提供修改功能。二,顯示所有寄存器內容,再加上字母標志位狀態以及要執行的下一條指令。三,顯示8個標志位狀態,並提供修改功能。若不想改變則回車即可。例:-rbxbx0050:51-rAX=0000BX=0051CX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0003ES=0CD3SS=0CD3IP=0100NVUPEIPLNZNAOPNC0CD3:01000FDBOF若想改變標志寄存器,用-RF回車,則DEBUG會將標志內容顯示出來,若想改變任一標志,只要輸入該標志的名稱即可。標志名稱設置未設置標志名稱設置未設置滋出OV(未溢出)NV(未溢出)零位ZRNZ(不等於零)方向DN(減少)UP(增加)輔助進位ACNA(無進位)中斷EI(許可)DI(禁止)奇偶標志PE(偶)PO(奇)符號NG(負)PL(正)進位CYNC(清除進位)例:-RfNVUPEIPLNZNAPONC:-OVDI←輸入值*S[地址范圍][字元串]功能:在指定的地址范圍內查找給定的字元串。說明:用來指定在地址范圍內查找一個字元串,若找到則顯示其地址,否則直接顯示DEBUG提示符。隱含地址為DS段值。在此內存可以用(起始地址)(終止地址)或(起始地址)L(長度)的方式來表示,而字元串與數據行則可混合使用:如:02.76"BC"。例:-d100lof08F1:0100OF2A41430B314296-FFF0B98AF300B1..AC,1B-S100lof"AC"08F1:0102←表示找到,由0102開始,*T[=地址][指令條數]跟蹤命令功能:逐條跟蹤程序的執行,每條指令執行後都將顯示各寄存器的內容。說明:通常採用跟蹤一條指令,但用戶也可以用指令條數設定一次跟蹤多條指令,每執行一條指令之後,顯示所有寄存器的內容和標志狀態。逐條指令跟蹤-T[=起始地址]從指定地址起執行一條指令後停下來,顯示所有寄存器內容及標志位的值,如來指定地址則從當前CS:IP開始執行。A:\>DEBUG-A08F1:0100MOVDL,03H08F1:0102MOVAH,02H08F1:0104INT21H08F1:0106INT20H08F1:0108-TAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=08F1ES=08F1SS=08F1CS=08F11P=0105NVUPEIPLNZPOCY09F1:0102B402MOVAH,02若指定起始地址,則T命令會從指定的地址開始跟蹤,我們還可以指定跟蹤一次所運行指令的個數,用Ctrl+S暫停屏幕的顯示,以便觀察。-t=10010;由CS:100開始跟蹤10條指令*U[起始地址]或者[地址范圍]功能:將內存中的內容轉換為匯編語句。說明:反匯編的位元組數取決與用戶的系統顯示形式,以及在U命令中使用的可選項。(1)從指定地址開始編譯,反匯編32個位元組-U[地址]←從CS:100開始,其反匯編32個位元組如果地址被省略,則從一個U命令的最後一條指令的下一條單元開始匯編32個位元組。(2)對指定的存貯范圍進行反匯編-u起始地址終止地址(L長度)例:-U10010908F1:0100CD20INT2008F1:0102FF9F009ACALLFA12[BX+9A00]08F1:0106F0LOCK08F1:0107FE1DCALLFAR[DI]08F1:0109F0LOCK說明:如指定了范圍則整個范圍全都會被反編譯*W[地址][盤符:][起始扇區][扇區數]寫盤命令功能:將修改過的數據寫到磁碟上。說明:可以將指定內存地址開始的數據寫在磁碟上,可以在沒有指定參數,或指定地址參數的情況下,將調試文件寫在磁碟上。在運行W時需設置文件的大小CX或BX寄存器(1)把數據寫入磁碟的指定扇區-W起始地址驅動器名起始扇區扇區數(2)把數據寫入指定文件中-W起始地址例A:\>DEBUG-A08f1:0100..寫入程序段08F1:012A.-RCXCX:0000:2A←寫入位元組數,即為程序結尾地址減起始地址-ntan.com←設置文件名,需後綴為com-wWring002Abytes-qA:\>TAN←即可執行此程序*"XD"命令:釋放EMS內存例:-XD0001handle0001deallocatel←釋放了利用XD釋放後可再分配*"XM"命令;把擴充內存上的內存頁區映射到主內存區格式:XMRAM長頁碼主內存頁碼句柄例:-XM320001←把0001號句柄的第3號邏輯頁區映射到2號真實頁區*"XS"命令:顯示當前EMS使用情況。格式-XS實用debug命令集錦1.非物理0磁軌壞軟盤的修復此種損壞從軟盤盤面上來看並沒有明顯的劃傷和霉變。一般可以恢復其數據,也可是軟盤重新在利用。處理方法如下:ⅰ.進入debugⅱ.取一張引導區沒有損壞的好磁碟,插入軟碟機-l100001ⅲ.插入損壞的磁碟到軟碟機-w100001-q注意:好盤與壞盤容量必須相同2.物理0磁軌壞軟盤中的數據讀取對於0磁軌損壞的磁碟,一般來說是應該拋棄了,當你也不妨試一試已下方法:磁化處理:用較強的磁鐵在靠近壞磁碟的表面處反復移動,切不可碰到磁碟介質,以免劃傷表面,然後在試試格式化。軟盤換面:小心的將磁碟打開,堅磁片與金屬晶元分開,方面後再按原來的方法粘在一起即可,在重新格式化。diskfix:對於diskfix想必大家都用的比較多了,裡面的磁碟修復功能很好用的。能修復大多數磁碟表面錯誤。

10. 匯編語言怎麼使用A命令輸入數據

如果你說的是DEBUG下的命令
A是用來輸入匯編命令的
數據輸入一般用E,比如-e 100
23 23 44 55,
每個位元組輸完之後按空格鍵

閱讀全文

與匯編語言debug命令a相關的資料

熱點內容
androido下載 瀏覽:476
神奇高量戰法副圖源碼 瀏覽:828
匯編語言設計凱撒密碼加密器 瀏覽:388
主次梁加密是加在哪裡 瀏覽:662
模板匹配演算法matlab 瀏覽:823
外地程序員去北京 瀏覽:22
安卓機換蘋果12如何轉移數據 瀏覽:418
互聯網ntp伺服器地址及埠 瀏覽:613
pdf到word轉換器 瀏覽:267
飛行解壓素材 瀏覽:498
51單片機指令用背嗎 瀏覽:936
unityai演算法 瀏覽:834
我的世界ice伺服器如何打開pvp 瀏覽:975
c語言編程如何做標記 瀏覽:884
python數據分析實戰pdf 瀏覽:985
u盤插入文件夾 瀏覽:918
華為amd雲伺服器 瀏覽:497
漢化編程卡是什麼意思 瀏覽:128
python學習pdf 瀏覽:316
祝緒丹程序員那麼可愛拍吻戲 瀏覽:200