資源描述:
《調(diào)試程序工具debug》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、調(diào)試程序工具DEBUGDebug是DOS、Windows都提供的實(shí)模式(8086方式)程序的調(diào)試工具。使用它可以檢查和改變存儲內(nèi)容,調(diào)試和運(yùn)行程序,還可以隨時中斷程序的運(yùn)行,進(jìn)行數(shù)據(jù)檢查和修改。1.Debug的進(jìn)入和退出Debug是在DOS方式下使用的程序。我們在進(jìn)入Debug前,應(yīng)先進(jìn)入到DOS方式。用以下方法可以進(jìn)入DOS。u重新啟動計(jì)算機(jī),進(jìn)入DOS方式,此時進(jìn)入的是實(shí)模式的DOS。u在Windows中進(jìn)入DOS方式,此時進(jìn)入的是虛擬8086模式的DOS。下面是在WindowsXP中進(jìn)入Debug的一種方法,在其它W
2、indows版本中類似。選【開始】菜單中的【運(yùn)行】命令,打開【運(yùn)行】對話框,在文本框中輸入“command”后,單擊【確定】按鈕。本章中的例子默認(rèn)Debug程序在驅(qū)動器C中,如果你的系統(tǒng)設(shè)置與此假設(shè)不同,請變更驅(qū)動器或目錄。在DOS目錄下鍵入DEBUG的名稱,就可以進(jìn)入DEBUG程序。鍵入“DEBUG”不分大小寫。DEBUG提示符是“-”,此時,你就可以輸入DEBUG的命令了。退出命令Q,輸入Q并按Enter回車鍵就退出DEBUG運(yùn)行環(huán)境返回到DOS目錄下。2.寄存器內(nèi)容的檢查和修改可以通過寄存器命令對CPU內(nèi)部的寄存器內(nèi)
3、容進(jìn)行檢查,并可以修改寄存器的內(nèi)容。指令格式:R<寄存器名稱>指令尖括號內(nèi)容是指令可選部分,如果沒有輸入<寄存器名稱>,使用R指令將顯示所有寄存器的內(nèi)容;否則將只顯示輸入名稱的寄存器的內(nèi)容。輸入R命令并按回車鍵,DEBUG將顯示三行信息。第一行顯示了通用寄存器、指針寄存器和索引寄存器的內(nèi)容。第二行顯示了段寄存器的內(nèi)容、指令指針的當(dāng)前值以及標(biāo)志寄存器位。第二行后面的幾個代碼“NVUP…NC”表示標(biāo)志寄存器中的8位狀態(tài)。標(biāo)志寄存器在DEBUG中的表示方式在后面加以說明。第三行顯示了程序?qū)⒁獔?zhí)行的指令,顯示了通過CS:IP發(fā)出的
4、指令。在剛開始進(jìn)入DEBUG時,通用寄存器的初始值會設(shè)為零,標(biāo)志位全部復(fù)位。雖然段寄存器在不同的系統(tǒng)中具有不同的內(nèi)容,但是同一個系統(tǒng)中各個段寄存器的值都是一樣的,這一點(diǎn)是由操作系統(tǒng)決定。本例中段寄存器的值是17FE。由于段寄存器的值是操作系統(tǒng)默認(rèn)的,所以千萬不要改變它。修改寄存器內(nèi)容,如圖在R指令后輸入AX寄存器,下一行顯示AX寄存器的內(nèi)容是“0000”,第三行出現(xiàn)冒號,在這里輸入新的值后按回車鍵AX寄存器被新的值取代,直接按回車鍵寄存器的內(nèi)容不變。使用R指令不能單獨(dú)調(diào)用通用寄存器的高8位和低8位寄存器,例如:-rah或–
5、ral是錯誤的。1.對DEBUG中的程序進(jìn)行編碼及運(yùn)行A命令用于將匯編語言命令輸入到存儲器中。命令格式:A<起始地址>起始地址可以用偏移量來表示,在這種情況下它默認(rèn)為代碼段的偏移量;否則,就需要指定具體的段寄存器。輸入“A100”和“ACS:100”得到的結(jié)果是一樣的。在命令提示符“-”后面輸入此命令時,DEBUG就會提示你開始進(jìn)入?yún)R編語言命令輸入,在地址提示符下直接按回車將結(jié)束指令輸入。在DEBUG環(huán)境下輸入?yún)R編語言指令操作數(shù)采用立即尋址方式時默認(rèn)的是十六進(jìn)制形式。當(dāng)你輸入指令到偏移地址為0100的存儲單元中,DEBUG
6、將這條指令轉(zhuǎn)換為機(jī)器語言,并放在0100到0102之間,然后提示你輸入下一條指令,這條指令就會被存儲到偏移地址0103的存儲單元中。注意:不要從低于100偏移地址單元開始匯編。開始的100H(256)字節(jié)是DOS預(yù)留的,不能用于你編寫的程序。U反匯編指令反匯編指令顯示出存儲器中的機(jī)器代碼以及相應(yīng)的匯編語言指令。指令格式:U<起始地址><結(jié)束地址>U<起始地址><十六進(jìn)制表示的字節(jié)數(shù)>反匯編是將存儲在存儲器中的機(jī)器代碼轉(zhuǎn)換成匯編語言指令?!?U10010B”是第一種格式,“-U100LB”是第二種格式,其中“L”表示長度,“
7、B”是字節(jié)數(shù)。反匯編顯示出“17FE:0100”是代碼段段地址和指令的偏移地址,“B80100”是“MOVAX,0001”的機(jī)器指令。如果輸入U(xiǎn)命令后面不帶地址直接回車,DEBUG將顯示從CS:IP開始的32個字節(jié)。連續(xù)輸入將繼續(xù)顯示。執(zhí)行命令執(zhí)行命令請求DEBUG執(zhí)行給出地址范圍之間的所有指令。指令格式:G<=起始地址><終止地址>如果沒有給出地址,DEBUG就從CS:IP開始執(zhí)行指令直到到達(dá)終止點(diǎn)。當(dāng)只給出指令“-G”,從當(dāng)前指令指針(CS:IP)指定的指令開始執(zhí)行直到遇到“INT3”終止程序指令,屏幕顯示當(dāng)前寄存器的
8、值和標(biāo)志位的狀態(tài)。指令“-G=100109”是從起始偏移地址為0100處開始執(zhí)行直到偏移地址是0109處停止,顯示當(dāng)前各個寄存器的值和標(biāo)志位的狀態(tài)。跟蹤命令用跟蹤命令可以在程序的執(zhí)行過程中同時跟蹤一條或多條指令,對寄存器和數(shù)據(jù)程序功能進(jìn)行效驗(yàn)。指令格式:T<=起始地址><指令數(shù)>這條指令從起始地址開始執(zhí)