S3C84E5/C84E9/P84E9

INSTRUCTION SET

 

 

SBC — Subtract with Carry

SBCdst,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 of 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

Addr Mode

 

 

 

 

 

 

 

(Hex)

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

R1,R2

R1

= 0CH, R2 = 03H

 

 

SBC

R1,@R2

R1

= 05H, R2 = 03H, register 03H

= 0AH

SBC

01H,02H

Register 01H

=

1CH, register 02H

=

03H

SBC

01H,@02H

Register 01H

=

15H, register 02H

=

03H,

 

 

 

register 03H

=

0AH

 

 

SBC

01H,#8AH

Register 01H

=

95H; C, S, and V

=

"1"

In the first example, if the working register R1 contains the value 10H and the 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 the register R1.

6-77

Page 204
Image 204
Samsung S3C84E5 user manual SBC Subtract with Carry, 0AH SBC