1. 程式人生 > >|實驗 5 編寫、除錯具有多個段的程式

|實驗 5 編寫、除錯具有多個段的程式

實驗 5 編寫、除錯具有多個段的程式

一、實驗結論

實驗任務(1)

①    Data段中的資料仍然為0123h,0456h,0789h,0abch,0defh,0fdeh,0cbah,0897h

②    程式返回前cs=076c,ss=076b,ds=076a

③    Code段的段地址為X,data段的段地址為X-2,stack段的段地址為X-1

實驗任務(2)

①    Data段中的資料仍然為0123h,0456h

②    程式返回前cs=076c,ss=076b,ds=076a

③    Code段的段地址為X,data段的段地址為X-2,stack段的段地址為X-1

④    如果段中的資料佔N個位元組,則程式載入後,該實際佔有的空間為:

16*(N/16+1)。

實驗任務(3)

 

①    Data段中的資料仍然為0123h,0456h

②    程式返回前cs=076a,ss=076e,ds=076d

③    Code段的段地址為X,data段的段地址為X+3,stack段的段地址為X+4

實驗任務(4)

答:將最後一條指令“end start”改為“end”,則試驗任務(3)的程式仍然可以執行。

因為實驗任務(3)中程式碼的資料段和棧段的定義是在指令段之後,因此無需指明程式段的入口,也可直接執行程式碼段。

實驗任務(5)

(1)   彙編程式原始碼

 

(2)   在 debug 中除錯程式截圖,截圖中包括如下資訊:

①   在實現資料相加前,邏輯段 c 的 8 個位元組

 

②   執行完實現加運算的程式碼後,邏輯段 c 的 8 個位元組

 

(3) 根據①和②的除錯,經過驗證是正確的實現資料相加。

實驗任務(6)

(1)   彙編程式原始碼

(2)   在 debug 中除錯程式截圖,截圖中包括如下資訊:

①   在 push 操作執行前,檢視邏輯段 b 的 8 個字單元資訊截圖

②   執行 push 操作,然後再次檢視邏輯段 b 的 8 個子單元資訊截圖

(3) 根據①和②的除錯,經過驗證是正確的實現資料相加。

二、總結與體會

經過對第六章的學習以及實驗5 的實際操作,我對組合語言有了更深刻的理解。心中對資料和指令的概念越來越深厚。通過不同的段來實現資料,程式碼,棧的區分,讓我體會到了彙編程式的樂趣。對暫存器以及彙編指令的不同活用來達到相同的目的也很有趣。