I borrow from the reference manual:
4.4 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
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
(STATUS<7>), as shown in Figure 4-5.
A simple program to clear RAM location 20h-2Fh using
indirect addressing is shown in Example 4-1.
EXAMPLE 4-1: INDIRECT ADDRESSING
movlw 0x20 ;initialize pointer
movwf fsr ;to RAM
;clear indf register
incf fsr ; increment pointer
btfss fsr,4 ; all done ?
goto next ; no, clear next
; yes, continue
Definite exam-type questions:
use the FSR to accomplish the following:
1) clear memory locations from 0x20 to 0x55
2) to sum the contents of memory locations 0x30 through 0x45 and store in a location with symbolic name SUM
3) to clear all the even memory locations between 0x30 and 0x46