我试图了解间接寻址的工作原理。从PIC16F877A的数据表中,它在提到INDF时说:"该位置的寻址使用FSR的内容来寻址数据存储器(不是物理寄存器)"。所以我尝试了一个超基本的例子。
movlw D'26'
movwf FSR
movf INDF, W
然而,当我调试时,传入FSR的值是26,如预期的那样,但传入W的INDF值是0而不是26。为什么会这样?
INDF
读取数据存储器提供的地址 FSR
. 所以你的代码读作 RCREG
登记地址 0x1A
(D'26'):
movlw D'26'
movwf FSR
movf INDF, W ;read the value in the physical address D'26'
你必须选择你要读取的银行,用 "D "26'. RP0
和 RP1
位,请查看数据表,这取决于控制器。