1. 程式人生 > >實驗三 完整彙編源程式編寫

實驗三 完整彙編源程式編寫

練習一:

1)編寫彙編程式 t1.asm

儲存為t1.asm,得到一個源程式,接下來進行編譯、連線、執行、除錯;

編譯:

發現如果用記事本直接編輯源程式,則編寫出的t1.asm檔案需要放在DosBox資料夾之下才可以被masm讀取到。

連線:

執行源程式觀察結果:

 

我也不知道這執行出來了個啥。。。。按照實驗步驟將line4和line9種暫存器dl 的值分別修改為 0~9 中任何一個數字,重新彙編→ 連線→執行,觀察結果的變化。 

將lin4改為3將line9改為0,得到:

猜測:dl值的改變會直接影響執行輸出影象,至於具體如何輸出自己想要的結果我也不知道如何下手。

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

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

073F=073F+10H;

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

DS=073F:0,則psp地址為073F:0,驗證出psp地址頭位元組為CD。

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

 

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

 

 

2)編寫彙編程式 t2.asm

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

  ① 對t2.asm進行彙編、連線後,得到可執行檔案t2.exe。執行t2.exe,觀察程式執行 結果,驗證是否在螢幕左上方出現紅色的數值36。 

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

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

發現若直接改變原始檔,需要再次對源程式進行連線、執行、除錯才會出現新的輸出結果。