第五章 實驗
實驗1
綜合使用loop,[bx],編寫完整彙編程式,實現向記憶體b800:07b8 開始的連續16 個
字單元重複填充字資料0403H。
對源程式 進行彙編、連線、執行
將原始碼程式中字資料0403H→修改為0441H,再次執行,執行結果為
發現結果的圖案發生了變化
實驗2
綜合使用loop,[bx],編寫完整彙編源程式,實現向記憶體0:200~0:23F 依次傳送資料0~63(3FH)。
對源程式 進行彙編、連線、執行
使用debug 的t 命令、g 命令、p 命令除錯,用d 命令檢視0:200~0:23F,確認是否將0~63 傳送至此段記憶體區域。
實驗3
對源程式 進行彙編、連線、執行
因為要複製執行的指令,所以ds的值應該和和執行的程式碼段暫存器cs值一致,所以將cs值賦給ax,ax再賦給ds
一開始cx的值並不確定,我先用64試執行一下,再除錯,發現cx值為17h,說明這長度為17h,我們可以再修改cx的值,再進行彙編、連線、執行
修改後再除錯
用d 命令檢視0:200之後的若干位元組,觀察是否將mov ax, 4c00h 之前的指令複製到指定記憶體
在最後結果中我們看到mov ax, 4c00h 之前的指令
實驗感想
在[BX],loop指令中,CPU在執行loop指令時要進行兩步操作,cx=cx-1,判斷cx中的值,不為0則轉到標號處執行程式,如果為0則向下執行
所以cx的值影響著loop指令執行的次數,[BX]儲存的偏移地址,注意和ds程式碼段暫存器的配合使用。
inc指令
inc a相當於 add a,1
inc a 優點:速度快,佔用空間小
注意有時要儲存字時,加一不能滿足要求,靈活運用。
拓展:dec指令 減一指令 相當於 sub a,1
在實驗1中僅改變原始碼程式中字資料0403H→修改為0441H,執行後圖形發生變化,原理是什麼?