A system efficiently expands program memory without extensively modifying
the remaining microcontroller architecture. An address bus of N+M bits
addresses 2.sup.N memory locations in a regular portion of program memory
and additional memory locations in an expanded portion. An N-bit program
counter increments through instructions stored only in the regular
portion. Constants are stored in both the regular and expanded portions.
An M-bit page-designator is prepended to an N-bit operand to generate a
memory address of N+M bits. Program memory is expanded only when a load
instruction retrieves constants from program memory. The page-designator
is toggled when an N-bit operand rolls over upon incrementing by the load
instruction. A block of constants straddling the boundary between the
regular and expanded portions can be retrieved from program memory by
executing only the load instruction. When program instructions are
executed that do not retrieve constants, a fixed page-designator
designates the regular portion.