Instruction Set
3-67
RISC 16Bit CPU
SUBC[.W]SBB[.W] Subtract source and borrow/.NOT. carry from destination
SUBC.B,SBB.B Subtract source and borrow/.NOT. carry from destination
Syntax SUBC src,dst or SUBC.W src,dst or
SBB src,dst or SBB.W src,dst
SUBC.B src,dst or SBB.B src,dst
Operation dst + .NOT.src + C > dst
or
(dst src 1 + C > dst)
Description The source operand is subtracted from the destination operand by adding the
source operands 1s complement and the carry bit (C). The source operand
is not affected. The previous contents of the destination are lost.
Status Bits N: Set if result is negative, reset if positive.
Z: Set if result is zero, reset otherwise.
C: Set if there is a carry from the MSB of the result, reset otherwise.
Set to 1 if no borrow, reset if borrow.
V: Set if an arithmetic overflow occurs, reset otherwise.
Mode Bits OSCOFF, CPUOFF, and GIE are not affected.
Example Two floating point mantissas (24 bits) are subtracted.
LSBs are in R13 and R10, MSBs are in R12 and R9.
SUB.W R13,R10 ; 16-bit part, LSBs
SUBC.B R12,R9 ; 8-bit part, MSBs
Example The 16-bit counter pointed to by R13 is subtracted from a 16-bit counter in R10
and R11(MSD).
SUB.B @R13+,R10 ; Subtract LSDs without carry
SUBC.B @R13,R11 ; Subtract MSDs with carry
... ; resulting from the LSDs
Note: Borrow Implementation
The borrow is treated as a .NOT. carry : Borrow Carry bit
Yes 0
No 1