實驗結論
實驗1:綜合使用 loop,[bx],編寫完整匯編程序,實現向內存 b800:07b8 開始的連續 16 個字單元重復填充字數據 0403H。
1.源代碼及實驗結果
運行結果:屏幕中央出現一排紅色的心?。
2.將源代碼程序中字數據 0403H→修改為 0441H,再次運行
運行結果:屏幕中央出現一排紅色的A。
?
實驗2:綜合使用 loop,[bx],編寫完整匯編源程序,實現向內存 0:200~0:23F 依次傳送數據0~63(3FH)。
1.源代碼
2.匯編、鏈接無誤后,使用g命令調試,用 d 命令查看 0:200~0:23F
這段代碼確實將 0~63 傳送至?0:200~0:23F的內存區域。
?
實驗3:將“mov ax,4c00h”之前的指令復制到內存0:200處。
1.第一個空填cs,表示當前指令的段地址;第二個空填循環次數,因為此時還不知道循環次數,先填1。
、
2.進入debug后對代碼反匯編,發現“mov ax,4c00h”這行代碼前面的代碼長度為17h,所以循環次數為17h。
3.完整代碼
4.匯編連接后,使用g命令調試,并用 d 命令查看 0:200之后的若干字節
通過與反匯編的機械碼比較,實驗代碼確實將 mov ax, 4c00h 之前的指令復制到內存0:200處。
?
總結與體會
? 通過本次實驗,我基本掌握了【bx】和loop的使用,讓我能更簡潔地解決一些涉及循環的問題,同時也復習了之前實驗的操作。
? 同時,我有一個問題:在實驗3中,能否不用反匯編就能知道代碼長度,從而快速確定循環次數?如果不用反匯編就能知道的話,就能避免一些繁瑣的操作了。
?