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
看過文章之後歡迎留下您寶貴的意見喔!