程式碼如下
source_add equ 5fH dest_add equ 67H number_of_bytes equ 20H mov r0,#source_add mov r1,#dest_add mov r2,#number_of_bytes L1: mov A,@r0 mov @r1,A dec r0 dec r1 djnz r2, L1 end
如果要複製上方程式碼,請點擊程式碼上方的 圖示會跳出一個視窗,複製即可
為了方便說明,首先先存放值在記憶體內
因為這 40H-5FH 與 48H-67H兩段之間有交集的部分
所以我們不能把40H直接先移到48H 因為這麼一來48H原本的值就會被覆蓋
為了避免這種情形
所以我們可以從5FH的地方開始著手
當程式碼執行到 mov @r1,A 時(還未執行此行)
5F所存放的值會先存到A暫存器中(如左圖)
當程式執行完 mov @r1,A 時
會發現原本67的值會變成5F原本所存放得值
接著程式在讀取下面幾行之後
會跳回L1重新再來一次
不過這時候
則是66H原本的值會變成5EH 原本所存放得值
程式會一直執行
到後來結果會變成這樣
如果發現文章中有錯誤,歡迎留言告知
沒有留言:
張貼留言
俗話說
凡走過必留下痕跡,凡住過必留下鄰居
凡爬過必留下樓梯,凡來過必留下IP
看過文章之後歡迎留下您寶貴的意見喔!