1. 程式人生 > >實驗三 第一個彙編程式

實驗三 第一個彙編程式

 

 

一、練習一

1、編寫彙編源程式 t1.asm。

 

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

彙編:

該過程忽略了中間結果列表檔案和交叉引用檔案,最終得到了目標檔案t1.obj

彙編後在當前路徑下會出現一個新檔案,t1.obj(下圖中的t1)

 

 

連線:

 

通過連線,t1.obj將變成t1.exe,如此便得到了可執行檔案。

 

該過程忽略了中間結果映像檔案和庫檔案的連線(因為這個程式中沒有呼叫任何子程式)。

 

執行:

 

結果為36.

 

line4 line9 種暫存器 dl 的值分別修改為 0~9 中任何一個數字:

重新彙編→ 連線→執行後結果如下:

 

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

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

 

cx=0016,ds=075A,cs=076A。滿足(cs)=(ds)+10H

 

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

結果卻是是程式段字首為CD 20。

 

③使用 u 命令對 t1.exe 進行反彙編:

 

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

 

 

 

二、練習二

1、編寫彙編源程式 t2.asm

 

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

 

完成彙編和連線並清屏後執行仍無結果。為什麼呢???

 

重新開啟 t2.asm,嘗試將原始碼中 line7 0433h→0432h, line10 0436h→0439h,

然後重新彙編、連線,得到可執行檔案 t2.exe。使用 cls

命令清屏後,再次觀察程式執行結果。

改完了,還是沒有結果。鬱悶。

 

重新開啟 t2.asm,嘗試將原始碼中 line7 的 0433h0333h, line10 0436h0336h,

然後重新彙編、連線,得到可執行檔案 t2.exe。使用 cls 命令清屏後,再次觀察程式執行結果。

沒有結果+1