![]() ![]() Debug-PC之開山老祖 Debug 原意是殺蟲子。這里是機(jī)器調(diào)試工具。 其實(shí),Debug的由來,還有一則趣聞,在早期美國(guó)的一計(jì)算機(jī)房中,科學(xué)家正在緊張的工作。同時(shí),許多臺(tái)大型的計(jì)算機(jī)也在不停的運(yùn)行著。大概是由于,機(jī)器過熱,引來許的小蟲子,以至于,計(jì)算機(jī)無法正常運(yùn)行??茖W(xué)們,只好停下來,捉蟲子...蟲子捉完了,計(jì)算機(jī)運(yùn)行也正常了,后來,這個(gè)名詞就沿用至今了.... 雖然,現(xiàn)在好的軟件越來越多了,但是有些,我們只需動(dòng)手,用Debug就可解決,且快而好!接下來,我們就一起學(xué)習(xí)Debug在各方面的運(yùn)用吧?。ㄔ跉⒍?、加解密、系統(tǒng)...)下面我和大家一起學(xué)習(xí)一些,Debug的用法,雖然,現(xiàn)在好的軟件越來越多了,但是有些,我們只需動(dòng)手,用Debug就可解決,且快而好! Debug常用命令集 名稱 解釋 格式 a (Assemble) 逐行匯編 a [address] c (Compare) 比較兩內(nèi)存塊 c range address d (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 list g (Go) 執(zhí)行程序 g [=address][address...] h (Hexavithmetic) 制算術(shù)運(yùn)算 h value value i (Input) 從指定端口地址輸入 i pataddress l (Load) 讀盤 l [address [driver seetor> m (Move) 內(nèi)存塊傳送 m range address n (Name) 置文件名 n filespec [filespec...] o (Output) 從指定端口地址輸出 o portadress byte q (Quit) 結(jié)束 q r (Register) 顯示和修改寄存器 r [register name] s (Search) 查找字節(jié)串 s range list t (Trace) 跟蹤執(zhí)行 t [=address] [value] u (Unassemble) 反匯編 u [address ]或range w (Write) 存盤 w [address[driver sector secnum> 聯(lián)機(jī)幫助 ? debug小匯編a命令 debug小匯編a命令是一個(gè)很有用的功能,許多的小程序都要他來做。 編一些小程序比匯編要來得方便,快潔。 在Debug中,中斷是非常有用的,首先,讓我們先了解一下中斷。 所謂中斷,其實(shí),就是,當(dāng)你做某事時(shí),有人過來找你有其他事,你先放下手中的事(計(jì)算機(jī)中,稱為保護(hù)現(xiàn)場(chǎng)) ,再去與叫你的那個(gè)人辦事去,等完了,你又回,接著做剛才的事。這是個(gè)很通俗的講法。 計(jì)算機(jī)在運(yùn)行時(shí),也會(huì)出現(xiàn)這種情況,我們叫之中斷。 下面是他的一些常用中斷向量的入口值詳解:(記住哦,很用的...呵呵) IBM PC 中斷 int10 ooH 屏幕方式設(shè)置 入口:AH=0,AL=顯示方式代碼(0--6) 0:40*25 黑白 1:40*25 彩色 2:80*25 黑白 3:80*25 彩色文本 4:320*200 彩色 5:320*200 黑白 6:640*200 黑白圖形模式 7:80*25 單色字符(單色顯示器) 0BH 色彩設(shè)置 入口:AH=0B,BL=0 設(shè)背景色,BH=0--15 BL=1 設(shè)調(diào)色碼,BH=0--1 0CH 寫圖形點(diǎn) 入口:AH=0C,CX:DX=列號(hào):行號(hào),AL=顏色 ODH 讀圖形點(diǎn) 入口:AH=0D,CX:DX=列號(hào):行號(hào) 返回:AL=顏色 0EH 在當(dāng)前頁(yè)、當(dāng)前光標(biāo)處寫字符 入口:AH=0E,AL=字符的ASCII碼,BL=前景色 OFH 顯示器狀態(tài) 入口:AH=0F 返回:AL=當(dāng)前顯示器方式,AH=屏幕列數(shù),BH=當(dāng)前頁(yè)號(hào) 01H 光標(biāo)設(shè)置 入口:AH=1,CH=光標(biāo)起始行號(hào)(00--0C),CL=光標(biāo)結(jié)束行號(hào)(00--0C) 注:CH > CL 02H 光標(biāo)定位 入口:AH=2,BH=頁(yè)號(hào),DH:DL=起始行:列 03H 讀光標(biāo)位置 入口:AH=3,BH=頁(yè)號(hào)。 返回:DH:DL=起始行:列 06H 窗口上卷 入品:AH=6,AL=窗口上卷行數(shù),CH:CL-DH:DL 窗口坐標(biāo) 注:AL=0 卷動(dòng)整個(gè)窗口 07H 窗口下卷 入口:AH=7,AL=窗口下卷行數(shù),CH:CL-DH:DL 窗口坐標(biāo) 08H 讀當(dāng)前光標(biāo)處字符和屬性 入口:AH=8,BH=頁(yè)號(hào)。 返回:AH:AL=字符的顏色:字符的ASCII碼 注:顏色代碼見下對(duì)照表 09H:在當(dāng)前光標(biāo)處寫字符和屬性 注:光標(biāo)不下移 入口:AH=9,BH=頁(yè)號(hào),BL:AL=字符的顏色:字符的ASCII碼,CX=重復(fù)次數(shù) 1 2 3 4 5 6 7 8 BL R G B I R G B 閃爍 字符底色 加亮 字符顏色 中斷向量號(hào)表 中斷號(hào) 解釋 中斷號(hào) 解釋 0 除數(shù)為0錯(cuò) 19 引導(dǎo)裝入程序 1 音步中斷 1A 日時(shí)調(diào)用 2 不可屏蔽中斷NMI 1B 鍵盤阻斷時(shí)得到控制權(quán) 3 斷電中斷(CCH) 1C 時(shí)鐘中斷時(shí)得到控制權(quán) 4 溢出中斷 1D 指向CRT初始參數(shù)表 5 屏幕打印中斷 1E 指向盒帶參數(shù)表 6-7 保留 1F 1KB圖形模式 8 計(jì)時(shí)器中斷(18.2秒) 20 結(jié)束DOS程序 9 鍵盤中斷 21 DOS功能調(diào)用 A-D 保留 22 結(jié)束地址(建義用EXEC) E 軟盤機(jī)中斷 23 DOS Crtl-Break退出地址 F 保留 24 DOS致命錯(cuò)向量 10 屏幕I/O調(diào)用 25 DOS絕對(duì)磁盤讀 11 設(shè)備檢查調(diào)用 26 DOS絕對(duì)磁盤寫 12 存儲(chǔ)器檢查調(diào)用 27 結(jié)束程序并駐留(建義用31h) 13 軟盤機(jī)I/O調(diào)用 28-3F DOS保留 14 RS-233I/O調(diào)用 40-7F 未用 15 盒帶機(jī)I/O調(diào)用 80-85 BASIC保留 16 鍵盤I/O調(diào)用 86-F0 BASIC解釋程序用 17 打印機(jī)I/O調(diào)用 F1-FF 未用 18 ROM-BASIC入口 指令名詳解 call 指令(過程調(diào)用)(控制指令-長(zhǎng)轉(zhuǎn)移) 詳解: 段內(nèi)直接調(diào)用 段內(nèi)間接調(diào)用(寄存器) 段內(nèi)間接調(diào)用(存儲(chǔ)器) 段間直接調(diào)用 段間間接調(diào)用 指令名 jmp 指令(無條件轉(zhuǎn)移指令)(控制指令-長(zhǎng)轉(zhuǎn)移) 詳解: 段內(nèi)直接跳轉(zhuǎn) 短段內(nèi)直接跳轉(zhuǎn) 段內(nèi)間接跳轉(zhuǎn)(寄存器) 段內(nèi)間接跳轉(zhuǎn)(存儲(chǔ)器) 段間直接跳轉(zhuǎn) 段間間接跳轉(zhuǎn) 指令名 ret 指令(過程返回)(控制指令-長(zhǎng)轉(zhuǎn)移) 詳解: 段內(nèi)返回 段內(nèi)返回立即數(shù)加于sp 段間返回 段間返回立即數(shù)加于sp na/jnbe 指令(控制指令-短轉(zhuǎn)移) 不小于或不等于時(shí)轉(zhuǎn)移 jae/jnb 指令 (控制指令-短轉(zhuǎn)移) 大于或等于時(shí)轉(zhuǎn)移 jb/jnae 指令 (控制指令-短轉(zhuǎn)移) 小于轉(zhuǎn)移 jbe/jna 指令 (控制指令-短轉(zhuǎn)移) 小于或等 于轉(zhuǎn)移 jg/jnle 指令(控制指令-短轉(zhuǎn)移) 大于轉(zhuǎn)移 jge/jnl 指令 (控制指令-短轉(zhuǎn)移) 大于或等于轉(zhuǎn)移 jl/jnge 指令 (控制指令-短轉(zhuǎn)移) 小于轉(zhuǎn)移 jle/jng 指令 (控制指令-短轉(zhuǎn)移) 小于或等 于轉(zhuǎn)移 je/jz 指令 (控制指令-短轉(zhuǎn)移) 等于轉(zhuǎn)移 jne/jnz 指令 (控制指令-短轉(zhuǎn)移) 不等于轉(zhuǎn)移 jc 指令 (控制指令-短轉(zhuǎn)移) 有進(jìn)位時(shí)轉(zhuǎn)移 jnc 指令 (控制指令-短轉(zhuǎn)移) 列進(jìn)位時(shí)轉(zhuǎn)移 jno 指令 (控制指令-短轉(zhuǎn)移) 不溢出時(shí)轉(zhuǎn)移 jnp/jpo 指令 (控制指令-短轉(zhuǎn)移) 奇偶性為奇數(shù)時(shí)轉(zhuǎn)移 jns 指令 (控制指令-短轉(zhuǎn)移) 符號(hào)位為"0"轉(zhuǎn)移 jo 指令 (控制指令-短轉(zhuǎn)移) 溢出轉(zhuǎn)移 jp/jpe 指令 (控制指令-短轉(zhuǎn)移) 奇偶性為偶數(shù)時(shí)轉(zhuǎn)移 js 指令 (控制指令-短轉(zhuǎn)移) 符號(hào)位為"1"時(shí)轉(zhuǎn)移 loop 指令 (循環(huán)控制指令-短轉(zhuǎn)移) cx 不為0時(shí)循環(huán) loope/loopz 指令 (循環(huán)控制指令-短轉(zhuǎn)移) cx 不為0且標(biāo)志 z=1 時(shí)循環(huán) loopne/loopnz 指令 (循環(huán)控制指令-短轉(zhuǎn)移) cx 不為0且標(biāo)志 z=0 時(shí)循環(huán) jcxz 指令 (循環(huán)控制指令-短轉(zhuǎn)移) cx 為0時(shí)轉(zhuǎn)移 ★int 指令 (中斷指令) 中斷指令(后詳解) into 指令 (中斷指令) 溢出中斷 iret 指令 (中斷指令) 中斷返回 指令名 shl 指令(邏輯左移) sal 指令(算術(shù)左移) shr 指令(邏輯右移) sar 指令(算術(shù)右移) 寄存器,1 rol 指令(循環(huán)左移) 寄存器,cl ror 指令(循環(huán)右移) 存儲(chǔ)器,1 rcl 指令(通過進(jìn)位的循環(huán)左移)存儲(chǔ)器,cl rcr 指令(通過進(jìn)位的循環(huán)右移)(邏輯運(yùn)算) not 指令(取反運(yùn)算)寄存器求反 (邏輯運(yùn)算)存儲(chǔ)器求反 and 指令(與運(yùn)算) (邏輯運(yùn)算) 寄存器 and 寄存器 寄存器 寄存器 and 存儲(chǔ)器 寄存器 存儲(chǔ)器 and 寄存器 存儲(chǔ)器 立即數(shù) and 存儲(chǔ)器 存儲(chǔ)器 立即數(shù) and 累加器 累加器 or 指令(或運(yùn)算)(邏輯運(yùn)算) 寄存器 or 寄存器 寄存器 寄存器 or 存儲(chǔ)器 寄存器 存儲(chǔ)器 or 寄存器 存儲(chǔ)器 立即數(shù) or 存儲(chǔ)器 存儲(chǔ)器 立即數(shù) or 累加器 累加器 test 指令(測(cè)試) (邏輯運(yùn)算) 寄存器 test 寄存器 寄存器 test 存儲(chǔ)器 寄存器 test 立即數(shù) 存儲(chǔ)器 test 立即數(shù) 累加器 test 立即數(shù) movs 指令(串傳送)(字符串操作指令) 單個(gè)傳送 重復(fù)傳送 cmps 指令(串比較) (字符串操作指令) 單個(gè)比較 重復(fù)比較 scas 指令(串掃描)(字符串操作指令) 單個(gè)搜索 重復(fù)搜索 lods 指令(裝入串) (字符串操作指令) 單個(gè)裝載 重復(fù)裝載 stos 指令(保存串) (字符串操作指令) 單個(gè)存儲(chǔ) 重復(fù)存儲(chǔ) mov 指令(傳送字或字節(jié))(數(shù)據(jù)傳送命令) 寄存器與寄存器間傳送 存儲(chǔ)器與寄存器間傳送 立即數(shù)傳送給存儲(chǔ)器 立即數(shù)傳送給寄存器 存儲(chǔ)器傳送給累加器 累加器傳送存儲(chǔ)器 寄存器傳送給段寄存器 存儲(chǔ)器傳送給段寄存器 段寄存器傳送給寄存器 段寄存器傳送給存儲(chǔ)存器 pop 指令(把字彈出堆棧) (數(shù)據(jù)傳送命令) push 指令(把字壓入堆棧) 存儲(chǔ)器 寄存器 段寄器 xchg 指令(交換字或字節(jié)) (數(shù)據(jù)傳送命令) 寄存器與寄存器交換 存儲(chǔ)器與寄存器交換 寄存器與累加器交換 in 指令(端口輸入) (數(shù)據(jù)傳送命令) 直接輸入 間接輸入 out 指令(端口輸出) (數(shù)據(jù)傳送指令) 直接輸出 間接輸出 add 指令(加法)(算術(shù)指令) adc 指令(帶進(jìn)位加法) 寄存器+寄存器 寄存器 寄存器+存儲(chǔ)器 寄存器 存儲(chǔ)器+寄存器 存儲(chǔ)器 立即數(shù)+存儲(chǔ)器 存儲(chǔ)器 立即數(shù)+累加器 累加器 inc 指令(加1)(算術(shù)指令) 存儲(chǔ)器增量 寄存器增量 sub 指令(減法) (算術(shù)指令) sbb 指令(帶借位減法) 寄存器-寄存器 寄存器 寄存器-存儲(chǔ)器 寄存器 存儲(chǔ)器-寄存器 存儲(chǔ)器 立即數(shù)-存儲(chǔ)器 存儲(chǔ)器 立即數(shù)-累加器 累加器 dec 指令(減1)(算術(shù)指令) 存儲(chǔ)器減量 寄存器減量 nec 指令(求反,以0減之) 寄存器求補(bǔ) 存儲(chǔ)器求補(bǔ) cmp 指令(比較)(算術(shù)指令) 寄存器與寄存器比較 寄存器與存儲(chǔ)器比較 寄存器與立即數(shù)比較 存儲(chǔ)器與立即數(shù)比較 累加器與立即數(shù)比較 mul 指令(無符號(hào)乘法) (算術(shù)指令) imul 指令(整數(shù)乘法) 與8位寄存器相乘 與16位寄存器相乘 與8位存儲(chǔ)單元相乘 與16位存儲(chǔ)單元相乘 div 指令(無符號(hào)除法)(算術(shù)指令) idiv 指令(整數(shù)除法) 被8位寄存器除 被16位寄存器除 被8位存儲(chǔ)單元除 被16位存儲(chǔ)單元除 DEBUG主要命令 DEBUG是為匯編語(yǔ)言設(shè)計(jì)的一種高度工具,它通過單步、設(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命令來調(diào)試程序。 二、DEBUG的主要命令 1、顯示存儲(chǔ)單元的命令D(DUMP),格式為: _D[address]或_D[range] 例如,按指定范圍顯示存儲(chǔ)單元內(nèi)容的方法為: -d100 120 18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G... 18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW. 7 18E4:0120 8B 其中0100至0120是DEBUG顯示的單元內(nèi)容,左邊用十六進(jìn)制表示每個(gè)字節(jié),右邊用ASCII字符表示每個(gè)字節(jié),·表示不可顯示的字符。這里沒有指定段地址,D命令自動(dòng)顯示DS段的內(nèi)容。如果只指定首地址,則顯示從首地址開始的80個(gè)字節(jié)的內(nèi)容。如果完全沒有指定地址,則顯示上一個(gè)D命令顯示的最后一個(gè)單元后的內(nèi)容。 2、修改存儲(chǔ)單元內(nèi)容的命令有兩種。 ·輸入命令E(ENTER),有兩種格式如下:第一種格式可以用給定的內(nèi)容表來替代指定范圍的存儲(chǔ)單元內(nèi)容。命令格式為: -E address [list] 例如,-E DS:100 F3'XYZ'8D 其中F3,'X','Y','Z'和各占一個(gè)字節(jié),該命令可以用這五個(gè)字節(jié)來替代存儲(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é)束該命令為止。 ·填寫命令F(FILL),其格式為: -F range list 例如:-F 4BA:0100 5 F3'XYZ'8D 使04BA:0100~0104單元包含指定的五個(gè)字節(jié)的內(nèi)容。如果list中的字節(jié)數(shù)超過指定的范圍,則忽略超過的項(xiàng);如果list的字節(jié)數(shù)小于指定的范圍,則重復(fù)使用list填入,直到填滿指定的所有單元為止。 3)檢查和修改寄存器內(nèi)容的命令R(register),它有三種格式如下: ·顯示CPU內(nèi)所有寄存器內(nèi)容和標(biāo)志位狀態(tài),其格式為: -R 例如,-r AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC 18E4:0100 C70604023801 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 bx BX 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 即可,可見鍵入的順序可以是任意的。 4)運(yùn)行命令G,其格式為: -G[=address1][address2[address3…> 其中,地址1指定了運(yùn)行的起始地址,如不指定則從當(dāng)前的CS:IP開始運(yùn)行。后面的地址均為斷點(diǎn)地址,當(dāng)指令執(zhí)行到斷點(diǎn)時(shí),就停止執(zhí)行并顯示當(dāng)前所有寄存器及標(biāo)志位的內(nèi)容,和下一條將要執(zhí)行的指令。 5)跟蹤命令T(Trace),有兩種格式: ·逐條指令跟蹤 -T [=address] 從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存器內(nèi)容及標(biāo)志位的值。如未指定地址則從當(dāng)前的CS:IP開始執(zhí)行。 ·多條指令跟蹤 -T [=address][value] 從指定地址起執(zhí)行n條指令后停下來,n由value指定。 6)匯編命令A(yù)(Assemble),其格式為: -A[address] 該命令允許鍵入?yún)R編語(yǔ)言語(yǔ)句,并能把它們匯編成機(jī)器代碼,相繼地存放在從指定地址開始的存儲(chǔ)區(qū)中。必須注意:DEBUG把鍵入的數(shù)字均看成十六進(jìn)制數(shù),所以如要鍵入十進(jìn)制數(shù),則其后應(yīng)加以說明,如100D。 7)反匯編命令U(Unassemble)有兩種格式。 ·從指定地址開始,反匯編32個(gè)字節(jié),其格式為: -U[address] 例如: -u100 18E4:0100 C70604023801 MOV WORD PTR[0204],0138 18E4:0106 C70606020002 MOV WORD PTR[0206],0200 18E4:010C C70606020202 MOV WORD PTR[0208],0202 18E4:0112 BBO4O2 MOV BX,0204 18E4:0115 E80200 CALL 011A 18E4:0118 CD20 INT 20 18E4:011A 50 PUSH AX 18E4:011B 51 PUSH CX 18E4:011C 56 PUSH SI 18E4:011D 57 PUSH DI 18E4:011E 8B37 MOV SI,[BX] 如果地址被省略,則從上一個(gè)U命令的最后一條指令的下一個(gè)單元開始顯示32個(gè)字節(jié)。 ·對(duì)指定范圍內(nèi)的存儲(chǔ)單元進(jìn)行反匯編,格式為: -U[range] 例如: -u100 10c 18E4:0100 C70604023801 MOV WORD PTR[0204],0138 18E4:0106 C70606020002 MOV WORD PTR[0206],0200 18E4:010C C70606020202 MOV WORD PTR[0208],0202 或 -u100 112 18E4:0100 C70604023801 MOV WORD PTR[0204],0138 18E4:0106 C70606020002 MOV WORD PTR[0206],0200 18E4:010C C70606020202 MOV WORD PTR[0208],0202 可見這兩種格式是等效的。 8)命名命令N(Name),其格式為: -N filespecs [filespecs] 命令把兩個(gè)文件標(biāo)識(shí)符格式化在CS:5CH和CS:6CH的兩個(gè)文件控制塊中,以便在其后用L或W命令把文件裝入存盤。filespecs的格式可以是: [d:][path] filename[.ext] 例如, -N myprog -L - 可把文件myprog裝入存儲(chǔ)器。 9)裝入命令(Load),有兩種功能。 ·把磁盤上指定扇區(qū)范圍的內(nèi)容裝入到存儲(chǔ)器從指定地址開始的區(qū)域中。其格式為: -L[address[drive sector sector] ·裝入指定文件,其格式為: -L[address] 此命令裝入已在CS:5CH中格式化了文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開始的存儲(chǔ)區(qū)中。 10)寫命令W(Write),有兩種功能。 ·把數(shù)據(jù)寫入磁盤的指定扇區(qū)。其格式為: -W address drive sector sector ·把數(shù)據(jù)寫入指定的文件中。其格式為: -W[address] 此命令把指定的存儲(chǔ)區(qū)中的數(shù)據(jù)寫入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數(shù)據(jù)從CS:0100開始。要寫入文件的字節(jié)數(shù)應(yīng)先放入BX和CX中。 11)退出DEBUG命令Q(Quit),其格式為: -Q 它退出DEBUG,返回DOS。本命令并無存盤功能,如需存盤應(yīng)先使用W命令。 問題:初學(xué)者問一個(gè)低級(jí)問題,執(zhí)行debug-a后,如果有一行輸入錯(cuò)誤,如何更改這一行? 回答: 加入進(jìn)行如下輸入: D:\PWIN95\Desktop>debug -a 2129:0100movax,200 2129:0103movbx,200 2129:0106movcx,200 2129:0109 此時(shí),發(fā)現(xiàn)movbx,200一句錯(cuò)誤,應(yīng)為movbx,20,可以敲回車返回"-"狀態(tài),然后輸入: -a103 2129:0103movbx,20 如果多或者少若干行,不必重新輸入,可以用M命令移動(dòng)后面的程序來去掉或者增加程序空間。 |
聯(lián)系客服