彙編 實驗3

WINNER9898發表於2018-11-01

 

 

 

 

 

 

 

第 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 所示。

dosbox  實驗截圖:

masm for windows 實驗截圖 : 

 錯誤:  

 

 修改:

 

 

 

第 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 命令清 屏後,再次觀察程式執行結果。

 

相關文章