PIC16C62B/72A
2.5
Indirect Addressing, INDF and FSR
Registers
EXAMPLE 2-1: HOW TO CLEAR RAM
USING INDIRECT
ADDRESSING
The INDF register is not a physical register. Address-
ing INDF actually addresses the register whose
address is contained in the FSR register (FSR is a
pointer).
movlw 0x20 ;initialize pointer
movwf FSR
;
to RAM
INDF ;clear INDF register
FSR ;inc pointer
NEXT
clrf
incf
Reading INDF itself indirectly (FSR = 0) will produce
00h. Writing to the INDF register indirectly results in a
no-operation (although STATUS bits may be affected).
btfss FSR,4 ;all done?
goto
NEXT ;NO, clear next
CONTINUE
:
;YES, continue
A simple program to clear RAM locations 20h-2Fh
using indirect addressing is shown in Example 2-1.
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-3. However, IRP is not used in the
PIC16C62B/72A.
FIGURE 2-3: DIRECT/INDIRECT ADDRESSING
Direct Addressing
Indirect Addressing
from opcode
7
RP1:RP0
6
0
0
IRP
FSR register
(1)
(1)
bank select
location select
bank select
location select
00
01
80h
10
100h
11
00h
180h
not used
(2)
(2)
Data
Memory
7Fh
FFh
17Fh
1FFh
Bank 0
Bank 1 Bank 2
Bank 3
Note 1: Maintain clear for upward compatibility with future products.
2: Not implemented.
DS35008B-page 18
Preliminary
1999 Microchip Technology Inc.