實驗三 第一個匯編程序
一、練習一
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 的 0433h→0333h, line10 的 0436h→0336h,
然後重新匯編、連接,得到可執行文件 t2.exe。使用 cls 命令清屏後,再次觀察程序運行結果。
沒有結果+1
實驗三 第一個匯編程序