Table Pointer Register

The Table Pointer (TBLPTR) register addresses a byte within the program memory. The TBLPTR comprises three SFR registers: Table Pointer Upper Byte, Table Pointer High Byte and Table Pointer Low Byte (TBLPTRU:TBLPTRH:TBLPTRL). These three registers join to form a 22-bit wide pointer (bits 0 through 21). The bits 0 through 20 allow the device to address up to 2 Mbytes of program memory space. Bit 21 allows access to the Device ID, the User ID, Configuration bits as well as the DIA and DCI.

The Table Pointer register, TBLPTR, is used by the TBLRD and TBLWT instructions. These instructions can increment and decrement TBLPTR, depending on specific appended characters shown in the following table. The increment and decrement operations on the TBLPTR affect only bits 0 through 20.

Table 1. Table Pointer Operations with TBLRD and TBLWT Instructions
Example Operation on Table Pointer
TBLRD*

TBLWT*

TBLPTR is not modified
TBLRD*+

TBLWT*+

TBLPTR is incremented after the read/write
TBLRD*-

TBLWT*-

TBLPTR is decremented after the read/write
TBLRD+*

TBLWT+*

TBLPTR is incremented before the read/write