SUBU ACC, loc16
6-356
SUBU ACC, loc16 Subtract Unsigned 16-bit Value
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
SUBU ACC, loc16 0000 0001 LLLL LLLL X Y N+1
Operands ACC Accumulator register
loc16 Addressing mode (see Chapter 5)
Description Subtract the 16-bit contents of the location pointed to by the “loc16”
addressing mode from the ACC register. The addressed location is zero
extended before the add:
ACC = ACC − 0:[loc16];
Flags and
Modes
Z
After the subtraction, the Z flag is set if ACC 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 and 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.
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
; Subtract three 32-bit unsigned variables by 16-bit parts:
MOVU ACC,@VarAlow ; AH = 0, AL = VarAlow
ADD ACC,@VarAhigh << 16 ; AH = VarAhigh, AL = VarAlow
SUBU ACC,@VarBlo293w ; ACC = ACC − 0:VarBlow
SUB ACC,@VarBhigh << 16 ; ACC = ACC − VarBhigh << 16
SBBU ACC,@VarClow ; ACC = ACC − VarClow − ~Carry
SUB ACC,@VarChigh << 16 ; ACC = ACC − VarChigh << 16