5.1.1.2 Indirect Read with FSR
The program memory can be accessed as data by setting bit 7 of an FSRxH register and
reading the matching INDFx register. The MOVIW
instruction will place
the lower eight bits of the addressed word in the W register. Writes to the program
memory cannot be performed via the INDFx registers. Instructions that read the program
memory via the FSR require one extra instruction cycle to complete. The following
example demonstrates reading the program memory via an FSR.
The HIGH directive will set bit 7 if a label points to a location in the program memory. This applies to the assembly code shown below.
Read of Program Memory Using an FSR Register
constants
RETLW DATA0 ;Index0 data
RETLW DATA1 ;Index1 data
RETLW DATA2
RETLW DATA3
my_function
;… LOTS OF CODE…
MOVLW LOW constants
MOVWF FSR1L
MOVLW HIGH constants
MOVWF FSR1H
MOVIW 2[FSR1] ;DATA2 IS IN W