DEBUG命令參數詳解 |
發(fā)布時間: 2012/5/18 16:39:06 |
DEBUG 命令行參數形式: 格式:DEBUG [[驅動器號:][路徑]文件名 [調試參數]] 用途:debug將所指定文件裝入內存,顯示提示符“-”等待進一 步命令。若裝入文件為.exe文件,按照重定位原則裝入為可執(zhí)行狀態(tài) 。.com文件類似。若為其它類型文件則直接進行內存映射,由偏移量 100H原封不動讀入內存。 debug將在緩沖區(qū)為被調試程序建立適當的PSP(程序段前綴, Program Segment Prefix)。在PSP中的偏移量80H為命令行的末尾。 而且在偏移量5CH和6CH由包含參數后面的可選參數構成缺省的FCB( 文件控制塊,File Control Block)。 進入時各寄存器初使情況: 寄存器 .com程序 .exe程序 AX 指定驅動器錯誤碼 指定驅動器錯誤碼 BX 程序空間的高地址 程序空間的高地址 CX 程序空間的低地址 程序空間的低地址 DX 0 0 SI 0 0 DI 0 0 BP 0 0 SP 0FFFFH或可利用的 不定 內存空間上限減2 IP 100H 目標程序的的代碼 入口偏移量 CS PSP 目標程序代碼段址 DS PSP PSP CS PSP PSP SS PSP 目標程序堆棧段底 命令: A: 編寫匯編代碼(Assemble) 格式:A[地址] 用途:程序允許在指定位置(若無缺省為IP指針位置)進行匯編 程序書寫。 細節(jié): *所有數值皆為十六進制整數,數值后不帶“H” *不支持文件管理用的目錄表、宏標記、條件匯編 *跳轉指令后要直接書寫十六進制地址不支持標號 *數據類型若非默認類型,要以PTR加以指定 *字符串操作要指定類型為B或W(如lodsb和lodsw等)及長度 *用DB和DW接受數據定義,直按進行匯編 *對內存地址加[]以與立即數區(qū)分 C: 內存內容比較(Compare) 格式:C 地址范圍 地址 地址范圍:做比較的第一個內存域始未地址或始地址和長度 地址: 做比較的第二個內存域的始地址 用途:*對內存中兩個域的內容加以比較,以字節(jié)為單位。對發(fā)現有 差別的內容及其地址用如下形式顯示出: 地址1 始位置 未位置 地址2 *若地址范圍或地址不含段地址,默認為DS的值。 D: 顯示內存內容(Dump) 格式:D[地址范圍] 地址范圍:給定顯示區(qū)的始未范圍或始地址和長度。 用途:*內存內容顯示指令,以十六進制和ASCII碼形式顯示指定范 圍內的內存內容。 *若不指定范圍,第一次按目標程序的CS:IP的位址開始顯示。 以后使用上次顯示的未地址的下一地址為開始進行顯示。 *若不指定長度,則顯示128byte的內容。計8行。 E: 數據的輸入 格式:E 地址 數值列表 地址: 數據輸入的內存始地址 數值列表:從始地址輸入的連續(xù)數據 用途:*向內存區(qū)域輸入數據。數據以十六進制形式,或以ASCII碼形式 均可。覆蓋掉原有數據。 *十六進制時要用空格、逗號或制表符加以分隔。字符串則要用單 引號或雙引號括起且區(qū)分大小寫。 *若不指寫段址,則默認為DS中值。每寫完一數據地址自動增加。 *如省略數值列表,對應每一字節(jié)請求輸入。點號前為該字節(jié)原 始值,點號后請求輸入。這時若按空格,跳過這一字節(jié);按回車, 結束輸入;按減號或連字符,顯示前一字節(jié)內容。 *出錯時內存內容有可能已被改變。提示后終止。 *字符串只能以數值列表的形式輸入,不能按地址提式輸入。 F: 內存填充(Fill) 格式:F 地址范圍 數值列表 地址范圍:數據輸入的內存始本地址或首地址和長度 數值列表:從始地址輸入的連續(xù)數據 用途:*將列表中數據寫入內存。輸入數據以十六進制或ASCII碼形式。 覆蓋原有信息;若出錯,顯示出錯信息,原有信息保留。 *若未指寫段址,默認為DS寄存器值。 *列表中可有十六進制或字符串兩種形式,各內容用空格、逗號、 制表符隔開。字符串必須以單引號或雙引號括起,區(qū)分大小寫。 *若要填充區(qū)域大于數據數目,列表可重復使用;相反,若列表 比要填充區(qū)域大時,則自動截斷后面的數據。 G: 程序執(zhí)行(Go) 格式:G[=地址][斷點0][……斷點] 地址: Debug開始執(zhí)行的地址。 斷點0……斷點9:指定的0—10個臨時中斷點。 用途:*將CPU控制權由Debug轉移給被調試中的程序。不設斷點時,則程 序的執(zhí)行或是中途失敗蚴欽?=崾?=崾?保?崾居小癙rogram termminated nomally”,即程序結束正常,控制權再返回到 Debug。 *此時因數據有可能重寫,若需再次執(zhí)行,因重新裝入。 *地址中,如未指定段址,則使用目標程序的CS寄存器中的值。當 地址省略時,則Debug使用目標程序的CS:IP寄存器的值開始執(zhí)行。 且為與斷點區(qū)分,地址參數前必須加等號,否則將其認為是第零 個斷點。 *斷點參數可指定10個臨時斷點。當程序執(zhí)行到指定的斷點地址時 則發(fā)生中止。與斷點表內的次序無關,斷點可按任意次序輸入。 *中止時,將會顯示寄存器的內容、標志位狀態(tài)及CS:IP指出的指 令(也就是下一條將要執(zhí)行的指令),然后是提示符“-”。 *若沒有裝入可執(zhí)行程序或程序內容未知,有可能進入死狀態(tài)。 *若目標程序的棧不起作用或太小,則可能引起系統(tǒng)“破碎”。 H: 執(zhí)行十六進制算術運算(Hexadecimal) 格式:H 值1 值2 值1、2為0—FFFFH范圍內的任意十六進制數。 用途:*用來求兩個十六進制數的和、差,對結果顯示為值1+值2及值1- 值2。如果值2 > 值1則顯示其補碼。 *雖然很少用,但事實還是很有用的,熟練掌握。 I: 端口的輸入(Input) 格式:I 端口地址 端口地址:0—FFFF范圍內的I/O端口地址。 用途:用來讀取指定I/O端口地址,并以2位十六進制數加以顯示。 警告:I指令將直接訪問計算機硬件,不是所以錯誤檢查都能進行,所以 使用是必須小心。對某個外設控制器分配端口的輸入操作,可能 干涉系統(tǒng)固有的操作。對沒有分配指定I/O端口的設備,或該端口 為寫入專用端口等情況,I命令都不能保證可顯示。 L: 裝入命令(Load) 格式:L 地址 或 L 地址 驅動器 開始扇區(qū) 扇區(qū)數 地址: 存放從盤中讀出數據的內存地址。 驅動器: A=0, B=1, C=2, 以此類推。 開始扇區(qū):以十六進制數表示要最先裝入的邏輯扇區(qū)號。 扇區(qū)數: 以十六進制數表示要裝入連續(xù)扇區(qū)個數。 用途:*若輸入了一個不完全的L命令時,則對下述磁盤文件進行裝入: 1在Debug命令行中指定過的文件; 2由命令末尾參數N指定的文件。 *在地址中若未指定段址,則使用CS中的值。若為可執(zhí)行文件按重 定位原則裝入為可執(zhí)行狀態(tài)。 *裝入后文件長度,或.exe文件程序的實際長度放入目標程序的BX 和CX兩個寄存器中。高十六位放在BX中。 *若在命令行中給出所有參數,則不必用MS-DOS的文件系統(tǒng)訪問磁 盤。 M: 數據傳送(Move) 格式:M 地址范圍 地址 地址范圍:被復制域的始末地址,或始地址和長度。 地址: 數據復制目的域的起始地址。 用途:*對內存中數據進行復制。目的域被覆蓋。 *若地址范圍中無段址,則使用DS內容;若地址中無段址,使用地 址范圍中的值。 N: 文件名或命令末尾的參數(Name) 格式:N 參數 [參數……] 參數:插入到仿真的PSP中去一個以上的文件名或者是開關項。 用途:*對磁盤讀寫操作L、W指定目標文件。 O: 端口的輸出(Output) 格式:O 端口 字節(jié) 端口:I/O端口地址。 字節(jié):寫入I/O端口的0—FFFF范圍的值。 用途:向I/O端口地址寫入一字節(jié)。 警告:錯誤的操作將導致系統(tǒng)崩潰。 P: 循環(huán)或子程序處理(Procedure) 格式:P[=地址] [命令數] 地址: 執(zhí)行的起始地址。 指令數:執(zhí)行的指令條數。 用途:*循環(huán)或子程序處理。將循環(huán)、串指令、軟件中斷或子程序調用 視為單語句。執(zhí)行中了,顯示目標程序寄存器內容、標志位狀態(tài) 和下一條要執(zhí)行的指令。 *若地址參數中無段址,則使用CS中的值。完全忽略地址時,則從 程序中的CS:IP指定位置開始執(zhí)行。 Q: 結束Debug操作(Quit) 格式:Q 用途:程序結束返回。對未保存的結果丟失。 R: 寄存器顯示與更改(Register) 格式:R [寄存器] 寄存器:AX BX CX DX SP BP SI DI DS ES CS IP PC F 用途:*若R不帶參數,則顯示所有寄存器的內容和狀態(tài)標志、下一指令。 *若指定新值,在顯示內容后,給出冒句提示輸入新值;剀嚱Y束。 *對狀態(tài)字F,在連字符“-”后以空格間隔輸入新值,次序不計。 *若直接回車,則跳過修改,寄存器內容不變。 S: 內存檢索(Search) 格式:S 地址范圍 列表 地址范圍:想來你該明白是什么樣了吧:) 列表: 欲檢索的一個以上的字節(jié)值或字符串。 用途:*在指定的內存范圍內檢索列表的值。對每一個匹配的地址進行 顯示。 *若起地址中無段址,默認為DS的值。 *檢索范圍不得大于FFFFH *列表必須以分隔符(空格,逗號,制表符等)分隔;字符串要加 單引號或雙引號括起,區(qū)分大小寫。 T: 程序執(zhí)行跟蹤(Trace) 格式:T[=地址][指令數] 地址: 執(zhí)行的第一條指令的地址。 指定數:執(zhí)行的機器指令的條數。 用途:*執(zhí)行單條指令,顯示寄存器及下一條指令。 *在地址參數中若無段址,則默認為CS寄存器的值。 *若全部省略,則由CS:IP寄存器指出的地址開始執(zhí)行。 *以后則順序執(zhí)行。 *對ROM內的跟蹤應使用T命令。 警告:對Intel 8259 中斷屏幕的內容(IBM PC及兼容機端口20H和21H) 的更改,或者系統(tǒng)功能調用(INT 21H),不能使用T指令,對上述 情況要使用P指令。 U: 反匯編(Unassemble) 格式:U [地址范圍] 用途:*將機器指定解碼為匯編語言的助記符。 *地址范圍中無段址時,默認使用CS值。 *當始地址與實際邊界不一致時,結果將不可信。 *若不含末地址或長度,則自給定始地址起反匯編32個字節(jié)。 *以后由前次U最后一指令的下一指令做32字節(jié)的反匯編。 *若從沒用過U,則于CS:IP開始進行反匯編。 *只能對8086指令解碼,對其它以DB來顯示。 W: 寫入文件或扇區(qū)(Write) 格式:W [地址] 或 W 地址 驅動器 開始扇區(qū) 扇區(qū)數 地址: 待寫入盤的數據在內存中的起始位置。 驅動器:寫入數據的盤的驅動器號(A=0,B=1,C=2,以下類推)。 始扇區(qū):寫入數據的最前的邏輯扇區(qū)號(0—FFFFH)。 扇區(qū)數:寫入數據的連續(xù)扇區(qū)個數(0—FFFFH)。 用途:*將內存中的文件或一個個扇區(qū)傳送到磁盤上。 *W若不帶參數,或只有地址參數,則按BX:CX寄存器指出的字節(jié),從內 存向磁盤寫入數據。此時的文件名是此命令前最后一個使用過的文件名 ,或者是N命令中指定的文件,如果沒有使用過N命令,則使用Debug命 令行中指定的文件。 *Debug的W命令,不能向擴展名為.EXE或.HEX的文件中寫入數據。 *這可用改擴展名的方法得到應用,讓其能對.exe文件寫入。 *若無地址項,則認為是目標程序的CS:0100H。 *該命令可不通過MS-DOS的文件系統(tǒng)直接訪問磁盤的邏輯扇區(qū)。但必須 以十六進制形式給在命令行中給定各參數。 *W命令不能對用于網絡上的驅動器進行邏輯扇區(qū)寫入處理。 警告:若參數有誤,則可能破壞盤文件結構。 請務必先搞清再作試踐,特別是對硬盤的操作。 本文出自:億恩科技【mszdt.com】 |