PIC16F7X7
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
;clear INDF register
FSR, F ;inc pointer
FSR, 4 ;all done?
NEXT
Indirect addressing is possible by using the INDF
register. Any instruction using the INDF register
actually accesses the register pointed to by the File
Select Register, 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
10
100h
11
00h
80h
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.
DS30498C-page 30
2004 Microchip Technology Inc.