DEBUG各命令详细说明(很详细)
DEBUG各命令詳細說明
啟動DEBUG
1.打開Windows命令窗口
在Windows 95/98的環境中,打開命令窗口的步驟為:點擊“開始”→“運行”,輸入“command”命令; 在WindowsXP及WIN7的環境中,打開命令窗口的步驟為:點擊“開始”→“運行”,輸入“cmd”命令;
2.啟動DEBUG
在命令窗口中啟動DEBUG,啟動命令一般為:DEBUG ?[文件名] [參數表]。其中:文件名指定被調試的文件,其包括名和后綴,參數表是被調試文件運行時所需要的參數。被調試的文件可以是系統中的任何文件,但通常它們的 后綴為.EXE或.COM。 當DEBUG啟動成功后,將顯示連接符“-”,這時,可輸入各種DEBUG命令。DEBUG中所有命令及其含義如DEBUG各命令功能說明表 所示。 關于使用命令的幾點說明:在提示符“-”下才能輸入命令,在按“回車”鍵后,該命令才開始執行命令是單個字母,命令和參數的大小寫可混合輸入可用F1、 F2、F3、Ins、Del、左移鍵、右移鍵等編輯鍵來編輯本行命令當命令出現語法錯誤時,將在出錯位置顯示“^ Error”可用Ctrl+C或Ctrl+Break來終止當前命令的執行,還可用Ctrl+S或Ctrl+Num Lock來暫停屏幕顯示(當連續不斷地顯示信息時)
以下通過實現十九個示例來熟悉DEBUG的命令集和基本的匯編指令。
R命令的使用
R命令作用:觀看和修改寄存器的值。
在提示符“-”下輸入以下命令:R。DEBUG將會顯示出當前所有寄存器和標志位的狀態。
接下來再輸入命令RCX。在提示符“:”后輸入100。該命令的作用是將寄存器CX的值設置為100(注意:DEBUG使用的是十六進制,這里的100相當于十進制的256。)
最后再執行R命令,觀看修改后的寄存器值。
H命令的使用
H命令作用:計算兩個十六進制數的和與差。
在提示符“–”下輸入以下命令:H?10?1。觀看命令執行結果。
運行結果的前一個數是計算出來的和,后一個數是計算出來的差。計算結果均用十六進制形式表示。
D命令的使用
D命令作用:顯示內存區域的內容。
在提示符“–”下連續執行命令R、D、D。觀看命令執行結果。
前面已經介紹過了,命令R的作用是顯示當前寄存器的值。而命令D的作用是顯示內存區域的內容,最左邊是內存的起始地址,中間以十六進制的形式顯示內存值,最右邊是以ASCII碼的形式顯示內存值。每行最多顯示16個字節的內容。
命令D可以帶參數也可省略參數。設DEBUG啟動時DS的值為X,當省略參數時,命令D顯示內容以X:100為起始,每次顯示128個字節的內容。以后再執行不帶參數的命令D時,DEBUG將按上次的位置接著顯示下去。
帶參數時DEBUG能夠顯示指定地址范圍的內容。帶參數的方式有三種:
方式一:d?[起始位置]。DEBUG從起始位置開始顯示128個字節的內容。在提示符“-”下執行命令D?1AF5:100。觀看命令執行結果。
方式二:d?[起始位置]?[結束位置]。DEBUG從起始位置開始一直顯示到結束位置。在提示符“-”下執行命令D?DS:100?1FF。觀看命令執行結果。
方式三:d?[起始位置]?[L長度],長度以L參數為標識。DEBUG從起始位置開始顯示指定長度的內容。在提示符“-”下執行命令D?DS:100?L10。觀看命令執行結果。
E命令的使用
E命令作用:改變內存單位的內容。
E命令的使用方式為:E?[起始位置]。
在提示符“-”下輸入以下命令:E?1AF5:100。
DEBUG首先顯示[1AF5:0000]的內容00.,這時可以修改該字節的值。如果還要修改后續的內容,可以按空格鍵繼續。當要跳過某個字節時,可以按連續的兩個空格跳到后一個字節去。
F命令的使用
F命令作用:使用指定的值填充指定內存區域中的地址。
F命令的使用方式為:F?[范圍]?[填充列表]。
在提示符“-”下輸入以下命令:F?1AF5:100?L20?1?2?3?4?5。執行命令D?1AF5:100觀看命令執行結果。
說明:該命令是用字節序列01、02、03、04、05輪流填充從1AF5:100開始長度為20H的內存區域。
在提示符“-”下輸入以下命令:F?1AF5:100?13F?41?42?43?44。
說明:該命令是用字節序列41、42、43、44輪流填充從1AF5:100開始一直到1AF5:13F的內存區域。
M命令的使用
M命令作用:將指定內存區域的數據復制到指定的地址去。
M命令的使用方式為:M?[范圍]?[指定地址]。
在提示符“-”下輸入以下命令:M?1AF5:100?13F?1AF5:140。執行命令D?1AF5:100觀看命令執行結果。
C命令的使用
C命令作用:將兩塊內存的內容進行比較。
C命令的使用方式為:C?[范圍]?[指定地址],意思就是將指定范圍的內存區域與從指定地址開始的相同長度的內存區域逐個字節進行比較,列出不同的內容。
在提示符“-”下輸入以下命令:C?1AF5:100?13F?1AF5:140。由于兩塊內容完全相同,所以命令執行后沒有任何顯示。
在提示符“-”下輸入以下命令:C?1AF5:100?107?1AF5:180,比較的區域長度為8個字節。命令執行后列出比較結果不同的各個字節。
S命令的使用
S命令作用:在指定的內存區域中搜索指定的串。
S命令的使用方式為:S?[范圍]?[指定串]。
在提示符“-”下輸入以下命令:D?1AF5:100?11F。顯示該區域的內存值。
在提示符“-”下輸入以下命令:S?1AF5:100?11F?41?42?43?44。搜索該區域是否存在字節串41?42?43?44,并將搜索結果一一列出。
從執行結果可以看出,總共搜索到八處。
A命令的使用
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命令的使用方法是:G [=起始地址]??[斷點地址],意思是從起始地址開始執行到斷點地址。如果不設置斷點,則程序一直運行到中止指令才停止。
在設置完示例九的的內存數據并且輸入完示例九的程序后運行這些匯編代碼。在DEBUG中執行命令G=100,觀看運行結果。
匯編程序運行后在屏幕上顯示出“ABCD”四個字符。
接下來在DEBUG中執行G=100?10B,意思是從地址CS:100開始,一直運行到CS:10B停止。觀看運行結果。
命令執行后,不但顯示出字符串“ABCD”,而且列出當前寄存器和標志位的值。
U命令的使用
U命令作用:對機器代碼反匯編顯示。
U命令的使用方法是:U [范圍]。如果范圍參數只輸入了起始地址,則只對20H個字節的機器代碼反匯編。執行命令U100,觀看反匯編結果。
執行命令U100?10B,觀看反匯編結果。該命令的作用是對從100到10B的機器代碼進行反匯編。
N命令的使用
N命令作用:設置文件名,為將剛才編寫的匯編程序存盤做準備。
以下的DEBUG命令序列作用將剛才的匯編程序存為磁盤的COM可執行程序。
D200?20F
U100?10C
N??E:\FIRST.COM
RCX
:110
W
第一和第二條命令的作用是檢查一下剛才編寫的匯編指令。第三條命令的作用是設置存盤文件名為E:\FIRST.COM,第四條命令的作用是設置存盤文件大小為110H個字節。最后一條命令是將文件存盤。
文件存盤后執行E:\FIRST.COM,觀看存盤的可執行文件的運行效果。
W命令的使用
W命令作用:將文件或者特定扇區寫入磁盤。
在示例“N命令的使用”中已經實驗了如何使用W命令將文件存盤。
在沒有很好地掌握匯編語言和磁盤文件系統前,暫時不要使用W命令寫磁盤扇區,否則很容易損壞磁盤文件,甚至破壞整個磁盤的文件系統。
L命令的使用
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?[=地址]?[指令數]。如果忽略“地址”的話,T命令從CS:IP處開始運行。“指令數”是要單步執行的指令的數量。
以下示例對E:\FIRST.COM進行單步跟蹤。
N?E:\FIRST.COM
L
U100?10B
R
T=100
T
第一、二條命令是裝入文件,第三條命令是列出程序反匯編代碼,第四條命令是顯示當前寄存器值,第五條命令是從CS:100處開始單步跟蹤,第六條命令是繼續跟蹤后續的指令。
P命令的使用
P命令作用:執行匯編程序,單步跟蹤。與T命令不同的是:P命令不會跟蹤進入子程序或軟中斷。
P命令的使用方式與T命令的使用方式完全相同。
I命令的使用
I命令作用:從計算機輸入端口讀取數據并顯示。
I命令的用法是I?[端口地址]。例如從3F8號端口讀取數據并顯示的命令為:I?3F8。這里不對該命令做解釋。
O命令的使用
O命令作用:向計算機輸出端口送出數據。
O命令的用法是O?[端口地址]?[字節值]。例如向278號端口發出數據20H的命令為:I?278?20。這里不對該命令做解釋。
Q命令的使用
Q命令的作用是退出DEBUG,回到DOS狀態。
總結
以上是生活随笔為你收集整理的DEBUG各命令详细说明(很详细)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8086汇编贪吃蛇(随机食物+速度递增)
- 下一篇: 汇编指令CALL与JMP的区别