我的目的是使用以下输入复制位域:
; R5 - Base address of the bitfield in code memory (high byte) ; R6 - Base address of the bitfield in code memory (low byte) ; R7 - Base address of the bitfield in the internal memory
我有下面的位域数据:x一个一个一个一个x一个一个二个x
fxnxkyjh1#
您的代码中有一些小问题,但原则上这是正确的方法:
DPTR
DPH
DPL
A
movc
ret
CODE2IRAM: org 0x0070 mov DPH, R5 mov DPL, R6 mov R4, #16 ;count back: clr a movc a, @a+dptr mov @R7, a inc dptr inc R7 djnz R4, back ret org 0x0040 DB 0x42, 0x1A, 0x7F, 0x80, 0x55, 0xAA, 0xA0, 0xCC, 0x12, 0x13, 0x11, 0x10, 0x05, 0xAA, 0x42, 0x34 end
1条答案
按热度按时间fxnxkyjh1#
您的代码中有一些小问题,但原则上这是正确的方法:
DPTR
。DPTR
的两个字节可以通过预定义的直接地址DPH
(DPTR
高字节)和DPL
(DPTR
低字节)分别到达。您可能需要为此包含一个寄存器包含文件。A
,本例中是在movc
指令之前。ret
。