SUBL ACC,P << PM
6-351
SUBL ACC,P << PM Subtract 32-bit Value
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
SUBL ACC,P << PM 0001 0001 1010 1100 X Y N+1
Note: This instruction is an alias for the ”MOVS T,loc16” operation with “loc16 = @T” addressing mode.
Operands ACC Accumulator register
P Product register
<<PM Product shift mode
Description Subtract the content of the P register, shifted as specified by the product shift
mode (PM), from the content of the ACC register:
ACC = ACC − P << PM;
Flags and
Modes
Z After the subtraction, the Z flag is set if the ACC value is zero, else Z is
cleared.
N After the subtraction, the N flag is set if bit 31 of the ACC is 1, else N is
cleared.
C If the subtraction generates a borrow, C is cleared; otherwise C is set.
V If an overflow occurs, V is set; otherwise V is not affected.
OVC If OVM = 0 (disabled) and the operation generates a positive overflow, the
counter is incremented; if the operation generates a negative overflow, the
counter is decremented.
If OVM = 1 (enabled), the counter is not affected by the operation.
OVM If overflow mode bit is set; then the ACC value will saturate maximum
positive (0x7FFFFFFF) or maximum negative (0x80000000) if the operation
overflowed.
PM The value in the PM bits sets the shift mode for the output operation from the
product register. If the product shift value is positive (logical left shift
operation), then the low bits are zero filled. If the product shift value is
negative (arithmetic right shift operation), the upper bits are sign extended.
Repeat If this operation is repeated, then the instruction will be executed N+1 times.
The state of the Z, N, C flags will reflect the final result. The V flag will be set if
an intermediate overflow occurs. The OVC flag will count intermediate
overflows, if overflow mode is disabled.
Example
; Calculate: Y = ((B << 11) − (M*X >> 4)) >> 10
; Y, M, X, B are Q15 values
SPM −4 ; Set product shift to >> 4
SETC SXM ; Enable sign extension mode
MOV T,@M ; T = M
MPY P,T,@X ; P = M * X
MOV ACC,@B << 11 ; ACC = S:B << 11