| |
Subtract with Borrow
86/88 |
Y |
186 |
Y |
286 |
Y |
386 |
Y |
486 |
Y |
SBB destination, source |
Ovfl |
Y |
Dir |
N |
Int |
N |
Trap |
N |
Sign |
Y |
Zero |
Y |
Aux |
Y |
Prty |
Y |
Carry |
Y |
SBB subtracts the source from the destination, subtracts 1 from that
result if the Carry Flag is set, and stores the result in destination.
The operands may be bytes or words, and both may be signed or unsigned
binary numbers.
Notes: SBB is useful for subtracting numbers that are
larger than 16 bits, since it subtracts a borrow (in
the carry flag) from a previous operation.
You may subtract a byte-length immediate value from
a destination which is a word; in this case, the
byte is sign-extended to 16 bits before the
subtraction.
------------------------------------ Timing ----------------------------------
OpCode Instruction 386 286 86
1C ib SBB AL, imm8 2 3 4
1D iw SBB AX, imm16 2 3 4
1D id SBB EAX, imm32 2
80/3 ib SBB r/m8, imm8 2/7 3/7 4/17+EA
81/3 iw SBB r/m16, imm16 2/7 3/7 4/17+EA
81/3 id SBB r/m32, imm32 2/7
83/3 ib SBB r/m16, imm8 2/7 3/7 4/17+EA
83/3 ib SBB r/m32, imm8 2/7
18/r SBB r/m8, r8 2/6 2/7 3/16+EA
19/r SBB r/m16, r16 2/6 2/7 3/16+EA
19/r SBB r/m32, r32 2/6
1A/r SBB r8, r/m8 2/7 2/7 3/9+EA
1B/r SBB r16, r/m16 2/7 2/7 3/9+EA
1B/r SBB r32, r/m32 2/7
------------------------------------ Logic -----------------------------------
destination = destination - source - CF
See Also SUB DEC NEG AAS DAS Flags |