8086匯編 Debug 使用
Debug是DOS系統中的著名的調試程序,也可以運行在windows系統實模式下。
使用Debug程序,可以查看CPU各種寄存器中的內容、內存的情況,並且在機器指令級跟蹤程序的運行。
常用指令:
- 用R命令查看、改變CPU寄存器的內容
- 用D命令查看內存中的內容
- 用E命令改變內存中的內容
- 用U命令將內存中的機器指令翻譯成匯編指令
- 用A命令以匯編指令的格式在內存中寫入機器指令
- 用T命令執行機器指令
- 用P命令逐條執行指令、顯示結果。但遇子程序、中斷等時,直接執行,然后顯示結果。
- 用G命令從指定地址處開始運行程序,直到遇到斷點或者程序正常結束。
使用
一、啟動Debug
1、在DOS提示符下輸入命令:> debug
二、使用Debug
使用方式一、通過debug執行程序:> debug 程序名稱.exe
使用方式二、通過debug直接操作當前內存:> debug
1、用R命令查看、改變CPU寄存器的內容
a、R - 查看寄存器內容
1) -r
b、R 寄存器名 - 改變指定寄存器內容
// 指定要修改的寄存器名、也可寫為-r寄存器名 // 格式:-r 寄存器名 1) -r ax // 修改寄存器值、16進制存儲 2) :1234
2、用D命令查看內存中的內容
a、D - 列出預設地址內存處的128個字節的內容
1) -d // 073F(段地址):0100(偏移地址) 00(值) ....(ASCLL碼) 073F:0100 00 00 00 00 00 00..
b、D 段地址:偏移地址 - 列出內存中指定地址處的內容
// 指定查看內存地址的值 // 格式:-d 段地址:偏移地址 1) -d 2000:0000
c、D 段地址:偏移地址 結尾偏移地址 - 列出內存中指定地址范圍內的內容
// 指定查看內存地址、根據偏移量查看范圍 // 格式:-d 段地址:偏移地址 偏移量地址 1) -d 2000:0 2f
3、用E命令改變內存中的內容
a、E 段地址:偏移地址 數據1 數據2 ...
// 修改內存地址對應值 // -e 段地址:偏移地址 值 值 值 值 值 、值為16進制 1) -e 2000:0000 12 34 56 AB 3F F3
b、E 段地址:偏移地址
; 逐個詢問式修改 ; 空格 - 接受,繼續 ; 回車 - 結束
// 修改內存地址對應值 // -e 段地址:偏移地址 1) -e 2000:0000 // 段地址:偏移地址 源值.修改值 源值.修改值 源值.修改值 2) 2000:0000 12.61 34 41 56.62
4、用U命令將內存中的機器指令翻譯成匯編指令
a、u 地址 - 查看代碼
// 查看內存對應機器碼轉換為匯編 // 格式:-u 段地址:偏移地址 1) -u 2000:0
b、案例使用
對應的機器碼為:
B8 23 01
BB 03 00
89 D8
01 D8
匯編指令:
mov ax, 0123H
mov bx, 0003H
mov ax, bx
add ax, bx
1)通過E命令添加內存機器碼

2)查看內存數據

3)通過U查看機器碼轉換匯編代碼

5、用A命令以匯編指令的格式在內存中寫入機器指令
a、a 地址 - 寫入匯編指令
// 指定內存地址寫入匯編指令、073F為CS代碼段的寄存器 // 格式:-u 段地址:偏移地址 1)-u 073F:100 // 格式:段地址:偏移地址 匯編指令 2)073F:0100 mov ax, 0123
b、案例使用
有匯編指令:
mov ax, 0123H
mov bx, 0003H
mov ax, bx
add ax, bx
對應的機器碼為:
B8 23 01
BB 03 00
89 D8
01 D8
1)A寫入匯編語言

2)D查看內存值 對應機器碼

3)U查看輸入的匯編指令

6、用T命令執行機器指令
注:P、G 與 T 指令類似 根據場景進行操作。
a、t - 執行CS:IP處的指令
// 執行CS:IP 代碼 1)-t
b、案例使用
1)r查看當前寄存器情況、當前存儲指令為 073F:0100 B82301 MOV AX,0123

2)t執行指令、MOV AX,0123

3)t執行指令 MOV BX,0003

4)t執行指令 MOV AX,BX、驗證AX發生變化

7、用Q命令退出Debug
a、q - 退出Debug
// 對出Debug 1)-q
