
5- 28
MC68330 USER'S MANUAL
MOTOROLA
register is an address register. If Rn is a data register, the assembler uses address
register indirect with index mode, with a data register as the indirect register, and
suppresses the address register by setting the base suppress bit in the EA specification.
Assigning an address register as Rn provides higher performance than using a data
register as Rn. Another case is (bd, An), which selects an addressing mode based on the
size of the displacement. If the displacement is 16 bits or less, the address register indirect
with displacement mode (d16, An) is used. When a 32-bit displacement is required, the
address register indirect with index (bd, An, Xn) is used with the index register
suppressed.
It is useful to examine the derived addressing modes available to a programmer (without
regard to the CPU32 EA mode actually encoded) because the programmer need not be
concerned about these decisions. The assembler can choose the more efficient
addressing mode to encode.
5.3.6 M68000 Family Addressing Capability
Programs can be easily transported from one member of the M68000 Family to another.
The user object code of earlier members of the family is upwardly compatible with later
members and can be executed without change. The address extension word(s) are
encoded with information that allows the CPU32 to distinguish new additions to the basic
M68000 Family architecture.
Earlier microprocessors have no knowledge of extension word formats implemented in
later processors, and, while they do detect illegal instructions, they do not decode invalid
encodings of the extension words as exceptions.
Address extension words for the early MC68000, MC68008, MC68010, and MC68020
microprocessors are shown in Figure 5-14.
The encoding for SCALE used by the CPU32 and the MC68020 is a compatible extension
of the M68000 architecture. A value of zero for SCALE is the same encoding for both
extension words; thus, software that uses this encoding is both upward and downward
compatible across all processors in the product line. However, the other values of SCALE
are not found in both extension formats; therefore, while software can be easily migrated
in an upward-compatible direction, only nonscaled addressing is supported in a downward
fashion. If the MC68000 were to execute an instruction that encoded a scaling factor, the
scaling factor would be ignored and would not access the desired memory address.