1. 程式人生 > >組合語言 實驗三

組合語言 實驗三

練習1:

編寫程式碼:

使用masm實驗:

得到輸出結果為36

(2)將line4的dl變為2,line9的dl變為5,觀察結果:

得到結果為25.

(3)在用debug對生成的可執行檔案 t1.exe 進行除錯。

用r命令

得到cs=076A,ds=075A,滿足公式(cs)=(ds)+10H。

PSP(程式段字首)的頭兩個位元組是CD 20, 用debug檢視PSP的內容,驗證是否如此。

的確如此。

使用 u 命令對 t1.exe 進行反彙編,觀察反彙編得到的原始碼。

使用 t 命令和 p 命令(遇到 int 命令時,用 p 命令)單步除錯,觀察結果:

得到25。

練習2:

編寫程式碼:

對源程式 t2.asm 進行彙編、連線、執行、除錯 :

對t2.asm進行彙編、連線後,得到可執行檔案t2.exe。執行t2.exe,觀察程式執行 結果,驗證是否在螢幕左上方出現紅色的數值36。 注*)經測試,有些平臺在 dosbox 下執行這個程式時有些問題,如果螢幕左上方沒有 輸出結果,請執行程式t2.exe前,先輸入cls命令清空一下螢幕,然後再執行t2.exe。

重新開啟t2.asm,嘗試將原始碼中line7的0433h→0432h, line10 的 0436h→0439h, 然後重新彙編、連線,得到可執行檔案 t2.exe。使用 cls 命令清 屏後,再次觀察程式執行結果。

結果為29

將原始碼中line7的0433h→0333h, line10 的 0436h→0336h, 然後重新彙編、連線,得到可執行檔案 t2.exe。使用 cls 命令清屏後,再次觀察程式執行結果。

結果為36,數字顏色發生了變化。

3. 延伸思考和分析

(1)把練習2和實驗 1「實驗任務(4)」,放到一起看,觀察並思考這兩個實驗任務之間 的關聯,結合實驗 1「實驗任務(4)」以及練習 2 中每行彙編指令的功能,理解練習 2 中程 序t2.asm實現的功能。 

(2)把練習 2 和練習 1 放到一起看,結合兩個程式各自的原始碼以及執行結果,觀察 並思考這兩個程式在實現數值顯示時不同的做法。

實驗總結:實驗1中可以通過改變dl的值 ,改變輸出結果。實驗2中,我們可以通過改變bx的數值來改變結果的顏色和數值。