PIC16F62X
4.4
Indirect Addressing, INDF and FSR
Registers
EXAMPLE 4-1: INDIRECT ADDRESSING
movlw 0x20
movwf FSR
;initialize pointer
;to RAM
The INDF register is not a physical register. Addressing
the INDF register will cause indirect addressing.
NEXT
clrf
incf
INDF
FSR
;clear INDF register
;inc pointer
Indirect addressing is possible by using the INDF register.
Any instruction using the INDF register actually accesses
data pointed to by the file select register (FSR). Reading
INDF itself indirectly will produce 00h. Writing to the INDF
register indirectly results in a no-operation (although sta-
tus bits may be affected). An effective 9-bit address is
obtained by concatenating the 8-bit FSR register and the
IRP bit (STATUS<7>), as shown in Figure 4-8.
btfss FSR,4
;all done?
goto
NEXT
;no clear next
;yes continue
CONTINUE:
A simple program to clear RAM location 20h-2Fh using
indirect addressing is shown in Example 4-1.
FIGURE 4-8: DIRECT/INDIRECT ADDRESSING PIC16F62X
Direct Addressing
Indirect Addressing
from opcode
7
RP1 RP0
bank select
6
0
0
IRP
FSR register
bank select
180h
location select
location select
00
01
10
11
00h
Data
Memory
7Fh
1FFh
Bank 0
Bank 1 Bank 2
Bank 3
For memory map detail see Figure 4-3.
DS40300B-page 26
Preliminary
1999 Microchip Technology Inc.