1. 程式人生 > >【組合語言】——用機器指令和彙編指令程式設計

【組合語言】——用機器指令和彙編指令程式設計

《組合語言》(王爽著 第三版)第二章章後實驗報告與總結

debug實驗環境配置,配置完畢介面如圖:

實驗任務(1)

1.用E命令輸入機器碼

在上截圖最後 - 之後如果我們輸入R命令,就可以檢視和改變CPU暫存器的內容,這裡我們需要通過R指令檢視暫存器的狀態,

這樣我們可以看到CS:IP指向的是073F:0100,如下所示:

我們接著再次使用R命令修改CS:IP中的內容,使CS:IP指向1000:0,結果如下:

使用E命令輸入 -e 1000:0 b8 20 4e,再用U命令檢視對應的彙編指令,T命令執行。

指令得到執行後,AX中的內容被改寫為4E20H,IP改變為IP+3(因為mov ax,4E20H的指令長度為3個位元組),CS:IP指向下一條指令。結果如下:

重複以上操作,將任務要求的指令全部輸入完畢後得到的結果如下截圖:

最後CS:IP指向1000:0021,說明指令總長度為21個位元組。

 2.用A命令輸入彙編指令

同E命令類似,用A命令 從1000:0開始的記憶體單元中寫入任務要求的彙編指令。

實驗任務(2)

首先用A命令將任務要求的指令寫入從2000:0開始的記憶體單元中,得到結果如圖:

接著用T指令計算2的8次方,結果如圖:

 最後得到AX結果為0010H。

實驗任務(3)

輸入-d FFFF:0 F,讀取FFFF:0中的記憶體資料,得到的資料意義為:

生產日期的資料存放在FFF0:00F6到FFF0:00FE的記憶體單元中,它們的ASCII碼意義是01/01/92。

結果如圖所示:

 實驗任務(4)

用E命令寫入資料,再用D命令讀取資料,再輸入-e B810:0000 05 05 06 06 07 07 08 08,進行資料修改,用D命令檢視,再輸入e 2000:0000 01 01 02 02 03 03 04 04,在改變填寫資料後,第二次使用D命令時,記憶體單元並沒有顯示之前用E命令存放的資料,而是其他資料。改變填寫地址沒有變化。所有步驟結果如下圖:

實驗感悟

通過寫這篇部落格,完成一次實驗任務,讓我對debug的使用有了一些簡單的瞭解。有些內容寫在書上,任憑自己想象感覺很簡單,但真正操作起來發現並沒有那麼順手。所以親自上機動手操作還是很重要的。一些常見的指令,比如說t,r,d,e還是要多加練習才能熟練運用。在完成整個實驗的過程中,可能真的是實驗難度不大,整個過程除了耗時久沒什麼大問題,這個主要還是由於自己不熟悉吧,每一個任務都要前前後後翻書,記不住操作指令。打字速度也很慢,所以顯的寫一篇部落格很久很久。但是寫完還是會有一點點成就感。因為每一步都準確完成截圖,不比之前的報告,可以手動省略步驟偷懶。還是要多練習吧!