PIC16C925/926
2.6 Indirect Addressing, INDF and
FSR Registers
The INDF register is not a physical register. Addressing
the INDF register will cause indirect addressing.
Indirect addressing is possible by using the INDF reg-
ister. Any instruction using the INDF register actually
accesses the register pointed to by the File Select Reg-
ister (FSR). Reading the INDF register itself, indirectly
(FSR = ’0’), will produce 00h. Writing to the INDF regis-
ter indirectly results in a no operation (although status
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 2-6.
A simple program to clear RAM locations 20h-2Fh
using indirect addressing is shown in Example 2-2.
EXAMPLE 2-2: INDIRECT ADDRESSING
MOVLW 0x20
MOVWF FSR
NEXT
CLRF INDF
INCF FSR,F
BTFSS FSR,4
GOTO NEXT
CONTINUE
;initialize pointer
;to RAM
;clear INDF register
;inc pointer
;all done?
;no clear next
:
;yes continue
FIGURE 2-6:
DIRECT/INDIRECT ADDRESSING
Direct Addressing
RP1:RP0 6
From Opcode 0
Indirect Addressing
IRP
7
FSR Register
0
Bank Select Location Select
Bank Select
00
01
10
11
00h
00h
Location Select
Data
Memory
7Fh
Bank 0
Bank 1 Bank 2
7Fh
Bank 3
Note: For memory map detail, see Figure 2-3.
DS39544A-page 26
Preliminary
2001 Microchip Technology Inc.