MPYA P,loc16,#16bit
6-232
Example
; Calculate using 16-bit multiply:
; Y = (X0*C0) >> 2) + (X1*C1 >> 2) + (X2*C2 >> 2),
; C0, C1 and C2 are constants
SPM −2 ; Set product shift to >> 2
MOVB ACC,#0 ; Zero ACC
MPY P,@X2,#C2 ; P = X2*C2
MPYA P,@X1,#C1 ; ACC = X2*C2>>2, P = X1*C1
MPYA P,@X0,#C0 ; ACC = X1*C1>>2 + X2*C2>>2, P = X0*C0
ADDL ACC,P << PM ; ACC = X0*C0>>2 + X1*C1>>2 + X2*C2>>2
MOVL @Y,ACC ; Store result into Y