做用:觀看和修改寄存器的值。編程
在提示符「-」下輸入如下命令:R。DEBUG將會顯示出當前全部寄存器和標誌位的狀態。oop
接下來再輸入命令rax。在提示符「:」後輸入100。該命令的做用是將寄存器ax的值設置爲100(注意:DEBUG使用的是十六進制,這裏的100至關於十進制的256。)操作系統
最後再執行r命令,觀看修改後的寄存器值。3d
H命令做用:計算兩個十六進制數的和與差。blog
在提示符「–」下輸入如下命令:h 10 1。觀看命令執行結果。內存
運行結果的前一個數是計算出來的和,後一個數是計算出來的差。計算結果均用十六進制形式表示。字符串
D命令做用:顯示內存區域的內容。搜索
在提示符「–」下連續執行命令R、D、D。觀看命令執行結果。循環
前面已經介紹過了,命令R的做用是顯示當前寄存器的值。而命令D的做用是顯示內存區域的內容,最左邊是內存的起始地址,中間以十六進制的形式顯示內存值,最右邊是以ASCII碼的形式顯示內存值。每行最多顯示16個字節的內容。程序
命令D能夠帶參數也可省略參數。設DEBUG啓動時DS的值爲X,當省略參數時,命令D顯示內容以X:100爲起始,每次顯示128個字節的內容。之後再執行不帶參數的命令D時,DEBUG將按上次的位置接着顯示下去。
帶參數時DEBUG可以顯示指定地址範圍的內容。帶參數的方式有三種:
方式一:d [起始位置]。DEBUG從起始位置開始顯示128個字節的內容。在提示符「-」下執行命令d 1000:100。觀看命令執行結果。
方式二:d [起始位置] [結束位置]。DEBUG從起始位置開始一直顯示到結束位置。在提示符「-」下執行命令d 1000:100 200。觀看命令執行結果。
方式三:d [起始位置] [L長度],長度以L參數爲標識。DEBUG從起始位置開始顯示指定長度的內容。在提示符「-」下執行命令d ds:100 L10。觀看命令執行結果。
E命令做用:改變內存單位的內容。
E命令的使用方式爲:E [起始位置]。
在提示符「-」下輸入如下命令:e 1000:100。
DEBUG首先顯示[1000:100]的內容01.,這時能夠修改該字節的值。若是還要修改後續的內容,能夠按空格鍵繼續。當要跳過某個字節時,能夠按連續的兩個空格跳到後一個字節去。
F命令做用:使用指定的值填充指定內存區域中的地址。
F命令的使用方式爲:F [範圍] [填充列表]。
在提示符「-」下輸入如下命令:F 1AF5:100 L20 1 2 3 4 5。執行命令D 1AF5:100觀看命令執行結果。
說明:該命令是用字節序列0一、0二、0三、0四、05輪流填充從1AF5:100開始長度爲20H的內存區域。
在提示符「-」下輸入如下命令:F 1AF5:100 13F 41 42 43 44。
說明:該命令是用字節序列4一、4二、4三、44輪流填充從1AF5:100開始一直到1AF5:13F的內存區域。
M命令做用:將指定內存區域的數據複製到指定的地址去。
M命令的使用方式爲:M [範圍] [指定地址]。
在提示符「-」下輸入如下命令:M 1AF5:100 13F 1AF5:140。執行命令D 1AF5:100觀看命令執行結果。
C命令做用:將兩塊內存的內容進行比較。
C命令的使用方式爲:C [範圍] [指定地址],意思就是將指定範圍的內存區域與從指定地址開始的相同長度的內存區域逐個字節進行比較,列出不一樣的內容。
在提示符「-」下輸入如下命令:C 1AF5:100 13F 1AF5:140。因爲兩塊內容徹底相同,因此命令執行後沒有任何顯示。
在提示符「-」下輸入如下命令:C 1AF5:100 107 1AF5:180,比較的區域長度爲8個字節。命令執行後列出比較結果不一樣的各個字節。
S命令做用:在指定的內存區域中搜索指定的串。
S命令的使用方式爲:S [範圍] [指定串]。
在提示符「-」下輸入如下命令:D 1AF5:100 11F。顯示該區域的內存值。
在提示符「-」下輸入如下命令:S 1AF5:100 11F 41 42 43 44。搜索該區域是否存在字節串41 42 43 44,並將搜索結果一一列出。
從執行結果能夠看出,總共搜索到八處。
A命令做用:輸入彙編指令。
如下的程序要在屏幕上顯示「ABCD」四個字符。
首先用E命令將「ABCD$」四個字符預先放在內存CS:200處,而後執行A100命令輸入彙編程序代碼:
MOV AX,CS
MOV DS,AX
MOV DX,200
MOV AH,9
INT 21
INT 20
(說明:前兩行彙編指令用於將段寄存器CS的值賦給段寄存器DS。第三到第五行彙編代碼的做用是顯示以「$」爲結尾的字符串。最後一行用於結束程序。)
G命令做用:執行彙編指令。
G命令的使用方法是:G [=起始地址] [斷點地址],意思是從起始地址開始執行到斷點地址。若是不設置斷點,則程序一直運行到停止指令才中止。
在設置完示例九的的內存數據而且輸入完示例九的程序後運行這些彙編代碼。在DEBUG中執行命令G=100,觀看運行結果。
彙編程序運行後在屏幕上顯示出「ABCD」四個字符。
接下來在DEBUG中執行G=100 10B,意思是從地址CS:100開始,一直運行到CS:10B中止。觀看運行結果。
命令執行後,不但顯示出字符串「ABCD」,並且列出當前寄存器和標誌位的值。
g命令在loop中的使用:
使用loop循環時,若是要跳出循環執行後面的代碼,能夠先用u命令查看代碼的偏移地址,在用g命令跳轉到此偏移到此代碼處,以下:
用u命令能夠看到循環的命令位於0b40:000b,因此要跳出循環就用 g 000b 便可。
U命令做用:對機器代碼反彙編顯示。
U命令的使用方法是:U [範圍]。若是範圍參數只輸入了起始地址,則只對20H個字節的機器代碼反彙編。執行命令U100,觀看反彙編結果。
執行命令U100 10B,觀看反彙編結果。該命令的做用是對從100到10B的機器代碼進行反彙編。
N命令做用:設置文件名,爲將剛纔編寫的彙編程序存盤作準備。
如下的DEBUG命令序列做用將剛纔的彙編程序存爲磁盤的COM可執行程序。
D200 20F
U100 10C
N E:\FIRST.COM
RCX
:110
W
第一和第二條命令的做用是檢查一下剛纔編寫的彙編指令。第三條命令的做用是設置存盤文件名爲E:\FIRST.COM,第四條命令的做用是設置存盤文件大小爲110H個字節。最後一條命令是將文件存盤。
文件存盤後執行E:\FIRST.COM,觀看存盤的可執行文件的運行效果。
W命令做用:將文件或者特定扇區寫入磁盤。
在示例「N命令的使用」中已經實驗瞭如何使用W命令將文件存盤。
在沒有很好地掌握彙編語言和磁盤文件系統前,暫時不要使用W命令寫磁盤扇區,不然很容易損壞磁盤文件,甚至破壞整個磁盤的文件系統。
L命令做用:從磁盤中將文件或扇區內容讀入內存。
將文件調入內存必須先用DEBUG的N命令設定文件名。如下例子是將E:\FIRST.COM讀入內容。
N FIRST.COM
L
觀看調入程序的彙編代碼可使用DEBUG的U命令,用U100觀看調入的COM文件。
讀取磁盤扇區的方式是:L [內存地址] [磁盤驅動器號] [起始扇區] [扇區數]。「內存地址」指定要在其中加載文件或扇區內容的內存位置,若是不指定「內存地址」的話,DEBUG將使用CS寄存器中的當前地址。「磁盤驅動器號」指定包含讀取指定扇區的磁盤的驅動器,該值是數值型:0=A,1=B,2=C等。「起始扇區」指定要加載其內容的第一個扇區的十六進制數。「扇區數」指定要加載其內容的連續扇區的十六進制數。
只有要加載特定扇區的內容而不是加載文件時,才能使用[磁盤驅動器號] [起始扇區] [扇區數]參數。
例如:要將C盤第一扇區讀取到內存DS:300的位置,相應的DEBUG命令爲L DS:300 2 1 1。可是因爲Windows操做系統對文件系統的保護,這條命令可能會被操做系統禁止運行。
T命令做用:執行彙編程序,單步跟蹤。
T命令的使用方式是T [=地址] [指令數]。若是忽略「地址」的話,T命令從CS:IP處開始運行。「指令數」是要單步執行的指令的數量。
如下示例對E:\FIRST.COM進行單步跟蹤。
N E:\FIRST.COM
L
U100 10B
R
T=100
T
第1、二條命令是裝入文件,第三條命令是列出程序反彙編代碼,第四條命令是顯示當前寄存器值,第五條命令是從CS:100處開始單步跟蹤,第六條命令是繼續跟蹤後續的指令。
P命令做用:執行彙編程序,單步跟蹤。與T命令不一樣的是:P命令不會跟蹤進入子程序或軟中斷。
P命令的使用方式與T命令的使用方式徹底相同。
p命令還能夠用於結束本次循環,進入下一次循環。
I命令做用:從計算機輸入端口讀取數據並顯示。
I命令的用法是I [端口地址]。例如從3F8號端口讀取數據並顯示的命令爲:I 3F8。這裏不對該命令作解釋。
O命令做用:向計算機輸出端口送出數據。
O命令的用法是O [端口地址] [字節值]。例如向278號端口發出數據20H的命令爲:I 278 20。這裏不對該命令作解釋。
Q命令的做用是退出DEBUG,回到DOS狀態。