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