54
Table 2.13
Overview of Data Transfer Instructions
Classification
X, Y Data Transfer Processing
(MOVX.W, MOVY.W)
Single Data Transfer Processing
(MOVS.W, MOVS.L)
Address registers
Ax: R4, R5; Ay: R6, R7
As: R2, R3, R4, R5
Index registers
Ix: R8, Iy: R9
Is: R8
Addressing
Nop/Inc(+2)/index addition: post-
update
Nop/Inc(+2,+4)/index addition: post-
update
Addressing
—
Dec(–2,–4): pre-update
Modulo addressing Possible
Not possible
Data bus
XDB, YDB
IDB
Data length
16 bit (word)
16 bit/32 bit (word/longword)
Bus contention
None
Yes
Memory
X, Y data memory
All memory spaces
Source registers
Dx, Dy: A0, A1
Ds: A0/A1, M0/M1, X0/X1, Y0/Y1,
A0G, A1G
Destination
registers
Dx: X0/X1; Dy: Y0/Y1
Ds: A0/A1, M0/M1, X0/X1, Y0/Y1,
A0G, A1G
X, Y Data Addressing: From among the DSP instructions, the SH-DSP can use the MOVX.W
and MOVY.W instructions to simultaneously access X, Y data memory. The DSP instructions
have two address pointers for simultaneous accessing of X, Y data memory. Only pointer
addressing is possible with DSP instructions; there is no immediate addressing. The address
registers are divided into two; the R4, R5 registers become the X memory address register (Ax),
and the R6, R7 registers become the Y memory address register (Ay). The following three types of
addressing exist with X, Y data transfer instructions.
1. Non-updated address registers: The Ax, Ay registers are address pointers. They are not
updated.
2. Add index registers: The Ax, Ay registers are address pointers. The Ix, Iy register values are
added to them, respectively, after the data transfer (post-update).
3. Increment address registers: The Ax, Ay registers are address pointers. The value +2 is added
to each of them after the data transfer (post-update).
Each of the address pointers has an index register. The R8 register becomes the index register (Ix)
of the X memory address register (Ax), and the R9 register becomes the index register (Iy) of the
Y memory address register (Ay).
The X, Y data transfer instructions are processed in word lengths. X, Y data memory is accessed
in 16 bit lengths. This is why the increment processing adds 2 to the address registers. In order to
decrement, set –2 in the index register and designate add index register addressing. During X, Y