dosbox中的bebug指令
( 1 )G命令
運(yùn)行當(dāng)前在內(nèi)存中的程序。
指定當(dāng)前在內(nèi)存中要開(kāi)始執(zhí)行的程序地址。如果不指定 address,Windows 2000 將從 CS:IP 寄存器中的當(dāng)前地址開(kāi)始執(zhí)行程序。
breakpoints
指定可以設(shè)置為 g 命令的部分的 1 到 10 個(gè)臨時(shí)斷點(diǎn)。
有關(guān)執(zhí)行指令的信息,請(qǐng)參看Debug T(跟蹤)。
( 2 )D命令
顯示一定范圍內(nèi)存地址的內(nèi)容。
指定要顯示其內(nèi)容的內(nèi)存區(qū)域的起始和結(jié)束地址,或起始地址和長(zhǎng)度。如果不指定 range,Debug 程序?qū)囊郧?d 命令中所指定的地址范圍的末尾開(kāi)始顯示 128 個(gè)字節(jié)的內(nèi)容。
當(dāng)使用 d 命令時(shí),Debug 以?xún)蓚€(gè)部分顯示內(nèi)存內(nèi)容:十六進(jìn)制部分(每個(gè)字節(jié)的值都用十六進(jìn)制格式表示)和 ASCII 碼部分(每個(gè)字節(jié)的值都用 ASCII 碼字符表示)。每個(gè)非打印字符在顯示的 ASCII 部分由句號(hào) (.) 表示。每個(gè)顯示行顯示 16 字節(jié)的內(nèi)容,第8字節(jié)和第 9 字節(jié)之間有一個(gè)連字符。每個(gè)顯示行從16字節(jié)的邊界上開(kāi)始。
假定鍵入以下命令:
dcs:100 10f
Debug 按以下格式顯示范圍中的內(nèi)容:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER…
如果在沒(méi)有參數(shù)的情況下鍵入 d 命令,Debug 按以前范例中所描述的內(nèi)容來(lái)編排顯示格式。顯示的每行以比前一行的地址大 16 個(gè)字節(jié)(如果是顯示 40 列的屏幕,則為 8 個(gè)字節(jié))的地址開(kāi)頭。
對(duì)于后面鍵入的每個(gè)不帶參數(shù)的 d 命令,Debug 將緊接在最后顯示的命令后立即顯示字節(jié)內(nèi)容。
如果鍵入以下命令,Debug 將從 CS:100 開(kāi)始顯示 20h 個(gè)字節(jié)的內(nèi)容:
dcs:100 l 20
如果鍵入以下命令,Debug 將顯示范圍從CS 段的100h 到115h 中所有字節(jié)的內(nèi)容:
dcs:100 115
( 3 )R命令
顯示或改變一個(gè)或多個(gè) CPU 寄存器的內(nèi)容。
參數(shù)
如果在沒(méi)有參數(shù)的情況下使用,則 r 命令顯示所有寄存器的內(nèi)容以及寄存器存儲(chǔ)區(qū)域中的標(biāo)志。
register-name
指定要顯示其內(nèi)容的寄存器名。
使用 r 命令 ,如果指定了寄存器名稱(chēng),Windows 2000 將顯示以十六進(jìn)制標(biāo)記表示的寄存器的 16 位值,并將冒號(hào)顯示為提示符。如果要更改包含在寄存器中的值,除非鍵入新值并按 ENTER 鍵;否則,請(qǐng)按 ENTER 鍵返回 Debug 提示符。
register-name 的有效值:ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc 及 flags。ip 和 pc 都引用指令指針。
( 4 )A命令
直接將 8086/8087/8088 記憶碼合并到內(nèi)存。
該命令從匯編語(yǔ)言語(yǔ)句創(chuàng)建可執(zhí)行的機(jī)器碼。所有數(shù)值都是十六進(jìn)制格式,必須按一到四個(gè)字符輸入這些數(shù)值。在引用的操作代碼(操作碼)前指定前綴記憶碼。
指定鍵入?yún)R編語(yǔ)言指令的位置。對(duì) address 使用十六進(jìn)制值,并鍵入不以“h”字符結(jié)尾的每個(gè)值。如果不指定地址,a 將在它上次停止處開(kāi)始匯編。
有關(guān)將數(shù)據(jù)輸入到指定字節(jié)中的信息,請(qǐng)參看Debug E(鍵入)。
使用記憶碼:段的替代記憶碼為 cs:、ds:、es: 和 ss:。遠(yuǎn)程返回的記憶碼是 retf。字符串處理的記憶碼必須明確聲明字符串大小。例如,使用 movsw 可以移動(dòng) 16 位的字串,使用 movsb 可以移動(dòng) 8 位字節(jié)串。
匯編跳轉(zhuǎn)和調(diào)用
匯編程序根據(jù)字節(jié)替換自動(dòng)將短、近和遠(yuǎn)的跳轉(zhuǎn)及調(diào)用匯編到目標(biāo)地址。通過(guò)使用 near 或 far 前綴可以替代這樣的跳轉(zhuǎn)或調(diào)用,如下例所示:
-a0100:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以將 near 前綴縮寫(xiě)為 ne。
區(qū)分字和字節(jié)內(nèi)存位置
當(dāng)某個(gè)操作數(shù)可以引用某個(gè)字內(nèi)存位置或者字節(jié)內(nèi)存位置時(shí),必須用前綴 word ptr 或者前綴 byte ptr 指定數(shù)據(jù)類(lèi)型。可接受的縮寫(xiě)分別是 wo 和 by。以下范例顯示兩種格式:
dec wo [si]
neg byte ptr [128]
指定操作數(shù)
Debug 使用包括在中括號(hào) ([ ]) 的操作數(shù)引用內(nèi)存地址的習(xí)慣用法。這是因?yàn)榱硪环矫?Debug 不能區(qū)分立即操作數(shù)和內(nèi)存地址的操作數(shù)。以下范例顯示兩種格式:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用偽指令
使用 a 命令提供兩個(gè)常用的偽指令:db 操作碼,將字節(jié)值直接匯編到內(nèi)存,dw 操作碼,將字值直接匯編到內(nèi)存。
以下是兩個(gè)偽指令的范例:
db 1,2,3,4,“THIS IS AN EXAMPLE”
db ‘THIS IS A QUOTATION MARK:"’
db “THIS IS A QUOTATION MARK:’”
dw 1000,2000,3000,“BACH”
范例
a 命令支持所有形式的間接注冊(cè)命令,如下例所示:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
還支持所有操作碼同義詞,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
對(duì)于 8087 操作碼,必須指定 wait 或 fwait 前綴,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
( 5 )U命令
反匯編字節(jié)并顯示相應(yīng)的原語(yǔ)句,其中包括地址和字節(jié)值。反匯編代碼看起來(lái)象已匯編文件的列表。
如果在沒(méi)有參數(shù)的情況下使用,則 u 命令分解 20h 字節(jié)(默認(rèn)值),從前面 u 命令所顯示地址后的第一個(gè)地址開(kāi)始。
range
指定要反匯編代碼的起始地址和結(jié)束地址,或起始地址和長(zhǎng)度。
有關(guān)集成記憶碼的信息,請(qǐng)參看Debug A(匯編)。
有關(guān)顯示內(nèi)存部分內(nèi)容的信息,請(qǐng)參看Debug D(轉(zhuǎn)儲(chǔ))。
要反匯編 16 (10h) 字節(jié),從地址 04BA:0100 開(kāi)始,請(qǐng)鍵入以下命令:
u04ba:100l10
Debug 按以下格式顯示結(jié)果:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
04BA:0109 65 DB 65
04BA:010A 63 DB 63
04BA:010B 69 DB 69
04BA:010C 66 DB 66
04BA:010D 69 DB 69
04BA:010E 63 DB 63
04BA:010F 61 DB 61
如果只顯示從 04BA:0100 到 04BA:0108 特定地址的信息,請(qǐng)鍵入以下命令:
u04ba:0100 0108
Debug 顯示以下內(nèi)容:
04BA:0100 206472 AND [SI+72],AH
04BA:0103 69 DB 69
04BA:0104 7665 JBE 016B
04BA:0106 207370 AND [BP+DI+70],DH
( 6 )Q命令
停止 Debug 會(huì)話(huà),不保存當(dāng)前測(cè)試的文件。
當(dāng)您鍵入 q 以后,控制返回到 DOS 的命令提示符。
該命令不帶參數(shù)。
( 7 )W命令
將文件或特定分區(qū)寫(xiě)入磁盤(pán)。
要將在 BX:CX 寄存器中指定字節(jié)數(shù)的內(nèi)容寫(xiě)入磁盤(pán)文件,請(qǐng)使用以下語(yǔ)法:
要略過(guò) Windows 2000 文件系統(tǒng)并直接寫(xiě)入特定的扇區(qū),請(qǐng)使用以下語(yǔ)法:
w address drive start number參數(shù)
address
指定要寫(xiě)到磁盤(pán)文件的文件或部分文件的起始內(nèi)存地址。如果不指定 address,Debug 程序?qū)?CS:100 開(kāi)始。
drive
指定包含目標(biāo)盤(pán)的驅(qū)動(dòng)器。該值是數(shù)值型:0 = A, 1 = B, 2 = C,等等。
start
指定要寫(xiě)入第一個(gè)扇區(qū)的十六進(jìn)制數(shù)。
number
指定要寫(xiě)入的扇區(qū)數(shù)。
總結(jié)
以上是生活随笔為你收集整理的dosbox中的bebug指令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 并发查询_java 手写并发框架(一)异
- 下一篇: 2021年客户需求的新变化,带来了对程序