匯編 | 8086 DEBUG調試學習筆記


在8086匯編中DEBUG是個非常實用的工具,並且可以非常明了的查看每一步指令每一個段的相對狀態,有利於學習。下面列舉一下DEBUG的一些使用方法:

  1. -A:可以開始在相應位置編寫代碼,其中后面可以接一個地址,表示寫的位置;從下圖可以看到,A后加參數2000,即從段偏移2000的位置開始存放代碼。

  2. -C

    -c [add1]L[length] [add2] 是將add1和add2開始的length個數據顯示出來,進行比較;

    下圖鍵入:-C 50L20 100 第二列顯示的是0050-006F的數據內容,第三列顯示的是0010-011F的數據內容,而長度為20。非常直觀的顯示了數據。

  3. -D:顯示存儲空間中的內容。

    如上所示,0200中本來是空的,通過a命令寫進代碼后再次查看可以發現里面存放了新的操作碼。

    另外還可以通過指示明確段和偏移直接查詢特定位置的內容。(如CS:200

  4. -E:修改特定存儲空間中的內容

    -E 100
    073F:0100 B8.12
    

    也可以通過連續輸入的方式更改連續的一片內容:

  5. -F:用於填充一段存儲單元,但是要注意他的格式把段地址和段偏移要寫清楚

    如下圖所示,L10表示填充的長度是10 后面加填充的內容,通過兩個命令可以發現,如果填充的內容我只寫了 \(n\) 個而填充的長度我寫了\(m\)個(\(n<m\) )則會順序循環的自動填充。

  6. -G:這個命令使用不當會導致系統崩潰使用方法為:G[=address],代表從當前 \(cs:ip\)​ 所指的位置執行到address處.

    技巧:先用 -U 查看部分指令內容,然后用 -G 快速執行內容

  7. -H: 這個選項比較簡單,即輸入兩個參數,對這兩個參數進行加減運算,把想加的結果顯示在第一列,相減的結果放在第二列,其中我們可以看到,當減為負數時候是以補碼的形式表示的。

  8. -I: 從某一端口輸入並顯示一個字節,后面的參數接端口號。

  9. -L: 發現L命令並不能使用,查閱了資料,dos下運行debug時,涉及到直接寫硬盤扇區的操作都是被禁止的,這是windows的保護功能。如果想要運行全部debug命令,必須在實模式dos下運行。

  10. -M:把 \(cs\) 中的一段內容移動到內存單元中,這里默認指的就是 \(DS\) 段。

  11. -N:用於對文件命名,-n[name]。

  12. -O: 用於給端口發送數據,

    ; 向2F8端口發送數據4F
    -O 2F8 4F
    
  13. -Q :使用Q命令來退出debug調試

  14. -R:R命令是個非常方便的命令,它可以查看和修改8086中寄存器的值。使用-R可以直接查看所有的寄存器,使用 -R+[指定寄存器] 可以實現對某個寄存器的修改,如上圖所示,已經成功修改了AX中的值。其中使用-R F可以查看標志寄存器的狀態如圖所示,它不是單純的0和1不太好記,可以查實驗書來對照,可以看到當前寄存器屬於:未溢出、方向正、允許中斷、符號為正、不是0、沒有輔助進位、奇、沒有進位的狀態。

  15. -F:用於搜索指定位置中的字符,返回的是精確的地址

  16. -T:單步調試

  17. -U:反匯編指令,可以將存在內存中的機器碼反編譯成匯編語言,其中一個參數是起始地址

  18. -W:一直沒調試成功,原因應該和L命令相同,windows為了保護硬盤,並不允許在這種情況下使用此命令。

通過學習可以發現立即數在使用時候默認為 \(16\) 進制,並且不需要加H,末尾加H反而會報錯,並且debug中並不區分大小寫。

emu8086也是一個非常好的調試軟件,操作簡單方便網上就可以下載。。
debug在CMD中打不開是因為windows版本過高,可以下載 Dosbox 在其中運行調試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM