Social Icons

twitterfacebookgoogle plusrss feedemail

12/04/2009

微處理機-Data Movement Practices-(3)

3. Move data from ROM 3000H-3FFFH to external data RAM 4000H-4FFFH.
source_add equ 3000H
     dest_add equ 4000H
     last_dest_add equ 4FFFH

     source_dph_buf equ 30H
     source_dpl_buf equ 31H
     dest_dph_buf equ 32H
     dest_dpl_buf equ 33H

     mov source_dph_buf, #HIGH(source_add)
     mov source_dpl_buf, #LOW(source_add)
     mov dest_dph_buf, #HIGH(dest_add)
     mov dest_dpl_buf, #LOW(dest_add)
AGAIN:
     mov dph, source_dph_buf
     mov dpl, source_dpl_buf
     clr A
     movc A, @A+dptr
     inc dptr
     mov source_dph_buf, dph
     mov source_dpl_buf, dpl

     mov dph, dest_dph_buf
     mov dpl, dest_dpl_buf
     movx @dptr, A
     inc dptr
     mov dest_dph_buf, dph
     mov dest_dpl_buf, dpl

     mov A,dph
     cjne a,#HIGH(last_dest_add+1), AGAIN
     nop

     end
如果要複製上方程式碼,請點擊程式碼上方的    圖示會跳出一個視窗,複製即可

請注意一下,老師在(09.12.04)課堂上打的code程式碼中與上面程式碼有點不同,老師的程式碼在 uv3 上無法執行,因為老師打的程式碼: 
cjne    dph,#HIGH(last_dest_add+1), AGAIN
這段 dph 應改為 A才對,否則可能在uv3上Build時會出現以下錯誤碼
1.a(30): error A39: REGISTER OPERAND EXPECTED



此提與第二題相同
所以並不做太多的解釋
唯一不同的地方是
這題是ROM >>> external data RAM
 所以在程式碼上我們只要將第二題程式碼中的 movx    A, @dptr
換成movc    A, @A+dptr
這樣就可以順利執行


請注意的就是
老師打的程式碼中最後的
cjne    dph,#HIGH(last_dest_add+1), AGAIN
也跟第二題發生同樣的問題
所以請改成以下的程式碼

mov A,dph
cjne a,#HIGH(last_dest_add+1), AGAIN




如果發現文章中有錯誤,歡迎留言告知

沒有留言:

張貼留言

俗話說
凡走過必留下痕跡,凡住過必留下鄰居
凡爬過必留下樓梯,凡來過必留下IP
看過文章之後歡迎留下您寶貴的意見喔!

 
 
无觅相关文章插件,迅速提升网站流量