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

實驗 3 程式設計、編譯、連線、跟蹤

 

 

 實驗任務

練習1

  第一步,編寫彙編源程式t2.asm,源程式程式碼如下圖所示。

  

   

第2步,對源程式 t1.asm 進行彙編、連線、執行、除錯

  (1) 執行程式,觀察程式輸出結果是什麼? 

     

    

    結果為36.

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

    

     

 

 

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

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

     

    cx的值為0016H,ds=075AH,cs=076AH,滿足

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

    

     是

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

     

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

   

    

    

練習2

   第1步,編寫彙編源程式t2.asm,源程式程式碼如圖所示。

    

    

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

  

  

  

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

延伸思考和分析

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

  實驗中的dl暫存器只是單純的存放一個數值,但實驗2中的dx暫存器還可改變存放數值的顏色及大小。

 

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

   練習2可以控制輸出結果的顯示方式及大小。

總結與體會

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