
S3C94A5/F94A5 
SAM88RCRI INSTRUCTION SET 
6-43 
SBC
 — Subtract With Carry
SBC 
dst,src 
Operation:
dst  ¨  dst  –  src  –  c 
The source operand, along with the current value of the carry flag, is subtracted from the destination 
operand and the result is stored in the destination. The contents of the source are unaffected. 
Subtraction is performed by adding the two's-complement of the source operand to the destination 
operand. In multiple precision arithmetic, this instruction permits the carry ("borrow") from the 
subtraction of the low-order operands to be subtracted from the subtraction of high-order operands. 
Flags:  
C:   
Set if a borrow occurred (src  >  dst); cleared otherwise. 
Z:   
Set if the result is "0"; cleared otherwise. 
S:   
Set if the result is negative; cleared otherwise. 
V:   
Set if arithmetic overflow occurred, that is, if the operands were of opposite sign and the sign  
      if the result is the same as the sign of the source; cleared otherwise. 
D:   
Always set to "1". 
H:   
Cleared if there is a carry from the most significant bit of the low-order four bits of the result;   
      set otherwise, indicating a "borrow". 
Format: 
Bytes 
Cycles 
Opcode 
(Hex) 
Addr Mode 
dst      src 
opc 
dst | src 
2 
4 
32 
r 
r 
6 
33 
r 
lr 
opc 
src 
dst 
3 
6 
34 
R 
R 
6 
35 
R 
IR 
opc 
dst 
src 
3 
6 
36 
R 
IM 
Examples: 
Given: R1 = 10H, R2 = 03H, C = "1", register 01H = 20H, register 02H = 03H, and register  
03H = 0AH: 
SBC 
SBC 
SBC 
SBC 
SBC 
R1,R2 
R1,@R2 
01H,02H 
01H,@02H 
01H,#8AH 
→
→
→
→
→
R1 = 0CH, R2 = 03H 
R1 = 05H, R2 = 03H, register 03H = 0AH 
Register 01H = 1CH, register 02H = 03H 
Register 01H = 15H,register 02H = 03H, register 03H = 0AH 
Register 01H = 95H; C, S, and V = "1" 
In the first example, if working register R1 contains the value 10H and register R2 the value 03H, the 
statement "SBC  R1,R2" subtracts the source value (03H) and the C flag value ("1") from the 
destination (10H) and then stores the result (0CH) in register R1.