1. 練習1
第1步,編寫彙編源程式t1.asm, 源程式代碼如圖
使用edit編輯
編譯,使用masm
連接配接,使用link
運作
(1) 運作程式,觀察程式輸出結果是什麼?
36
(2) 将 line4和line9種寄存器dl 的值分别修改為 0~9 中任何一個數字,重新彙編→ 連接配接→運作,觀察結果的變化。
改為2 4
編輯
編譯
連接配接
運作
結果為24
(3) 用debug對生成的可執行檔案 t1.exe 進行調試。
① 使用 r 指令檢視。觀察寄存器 cx 的值是 多少;觀察寄存器 ds 和 cs 的值是多 少,它們之間是否滿足關系(cs)=(ds)+10H?
cs=076A
da=075A
滿足(cs)=(ds)+10H關系
② PSP(程式段字首)的頭兩個位元組是CD 20, 用debug檢視PSP的内容,驗證是否 如此。
果然如此
③ 使用 u 指令對 t1.exe 進行反彙編,觀察反彙編得到的源代碼。
④ 使用 t 指令和 p 指令(遇到 int 指令時,用 p 指令)單步調試,觀察結果。
得到2 4
2. 練習2
第1步,編寫彙編源程式t2.asm,源程式代碼如圖
編輯
編譯
連接配接
運作
第2步,對源程式 t2.asm 進行彙編、連接配接、運作、調試
(1) 對t2.asm進行彙編、連接配接後,得到可執行檔案t2.exe。運作t2.exe,觀察程式運作 結果,驗證是否在螢幕左上方出現紅色的數值36。 注*)經測試,有些平台在 dosbox 下運作這個程式時有些問題,如果螢幕左上方沒有 輸出結果,請運作程式t2.exe前,先輸入cls指令清空一下螢幕,然後再執行t2.exe。
如上圖
(2) 如果(1)結果得到驗證,重新打開t2.asm,嘗試将源代碼中line7的0433h→0432h, line10 的 0436h→0439h, 然後重新彙編、連接配接,得到可執行檔案 t2.exe。使用 cls 指令清 屏後,再次觀察程式運作結果。
(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 放到一起看,結合兩個程式各自的源代碼以及運作結果,觀察 并思考這兩個程式在實作數值顯示時不同的做法。
實驗一中dl存放的是輸出的結果。改變了兩個dl寄存器值,輸出結果就改變了。
實驗二中bh存放的數值控制結果的顔色 bl中存放的數值控制着結果的數值。
轉載于:https://www.cnblogs.com/bowentianxia/p/9868420.html