ST10 FAMILY PROGRAMMING MANUAL
6/172
2.1.3 - DPP override mechanism
The DPP override mechanism temporarily
bypasses the DPP addressing scheme. The
EXTP(R) and EXTS(R) instructions override this
addressing mechanism. Instruction EXTP(R)
replaces the content of the respective DPP
register, while instruction EXTS(R) concatenates
the complete 16-bit long address with the
specified segment base address. The overriding
page or segment may be specified directly as a
constant (#pag, #seg) or by a word GPR (Rw)
(see Figure 2).
2.1.4 - Indirect addressing modes
Indirect addressing modes can be considered as a
combination of short and long addressing modes.
In this mode, long 16-bit addresses are specified
indirectly by the contents of a word GPR, which is
specified directly by a short 4-bit address (’Rw’=0
to 15). Some indirect addressing modes add a
constant value to the GPR contents before the
long 16-bit address is calculated. Other indirect
addressing modes allow decrementing or incre-
menting of the indirect address pointers (GPR con-
tent) by 2 or 1 (referring to words or bytes).
In each case, one of the four DPP registers is
used to specify the physical 18-bit or 24-bit
addresses. Any word or byte data within the entire
memory space can be addressed indirectly. Note
that EXTP(R) and EXTS(R) instructions override
the DPP mechanism.
Instructions using the lowest four word GPRs
(R3...R0) as indirect address pointers are speci-
fied by short 2-bit addresses.
Word accesses on odd byte addresses are not
executed, but rather trigger a hardware trap.
After reset, the DPP registers are initialized in a
way that all indirect long addresses are directly
mapped onto the identical physical addresses.
Physical addresses are generated from indirect
address pointers by the following algorithm:
1. Calculate the physical address of the word
GPR which is used as indirect address pointer, by
using the specified short address (’Rw’) and the
current register bank base address (CP).
GPRAddress = (CP) + 2 x ShortAddress
2. Pre-decremented indirect address pointers
(‘-Rw’) are decremented by a data-type-depen-
dent value (
∆
= 1 for byte operations,
∆
= 2 for
word operations), before the long 16-bit address
is generated:
(GPRAddress) = (GPRAddress) -
∆
[optional step!]
3. Calculate the long 16-bit (Rw + #data16 if
selected) address by adding a constant value (if
selected) to the content of the indirect address
pointer:
Long Address = (GPR Address) + Constant
4. Calculate the physical 18-bit or 24-bit address
using the resulting long address and the corre-
sponding DPP register content (see long 'mem'
addressing modes).
Physical Address = (DPPi) + Long Address
^
3FFFh
5. Post-Incremented indirect address pointers
(‘Rw+’) are incremented by a data-type-depen-
dent value (
∆
= 1 for byte operations,
∆
= 2 for
word operations):
(GPR Address) = (GPR Address) +
∆
[optional step!]
Figure 2 : Overriding the DPP mechanism
0
15
14 13
16-bit Long Address
#pag
14-bit page offset
24-bit Physical Address
0
15
16-bit Long Address
#seg
16-bit segment offset
24-bit Physical Address
EXTP(R):
EXTS(R):
Summary of Contents for ST10 Series
Page 2: ......