11.1.3.1 Computed GOTO
A computed GOTO is accomplished by adding an offset
to the Program Counter. An example is shown in the following code example.
A Look-up Table can be formed with an ADDWF PCL
instruction and a group of RETLW nn instructions. The W register is loaded
with an offset into the table before executing a call to that table. The first instruction
of the called routine is the ADDWF PCL instruction. The next instruction
executed will be one of the RETLW nn instructions that returns the
value ‘nn’ to the calling function.
The offset value (in WREG) specifies the number of bytes that the
Program Counter must advance and must be multiples of two (LSb = 0).
In this method, only one data byte may be stored in each instruction location and room on the return address stack is required.
Computed GOTO Using
an Offset Value
RLNCF OFFSET, W ; W must be an even number, Max OFFSET = 127 CALL TABLE ORG nn00h ; 00 in LSByte ensures no addition overflow TABLE: ADDWF PCL ; Add OFFSET to program counter RETLW A ; Value @ OFFSET=0 RETLW B ; Value @ OFFSET=1 RETLW C ; Value @ OFFSET=2 . . .
