日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Debug工具的使用

發布時間:2023/12/2 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Debug工具的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗一 Debug工具的使用

1)、什么是Debug?

實模式( 8086 方式)程序的調試工具??梢杂盟榭?CPU 各種寄存器中的內容、內存的情況和在機器碼級跟蹤程序的運行。還可以滿足你作為Hentai的偷窺欲望,想想透過這個小小的dos窗口CPU和RAM在你面前一覽無余的樣子,是不是一下子就沖…滿了熱情呢 (并沒有)

2)、我們用到的Debug功能

  • 用 Debug 的 R 命令查看、改變CPU寄存器的內容。

  • 用 Debug 的 D 命令查看內存中的內容。

  • 用 Debug 的 E 命令改寫內存中的內容。

  • 用 Debug 的 U 命令將內存中的機器指令翻譯成匯編指令。

  • 用 Debug 的 T 命令執行一條機器指令。

  • 用 Debug 的 A 命令以匯編指令的格式在內存中寫入一條機器指令。

3)、進入Debug

運行輸入框輸入**“command”** (不是cmd),打開cmd窗口后,輸入**“debug”**。

(這個功能在win10不能直接用,當然也不推薦在自己的電腦上直接用,哪次要是不小心改了個重要寄存器的參數,電腦就gg了,建議使用 win xp 或 win7 的虛擬機)

debug.exe一般在c:\winnt\system目錄下,但是由于系統配置了系統路徑,所以在任何一個路徑下都可以運行。

4)、用 R 命令查看、改變 CPU 寄存器的內容

debug程序提供了多種指令來訪問或改變寄存器的值,其中,R 命令的作用為查看、改變 CPU 各寄存器中儲存的值。

輸入 R 命令,CPU 所有寄存器的值將會被輸出到窗口中

還可以用 R 命令來改變寄存器中的內容。

輸入 “r 寄存器的編號” 后按 Enter 鍵,將出現 “ : ” 作為輸入提示,輸入要寫入的數據后按 Enter 鍵即完成修改,若需確認修改的結果,可再用 R 命令查看。此處以 AX、CS、IP 寄存器為例,其他寄存器同理。

5)、用 Debug 的 D 命令查看內存中的內容

用 Debug 的 D 命令,可以查看內存中的內容,D 命令的格式較多,此處只介紹在本次實驗中使用的格式。

輸入d指令可以查看Debug默認位置的內存內容:


如果要查看內存 10000(H) 中的內容,首先將這個內存地址表示為 “段地址:偏移地址” 的格式,如 “1000:0”,然后輸入 “d 1000:0” 列出 1000:0 處的內容。

此處輸出的內存內容具體分為3部分

  • **從指定地址開始的128個內存單元的內容:**就是中間的主體部分,用十六進制的數字表示,沒看的輸出從16的整數倍的地址開始,最多輸出16個單元的內容。為了便于閱讀,每行的中間有一個 “ - ” 符號,將每行的輸出分為兩部分

  • **每行的起始地址:**就是輸出的左邊部分,同樣以 “段地址:偏移地址” 的格式顯示

  • **內存單元中的數據對應的可顯示的ASCII字符:**右邊的字符串就是內存單元數據對應的ASCII字符,如果沒有對應的可顯示的ASCII字符,則用 “ . ” 代替。

如果用 “d 1000:9” 查看1000:9處的內容,Debug輸出如下:


在使用 “d 段地址:偏移地址” 指令后,接著使用d命令,可列出后續的內容。

也可以指定 D 命令的查看范圍,此時采用 “d 段地址:起始偏移地址 結尾偏移地址” 的格式。比如要查看 1000:0~1000:f中的內容,可以用 “d 1000:0 f ” 實現。

如果只想查看某一內存單元比如說 10000(H) 中的內容,可以用以下任一種方法達到目的:

6)、用 Debug 的 E 命令改寫內存中的內容

可以使用 E 命令來改寫內存中的內容,使用 “e 起始地址 數據 數據 數據…” 格式來達到目標,數據可以是 16 進制數字,也可以是字符。

不要什么奇怪的東西都塞到內存里啊混蛋

也可以逐個修改內存單元的內容,以從 1000 : 10 單元開始為例,步驟如下:

  • 輸入 e 1000:10, 按 Enter鍵。
  • Debug 顯示起始地址 1000:0010,和第一單元(1000:0010單元)的原始內容:6 D,然后光標停在 “ : ” 后面提示輸入想要輸入的數據,輸入數據后按空格鍵表示修改完成(若無輸入數據即按下空格,默認不修改數據)。
  • 當前單元輸入完成后,Debug 將顯示下一個內存單元的內容,可以依次修改。
  • 當所有需修改的內存單元修改完畢后,按下 Enter 鍵,E 命令操作結束。
  • 7)、用 E 命令寫入機器碼,U 命令查看含義,T 命令執行

    用e指令寫入十六進制的機器碼(其實和寫入數據是一模一樣的操作,從這里我們也可以看出來,數據與指令其實在內存里的儲存形式是一樣的,只有把這些十六進制數字放進CPU中時,才體現出區別。

    寫入機器碼指令后想要執行怎么辦?

    需要讓CS、IP兩個寄存器指向我們剛寫入的內存空間,只有這樣,才能讓CPU把我們輸入的數據解釋為機器指令

    所以,需要用 R 命令修改CS、IP中的內容,然后使用 T 命令執行我們寫入的指令。注意:指令執行后,IP 的值自增了 3,因為剛剛我們執行的指令長 3 個字節。使得 CS:IP 指向下一條指令

    8)、用 A 命令以匯編指令的格式在內存中寫入機器指令

    使用 A 命令寫入匯編指令時,在給出的的起始地址后直接按 Enter 鍵表示操作結束。

    同樣可以通過 R 命令與 T 命令配合執行所寫入的匯編指令。

    強行總結,匯編學得好,牢飯吃到飽(doge)

    總結

    以上是生活随笔為你收集整理的Debug工具的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。