我正在尝试了解间接寻址的工作原理。从PIC16F877A的数据手册中可以看出,在引用INDF时,“寻址该位置将使用FSR的内容来寻址数据存储器(而非物理寄存器)”。所以我尝试了一个超级基本的例子:
movlw D'26'
movwf FSR
movf INDF, W
但是,当我调试时,传递给FSR的值是预期的26,但是来自INDF传递给W的值是0而不是26。这是为什么?
答案 0 :(得分:3)
INDF
读取FSR
提供的地址。因此,您的代码读取了地址RCREG
(D'26')上的0x1A
寄存器:
movlw D'26'
movwf FSR
movf INDF, W ;read the value in the physical address D'26'
您必须使用RP0
和RP1
位选择要读取的存储区,并查看数据表,它取决于控制器。