資源描述:
《debug的基本知識(shí)與用法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、一、關(guān)于Debug的學(xué)習(xí)Debug.exe文件位于Windowssystem32目錄(WindowsXP)或Windowscommand目錄(Windows9x)下?;臼褂梅椒ㄈ缦拢篠tep1:點(diǎn)擊“開始→運(yùn)行”,輸入“CMD”(Windows2000/XP)或“Command”(Windows9x)打開命令提示符窗口。Step2:輸入“Debug”并回車,出現(xiàn)提示符“-”,現(xiàn)在你已經(jīng)開啟了神秘的Debug世界了。小提示:執(zhí)行“?”命令可以參看Debug主要命令及參數(shù)。Step3:輸入“DFE00:0”,回車后可以看到結(jié)果,這個(gè)
2、就是主板BIOS的廠商信息。接著再輸入“DFFFF:5L8”,回車后,主板的BIOS版本日期也出來了。?Step4:現(xiàn)在再輸入“Q”命令,回車后就退出了Debug程序。二、DEBUG的主要用途及DEBUG的調(diào)用DEBUG是為匯編語言設(shè)計(jì)的一種調(diào)試工具,它通過單步執(zhí)行、設(shè)置斷點(diǎn)等方式為匯編語言程序員提供了非常有效的程序調(diào)試手段。DEBUG可以直接用來檢查和修改內(nèi)存單元、裝入、存儲(chǔ)及啟動(dòng)運(yùn)行程序、檢查及修改寄存器,也就是說DEBUG可深入到計(jì)算機(jī)的內(nèi)部,可使用戶更緊密地與計(jì)算機(jī)中真正進(jìn)行的工作相聯(lián)系。DEBUG也是練習(xí)使用匯編指令的一種有
3、效工具,用戶可以直接在DEBUG環(huán)境下執(zhí)行匯編指令。然而,在DEBUG下運(yùn)行匯編語言源程序也受到了一些限制,它不宜匯編較長的程序,不便于分塊程序設(shè)計(jì),不便于形成以DOS外部命令形式構(gòu)成的.EXE文件,不能使用浮動(dòng)地址,也不能使用ASM和MASM提供的絕大多數(shù)偽指令。進(jìn)入DEBUG的提示符是符號(hào)“-”。即,出現(xiàn)提示符“-”就表示可以接受DEBUG命令了。當(dāng)進(jìn)入DEBUG時(shí),寄存器和標(biāo)志設(shè)成以下數(shù)值,這些值用于DEBUG調(diào)試中的程序。段寄存器CS,DS,ES和SS均指向DEBUG末尾的第一個(gè)段。IP寄存器置為0100H。棧指針SP指向尾部
4、或裝入程序的暫存部分的底部。三、DEBUG的主要命令功能與格式DEBUG命令是在DEBUG提示符“-”下,由鍵盤鍵入的。每條命令以單個(gè)字母的命令符開頭,然后是命令的操作參數(shù),操作參數(shù)與操作參數(shù)之間,用空格或逗號(hào)隔開,操作參數(shù)與命令符之間用空格隔開,命令的結(jié)束符是回車鍵Enter。命令及參數(shù)的輸入可以是大小寫的結(jié)合。Ctrl+Break鍵可中止命令的執(zhí)行。Ctrl+NumLock鍵可暫停屏幕卷動(dòng),按任一鍵繼續(xù)。所用數(shù)均為十六進(jìn)制數(shù),且不必寫H*1.匯編命令A(yù)格式:A[[<段寄存器名>/<段地址>:]<段內(nèi)偏移>](1)A<段寄存器名>:
5、<段內(nèi)偏移>(2)A<段地址>:<段內(nèi)偏移>(3)A<段內(nèi)偏移>(4)A功能:鍵入該命令后顯示段地址和段內(nèi)偏移并等待用戶從鍵盤逐條鍵入?yún)R編命令,逐條匯編成代碼指令,順序存放到段地址和段內(nèi)偏移所指定的內(nèi)存區(qū)域,直到顯示下一地址時(shí)用戶直接鍵入回車鍵返回到提示符“-”。?注:其中(1)用指定段寄存器的內(nèi)容作段地址,(3)用CS的內(nèi)容作段地址,(4)以CS:100作地址。以后命令中提及的各種‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。2.比較命令C格式:C<源地址范圍>,<目標(biāo)地址>其中<范圍>是由<起始地址><終止地址>或者是
6、由<起始地址>L<長度>指出的一片連續(xù)單元。功能:從<源地址范圍>的起始地址單元起逐個(gè)與目標(biāo)起始地址以后的單元順序比較單元的內(nèi)容,直至源終止地址為止。遇有不一致時(shí),以<源地址><源內(nèi)容><目標(biāo)內(nèi)容><目標(biāo)地址>的形式顯示失配單元及內(nèi)容。*3.顯示內(nèi)存命令D格式:D[<地址>/<范圍>](1)D<地址>(2)D<范圍>(3)D功能:以兩種形式顯示指定范圍的內(nèi)存內(nèi)容。一種形式為十六進(jìn)制內(nèi)容,一種形式為以相應(yīng)字節(jié)的內(nèi)容作為ASCII碼的字符,對(duì)不可見字符以‘.’代替。注:其中(1)以CS為段寄存器。(3)顯示CS:100起始的一段內(nèi)容??*
7、4.修改內(nèi)存命令E格式:E<地址>[<單元內(nèi)容表>](1)E<地址>(2)E<地址><單元內(nèi)容表>;其中<單元內(nèi)容表>是以逗號(hào)分隔的十六進(jìn)制數(shù),或用’或”括起來的字符串,或者是二者的組合。功能:(1)不斷顯示地址,可連續(xù)鍵入修改內(nèi)容,直至新地址出現(xiàn)后鍵入回車Enter為止。(2)將<單元內(nèi)容表>逐一寫入由<地址>開始的一片單元。5.填充內(nèi)存命令F格式:F<范圍><單元內(nèi)容表>功能:將單元內(nèi)容表中的值逐個(gè)填入指定范圍,單元內(nèi)容表中內(nèi)容用完后重復(fù)使用。例如:-F5BC:200L10B2,‘XYZ’,3C*6.執(zhí)行命令G格式:
8、G[=<地址>[,<斷點(diǎn)>]]上式等價(jià)于:(1)G(2)G=<地址>(3)G=<地址>,<斷點(diǎn)>功能:執(zhí)行內(nèi)存中的指令序列注:(1)從CS:IP所指處開始執(zhí)行(2)從指定地址開始執(zhí)行(3)從指定地址開始執(zhí)行,到斷點(diǎn)自動(dòng)停