dosbox中的bebug指令
( 1 )G命令
運行當前在內存中的程序。
指定當前在內存中要開始執行的程序地址。如果不指定 address,Windows 2000 將從 CS:IP 寄存器中的當前地址開始執行程序。
breakpoints
指定可以設置為 g 命令的部分的 1 到 10 個臨時斷點。
有關執行指令的信息,請參看Debug T(跟蹤)。
( 2 )D命令
顯示一定范圍內存地址的內容。
指定要顯示其內容的內存區域的起始和結束地址,或起始地址和長度。如果不指定 range,Debug 程序將從以前 d 命令中所指定的地址范圍的末尾開始顯示 128 個字節的內容。
當使用 d 命令時,Debug 以兩個部分顯示內存內容:十六進制部分(每個字節的值都用十六進制格式表示)和 ASCII 碼部分(每個字節的值都用 ASCII 碼字符表示)。每個非打印字符在顯示的 ASCII 部分由句號 (.) 表示。每個顯示行顯示 16 字節的內容,第8字節和第 9 字節之間有一個連字符。每個顯示行從16字節的邊界上開始。
假定鍵入以下命令:
dcs:100 10f
Debug 按以下格式顯示范圍中的內容:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER…
如果在沒有參數的情況下鍵入 d 命令,Debug 按以前范例中所描述的內容來編排顯示格式。顯示的每行以比前一行的地址大 16 個字節(如果是顯示 40 列的屏幕,則為 8 個字節)的地址開頭。
對于后面鍵入的每個不帶參數的 d 命令,Debug 將緊接在最后顯示的命令后立即顯示字節內容。
如果鍵入以下命令,Debug 將從 CS:100 開始顯示 20h 個字節的內容:
dcs:100 l 20
如果鍵入以下命令,Debug 將顯示范圍從CS 段的100h 到115h 中所有字節的內容:
dcs:100 115
( 3 )R命令
顯示或改變一個或多個 CPU 寄存器的內容。
參數
如果在沒有參數的情況下使用,則 r 命令顯示所有寄存器的內容以及寄存器存儲區域中的標志。
register-name
指定要顯示其內容的寄存器名。
使用 r 命令 ,如果指定了寄存器名稱,Windows 2000 將顯示以十六進制標記表示的寄存器的 16 位值,并將冒號顯示為提示符。如果要更改包含在寄存器中的值,除非鍵入新值并按 ENTER 鍵;否則,請按 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 記憶碼合并到內存。
該命令從匯編語言語句創建可執行的機器碼。所有數值都是十六進制格式,必須按一到四個字符輸入這些數值。在引用的操作代碼(操作碼)前指定前綴記憶碼。
指定鍵入匯編語言指令的位置。對 address 使用十六進制值,并鍵入不以“h”字符結尾的每個值。如果不指定地址,a 將在它上次停止處開始匯編。
有關將數據輸入到指定字節中的信息,請參看Debug E(鍵入)。
使用記憶碼:段的替代記憶碼為 cs:、ds:、es: 和 ss:。遠程返回的記憶碼是 retf。字符串處理的記憶碼必須明確聲明字符串大小。例如,使用 movsw 可以移動 16 位的字串,使用 movsb 可以移動 8 位字節串。
匯編跳轉和調用
匯編程序根據字節替換自動將短、近和遠的跳轉及調用匯編到目標地址。通過使用 near 或 far 前綴可以替代這樣的跳轉或調用,如下例所示:
-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 前綴縮寫為 ne。
區分字和字節內存位置
當某個操作數可以引用某個字內存位置或者字節內存位置時,必須用前綴 word ptr 或者前綴 byte ptr 指定數據類型。可接受的縮寫分別是 wo 和 by。以下范例顯示兩種格式:
dec wo [si]
neg byte ptr [128]
指定操作數
Debug 使用包括在中括號 ([ ]) 的操作數引用內存地址的習慣用法。這是因為另一方面 Debug 不能區分立即操作數和內存地址的操作數。以下范例顯示兩種格式:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用偽指令
使用 a 命令提供兩個常用的偽指令:db 操作碼,將字節值直接匯編到內存,dw 操作碼,將字值直接匯編到內存。
以下是兩個偽指令的范例:
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 命令支持所有形式的間接注冊命令,如下例所示:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
還支持所有操作碼同義詞,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
對于 8087 操作碼,必須指定 wait 或 fwait 前綴,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
( 5 )U命令
反匯編字節并顯示相應的原語句,其中包括地址和字節值。反匯編代碼看起來象已匯編文件的列表。
如果在沒有參數的情況下使用,則 u 命令分解 20h 字節(默認值),從前面 u 命令所顯示地址后的第一個地址開始。
range
指定要反匯編代碼的起始地址和結束地址,或起始地址和長度。
有關集成記憶碼的信息,請參看Debug A(匯編)。
有關顯示內存部分內容的信息,請參看Debug D(轉儲)。
要反匯編 16 (10h) 字節,從地址 04BA:0100 開始,請鍵入以下命令:
u04ba:100l10
Debug 按以下格式顯示結果:
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 特定地址的信息,請鍵入以下命令:
u04ba:0100 0108
Debug 顯示以下內容:
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 會話,不保存當前測試的文件。
當您鍵入 q 以后,控制返回到 DOS 的命令提示符。
該命令不帶參數。
( 7 )W命令
將文件或特定分區寫入磁盤。
要將在 BX:CX 寄存器中指定字節數的內容寫入磁盤文件,請使用以下語法:
要略過 Windows 2000 文件系統并直接寫入特定的扇區,請使用以下語法:
w address drive start number參數
address
指定要寫到磁盤文件的文件或部分文件的起始內存地址。如果不指定 address,Debug 程序將從 CS:100 開始。
drive
指定包含目標盤的驅動器。該值是數值型:0 = A, 1 = B, 2 = C,等等。
start
指定要寫入第一個扇區的十六進制數。
number
指定要寫入的扇區數。
總結
以上是生活随笔為你收集整理的dosbox中的bebug指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并发查询_java 手写并发框架(一)异
- 下一篇: 2021年客户需求的新变化,带来了对程序