1. 程式人生 > >實驗3 編程、編譯、連接、跟蹤

實驗3 編程、編譯、連接、跟蹤

圖片 延伸 編譯 改變 一個數 deb font width mce

1. 練習 1

第 1 步,編寫匯編源程序 t1.asm, 源程序代碼如圖 1-1 所示。

技術分享圖片

技術分享圖片

第2步,對源程序 t1.asm 進行匯編、連接、運行、調試

  (1) 運行程序,觀察程序輸出結果是什麽?

技術分享圖片

技術分享圖片

最終實驗的結果為:36。

(2) 將 line4和line9種寄存器dl 的值分別修改為 0~9 中任何一個數字,重新匯編→ 連接→運行,觀察結果的變化。

技術分享圖片

技術分享圖片

(3) 用debug對生成的可執行文件 t1.exe 進行調試。

① 使用 r 命令查看。觀察寄存器 cx 的值是 多少;觀察寄存器 ds 和 cs 的值是多 少,它們之間是否滿足關系(cs)=(ds)+10H?

技術分享圖片

因為ds=075AH,cs=076AH,滿足(cs)=(ds)+10H。

② PSP(程序段前綴)的頭兩個字節是 CD 20, 用 debug 查看 PSP 的內容,驗證是否

如此。

技術分享圖片

是的

③ 使用 u 命令對 t1.exe 進行反匯編,觀察反匯編得到的源代碼。

技術分享圖片

④ 使用 t 命令和 p 命令(遇到 int 命令時,用 p 命令)單步調試,觀察結果。

技術分享圖片

技術分享圖片

2. 練習 2
第 1 步,編寫匯編源程序 t2.asm,源程序代碼如圖 1-2 所示。

技術分享圖片

技術分享圖片

第 2 步,對源程序 t2.asm 進行匯編、連接、運行、調試

(1) 對 t2.asm 進行匯編、連接後,得到可執行文件 t2.exe。運行 t2.exe,觀察程序運行
結果,驗證是否在屏幕左上方出現紅色的數值 36。

技術分享圖片

技術分享圖片

在屏幕左上方出現了紅色36.

(2) 如果(1)結果得到驗證,重新打開t2.asm,嘗試將源代碼中line7的0433h→0432h, line10 的 0436h→0439h, 然後重新匯編、連接,得到可執行文件 t2.exe。使用 cls 命令清 屏後,再次觀察程序運行結果。

技術分享圖片

技術分享圖片

運行結果變為29.

(3) 如果(1)結果得到驗證,重新打開t2.asm,嘗試將源代碼中line7的0433h→0333h, line10 的 0436h→0336h, 然後重新匯編、連接,得到可執行文件 t2.exe。使用 cls 命令清 屏後,再次觀察程序運行結果。

技術分享圖片

技術分享圖片

運行結果數字顏色發生了改變。

3. 延伸思考和分析

1)把練習 2 和實驗 1「實驗任務(4)」,放到一起看,觀察並思考這兩個實驗任務之間
的關聯,結合實驗 1「實驗任務(4)」以及練習 2 中每行匯編指令的功能,理解練習 2 中程
序 t2.asm 實現的功能;
(2)把練習 2 和練習 1 放到一起看,結合兩個程序各自的源代碼以及運行結果,觀察
並思考這兩個程序在實現數值顯示時不同的做法。

練習2的代碼段可以實現改變輸出結果與顏色。

4.總結與體會

通過本次實驗我已經基本掌握了用DOSBOX編寫匯編程序的編譯、連接及運行等操作,實踐了一個源程序從寫入到執行的過程。

實驗3 編程、編譯、連接、跟蹤