彙編 實驗3
第 1 步,編寫彙編源程式 t1.asm, 源程式程式碼如圖 1-1 所示。
實驗截圖:
第 2 步,對源程式 t1.asm 進行彙編、連線、執行、除錯、
實驗截圖:
(1) 執行程式,觀察程式輸出結果是什麼?
執行結果:
(2) 將 line4 和 line9 種暫存器 dl 的值分別修改為 0~9 中任何一個數字,重新彙編→ 連線→執行,觀察結果的變化。
實驗截圖:
(第4、9行分別改為6、4)
執行結果:
(3) 用 debug 對生成的可執行檔案 t1.exe 進行除錯。
① 使用 r 命令檢視。觀察暫存器 cx 的值是 多少;觀察暫存器 ds 和 cs 的值是多 少,它們之間是否滿足關係(cs)=(ds)+10H?
② PSP(程式段字首)的頭兩個位元組是 CD 20, 用 debug 檢視 PSP 的內容,驗證是否 如此。
實驗截圖:
結論①:CX=0016; CS=076A; DS=075A; CS=DS+10H
②:CD 驗證結果:是
③ 使用 u 命令對 t1.exe 進行反彙編,觀察反彙編得到的原始碼。
實驗截圖:
④ 使用 t 命令和 p 命令(遇到 int 命令時,用 p 命令)單步除錯,觀察結果。
實驗截圖:
第 1 步,編寫彙編源程式 t2.asm,源程式程式碼如圖 1-2 所示。
實驗截圖:
第 2 步,對源程式 t2.asm 進行彙編、連線、執行、除錯 (1) 對 t2.asm 進行彙編、連線後,得到可執行檔案 t2.exe。執行 t2.exe,觀察程式執行 結果,驗證是否在螢幕左上方出現紅色的數值 36。
實驗截圖:
(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 命令清 屏後,再次觀察程式執行結果。