PIC16F913/914/916/917/946
EXAMPLE 2-2:
INDIRECT ADDRESSING
2.5
Indirect Addressing, INDF and
FSR Registers
MOVLW
MOVWF
020h
FSR
;initialize pointer
;to RAM
The INDF register is not a physical register. Addressing
the INDF register will cause indirect addressing.
BANKISEL 020h
NEXT CLRF
INDF
FSR
;clear INDF register
;inc pointer
INCF
BTFSS
GOTO
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 Status bits may be
affected). An effective 9-bit address is obtained by
concatenating the 8-bit FSR register and the IRP bit of
the STATUS register, as shown in Figure 2-7.
FSR,4 ;all done?
NEXT ;no clear next
;yes continue
CONTINUE
A simple program to clear RAM location 020h-02Fh
using indirect addressing is shown in Example 2-2.
FIGURE 2-7:
DIRECT/INDIRECT ADDRESSING PIC16F91X/946
Direct Addressing
Indirect Addressing
From Opcode
7
RP1
RP0
6
0
0
IRP
File Select Register
Bank Select
180h
Location Select
Bank Select
Location Select
00h
00
01
10
11
Data
Memory
7Fh
1FFh
Bank 0
Bank 1
Bank 2
Bank 3
Note:
For memory map detail, see Figures 2-3 and 2-4.
© 2007 Microchip Technology Inc.
DS41250F-page 41