iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
2
Software Development

8086下16位元DOS組合語言學習筆記系列 第 6

[Day06] Debug 工具的使用

今天要介紹 Debug 工具,在第一篇的時候已經有將環境安裝好,所以就直接開始吧,Debug 可以用來單步執行程式、查看暫存器和記憶體內容,除了基本的偵錯功能外還可以直接在上面寫程式,Debug 的功能很多,今天會介紹其中六種。

R 命令

  • 印出暫存器內容
-r

https://ithelp.ithome.com.tw/upload/images/20181021/20106865CxJPpEO63m.jpg

  • 改變暫存器內容
-r ax
0001

可以看到暫存器 ax 的值變成 0001

https://ithelp.ithome.com.tw/upload/images/20181021/20106865svNjKLcBRE.jpg

D 命令

  • 查看記憶體內容
-d

https://ithelp.ithome.com.tw/upload/images/20181021/20106865SlwgbgfrrU.jpg

  • 指定 偏移地址
-d 10
; 或
-d 10 30   ; 指定範圍偏移地址 10 - 30
  • 指定 段地址 + 偏移地址
-d 0000:0000
; 或
-d 0000:0000 30   ; 指定範圍偏移地址 0 - 30

https://ithelp.ithome.com.tw/upload/images/20181021/20106865DnV4ROyHG0.jpg

E 命令

  • 直接修改記憶體內容
-e 0000:0000 
ff
; 或
-e 0000:0000 ff   ; 可以寫在一起

地址 0000:0000 的地方被改成 FF

https://ithelp.ithome.com.tw/upload/images/20181021/20106865qRCCOZIeND.jpg

A 命令

  • 將組合語言指令寫入記憶體
-a
; 或
-a 0000:0000  ; 結尾使用 enter 結束

https://ithelp.ithome.com.tw/upload/images/20181021/20106865BpXWlz1lau.jpg

U 命令

  • 將記憶體中的內容以組合語言指令顯示
-u
; 或
-u 0000:0000 5   ; 可以寫在一起

看到剛剛輸入的內容

https://ithelp.ithome.com.tw/upload/images/20181021/20106865jATqGlWcCC.jpg

T 命令

  • 單步執行指令

T 命令會從 CS 和 IP 指向的位置開始執行,可以先用 R 命令修改 CS 和 IP

-r cs
1000
-r ip
0000
-t   ; 開始單步執行指令

結合了前面幾個命令一起使用,使用 a 輸入指令,接著用 u 查看,將 CS 和 IP 設為 1000:0000,使用 t 開始單步執行,最後觀察 ax 暫存器的值被改變為 0020,和指令執行的結果相符。

https://ithelp.ithome.com.tw/upload/images/20181021/20106865Yt4HyCtI7s.jpg

結語

今天簡單介紹了 Debug 工具,寫程式時會經常用到,Debug 的指令和程式會有一些不同,之後會再說明,今天就到這裡摟,感謝大家觀看。


上一篇
[Day05] 物理地址和段暫存器
下一篇
[Day07] 字型數據的儲存和數據段暫存器
系列文
8086下16位元DOS組合語言學習筆記12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言