Two 8 bit accumulators, A and B (which can also
be accessed as one 16 bit register, D.
One 8 bit Condition Code register, CC
Two 16 bit index registers, X and Y
One 16 bit Stack Pointer, SP
One 16 bit Program Counter, PC
Memory Map
MC68HC711E9
MC68HC812A4
$0000 - $01FF RAM
$1000 - $103F I/O
$B600 - $B7FF EAPROM
$F000 - $FFFF EPROM
$0000 - $01FF I/O
$0800 - $0BFF RAM
$F000 - $FFFF EPROM
Data Access
called "addressing mode"
Inherent - opcode specifies register affected
clra
Immediate - instruction contains data value
ldaa #$24
ldab #36
Direct Page - instruction contains 8-bit address of data in address space
ldaa $24
ldab 36
Extended Addressing - instruction contains 16-bit address of data in memory
ldaa $0801
PC Relative - instruction contains 8-bit signed offset from PC for branch target.
loop: bra loop
20 FE $F000: bra $F000
Indexed Addressing (6811) - instruction contains 8-bit unsigned
offset from either X or Y registers (Y is slower).
ldaa 4,X
Additional Addressing Modes(6812)
Indexed - EA is calculated as a fixed signed offset from X, Y, SP
or PC. (Y is no longer slow). Offset may be 5, 9 or 16 bit signed values.
ldaa -4, Y
ldaa $40, X
ldaa $200, SP
Auto Pre/Post Increment/Decrement Indexed
- EA is calculated as a fixed signed offset from X, Y or SP (not PC).
Maybe be incremented/decremented by values from 1 to 8.
ldaa 1,Y+
ldaa 4,-X
Accumulator Offset Indexed EA is calculated using A, B or D (offset)
added to X, Y, SP or PC (index). Accumulator and Index registers unchanged.
ldaa B,Y
Indexed Indirect - EA loaded from memory (big endian) at the
address calculated by adding a 16 bit signed offset to an index
register (X, Y, SP or PC).
ldaa [-4,Y]
Accumulator D Offset Indexed Indirect - EA loaded from memory
(big endian) at the address calculated by adding the 16 bit signed
value in D to to an index register (X, Y, SP or PC).