<< Chapter < Page | Chapter >> Page > |
SP
is initialized for you in the core file and
should not need to be modified.
SP
-referenced
direct addressing is used by the
pshd
,
pshm
,
popd
, and
popm
instructions for stack manipulation, as well as by all
subroutine calls and returns, which save program addresses onthe stack.
DP
-referenced direct addressing is available
wherever you see the
Smem
abbreviation in an
assembly syntax description. The advantage of
DP
-referenced addressing over the
*(lk)
form described in the next section is that
DP
-referenced addressing will not add an extra
instruction word (and corresponding extra machine cycle). Thedisadvantage is that it is limited to 128 words of contiguous
memory, and you have to make sure that
DP
points
to the right 128 words.
DP
may be changed with
the
ld
instruction as needed.
Examples:
ld 10,A ; sets A = (contents of memory location DP + 10)
add 6,B ; sets B = B + (contents of memory location DP + 6)
This seems to be TI's term for all the forms of direct
addressing which it does not call direct addressing! It isrepresented in assembly-instruction syntax-definitions using
one of the above abbreviations (
*(lk)
addressing
is available when the syntax definition says
Smem
).
dmad
(Data Memory ADdress) operands are used by
mv
xx
data move
instructions and represent 16-bit memory addresses in datamemory whose contents are used in the instruction.
Example:
f3ptr .word 0 ; reserve one word of storage; initialize to 0
. . . .
mvdm f3ptr,AR4 ; set AR4 = memory address of f3ptr
pmad
(Program Memory ADdress) operands are used
by the
firs
,
macd
,
macp
,
mvdp
, and
mvpd
instructions, as well as all subroutine calls and branching
instructions. They represent 16-bit addresses in programmemory whose contents are used in the instruction, or jumped
to in the case of branch instructions. Other thansubroutine calls and branches, the most common use of a
pmad
is for the
firs
instruction.
Example:
firs *AR3+,*AR4+,coefs
coefs
is a label in the program section of
the code,
not the data section.
*(lk)
addressing is a syntactic oddity. The
asterisk symbol generally means that indirect addressing isbeing used (see below), but this is actually direct
addressing with a 16-bit data memory address encoded in theinstruction's last word. The reason for the asterisk is
that TI
does set the "I" bit in the
opcode, usually denoting indirect addressing, and this formcan only be used when an
Smem
is called for in
the assembly syntax. Other bits in the low byte of thefirst instruction word tell the processor that the
"
*(lk)
exception" is to be used, and to fetch
the memory address in the next word (see the MOD bits onpage 5-10 of the
CPU
and Peripherals reference). You can easily recognize
this addressing mode in
.lst
files because the
low byte of the first instruction word always equals
F8h
.
Notification Switch
Would you like to follow the 'Digital signal processing laboratory (ece 420)' conversation and receive update notifications?