
Central Processor Unit (CPU12)
MC68HC812A4 Data Sheet, Rev. 7
48
Freescale Semiconductor
3.6 Indexed Addressing Modes
The CPU12 indexed modes reduce execution time and eliminate code size penalties for using the Y index
register. CPU12 indexed addressing uses a postbyte plus zero, one, or two extension bytes after the
instruction opcode.
The postbyte and extensions do these tasks:
Specify which index register is used
Determine whether a value in an accumulator is used as an offset
Enable automatic pre- or post-increment or decrement
Specify use of 5-bit, 9-bit, or 16-bit signed offsets
3.7 Opcodes and Operands
The CPU12 uses 8-bit opcodes. Each opcode identifies a particular instruction and associated addressing
mode to the CPU. Several opcodes are required to provide each instruction with a range of addressing
capabilities.
Only 256 opcodes would be available if the range of values were restricted to the number that can be
represented by 8-bit binary numbers. To expand the number of opcodes, a second page is added to the
opcode map. Opcodes on the second page are preceded by an additional byte with the value $18.
To provide additional addressing flexibility, opcodes can also be followed by a postbyte or extension
bytes. Postbytes implement certain forms of indexed addressing, transfers, exchanges, and loop
primitives. Extension bytes contain additional program information such as addresses, offsets, and
immediate data.
Table 3-2. Summary of Indexed Operations
Postbyte
Code (xb)
Source Code
Syntax
,r
n,r
–n,r
Comments
rr: 00 = X, 01 = Y, 10 = SP, 11 = PC
rr0nnnnn
5-bit constant offset
n = –16 to +15
r can specify x, y, sp, or pc
111rr0zs
n,r
–n,r
Constant offset
(9- or 16-bit signed)
z:0 = 9-bit with sign in LSB of postbyte(s)
1 = 16-bit
if z = s = 1, 16-bit offset indexed-indirect (see below)
rr can specify x, y, sp, or pc
16-bit offset indexed-indirect
rr can specify x, y, sp, or pc
Auto pre-decrement/increment
or
Auto post-decrement/increment
;
p = pre-(0) or post-(1), n = –8 to –1, +1 to +8
rr can specify x, y, or sp (pc not a valid choice)
Accumulator offset
(unsigned 8-bit or 16-bit)
aa:00 = A
01 = B
10 = D (16-bit)
11 = see accumulator D offset indexed-indirect
rr can specify x, y, sp, or pc
Accumulator D offset indexed-indirect
rr can specify x, y, sp, or pc
111rr011
[n,r]
rr1pnnnn
n,–r n,+r
n,r– n,r+
111rr1aa
A,r
B,r
D,r
111rr111
[D,r]