Instruction Set Description
207
SLAU367P – October 2012 – Revised April 2020
Copyright © 2012–2020, Texas Instruments Incorporated
CPUX
4.6.2.47 SUBC
SUBC[.W]
Subtract source word with carry from destination word
SUBC.B
Subtract source byte with carry from destination byte
Syntax
SUBC src,dst
or
SUBC.W src,dst
SUBC.B src,dst
Operation
(.not.src) + C + dst
→
dst or dst – (src – 1) + C
→
dst
Description
The source operand is subtracted from the destination operand. This is done by adding
the 1s complement of the carry to the destination. The source operand is not
affected, the result is written to the destination operand. Used for 32, 48, and 64-bit
operands.
Status Bits
N:
Set if result is negative (MSB = 1), reset if positive (MSB = 0)
Z:
Set if result is zero, reset otherwise
C:
Set if there is a carry from the MSB, reset otherwise
V:
Set if the subtraction of a negative source operand from a positive destination
operand delivers a negative result, or if the subtraction of a positive source operand
from a negative destination operand delivers a positive result, reset otherwise (no
overflow)
Mode Bits
OSCOFF, CPUOFF, and GIE are not affected.
Example
A 16-bit constant 7654h is subtracted from R5 with the carry from the previous
instruction. R5.19:16 = 0
SUBC.W
#7654h,R5
; Subtract 7654h + C from R5
Example
A 48-bit number (3 words) pointed to by R5 (20-bit address) is subtracted from a 48-bit
counter in RAM, pointed to by R7. R5 points to the next 48-bit number afterwards. The
address R7 points to is in full memory range.
SUB
@R5+,0(R7)
; Subtract LSBs. R5 + 2
SUBC
@R5+,2(R7)
; Subtract MIDs with C. R5 + 2
SUBC
@R5+,4(R7)
; Subtract MSBs with C. R5 + 2
Example
Byte CNT is subtracted from the byte, R12 points to. The carry of the previous instruction
is used. The address of CNT is in lower 64 K.
SUBC.B
&CNT,0(R12)
; Subtract byte CNT from @R12