SQRS loc16
6-332
Example
; Calculate sum of negative squares using 16-bit multiply:
; int16 X[N] ; Data information
; sum = 0;
; for(i=0; i < N; i++)
; sum = sum − (X[i] * X[i]) >> 5;
MOVL XAR2,#X ; XAR2 = pointer to X
SPM −5 ; Set product shift to ”>> 5”
ZAPA ; Zero ACC, P, OVC
RPT #N−1 ; Repeat next instruction N times
||SQRS *XAR2++ ; ACC = ACC − P >> 5,
; P = (*XAR2++)^2
SUBL ACC,P << PM ; Perform final subtraction
MOVL @sum,ACC ; Store final result into sum