匯編語言課程實驗——實驗一 8086匯編指令編碼和調試


實驗任務一:

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

查看:

 修改AX的內容:

 

 二:用D命令查看內存中的內容

D命令預設地址處的內容

 

 

 查看特定長度的內容

 

 

 三、用E命令修改內存中的內容

 

 

 四、用U命令將內存單元中的內容翻譯為匯編指令顯示

 

 

 五、用T命令執行指向CS:IP的單條指令

 

 

 六、用A命令以匯編的形式向內存中寫入機器指令

 

 實驗任務二:

 可以看出,日期存在於FFF0:00F6到FFF0:00FD中,占八個字節。

嘗試修改:

 

 修改無效。原因是在8086中,C0000~FFFFF中內容用作ROM空間,受到保護無法修改。

 

實驗任務三:

在debug中使用E命令向內存單元填充數據

 

 實驗任務四:

錄入如下內容:

單步執行,觀察結果。

 填空:

002E 002C 002A 0028 002A 002C 002E 0030

回答問題:

問題1:邏輯地址:0020:0030、物理地址:00230h

問題2:

問題3:

問題4:

實驗任務五:

問題1:兩條指令一起執行。debug的T命令在執行修改寄存器SS的指令時,下一條指令也跟着執行。

問題2:根據題意進行跟蹤。

可以看到題目中划線部分為代碼偏移量,即IP與CS的值。隨着代碼的執行,代碼的偏移量在不斷地變化:0108->010B->010C->010F->0110

執行入棧操作后,棧頂指針向前移動2個字節,所以整體向前移動2個字節。

實驗任務五:

使用masm與link進行編譯連接

觀察程序段前綴,發現前兩個字節是CD 20。驗證完成。

實驗任務七:

補全代碼,完成代碼自身的自我復制:mov ax, 4c00h之前的指令復制到內存0:200開始的
連續的內存單元。

第一空:cs

為了定位到代碼的開頭,使用了代碼段的開頭cs

第二空:23

可以使用debug的u命令得到。

匯編截圖:


免責聲明!

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



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