MPY P,T,loc16
6-230
MPY P,T,loc16 16 X 16 Multiply
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
MPY P,T,loc16 0011 0011 LLLL LLLL X − 1
Operands P Product register
T Multiplicand register
loc16 Addressing mode (see Chapter 5)
Description Multiply the signed 16-bit content of the T register by the signed 16-bit
contents of the location pointed to by the “loc16” addressing mode and store
the 32-bit result in the P register:
P = signed T * signed [loc16];
Flags and
Modes
None
Repeat This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
Example
; Calculate using 16-bit multiply:
; Y = (X0*C0) >> 2) + (X1*C1 >> 2) + (X2*C2 >> 2)
; X2 = X1
; X1 = X0
SPM −2 ; Set product shift to >> 2
MOVP T,@X2 ; T = X2
MPYS P,T,@C2 ; P = T*C2, ACC = 0
MOVAD T,@X1 ; T = X1, ACC = X2*C2>>2, X2 = X1
MPY P,T,@C1 ; P = T*C1
MOVAD T,@X0 ; T = X0, ACC = X1*C1>>2 + X2*C2>>2, X1 = X0
MPY P,T,@C0 ; P = T*C0
ADDL ACC,P << PM ; ACC = X0*C0>>2 + X1*C1>>2 + X2*C2>>2
MOVL @Y,ACC ; Store result into Y