8086彙編 Debug 使用

2022-06-11 20:00:16 字數 2639 閱讀 7719

debug是dos系統中的著名的除錯程式,也可以執行在windows系統實模式下。

使用debug程式,可以檢視cpu各種暫存器中的內容、記憶體的情況,並且在機器指令級跟蹤程式的執行。

常用指令:

1、在dos提示符下輸入命令:> 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..

// 指定檢視記憶體位址的值

1) -d 2000:0000

// 指定檢視記憶體位址、根據偏移量檢視範圍

1) -d 2000:0 2f

3、用e命令改變記憶體中的內容

// 修改記憶體位址對應值

1) -e 2000:0000 12 34 56 ab 3f f3

; 逐個詢問式修改

; 空格 - 接受,繼續

; 回車 - 結束

// 修改記憶體位址對應值

1) -e 2000:0000

2) 2000:0000 12.61 34 41 56.62

4、用u命令將記憶體中的機器指令翻譯成彙編指令

a、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**段的暫存器

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

8086彙編手冊

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...

8086彙編筆記(0)

seg variable or lable 回送變數或標號的段位址.若oper one是data seg資料段中的乙個變數,下面語句取得data seg段首位址 mov ds seg oper one 等價於 mov ax data seg mov ds axoffset variable or l...

8086彙編顯示中文

具體請參考 github專案 先給個效果圖 給出模板程式如下,有詳細注釋 datas segment 字模資料,可用字模生成程式生成,替換掉此處即可,此處使用的是16 16的黑體字模,32byte 字 tw db 000h,00ch,04fh,08ch,06fh,0ach,028h,0ach,00a...