
Page 21
Section 4: CPU Core
MOTOROLA
MC68HC05C5 Specification Rev. 1.2
4.3
ADDRESSING MODES
The MCU uses ten different addressing modes to provide the programmer with an
opportunity to optimize the code for all situations. The various indexed addressing modes
make it possible to locate data tables, code conversion tables, and scaling tables
anywhere in the memory space. Short indexed accesses are single-byte instructions; the
longest instructions (3 bytes) permit accessing tables throughout memory. Short and long
absolute addressing is also included. One or 2-byte direct addressing instructions access
all data bytes in most applications. Extended addressing permits jump instructions to
reach all memory.
The term "effective address" (EA) is used to describe the various addressing modes.
Effective address is defined as the address from which the argument for an instruction is
fetched or stored.
4.3.1
IMMEDIATE
In the immediate addressing mode, the operand is contained in the byte immediately
following the opcode. The immediate addressing mode is used to access constants that
do not change during program execution (for example, a constant used to initialize a loop
counter).
4.3.2
DIRECT
In the direct addressing mode, the effective address of the argument is contained in a
single byte following the opcode byte.
Direct addressing allows the user to directly
address the lowest 256 bytes in memory with a single 2-byte instruction.
4.3.3
EXTENDED
In the extended addressing mode, the effective address of the argument is contained in
the 2 bytes following the opcode byte. Instructions with extended addressing mode are
capable of referencing arguments anywhere in memory with a single 3-byte instruction.
When using the Motorola assembler, the user need not specify whether an instruction
uses direct or extended addressing. The assembler automatically selects the shortest
form of the instruction.
4.3.4
RELATIVE
The relative addressing mode is only used in branch instructions. In relative addressing,
the contents of the 8-bit signed offset byte, which is the last byte of the instruction, is
added to the PC if, and only if, the branch conditions are true. Otherwise control proceeds
to the next instruction. The span of relative addressing is from -128 to +127 from the
address of the next opcode. The programmer need not calculate the offset when using
the Motorola assembler, since it calculates the proper offset and checks to see that it is
within the span of the branch.