DEBUG命令使用解析及范例大全_第1頁
DEBUG命令使用解析及范例大全_第2頁
DEBUG命令使用解析及范例大全_第3頁
DEBUG命令使用解析及范例大全_第4頁
DEBUG命令使用解析及范例大全_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

DEBUG命令使用解析及范例大全PAGEPAGE24大連海事大學計算機科學與技術學院DEBUG命令使用解析及范例大全啟動Debug,它是可用于測試和調試MS-DOS可執(zhí)行文件的程序。Debug[[drive:][path]filename[parameters]]參數(shù)[drive:][path]filename指定要測試的可執(zhí)行文件的位置和名稱。parameters指定要測試的可執(zhí)行文件所需要的任何命令行信息。說明使用Debug命令但不指定要測試的文件如果使用沒有位置和文件名的Debug命令,然后鍵入所有的Debug命令以響應Debug提示符,連字符(-)。Debug命令以下是Debug命令列表:?顯示Debug命令列表。a匯編8086/8087/8088記憶碼。c比較內存的兩個部分。d顯示部分內存的內容。e從指定地址開始,將數(shù)據(jù)輸入到內存。f使用指定值填充一段內存。g運行在內存中的可執(zhí)行文件。h執(zhí)行十六進制運算。i顯示來自特定端口的1字節(jié)值。l將文件或磁盤扇區(qū)內容加載到內存。m復制內存塊中的內容/n為l或w命令指定文件,或者指定正在測試的文件的參數(shù)。o向輸出端口發(fā)送1個字節(jié)的值。p執(zhí)行循環(huán)、重復的字符串指令、軟件中斷或子例程。q停止Debug會話。r顯示或改變一個或多個寄存器。s在部分內存中搜索一個或多個字節(jié)值的模式。t執(zhí)行一條指令,然后顯示所有寄存器的內容、所有標志的狀態(tài)和Debug下一步要執(zhí)行的指令的解碼形式。u反匯編字節(jié)并顯示相應的原語句。w將被測試文件寫入磁盤。xa分配擴展內存。xd釋放擴展內存。xm映射擴展內存頁。xs顯示擴展內存的狀態(tài)。分隔命令參數(shù)所有Debug命令都接受參數(shù),除了q命令之外??梢杂枚禾柣蚩崭穹指魠?shù),但是只有在兩個十六進制值之間才需要這些分隔符。因此,以下命令等價:dcs:100110dcs:100110d,cs:100,110指定有效地址項Debug命令中的address參數(shù)指定內存位置。Address是一個包含字母段記錄的二位名稱或一個四位字段地址加上一個偏移量??梢院雎远渭拇嫫骰蚨蔚刂?。a,g,l,t,u和w命令的默認段是CS。所有其他命令的默認段是DS。所有數(shù)值均為十六進制格式。有效地址如下:CS:010004BA:0100在段名和偏移量之間要有冒號。指定有效范圍項Debug命令中的range參數(shù)指定了內存的范圍??梢詾閞ange選擇兩種格式:起始地址和結束地址,或者起始地址和長度范圍(由l表示)。例如,下面的兩個語法都可以指定從CS:100開始的16字節(jié)范圍:cs:10010fcs:100l10Debug子命令選擇Debug命令以獲得詳細信息。1、Debug:A(匯編)2、Debug:C(比較)3、Debug(轉儲)4、Debug:E(鍵入)5、Debug:F(填充)6、Debug:G(轉向)7、Debug:H(十六進制)8、Debug:I(輸入)9、Debug:L(加載)10、Debug:M(移動)11、Debug:N(名稱)12、Debug:O(輸出)13、Debug:P(執(zhí)行)14、Debug:Q(退出)15、Debug:r(寄存器)16、Debug:s(搜索)17、Debug:T(跟蹤)18、Debug:U(反匯編)19、Debug:W(寫入)20、Debug:XA(分配擴展內存)21、Debug:XD(取消分配擴展內存)22、Debug:XM(映射擴展內存頁)23、Debug:XS(顯示擴展內存狀態(tài))***********************Debug子命令*********************************************************************************************************1、Debug:A(匯編)直接將8086/8087/8088記憶碼合并到內存。該命令從匯編語言語句創(chuàng)建可執(zhí)行的機器碼。所有數(shù)值都是十六進制格式,必須按一到四個字符輸入這些數(shù)值。在引用的操作代碼(操作碼)前指定前綴記憶碼。a[address]參數(shù)address指定鍵入?yún)R編語言指令的位置。對address使用十六進制值,并鍵入不以“h”字符結尾的每個值。如果不指定地址,a將在它上次停止處開始匯編。有關將數(shù)據(jù)輸入到指定字節(jié)中的信息,請單擊“相關主題”列表中的DebugE(鍵入)。有關反匯編字節(jié)的信息,請單擊“相關主題”列表中的DebugU(反匯編)。范例a命令支持所有形式的間接注冊命令,如下例所示:addbx,34[bp+2].[si-1]pop[bp+di]push[si]還支持所有操作碼同義詞,如下例所示:loopz100loope100ja200jnbe200對于8087操作碼,必須指定wait或fwait前綴,如下例所示:fwaitfaddst,st(3);thislineassembles;anfwaitprefix說明使用記憶碼段的替代記憶碼為cs:、ds:、es:和ss:。遠程返回的記憶碼是retf。字符串處理的記憶碼必須明確聲明字符串大小。例如,使用movsw可以移動16位的字串,使用mov***(文字因故被系統(tǒng)屏蔽)***(文字因故被系統(tǒng)屏蔽)可以移動8位字節(jié)串。匯編跳轉和調用匯編程序根據(jù)字節(jié)替換自動將短、近和遠的跳轉及調用匯編到目標地址。通過使用near或far前綴可以替代這樣的跳轉或調用,如下例所示:-a0100:05000100:0500jmp502;a2-byteshortjump0100:0502jmpnear505;a3-bytenearjump0100:0505jmpfar50a;a5-bytefarjump可以將near前綴縮寫為ne。區(qū)分字和字節(jié)內存位置當某個操作數(shù)可以引用某個字內存位置或者字節(jié)內存位置時,必須用前綴wordptr或者前綴byteptr指定數(shù)據(jù)類型??山邮艿目s寫分別是wo和by。以下范例顯示兩種格式:decwo[si]negbyteptr[128]指定操作數(shù)Debug使用包括在中括號([])的操作數(shù)引用內存地址的習慣用法。這是因為另一方面Debug不能區(qū)分立即操作數(shù)和內存地址的操作數(shù)。以下范例顯示兩種格式:movax,21;loadAXwith21hmovax,[21];loadAXwiththe;contentsof;memorylocation21h使用偽指令使用a命令提供兩個常用的偽指令:db操作碼,將字節(jié)值直接匯編到內存,dw操作碼,將字值直接匯編到內存。以下是兩個偽指令的范例:db1,2,3,4,"THISISANEXAMPLE"dbTHISISAQUOTATIONMARK:"db"THISISAQUOTATIONMARK:"dw1000,2000,3000,"BACH"***************************************************************************2、Debug:C(比較)比較內存的兩個部分。crangeaddress參數(shù)range指定要比較的內存第一個區(qū)域的起始和結束地址,或起始地址和長度。有關有效的range值的信息,請單擊“相關主題”列表中的“Debug說明”。address指定要比較的第二個內存區(qū)域的起始地址。有關有效address值的信息,請單擊“相關主題”列表中的“Debug說明”。范例以下命令具有相同效果:c100,10f300c100l10300每個命令都對100h到10Fh的內存數(shù)據(jù)塊與300h到30Fh的內存數(shù)據(jù)塊進行比較。Debug響應前面的命令并顯示如下信息(假定DS=197F):197F:01004DE4197F:0300197F:01016799197F:0301197F:0102A327197F:0302197F:010335F3197F:0303197F:010497BD197F:0304197F:01050435197F:0305197F:01077671197F:0307197F:0108E611197F:0308197F:0109192C197F:0309197F:010A800A197F:030A197F:010B367F197F:030B197F:010CBE22197F:030C197F:010D8393197F:030D197F:010E4977197F:030E197F:010F4F8A197F:030F注意列表中缺少地址197F:0106和197F:0306。這表明那些地址中的值是相同的。說明如果range和address內存區(qū)域相同,Debug將不顯示任何內容而直接返回到Debug提示符。如果有差異,Debug將按如下格式顯示:address1byte1byte2addess2***************************************************************************3、DebugD顯示一定范圍內存地址的內容。d[range]參數(shù)range指定要顯示其內容的內存區(qū)域的起始和結束地址,或起始地址和長度。有關有效的range值的信息,請單擊“相關主題”列表中的“Debug說明”。如果不指定range,Debug程序將從以前d命令中所指定的地址范圍的末尾開始顯示128個字節(jié)的內容。有關顯示寄存器內容的信息,請單擊“相關主題”列表中的DebugR(寄存器)。范例假定鍵入以下命令:dcs:10010fDebug按以下格式顯示范圍中的內容:04BA:0100544F4D0053415759-4552000000000000TOM.SAWYER如果在沒有參數(shù)的情況下鍵入d命令,Debug按以前范例中所描述的內容來編排顯示格式。顯示的每行以比前一行的地址大16個字節(jié)(如果是顯示40列的屏幕,則為8個字節(jié))的地址開頭。對于后面鍵入的每個不帶參數(shù)的d命令,Debug將緊接在最后顯示的命令后立即顯示字節(jié)內容。如果鍵入以下命令,Debug將從CS:100開始顯示20h個字節(jié)的內容:dcs:100l20如果鍵入以下命令,Debug將顯示范圍從CS段的100h到115h中所有字節(jié)的內容:dcs:100115++說明當使用d命令時,Debug以兩個部分顯示內存內容:十六進制部分(每個字節(jié)的值都用十六進制格式表示)和ASCII碼部分(每個字節(jié)的值都用ASCII碼字符表示)。每個非打印字符在顯示的ASCII部分由句號(.)表示。每個顯示行顯示16字節(jié)的內容,第8字節(jié)和第9字節(jié)之間有一個連字符。每個顯示行從16字節(jié)的邊界上開始。***************************************************************************4、Debug:E(鍵入)將數(shù)據(jù)輸入到內存中指定的地址??梢园词M制或ASCII格式鍵入數(shù)據(jù)。以前存儲在指定位置的任何數(shù)據(jù)全部丟失。eaddress參數(shù)address指定輸入數(shù)據(jù)的第一個內存位置。list指定要輸入到內存的連續(xù)字節(jié)中的數(shù)據(jù)。范例假定鍵入以下命令:ecs:100Debug按下面的格式顯示第一個字節(jié)的內容:04BA:0100EB.要將該值更改為41,請在插入點鍵入41,如下所示:04BA:0100EB.41_可以用一個e命令鍵入連續(xù)的字節(jié)值。在鍵入新值后按SPACEBAR(空格鍵),而不是按ENTER鍵。Debug顯示下一個值。在此范例中,如果按三次SPACEBAR(空格鍵),Debug將顯示下面的值:04BA:0100EB.4110.00.BC._要將十六進制值BC更改為42,請在插入點鍵入42,如下所示:04BA:0100EB.4110.00.BC.42_假定決定值10應該是6F。要糾正該值,請按HYPHEN鍵兩次以返回到地址0101(值10)。Debug顯示以下內容:04BA:0100EB.4110.00.BC.42-04BA:010200.-04BA:010110._在插入點鍵入6f更改值,如下所示:04BA:010110.6f_按ENTER停止e命令并返回到Debug提示符下。以下是字符串項的范例:eds:100"Thisisthetextexample"該字符串將從DS:100開始填充24個字節(jié)。說明使用address參數(shù)如果在沒有指定可選的list參數(shù)的值情況下指定address的值,Debug將顯示地址和內容,在下一行重復地址,并等待您的輸入。此時,您可以執(zhí)行下列操作之一:·替換字節(jié)值。為此,請在當前值后鍵入新值。如果您鍵入的值不是有效的十六進制值,或該值包含兩個以上的數(shù)字,則Debug不會回顯無效或額外的字符。·進入下一個字節(jié)。為此,請按SPACEBAR(空格鍵)。要更改該字節(jié)中的值,請在當前值后鍵入新值。如果按SPACEBAR(空格鍵)時,移動超過了8位界限,Debug程序將顯示新的一行并在行首顯示新地址?!し祷氐角耙粋€字節(jié)。為此,請按HYPHEN鍵(-)??梢苑磸桶碒YPHEN鍵(-)向后移動超過多個字節(jié)。在按HYPHEN時,Debug開始新行并顯示當前地址和字節(jié)值?!ねV箞?zhí)行e命令。為此,請按ENTER鍵。在任何字節(jié)位置都可以按ENTER。使用list參數(shù)如果指定list參數(shù)的值,隨后的e命令將使用列表中的值替換現(xiàn)有的字節(jié)值。如果發(fā)生錯誤,將不更改任何字節(jié)值。List值可以是十六進制字節(jié)或字符串。使用空格、逗號或制表符來分隔值。必須將字符串包括在單或雙引號中。***************************************************************************5、Debug:F(填充)使用指定的值填充指定內存區(qū)域中的地址??梢灾付ㄊM制或ASCII格式表示的數(shù)據(jù)。任何以前存儲在指定位置的數(shù)據(jù)將會丟失。frangelist參數(shù)range指定要填充內存區(qū)域的起始和結束地址,或起始地址和長度。關于有效的range值的信息,請單擊“相關主題”列表中的“Debug說明”。list指定要輸入的數(shù)據(jù)。List可以由十六進制數(shù)或引號包括起來的字符串組成。范例假定鍵入以下命令:f04ba:100l1004245525441作為響應,Debug使用指定的值填充從04BA:100到04BA:1FF的內存位置。Debug重復這五個值直到100h個字節(jié)全部填滿為止。說明使用range參數(shù)如果range包含的字節(jié)數(shù)比list中的數(shù)值大,Debug將在list中反復指派值,直到range中的所有字節(jié)全部填充。如果在range中的任何內存損壞或不存在,Debug將顯示錯誤消息并停止f命令。使用list參數(shù)如果list包含的數(shù)值多于range中的字節(jié)數(shù),Debug將忽略list中額外的值。***************************************************************************6、Debug:G(轉向)運行當前在內存中的程序。g[=address][breakpoints]參數(shù)=address指定當前在內存中要開始執(zhí)行的程序地址。如果不指定address,Windows2000將從CS:IP寄存器中的當前地址開始執(zhí)行程序。breakpoints指定可以設置為g命令的部分的1到10個臨時斷點。有關執(zhí)行循環(huán)、重復的字符串指令、軟件中斷或子程序的信息,請單擊“相關主題”列表中的DebugP(執(zhí)行)。有關執(zhí)行指令的信息,請單擊“相關主題”列表中的DebugT(跟蹤)。范例假定鍵入以下命令:gcs:7550Windows2000運行當前內存中的程序,直到執(zhí)行到CS段中的斷點地址7550為止。Debug將顯示寄存器的內容和標志的狀態(tài)并結束g命令。以下命令設置兩個斷點:gcs:7550,cs:8000如果在Debug遇到斷點之后再次鍵入g命令,將從在斷點之后的指令開始執(zhí)行,而不是在通常的開始地址執(zhí)行。說明使用address參數(shù)必須在address參數(shù)之前使用等號(=)以區(qū)分開始地址(address)和斷點地址(breakpoints)。指定斷點程序在它遇到的第一個斷點處停止,而不論您在breakpoint列表的什么位置鍵入斷點。Debug在每個斷點處用中斷代碼代替原始指令。當程序到達斷點時,Debug將所有斷點地址恢復到它們的最初指令并顯示所有寄存器的內容、所有標記的狀態(tài)以及最后執(zhí)行指令的解碼形式。Debug顯示的信息與使用Debugr(寄存器)命令并指定斷點時所顯示的信息相同。如果不在斷點處停止程序,Debug程序將不使用原始指令替換中斷代碼。設置斷點的限制可以只在包含8086操作代碼(操作碼)的第一個字節(jié)的地址上設置斷點。如果設置了10個以上的斷點,Debug將顯示以下信息:bperror對用戶堆棧指針的要求用戶堆棧指針必須有效且必須有6個字節(jié)可用于g命令。該命令使用iret指令跳轉到正在被測試的程序。Debug設置用戶堆棧指針并將用戶標志、代碼段寄存器和指令指針壓入用戶堆棧。(如果用戶堆棧無效或太小,操作系統(tǒng)可能會失敗。)Debug在指定的斷點處設置中斷代碼(0CCh)。重新啟動程序不要在Windows2000顯示以下消息后嘗試重新啟動程序;Programterminatednormally要正確地運行程序,必須通過使用Debugn(名稱)和l(加載)命令重新加載該程序。***************************************************************************7、Debug:H(十六進制)對指定的兩個參數(shù)執(zhí)行十六進制運算。hvalue1value2參數(shù)value1代表從0到FFFFh范圍內的任何十六進制數(shù)字。value2代表從0到FFFFh范圍內第二個十六進制數(shù)字。范例假定鍵入以下命令:h19f10aDebug執(zhí)行運算并顯示以下結果。02A90095++說明Debug首先將指定的兩個參數(shù)相加,然后從第一個參數(shù)中減去第二個參數(shù)。這些計算的結果顯示在一行中:先計算和,然后計算差。***************************************************************************8、Debug:I(輸入)從指定的端口讀取并顯示一個字節(jié)值。iport參數(shù)port按地址指定輸入端口。地址可以是16位的值。有關將字節(jié)值發(fā)送到輸出端口的信息,請單擊“相關主題”列表中的DebugO(輸出)。范例假定鍵入以下命令:i2f8同時假定端口的字節(jié)值是42h。Debug讀取該字節(jié),并將其值顯示如下:42***************************************************************************9、Debug:L(加載)將某個文件或特定磁盤扇區(qū)的內容加載到內存。要從磁盤文件加載BX:CX寄存器中指定的字節(jié)數(shù)內容,請使用以下語法:l[address]要略過Windows2000文件系統(tǒng)并直接加載特定的扇區(qū),請使用以下語法:laddressdrivestartnumber參數(shù)address指定要在其中加載文件或扇區(qū)內容的內存位置。如果不指定address,Debug將使用CS寄存器中的當前地址。drive指定包含讀取指定扇區(qū)的磁盤的驅動器。該值是數(shù)值型:0=A,1=B,2=C等。start指定要加載其內容的第一個扇區(qū)的十六進制數(shù)。number指定要加載其內容的連續(xù)扇區(qū)的十六進制數(shù)。只有要加載特定扇區(qū)的內容而不是加載debug命令行或最近的Debugn(名稱)命令中指定的文件時,才能使用drive、start和number參數(shù)。有關指定用于l命令的文件的信息,請單擊“相關主題”列表中的Debugn(名稱)。有關寫入調試到磁盤的文件的信息,請單擊“相關主題”列表中的Debugw(寫入)。++范例假定啟動Debug并鍵入以下命令:現(xiàn)在可以鍵入l命令以加載F。Debug將加載文件并顯示Debug提示符。假定需要從驅動器C將起始邏輯扇區(qū)為15(0Fh)的109(6Dh)個扇區(qū)的內容加載到起始地址為04BA:0100的內存中。為此,請鍵入以下命令:l04ba:10020f6d++注意使用不帶參數(shù)的l命令當使用不帶參數(shù)的l命令時,在debug命令行上指定的文件將加載到內存中,從地址CS:100開始。Debug同時將BX和CX寄存器設置為加載的字節(jié)數(shù)。如果不在debug命令行指定文件,所裝入的文件將是最近使用n命令經(jīng)常指定的文件。使用具有address參數(shù)的1命令如果使用帶address參數(shù)的l命令,Debug將從內存位置address開始加載文件或指定扇區(qū)的內容。使用帶全部參數(shù)的l命令如果使用帶所有參數(shù)的l命令,Debug將加載指定磁盤扇區(qū)的內容而不是加載文件。加載特定扇區(qū)的內容指定范圍內的每個扇區(qū)均從drive讀取。Debug從start開始加載,直到在number中指定的扇區(qū)數(shù)中的內容全部被加載。加載.exe文件Debug忽略.exe文件的地址address參數(shù)。如果指定.exe文件,Debug將文件重新定位到.exe文件的標題中指定的加載地址。在.exe文件被加載到內存前,標題自身從.exe文件脫離,因此磁盤上的.exe文件大小與內存中的不同。如果要檢查整個.exe文件,請使用不同的擴展名重命名文件。打開十六進制文件Debug將具有.hex擴展名的文件認為十六進制格式文件。鍵入不帶參數(shù)的l命令,可以加載從十六進制文件中指定的地址處開始的十六進制文件。如果鍵入的l命令包含address參數(shù),Debug將把指定的地址加到在十六進制文件中找到的地址上,以確定起始地址。***************************************************************************10、Debug:M(移動)將一個內存塊中的內容復制到另一個內存塊中。mrangeaddress參數(shù)range指定要復制內容的內存區(qū)域的起始和結束地址,或起始地址和長度。address指定要將range內容復制到該位置的起始地址。范例假定鍵入以下命令:mcs:100110cs:500Debug首先將CS:110地址中的內容復制到地址CS:510中,然后將CS:10F地址中的內容復制到CS:50F中,如此操作直至將CS:100地址中的內容復制到地址CS:500中。要查看結果,請使用Debugd(轉儲)命令,并使用m命令指定目標地址。說明復制操作對現(xiàn)有數(shù)據(jù)的影響如果新數(shù)據(jù)沒有寫入正在被復制的數(shù)據(jù)塊中的地址,則源數(shù)據(jù)將保持不變。但是,如果目標塊已經(jīng)包含數(shù)據(jù)(就象它在覆蓋副本操作中一樣),則將改寫該數(shù)據(jù)。(覆蓋復制操作是指那些目標數(shù)據(jù)塊部分內容覆蓋原數(shù)據(jù)塊部分內容的操作。)執(zhí)行覆蓋復制操作m命令執(zhí)行目標地址的覆蓋復制操作,而不丟失數(shù)據(jù)。將改寫的地址內容首先復制。因此,如果將較高位地址的數(shù)據(jù)復制到較低位地址,則復制操作從原塊的最低位地址開始并向最高位地址進行。反之,如果要將數(shù)據(jù)從低地址復制到高地址,復制操作從原塊的最高地址開始,向最低地址進行。***************************************************************************11、Debug:N(名稱)指定Debugl(加載)或w(寫入)命令的可執(zhí)行文件的名稱,或者指定正在調試的可執(zhí)行文件的參數(shù)。n[drive:][path]filename要指定測試的可執(zhí)行文件的參數(shù),請使用以下語法:nfile-parameters參數(shù)如果在沒有參數(shù)的情況下使用,則n命令清除當前規(guī)范。[drive:][path]filename指定要測試的可執(zhí)行文件的位置和名稱。file-parameters為正在測試的可執(zhí)行文件指定參數(shù)和開關。有關將文件或指定磁盤扇區(qū)的內容加載到內存中的信息,請單擊“相關主題”列表中的DebugL(加載)。有關寫入調試到磁盤的文件的信息,請單擊“相關主題”列表中的DebugW(寫入)。范例假定已經(jīng)啟動Debug,并加載了正在調試的程序P。接著您決定為P指定兩個參數(shù)并運行此程序。以下是此范例的命令序列:debugnparam1param2g在這種情況下,Debugg(轉向)命令會運行該程序,就好像您已在Windows2000命令提示符后鍵入了如下命令:progparam1param2所以,測試和調試反映P通常的運行時間環(huán)境。在下面的命令序列中,第一個n命令將File1.exe指定為后接的l(加載)命令的文件,該命令將File1.exe加載到內存。第二個n命令指定File1.exe將使用的參數(shù)。最后,g命令將運行File1.exe文件,就好像您在Windows2000命令行中鍵入了File1File2.datFile2.dat一樣。nfile1.exelnfile2.datfile3.datg注意·不要在n命令的第二種形式后使用l命令。還要注意,如果現(xiàn)在使用w(寫入)命令,Windows2000將使用名稱File2.dat保存正在調試的文件File1.exe。為避免出現(xiàn)此結果,應該總是在l或w命令之前立即使用n命令的第一種形式。說明n命令的兩個用途可以按兩種方式使用n命令。首先,您可以使用它以指定后面的l(加載)或w(寫入)命令所使用的文件。如果在沒有命名所調試文件的情況下啟動Debug,必須在使用l命令加載文件之前使用命令nfilename。在CS:5C為文件控制塊(FCB)正確編排文件名的格式。其次,可以使用n命令指定被調試文件的命令行參數(shù)和開關。內存區(qū)域以下四個內存區(qū)域都會受到n命令的影響:內存位置內容CS:5C文件1的文件控制數(shù)據(jù)塊(FCB)CS:6C文件2的文件控制數(shù)據(jù)塊(FCB)CS:80n命令行的長度(以字符表示)CS:81n命令行字符的開頭為n命令指定的第一個文件名被放在CS:5C的FCB中。如果指定第二個文件名,此名稱將放置到CS:6C的FCB中。n命令行上鍵入的字符數(shù)(除第一個字符之外,n)存儲在位置CS:80。n命令行上的實際字符(再次,除了字母n之外)存儲在以CS:81開頭的位置。注意這些字符可以是在Windows2000命令提示符下鍵入的命令中有效的任何開關和分隔符。***************************************************************************12、Debug:O(輸出)將字節(jié)值發(fā)送到輸出端口。oportbyte-value參數(shù)port通過地址指定輸出端口。端口地址可以是16位值。byte-value指定要指向port的字節(jié)值。有關從輸入端口讀取字節(jié)值的信息,請單擊“相關主題”列表中的DebugI(輸入)。范例要將字節(jié)值4Fh發(fā)送到地址為2F8h的輸出端口,請鍵入以下命令:o2f84f***************************************************************************13、Debug:P(執(zhí)行)執(zhí)行循環(huán)、重復的字符串指令、軟件中斷或子例程;或通過任何其他指令跟蹤。p[=address][number]參數(shù)=address指定第一個要執(zhí)行指令的位置。如果不指定地址,則默認地址是在CS:IP寄存器中指定的當前地址。number指定在將控制返回給Debug之前要執(zhí)行的指令數(shù)。默認值為1。有關運行當前在內存中程序的信息,請單擊“相關主題”列表中的DebugG(轉向)。有關執(zhí)行指令的信息,請單擊“相關主題”列表中的DebugT(跟蹤)。范例假定正在測試的程序在地址CS:143F處包含一個call指令。要運行call目標位置的子程序然后將控制返回到Debug,請鍵入以下命令:p=143fDebug按以下格式顯示結果:AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=2246ES=2246SS=2246CS=2246IP=1443NVUPEIPLNZACPONC2246:14427505JNZ144A說明將控制傳送到要測試的程序當p命令將控制從Debug傳送到要測試的程序時,該程序不間斷運行,直到循環(huán)、重復字符串指令、軟件中斷或者完成了指定地址的子例程為止,或者直到執(zhí)行了指定數(shù)量的機器指令為止??刂品祷氐紻ebug。地址參數(shù)的限制如果address參數(shù)沒有指定段,Debug將使用被測試程序的CS寄存器。如果省略address,程序將從CS:IP寄存器所指定的地址開始執(zhí)行。必須在address參數(shù)之前使用等號(=)以便將它與number參數(shù)區(qū)分。如果在指定地址處的指令不是循環(huán)、重復的字符串指令、軟件中斷或子例程,則p命令與Debugt(跟蹤)命令的作用相同。使用p命令顯示的郵件當p執(zhí)行完一段說明后,Debug顯示出程序的寄存器內容、標志的狀態(tài)以及下一段將要被執(zhí)行的指令的解碼形式。警告·不能使用p命令跟蹤只讀內存(ROM)。***************************************************************************14、Debug:Q(退出)停止Debug會話,不保存當前測試的文件。當您鍵入q以后,控制返回到Windows2000的命令提示符。q參數(shù)該命令不帶參數(shù)。有關保存文件的信息,請單擊“相關主題”列表中的DebugW(寫入)。***************************************************************************15、Debug:R(寄存器)顯示或改變一個或多個CPU寄存器的內容。r[register-name]參數(shù)無如果在沒有參數(shù)的情況下使用,則r命令顯示所有寄存器的內容以及寄存器存儲區(qū)域中的標志。register-name指定要顯示其內容的寄存器名。有關顯示內存部分內容的信息,請單擊“相關主題”列表中的DebugD(轉儲)。有關反匯編字節(jié)的信息,請單擊“相關主題”列表中的DebugU(反匯編)。范例要查看所有寄存器的內容、所有標記的狀態(tài)和當前位置的指令解碼表,請鍵入以下命令:r如果當前位置是CS:11A,顯示外觀將類似于以下內容:AX=0E00BX=00FFCX=0007DX=01FFSP=039DBP=0000SI=005CDI=0000DS=04BAES=04BASS=04BACS=O4BAIP=011ANVUPDINGNZACPENC04BA:011ACD21INT21要只查看標志的狀態(tài),請鍵入以下命令:rfDebug按以下格式顯示信息:NVUPDINGNZACPENC-_現(xiàn)在,您可以按任意順序鍵入一個或多個有效的標志值,其中可以有或沒有空格,如下所示:nvupdingnzacpenc-pleicyDebug結束r命令并顯示Debug提示符。要查看更改,請鍵入r或rf命令。Debug將顯示以下內容:NVUPEIPLNZACPECY-_按ENTER返回到Debug提示符。說明使用r命令如果指定了寄存器名稱,Windows2000將顯示以十六進制標記表示的寄存器的16位值,并將冒號顯示為提示符。如果要更改包含在寄存器中的值,除非鍵入新值并按ENTER鍵;否則,請按ENTER鍵返回Debug提示符。有效寄存器名以下是register-name的有效值:ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc及f。ip和pc都引用指令指針。如果指定寄存器名稱,而不是從前面的列表中指定,Windows2000將顯示以下消息:brerror使用f字符而不是寄存器名如果鍵入f字符代替寄存器名,Debug將每個標記的當前設置顯示為兩字母代碼,然后顯示Debug提示符。要更改標志的設置,請從下表中鍵入適當?shù)膬勺帜复a:標志名設置清除溢出ovnv方向dn(減)up(增)中斷ei(啟用)di(禁用)正負ng(負)pl(正)零zrnz輔助進位acna奇偶校驗pe(偶校驗)po(奇校驗)進位cync可以按任何順序鍵入新的標志值。不需要在這些值之間留出空格。要停止r命令,請按ENTER鍵。任何沒有指定新值的標志保持不變。用r命令顯示的郵件如果為標記指定了多個值,Debug將顯示以下消息:dferror如果指定沒有在前面的表中列出的標志代碼,Debug將顯示以下消息:bferror在這兩種情況下,Debug將忽略所有在無效項目之后指定的設置。Debug的默認設置在啟動Debug時,會將段寄存器設置到空閑內存的低端,指令指針設置為0100h,清除所有標志,并且將其余寄存器設置為零,除了被設置為FFEEh的sp之外。***************************************************************************16、Debug:S(搜索)在某個地址范圍搜索一個或多個字節(jié)值的模式。srangelist參數(shù)range指定要搜索范圍的開始和結束地址。有關range參數(shù)有效值的信息,請單擊“相關主題”列表中的Debug。list指定一個或多個字節(jié)值的模式,或要搜索的字符串。用空格或逗號分隔每個字節(jié)值和下一個字節(jié)值。將字符串值包括在引號中。范例假定需要查找包含值41并且范圍從CS:100到CS:110的所有地址。為此,請鍵入以下命令:scs:10011041Debug按以下格式顯示結果:04BA:010404BA:010D-以下命令在CS:100到CS:1A0的范圍內搜索字符串“Ph”。scs:1001a0"Ph"說明如果list參數(shù)包含多個字節(jié)值,Debug將只顯示出現(xiàn)字節(jié)值的第一個地址。如果list只包含一個字節(jié)值,Debug將顯示指定范圍內出現(xiàn)該值的所有地址。***************************************************************************17、Debug:T(跟蹤)執(zhí)行一條指令,并顯示所有注冊的內容、所有標志的狀態(tài)和所執(zhí)行指令的解碼形式。t[=address][number]參數(shù)=address指定Debug啟動跟蹤指令的地址。如果省略address參數(shù),跟蹤將從程序的CS:IP寄存器所指定的地址開始。有關address參數(shù)有效值的信息,請單擊“相關主題”列表中的Debug。number指定要跟蹤的指令數(shù)。該值必須是十六進制數(shù)。默認值為1。有關執(zhí)行循環(huán)、重復的字符串指令、軟件中斷或子例程的信息,請單擊“相關主題”列表中的DebugP(執(zhí)行)。有關執(zhí)行當前內存中程序的信息,請單擊“相關主題”列表中的DebugG(轉向)。++范例要執(zhí)行一個指令(CS:IP指向的指令),然后顯示寄存器的內容、標志的狀態(tài)以及指令的解碼形式,請鍵入以下命令:t如果程序中的指令位于04BA:011A,Debug可能顯示下列信息:AX=0E00BX=00FFCX=0007DX=01FFSP=039DBP=0000SI=005CDI=0000DS=04BAES=04BASS=04BACS=O4BAIP=011ANVUPDINGNZACPENC04BA:011ACD21INT21++說明跟蹤只讀內存中的指令t命令使用8086或8088微處理器的硬件跟蹤模式。因此,也可以跟蹤存儲在只讀內存(ROM)中的指令。使用地址參數(shù)必須在address參數(shù)之前使用等號(=)以便將它與number參數(shù)區(qū)分。***************************************************************************18、Debug:U(反匯編)反匯編字節(jié)并顯示相應的原語句,其中包括地址和字節(jié)值。反匯編代碼看起來象已匯編文件的列表。u[range]參數(shù)無如果在沒有參數(shù)的情況下使用,則u命令分解20h字節(jié)(默認值),從前面u命令所顯示地址后的第一個地址開始。range指定要反匯編代碼的起始地址和結束地址,或起始地址和長度。有關range參數(shù)有效值的信息,請單擊“相關主題”列表中的Debug。范例要反匯編16(10h)字節(jié),從地址04BA:0100開始,請鍵入以下命令:u04ba:100l10Debug按以下格式顯示結果:04BA:0100206472AND[SI+72],AH04BA:010369DB6904BA:01047665JBE016B04BA:0106207370AND[BP+DI+70],DH04BA:010965DB6504BA:010A63DB6304BA:010B69DB6904BA:010C66DB6604BA:010D69DB6904BA:010E63DB6304BA:010F61DB61如果只顯示從04BA:0100到04BA:0108特定地址的信息,請鍵入以下命令:u04ba:01000108Debug顯示以下內容:04BA:0100206472AND[SI+72],AH04BA:010369DB6904BA:01047665JBE016B04BA:0106207370AND[BP+DI+70],DH***************************************************************************19、Debug:W(寫入)將文件或特定分區(qū)寫入磁盤。要將在BX:CX寄存器中指定字節(jié)數(shù)的內容寫入磁盤文件,請使用以下語法:w[address]要略過Windows2000文件系統(tǒng)并直接寫入特定的扇區(qū),請使用以下語法:waddressdrivestartnumber參數(shù)address指定要寫到磁盤文件的文件或部分文件的起始內存地址。如果不指定address,Debug程序將從CS:100開始。關于address參數(shù)有效值的信息,請在“相關主題”列表中單擊Debug。drive指定包含目標盤的驅動器。該值是數(shù)值型:0=A,1=B,2=C,等等。start指定要寫入第一個扇區(qū)的十六進制數(shù)。number指定要寫入的扇區(qū)數(shù)。有關指定用于w命令的文件的信息,請單擊“相關主題”列表中的DebugN(名稱)。有關將文件或文件扇區(qū)內容加載到內存中的信息,請單擊“相關主題”列表中的DebugL(加載)。范例假定要將起始地址為CS:100的內存內容寫入到驅動器B的磁盤中。需要將數(shù)據(jù)從磁盤的邏輯扇區(qū)號37h開始并持續(xù)2Bh個扇區(qū)。為此,鍵入以下命令:wcs:1001372b當寫操作完成時,Debug再次顯示Debug提示符。++說明必須在啟動Debug時或者在最近的Debugn(名稱)命令中指定磁盤文件的名字。這兩種方法都可以將地址CS:5C處文件控制塊的文件名正確地編排格式。在使用不帶參數(shù)的w命令之前重新設置BX:CX如果使用了Debugg(轉向)、t(跟蹤)、p(執(zhí)行)或r(寄存器)命令,必須在使用無參數(shù)的w命令之前,將BX:CX寄存器復位。將修改后的文件寫入磁盤如果修改文件但不更改文件名、長度或起始地址,Debug仍然可以正確地將文件寫入源磁盤位置。w命令的限制不能用該命令寫入.exe或.hex文件。警告·因為略過Windows2000文件句柄,所以寫入特定的分區(qū)非常危險。如果鍵入錯誤的值,則磁盤文件結構很容易被損壞。***************************************************************************20、Debug:XA(分配擴展內存)分配擴展內存的指定頁面數(shù)。要使用擴展內存,必須安裝符合4.0版的Lotus/In

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論