debug命令如何應(yīng)用
熱心網(wǎng)友
-A 匯編語(yǔ)句命令-C 儲(chǔ)存器內(nèi)容比較-D 顯示儲(chǔ)存器內(nèi)容-E 修改儲(chǔ)存器內(nèi)容-F 修改儲(chǔ)存塊內(nèi)容-G 按預(yù)選斷點(diǎn)執(zhí)行-H 十六進(jìn)制加減計(jì)算-I 讀\寫(xiě)輸入字節(jié)-L 裝入絕對(duì)文件或磁盤(pán)扇區(qū)-M 定義文件參數(shù)-N 定義文件參數(shù)-O 向端口port發(fā)出從指定地址開(kāi)始的byte個(gè)字節(jié)數(shù)據(jù)-Q 結(jié)束調(diào)試程序-R 顯示寄存器\標(biāo)志位內(nèi)容-S 對(duì)字符檢索-T 執(zhí)行和顯示跟蹤-U 反匯編命令-W 寫(xiě)文件或絕對(duì)磁盤(pán)扇區(qū)
熱心網(wǎng)友
Debug-PC之開(kāi)山老祖 Debug 原意是殺蟲(chóng)子。這里是機(jī)器調(diào)試工具。 其實(shí),Debug的由來(lái),還有一則趣聞,在早期美國(guó)的一計(jì)算機(jī)房中,科學(xué)家正在緊張的工作。同時(shí),許多臺(tái)大型的計(jì)算機(jī)也在不停的運(yùn)行著。大概是由于,機(jī)器過(guò)熱,引來(lái)許的小蟲(chóng)子,以至于,計(jì)算機(jī)無(wú)法正常運(yùn)行。科學(xué)們,只好停下來(lái),捉蟲(chóng)子。。。蟲(chóng)子捉完了,計(jì)算機(jī)運(yùn)行也正常了,后來(lái),這個(gè)名詞就沿用至今了。。。。雖然,現(xiàn)在好的軟件越來(lái)越多了,但是有些,我們只需動(dòng)手,用Debug就可解決,且快而好!接下來(lái),我們就一起學(xué)習(xí)Debug在各方面的運(yùn)用吧!(在殺毒、加解密、系統(tǒng)。。。)下面我和大家一起學(xué)習(xí)一些,Debug的用法,雖然,現(xiàn)在好的軟件越來(lái)越多了,但是有些,我們只需動(dòng)手,用Debug就可解決,且快而好!Debug常用命令集 名稱(chēng) 解釋 格式a (Assemble) 逐行匯編 a [address]c (Compare) 比較兩內(nèi)存塊 c range addressd (Dump) 內(nèi)存16進(jìn)制顯示 d [address]或 d [range] e (Enter) 修改內(nèi)存字節(jié) e address [list]f (fin) 預(yù)置一段內(nèi)存 f range listg (Go) 執(zhí)行程序 g [=address][address。。。]h (Hexavithmetic) 制算術(shù)運(yùn)算 h value valuei (Input) 從指定端口地址輸入 i pataddressl (Load) 讀盤(pán) l [address [driver seetor]]m (Move) 內(nèi)存塊傳送 m range addressn (Name) 置文件名 n filespec [filespec。。。]o (Output) 從指定端口地址輸出 o portadress byteq (Quit) 結(jié)束 qr (Register) 顯示和修改寄存器 r [register name]s (Search) 查找字節(jié)串 s range listt (Trace) 跟蹤執(zhí)行 t [=address] [value]u (Unassemble) 反匯編 u [address ]或rangew (Write) 存盤(pán) w [address[driver sector secnum]]? 聯(lián)機(jī)幫助 ?debug小匯編a命令debug小匯編a命令是一個(gè)很有用的功能,許多的小程序都要他來(lái)做。編一些小程序比匯編要來(lái)得方便,快潔。在Debug中,中斷是非常有用的,首先,讓我們先了解一下中斷。 所謂中斷,其實(shí),就是,當(dāng)你做某事時(shí),有人過(guò)來(lái)找你有其他事,你先放下手中的事(計(jì)算機(jī)中,稱(chēng)為保護(hù)現(xiàn)場(chǎng)),再去與叫你的那個(gè)人辦事去,等完了,你又回,接著做剛才的事。這是個(gè)很通俗的講法。 計(jì)算機(jī)在運(yùn)行時(shí),也會(huì)出現(xiàn)這種情況,我們叫之中斷?!?下面是他的一些常用中斷向量的入口值詳解:(記住哦,很用的。。。呵呵)IBM PC 中斷 int10 ooH 屏幕方式設(shè)置Debug實(shí)戰(zhàn)1。查看主板的生產(chǎn)日期,版本D ffff:05D fe00:0e2。模擬Rest鍵功能A :100 jmp ffff:0000:105g3。快速格式化軟盤(pán)L 100 0 0 * '插入一張己格式化軟盤(pán)W 100 0 0 * '放入一張欲格式化軟盤(pán)注:* 分別為:720K e |1。2M id |1。44M 21 4。硬盤(pán)格式化兩種方法(1)G=c800:05(2) A 100mov ax,0703mov cx,0001mov dx,0080int 13int 3g 1005。加速鍵盤(pán) A mov ax,0305mov bx,0000int 16int 20rcx10n wq6。關(guān)閉顯示器(恢復(fù)時(shí),按任意鍵)Amov ax,1201mov bl,36int 10mov ah,0int 16mov ax,1200int 10rcx 10n wq 7。硬盤(pán)DOS引導(dǎo)記錄的修復(fù) 在軟驅(qū)中放入一張己格式化軟盤(pán)debug-l 100 2 0 1 -w 100 0 50 1把軟盤(pán)放入故障機(jī)軟驅(qū)中debug-l 100 0 50 1-w 100 2 0 1 -q8。清coms中setup口令debug-amov bx,0038mov cx,0000mov ax,bxout 70,alinc cxcmp cx,0006jnz 0106int 20-rcx:20- -w-q注:以上適合super與dtk機(jī),對(duì)于ast機(jī),因?yàn)樗目诹罘旁赾oms的4ch-51h地址處,只要將:mov bx,0038 改為: mov bx,004c即可9。取消coms的密碼(將coms數(shù)據(jù)清為初始化) -o 70,10-o 71,10-g-q10。將硬盤(pán)主引導(dǎo)記錄保存到文件中debug-amov ax,0201 mov bx,0200mov cx,0001mov dx,0080mov int 13int 3-rcx:200-nboot。dat-w-q 11。調(diào)用中斷實(shí)現(xiàn)重啟計(jì)算機(jī)(可以成文件)debug-aint 19int 20-rcx:2- -w-qDEBUG主要命令DEBUG是為匯編語(yǔ)言設(shè)計(jì)的一種高度工具,它通過(guò)單步、設(shè)置斷點(diǎn)等方式為匯編語(yǔ)言程序員提供了非常有效的調(diào)試手段。一、DEBUG程序的調(diào)用在DOS的提示符下,可鍵入命令:C:\DEBUG [D:][PATH][FILENAME[。EXT]][PARM1][PARM2]其中,文件名是被調(diào)試文件的名字。如用戶鍵入文件,則DEBUG將指定的文件裝入存儲(chǔ)器中,用戶可對(duì)其進(jìn)行調(diào)試。如果未鍵入文件名,則用戶可以用當(dāng)前存儲(chǔ)器的內(nèi)容工作,或者用DEBUG命令N和L把需要的文件裝入存儲(chǔ)器后再進(jìn)行調(diào)試。命令中的D指定驅(qū)動(dòng)器PATH為路徑,PARM1和PARM2則為運(yùn)行被調(diào)試文件時(shí)所需要的命令參數(shù)。在DEBUG程序調(diào)入后,將出現(xiàn)提示符,此時(shí)就可用DEBUG命令來(lái)調(diào)試程序。二、DEBUG的主要命令1、顯示存儲(chǔ)單元的命令D(DUMP),格式為:_D[address]或_D[range]例如,按指定范圍顯示存儲(chǔ)單元內(nèi)容的方法為:-d10012018E4:0100c 801c706-0 c G。。。8。G。。。。。G。。。18E$:01100202bb0402e80200-CD 578B37。。;。。h。。MPQVW。718E4:01208B其中0100至0120是DEBUG顯示的單元內(nèi)容,左邊用十六進(jìn)制表示每個(gè)字節(jié),右邊用ASCII字符表示每個(gè)字節(jié),·表示不可顯示的字符。這里沒(méi)有指定段地址,D命令自動(dòng)顯示DS段的內(nèi)容。如果只指定首地址,則顯示從首地址開(kāi)始的80個(gè)字節(jié)的內(nèi)容。如果完全沒(méi)有指定地址,則顯示上一個(gè)D命令顯示的最后一個(gè)單元后的內(nèi)容。2、修改存儲(chǔ)單元內(nèi)容的命令有兩種?!ぽ斎朊頔(ENTER),有兩種格式如下:第一種格式可以用給定的內(nèi)容表來(lái)替代指定范圍的存儲(chǔ)單元內(nèi)容。命令格式為:-E address [list]例如,-E DS:100 F3'XYZ'8D其中F3,'X','Y','Z'和各占一個(gè)字節(jié),該命令可以用這五個(gè)字節(jié)來(lái)替代存儲(chǔ)單元DS:0100到0104的原先的內(nèi)容。第二種格式則是采用逐個(gè)單元相繼修改的方法。命令格式為:-E address例如,-E DS:100則可能顯示為:18E4:0100 89。-如果需要把該單元的內(nèi)容修改為78,則用戶可以直接鍵入78,再按"空格"鍵可接著顯示下一個(gè)單元的內(nèi)容,如下:18E4:0100 89。78 1B。-這樣,用戶可以不斷修改相繼單元的內(nèi)容,直到用ENTER鍵結(jié)束該命令為止?!ぬ顚?xiě)命令F(FILL),其格式為:-F range list例如:-F 4BA:0100 5 F3'XYZ'8D使04BA:0100~0104單元包含指定的五個(gè)字節(jié)的內(nèi)容。如果list中的字節(jié)數(shù)超過(guò)指定的范圍,則忽略超過(guò)的項(xiàng);如果list的字節(jié)數(shù)小于指定的范圍,則重復(fù)使用list填入,直到填滿指定的所有單元為止。3)檢查和修改寄存器內(nèi)容的命令R(register),它有三種格式如下:·顯示CPU內(nèi)所有寄存器內(nèi)容和標(biāo)志位狀態(tài),其格式為:-R例如,-rAX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC18E4:0100 C 801 MOV WORD PTR [0204],0138 DS:0204=0000·顯示和修改某個(gè)寄存器內(nèi)容,其格式為:-R register name例如,鍵入-R AX系統(tǒng)將響應(yīng)如下:AX F1F4:即AX寄存器的當(dāng)前內(nèi)容為F1F4,如不修改則按ENTER鍵,否則,可鍵入欲修改的內(nèi)容,如:-R bxBX 0369:059F則把BX寄存器的內(nèi)容修改為059F。·顯示和修改標(biāo)志位狀態(tài),命令格式為:-RF系統(tǒng)將響應(yīng),如:OV DN EI NG ZR AC PE CY-此時(shí),如不修改其內(nèi)容可按ENTER鍵,否則,可鍵入欲修改的內(nèi)容,如:OV DN EI NG ZR AC PE CY-PONZDINV即可,可見(jiàn)鍵入的順序可以是任意的。4)運(yùn)行命令G,其格式為:-G[=address1][address2[address3…]]其中,地址1指定了運(yùn)行的起始地址,如不指定則從當(dāng)前的CS:IP開(kāi)始運(yùn)行。后面的地址均為斷點(diǎn)地址,當(dāng)指令執(zhí)行到斷點(diǎn)時(shí),就停止執(zhí)行并顯示當(dāng)前所有寄存器及標(biāo)志位的內(nèi)容,和下一條將要執(zhí)行的指令。5)跟蹤命令T(Trace),有兩種格式:·逐條指令跟蹤-T [=address]從指定地址起執(zhí)行一條指令后停下來(lái),顯示所有寄存器內(nèi)容及標(biāo)志位的值。如未指定地址則從當(dāng)前的CS:IP開(kāi)始執(zhí)行?!ざ鄺l指令跟蹤-T [=address][value]從指定地址起執(zhí)行n條指令后停下來(lái),n由value指定。6)匯編命令A(yù)(Assemble),其格式為:-A[address]該命令允許鍵入?yún)R編語(yǔ)言語(yǔ)句,并能把它們匯編成機(jī)器代碼,相繼地存放在從指定地址開(kāi)始的存儲(chǔ)區(qū)中。必須注意:DEBUG把鍵入的數(shù)字均看成十六進(jìn)制數(shù),所以如要鍵入十進(jìn)制數(shù),則其后應(yīng)加以說(shuō)明,如100D。7)反匯編命令U(Unassemble)有兩種格式?!闹付ǖ刂烽_(kāi)始,反匯編32個(gè)字節(jié),其格式為:-U[address]例如:-u10018E4:0100 C 801 MOV WORD PTR[0204],013818E4:0106 C 002 MOV WORD PTR[0206],020018E4:010C C 202 MOV WORD PTR[0208],020218E4:0112 BBO4O2 MOV BX,020418E4:0115 E80200 CALL 011A18E4:0118 CD20 INT 2018E4:011A 50 PUSH AX18E4:011B 51 PUSH CX18E4:011C 56 PUSH SI18E4:011D 57 PUSH DI18E4:011E 8B37 MOV SI,[BX]如果地址被省略,則從上一個(gè)U命令的最后一條指令的下一個(gè)單元開(kāi)始顯示32個(gè)字節(jié)。·對(duì)指定范圍內(nèi)的存儲(chǔ)單元進(jìn)行反匯編,格式為:-U[range]例如:-u100 10c18E4:0100 C 801 MOV WORD PTR[0204],013818E4:0106 C 002 MOV WORD PTR[0206],020018E4:010C C 202 MOV WORD PTR[0208],0202或-u100 112 18E4:0100 C 801 MOV WORD PTR[0204],013818E4:0106 C 002 MOV WORD PTR[0206],020018E4:010C C 202 MOV WORD PTR[0208],0202可見(jiàn)這兩種格式是等效的。8)命名命令N(Name),其格式為:-N filespecs [filespecs]命令把兩個(gè)文件標(biāo)識(shí)符格式化在CS:5CH和CS:6CH的兩個(gè)文件控制塊中,以便在其后用L或W命令把文件裝入存盤(pán)。filespecs的格式可以是:[d:][path] filename[。ext]例如,-N myprog-L-可把文件myprog裝入存儲(chǔ)器。9)裝入命令(Load),有兩種功能?!ぐ汛疟P(pán)上指定扇區(qū)范圍的內(nèi)容裝入到存儲(chǔ)器從指定地址開(kāi)始的區(qū)域中。其格式為:-L[address[drive sector sector]·裝入指定文件,其格式為:-L[address]此命令裝入已在CS:5CH中格式化了文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開(kāi)始的存儲(chǔ)區(qū)中。10)寫(xiě)命令W(Write),有兩種功能?!ぐ褦?shù)據(jù)寫(xiě)入磁盤(pán)的指定扇區(qū)。其格式為:-W address drive sector sector·把數(shù)據(jù)寫(xiě)入指定的文件中。其格式為:-W[address]此命令把指定的存儲(chǔ)區(qū)中的數(shù)據(jù)寫(xiě)入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數(shù)據(jù)從CS:0100開(kāi)始。要寫(xiě)入文件的字節(jié)數(shù)應(yīng)先放入BX和CX中。11)退出DEBUG命令Q(Quit),其格式為:-Q它退出DEBUG,返回DOS。本命令并無(wú)存盤(pán)功能,如需存盤(pán)應(yīng)先使用W命令。 問(wèn)題:初學(xué)者問(wèn)一個(gè)低級(jí)問(wèn)題,執(zhí)行debug-a后,如果有一行輸入錯(cuò)誤,如何更改這一行?回答:加入進(jìn)行如下輸入:D:\PWIN95\Desktopdebug-a2129:0100movax, :0103movbx, :0106movcx, :0109此時(shí),發(fā)現(xiàn)movbx,200一句錯(cuò)誤,應(yīng)為movbx,20,可以敲回車(chē)返回"-"狀態(tài),然后輸入:-a1032129:0103movbx,20如果多或者少若干行,不必重新輸入,可以用M命令移動(dòng)后面的程序來(lái)去掉或者增加程序空間。如何除錯(cuò)和匯編你的第一個(gè)PCx86匯編語(yǔ)言程序呢?以下這些簡(jiǎn)單的解釋可以讓一個(gè)匯編語(yǔ)言新手使用DEBUG:0)在使用時(shí),如何快速獲得debug的使用幫助呢。1)讓我們開(kāi)始工作吧,例如:顯示BIOS的日期。2)在你的電腦的COMMANG。COM文件里搜尋"IBM"這幾個(gè)字符。3)一位十六進(jìn)制數(shù)的運(yùn)算。4)檢查x86寄存器內(nèi)容。5)我們來(lái)編寫(xiě)我們的第一個(gè)用機(jī)械語(yǔ)言編寫(xiě)的程序-打印一個(gè)字符。6)我們現(xiàn)在用匯編語(yǔ)言指令來(lái)做和例5一樣的事情。7)現(xiàn)在,我們不但要編寫(xiě)一個(gè)匯編程序,而且我們還要把它存盤(pán)。8)現(xiàn)在,我們?cè)囈辉嚥榭匆粋€(gè)已經(jīng)編好的程序。9)你可以用DEBUG的計(jì)算功能計(jì)算程序的長(zhǎng)度。10)另一種顯示在屏幕上字符串的方法。11)讓我們?cè)囈辉嚪磸?fù)輸出。12)我們現(xiàn)在把兩個(gè)程序連接起來(lái)。13) 讓我們逐步運(yùn)行這個(gè)剛剛修補(bǔ)的程序。14)如果一開(kāi)始的命令不是跳轉(zhuǎn)命令,那么可能就要用這種方法了。 以下所有的命令都是可以運(yùn)行在WIN9x的MS-DOS方式下的。進(jìn)入MS-DOS的方式有:[開(kāi)始][程序][MS-DOS方式][開(kāi)始][運(yùn)行][打開(kāi)]COMMAND[確定]或者你可以雙擊它:C:\Windows\ 0)在使用時(shí),如何快速獲得debug的使用幫助呢以下PROMPT表示目錄提示符:一般為:C:\WINDOWS\COMMAND\PROMPT DEBUG /?怎樣?出錯(cuò)了吧。顯示如下C:\WINDOWSDEBUG/?Runs Debug, a program testing and editing tool。DEBUG [[drive:][path]filename [testfile-parameters]][drive:][path]filename Specifies the file you want to test。testfile-parameters Specifies command-line information required bythe file you want to test。After Debug starts, type ? to display a list of debugging commands。因?yàn)殄e(cuò)了所以它給你顯示一些提示。留意到最后一句了嗎?。