DMAC ACC:P,loc32,*XAR7/++
6-86
DMAC ACC:P,loc32,*XAR7/++ 16-Bit Dual Multiply and Accumulate
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
DMAC ACC:P,loc32,*XAR7 0101 0110 0100 1011
1100 0111 LLLL LLLL
1 Y N+2
DMAC ACC:P,loc32,*XAR7++ 0101 0110 0100 1011
1000 0111 LLLL LLLL
1 Y N+2
Operands ACC:P Accumulator register (ACC) and product register (P)
loc32 Addressing mode (see Chapter 5)
Note: The @ACC and @P register addressing modes cannot be used. No illegal
instruction trap will be generated if used (assembler will flag an error).
*XAR7 /++ Indirect program-memory addressing using auxiliary register XAR7,
can access full 4M x 16 program space range (0x000000 to 0x3FFFFF)
Description Dual 16-bit x 16-bit signed multiply and accumulate. The first
multiplication takes place between the upper words of the 32-bit locations
pointed to by the “loc32” and *XAR7/++ addressing modes and second
multiplication takes place with the lower words.
Temp
XT
16−bits
VarB_1
VarB_2
XAR7VarA_1
VarA_2
loc32
VarA_1 VarA_2 VarB_1 VarB_2
VarA_2 * VarB_2 << PM
16−bits
ACC P
VarA_1 * VarB_1 << PM
After the operation the ACC contains the result of multiplying and adding
the upper word of the addressed 32-bit operands. The P register contains
the result of multiplying and adding the lower word of the addressed 32-bit
operands.
XT = [loc32];
Temp = Prog[*XAR7 or *XAR7++];
ACC = ACC + (XT.MSW * Temp.MSW) << PM;
P = P + (XT.LSW * Temp.LSW) << PM;
Z, N, V, C flags and OVC counter are affected by the operation on ACC
only. The PM shift affects both the ACC and P operations.
On the C28x devices, memory blocks are mapped to both program and
data space (unified memory), hence the ”*XAR7/++” addressing mode
can be used to access data space variables that fall within the program
space address range.