彙編實驗四 [bx]和loop的使用
任務一
綜合使用loop和[bx],編寫完整彙編源程式,實現向記憶體b800:07b8開始的連續16個字單元重複填充字資料0430h。
1、原始碼,儲存為t3.asm
編譯、連線後執行該程式碼,結果如下圖:
2、將原始碼程式中字資料0403h修改為0441h後,再次執行結果如圖:
3、將原始碼程式中字資料0403h修改為0603h後,再次執行結果如圖:
由以上1、2、3的對比,我們可以看出bx中前兩個位元組控制顏色,後兩個位元組控制形狀。
任務二
綜合使用loop和[bx],編寫完整彙編源程式,實現向記憶體
1、原始碼,儲存為t4.asm:
2、彙編、連線無誤後,進入debug環境使用d命令檢視,如下圖:
用d命令可以看到傳送資料成功。
進入debug,先用r命令檢視個暫存器中的資料,我用t命令單步執行觀察了0:200~0:202的變化:
如上,確認了將00,01,02傳送到該區域,由於單步執行次數過多,剩下的部分我用g命令一次執行完了
任務三
補全原始碼
因為複製的是彙編指令,所以必須為cs
彙編、連線後進入debug除錯環境,使用r命令檢視cx的值,檢視總長度:
用u命令進行反彙編,可以看出從第一條指令開始到mov ax,4c00h的長度為十六進位制表示為17,即十進位制的23;
然後修改t5.asm中原始碼,把cx改為0017h:
彙編連線後進入debug除錯環境,r命令檢視cx,u命令反彙編:
用t命令和p命令除錯後結果:
d命令檢視0:200~0:23F如圖:
與前面兩個u命令反彙編得到的結果對比,可以看出指令被寫到記憶體0:200處。
總結與體會
複習了實驗三的彙編源程式的編寫,彙編、連線,學習新的[bx]和loop的使用,發現在debug中對g命令與p命令的使用還不太熟悉,需要加強基礎知識的複習鞏固。
對於選做部分,因為自己對棧的使用還不是很瞭解,所以在此沒有用棧的特性來做。