PIC16F7X
EXAMPLE 2-2:
INDIRECT ADDRESSING
2.5 Indirect Addressing, INDF and FSR
Registers
MOVLW
MOVWF
0x20
;initialize pointer
;to RAM
FSR
The INDF register is not a physical register. Addressing
the INDF register will cause indirect addressing.
NEXT
CLRF
INCF
BTFSS
GOTO
INDF
FSR,F
FSR,4
NEXT
;clear INDF register
;inc pointer
;all done?
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 read 00h. Writing to the INDF register
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-5.
;no clear next
CONTINUE
:
;yes continue
A simple program to clear RAM locations 20h-2Fh
using indirect addressing is shown in Example 2-2.
FIGURE 2-5:
DIRECT/INDIRECT ADDRESSING
Direct Addressing
From Opcode
Indirect Addressing
7
RP1:RP0
6
0
0
IRP
FSR Register
Bank Select
Location Select
Bank Select Location Select
00
01
80h
10
100h
11
00h
180h
Data
Memory
(1)
7Fh
Bank 0
FFh
Bank 1
17Fh
Bank 2
1FFh
Bank 3
Note 1: For register file map detail, see Figure 2-2.
2002 Microchip Technology Inc.
DS30325B-page 27