8086匯編語言之debug模式常用指令介紹

亂碼三千 2021-08-15 15:03:01 阅读数:173

本文一共[544]字,预计阅读时长:1分钟~
言之 debug 模式 常用 指令

這是我參與8月更文挑戰的第14天,活動詳情查看:8月更文挑戰

在搭建好了8086匯編的開發環境後,接下來介紹8086的debug模式。執行debug.exe以進入debug調試模式,在dos中通過輸入命令的方式進行交互

-R命令

R命令的作用是查看和修改debug模式下CPU中寄存器的值

-D命令

D命令的作用是查看內存中的內容

上面為 (段地址:偏移地址) 查看方式。D命令默認會顯示尋址地址開始的後128個內存單元的內容,以16進制的方式顯示(每個內存單元8比特,一行最多16個內存單元),而最右邊會將內存單元中的二進制數據以ascll碼的形式翻譯展示

但有時,我們只想聚焦於某一部分內存地址的內容,而默認展示的內存視圖不是很方便。

D命令提供了另外一種訪問內存的方式(段地址:偏移起始地址 偏移終止地址),其能够展示(段地址:偏移起始地址 至 段地址:偏移終止地址)的內存信息,範圍兩端均為閉區間

-E命令

E命令的作用是改變內存中的內容

和對CPU中寄存器的查看,修改不同,對內存進行查看和修改較為複雜,為此debug設計了兩個不同的命令分別進行控制(E命令修改內存、D命令查看內存)。

通過(E 起始地址 數據1 數據2 數據3... )命令可以修改內存中以起始地址開始,順序的N個內存單元的值(N為實際參數傳遞的數量)

也可以和R命令修改CPU中寄存器值類似的,通過提示來修改特定內存單元的值。00.12 00代錶內存單元在修改前的值,12是我們手動輸入的、需要修改的新值

-U命令

U命令的作用是將內存中的二進制數據轉換為匯編指令展示(反匯編)

D命令能够將內存中的數據以16進制或ascll碼的形式展現出來,但有時我們需要觀察的是內存中的機器指令時,D命令的視圖過於抽象,不利於理解。debug提供了U命令來解决這個問題。

對於前面我們在1000:0處輸入的機器指令,使用 U 1000:0 命令(u 內存地址)可以將內存中的數據以匯編語言指令的方式進行展示

-A命令

A命令能够以匯編指令的形式向內存中寫入內容

對於內存操作,D命令可以查看內存中的內容,但如果想查看的是程序指令,顯然U命令更加方便;E命令可以向內存中寫入數據,但對於程序指令的寫入,直接操作二進制機器碼的方式過於硬核。為此,debug提供了A命令,我們可以通過A命令以匯編指令的形式向內存中寫入內容。

通過A命令將(mov ax,0001,mov bx,0002,add ax,bx)三條指令寫入內存1000:0處:

通過A命令進行指令的寫入,和E命令達到的效果一樣,但使用起來卻更加便捷。A命令能够自動識別所輸入匯編指令的長度,正確的在內存中寫入程序指令。

debug提供了D、E兩種命令用於對內存進行通用的操作(純二進制、十六進制數據的讀、寫)。

對於程序指令,debug提供了U、A兩種命令以更人性化的方式來讀寫內存中的指令內容

-T命令

T命令的作用是進行單步機器指令的調試

-G命令

G命令的作用是進行Debug程序斷點調試

-g 代碼地址(cs+ip)地址
複制代碼

-p命令

p命令的作用是斷點跳過執行 ,可用於循環調試

版权声明:本文为[亂碼三千]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815150253231l.html