1movwordptr[0204],0138ds:0204=0000 ·顯示和修改某個寄存器內容,其格式為: -rregistername 例如,鍵入 -rax 系統將響應如下: axf1f4 : 即ax寄存器的當前內容為f1f4,如不修改則按enter鍵,否則,可鍵入欲修改的內容,如:
-rbx bx0369 :059f 則把bx寄存器的內容修改為059f。 ·顯示和修改標志位狀態,命令格式為: -rf系統將響應,如: ovdneingzracpecy- 此時,如不修改其內容可按enter鍵,否則,可鍵入欲修改的內容,如: ovdneingzracpecy-ponzdinv 即可,可見鍵入的順序可以是任意的。 4)運行命令g,其格式為: -g[=address1][address2[address3…]] 其中,地址1指定了運行的起始地址,如不指定則從當前的cs:ip開始運行。後面的地址均為斷點地址,當指令執行到斷點時,就停止執行並顯示當前所有寄存器及標志位的內容,和下一條將要執行的指令。 5)跟蹤命令t(trace),有兩種格式: ·逐條指令跟蹤 -t[=address] 從指定地址起執行一條指令後停下來,顯示所有寄存器內容及標志位的值。如未指定地址則從當前的cs:ip開始執行。 ·多條指令跟蹤 -t[=address][value] 從指定地址起執行n條指令後停下來,n由value指定。 6)匯編命令a(assemble),其格式為: -a[address] 該命令允許鍵入匯編語言語句,並能把它們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區中。必須注意:debug把鍵入的數字均看成十六進制數,所以如要鍵入十進制數,則其後應加以說明,如100d。 7)反匯編命令u(unassemble)有兩種格式。 ·從指定地址開始,反匯編32個字節,其格式為: -u[address] 例如: -u100 18e4:0100c70604023801movwordptr[0204],0138 18e4:0106c70606020002movwordptr[0206],0200 18e4:010cc70606020202movwordptr[0208],0202 18e4:0112bbo4o2movbx,0204 18e4:0115e80200call011a 18e4:0118cd20int20 18e4:011a50pushax 18e4:011b51pushcx 18e4:011c56pushsi 18e4:011d57pushdi 18e4:011e8b37movsi,[bx] 如果地址被省略,則從上一個u命令的最後一條指令的下一個單元開始顯示32個字節。 ·對指定范圍內的存儲單元進行反匯編,格式為: -u[range] 例如: -u10010c 18e4:0100c70604023801movwordptr[0204],0138 18e4:0106c70606020002movwordptr[0206],0200 18e4:010cc70606020202movwordptr[0208],0202 或 -u100112 18e4:0100c70604023801movwordptr[0204],0138 18e4:0106c70606020002movwordptr[0206],0200 18e4:010cc70606020202movwordptr[0208],0202
可見這兩種格式是等效的。 8)命名命令n(name),其格式為: -nfilespecs[filespecs] 命令把兩個文件標識符格式化在cs:5ch和cs:6ch的兩個文件控制塊中,以便在其後用l或w命令把文件裝入存盤。filespecs的格式可以是: [d:][path]filename[.ext] 例如, -nmyprog -l - 可把文件myprog裝入存儲器。 9)裝入命令(load),有兩種功能。 ·把磁盤上指定扇區范圍的內容裝入到存儲器從指定地址開始的區域中。其格式為: -l[address[drivesectorsector] ·裝入指定文件,其格式為: -l[address] 此命令裝入已在cs:5ch中格式化了文件控制塊所指定的文件。如未指定地址,則裝入cs:0100開始的存儲區中。 10)寫命令w(write),有兩種功能。 ·把數據寫入磁盤的指定扇區。其格式為: -waddressdrivesectorsector ·把數據寫入指定的文件中。其格式為: -w[address] 此命令把指定的存儲區中的數據寫入由cs:5ch處的文件控制塊所指定的文件中。如未指定地址則數據從cs:0100開始。要寫入文件的字節數應先放入bx和cx中。 11)退出debug命令q(quit),其格式為: -q 它退出debug,返回dos。本命令並無存盤功能,如需存盤應先使用w命令。
問題:初學者問一個低級問題,執行debug-a後,如果有一行輸入錯誤,如何更改這一行?
回答: 加入進行如下輸入: d:\pwin95\desktop>debug -a 2129:0100movax,200 2129:0103movbx,200 2129:0106movcx,200 2129:0109 此時,發現movbx,200一句錯誤,應為movbx,20,可以敲回車返回"-"狀態,然後輸入: -a103 2129:0103movbx,20 如果多或者少若干行,不必重新輸入,可以用m命令移動後面的程序來去掉或者增加程序空間。
如何除錯和匯編你的第一個pcx86匯編語言程序呢?
以下這些簡單的解釋可以讓一個匯編語言新手使用debug:
0)在使用時,如何快速獲得debug的使用幫助呢。 1)讓我們開始工作吧,例如:顯示bios的日期。 2)在你的電腦的 commang.com 文件裡搜尋"ibm"這幾個字符。 3)一位十六進制數的運算。 4)檢查x86寄存器內容。 5)我們來編寫我們的第一個用機械語言編寫的程序-打印一個字符。 6)我們現在用匯編語言指令來做和例5一樣的事情。 7)現在,我們不但要編寫一個匯編程序,而且我們還要把它存盤。 8)現在,我們試一試查看一個已經編好的程序。 9)你可以用debug的計算功能計算程序的長度。 10)另一種顯示在屏幕上字符串的方法。 11)讓我們試一試反復輸出。 12)我們現在把兩個程序連接起來。 13)讓我們逐步運行這個剛剛修補的程序。 14)如果一開始的命令不是跳轉命令,那麼可能就要用這種方法了。
以下所有的命令都是可以運行在win9x的ms-dos方式下的。 進入ms-dos的方式有: [開始][程序][ms-dos方式]
[開始][運行][打開]command[確定]
或者你可以雙擊它: c:\windows\command.com
0)在使用時,如何快速獲得debug的使用幫助呢 以下prompt>表示目錄提示符:一般為:c:\windows\command\ prompt>debug/?<按回車presstheenterkeynow> 怎樣?出錯了吧。顯示如下 c:\windows>debug/? runsdebug,aprogramtestingandeditingtool.
debug[[drive:][path]filename[testfile-parameters]]
[drive:][path]filenamespecifiesthefileyouwanttotest. testfile-parametersspecifiescommand-lineinformationrequiredby thefileyouwanttotest.
afterdebugstarts,type?todisplayalistofdebuggingcommands. 因為錯了所以它給你顯示一些提示。留意到最後一句了嗎?
上一页 [1] [2]
|
|