Motorola DSP56800 Manual page 352

16-bit digital signal processor
Table of Contents

Advertisement

MOVE(M)
Operation:
P:<ea> → D
S → P:<ea>
Description: Move the specified register from or to the specified program memory location. The source register (S)
and destination registers (D) are data ALU registers.
When a 36-bit accumulator (A or B) is specified as a source operand, there is a possibility that the data
may be limited. If the data out of the shifter indicates that the accumulator extension register is in use,
and the data is to be moved into a 16-bit destination, the value stored in the destination is limited to a
maximum positive or negative saturation constant to minimize truncation error. Limiting does not oc-
cur if an individual 16-bit accumulator register (A1, A0, B1, or B0) is specified as a source operand
instead of the full 36-bit accumulator (A or B). This limiting feature allows block floating-point oper-
ations to be performed with error detection since the L bit in the CCR is latched (that is, sticky).
When a 36-bit accumulator (A or B) is specified as a destination operand, any 16-bit source data to be
moved into that accumulator is automatically extended to 36 bits by sign extending the MSB of the
source operand (bit 15) and appending the source operand with 16 LS zeros. The automatic sign ex-
tension and zeroing features may be circumvented by specifying the destination register to be one of
the individual 16-bit accumulator registers (A1 or B1).
Example:
MOVE(M)
Before Execution
A
1234
A2
P:$0077
0116
R2
$0077
Explanation of Example:
Prior to execution, the 36-bit A accumulator contains the value $A:1234:5678, R2 contains the value
$0077, the N register contains the value $0003, and the 16-bit program memory location P:(R2) con-
tains the value $0116. Execution of the MOVE(M) instruction moves the 16-bit program memory lo-
cation P:(R2) into the 36-bit A accumulator. R2 is then post-incremented by N.
A-122
Move Program Memory
P:(R2)+N,A; move P:(R2) into A, update R2 with N
5678
A1
A0
DSP56800 Family Manual
Assembler Syntax:
MOVE(M)
MOVE(M)
After Execution
0
0116
A2
A1
P:$0077
0116
R2
$007A
MOVE(M)
P:<ea>,D
S,P:<ea>
0000
A0

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents