SBBU ACC,loc16
6-317
SBBU ACC,loc16 Subtract Unsigned Value Plus Inverse Borrow
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
SBBU ACC,loc16 0001 1101 LLLL LLLL X − 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, zero extended, and subtract the compliment of the carry
flag bit from the ACC register:
ACC = ACC − 0:[loc16] − ~C;
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
The state of the carry bit before execution is included in the subtraction. 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) then if the operation generates a positive overflow,
then the counter is incremented and if the operation generates a negative
overflow, then the counter is decremented. If(OVM = 1, enabled) then 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 This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
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,@VarBlow ; 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