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