1 <!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML 2.0//EN">
4 <TITLE>80386 Programmer's Reference Manual -- Opcode SBB
</TITLE>
7 <B>up:
</B> <A HREF=
"c17.htm">
8 Chapter
17 --
80386 Instruction Set
</A><BR>
9 <B>prev:
</B><A HREF=
"SAL.htm"> SAL/SAR/SHL/SHR Shift Instructions
</A><BR>
10 <B>next:
</B><A HREF=
"SCAS.htm"> SCAS/SCASB/SCASW/SCASD Compare String Data
</A>
14 <H1>SBB -- Integer Subtraction with Borrow
</H1>
18 Opcode Instruction Clocks Description
20 1C ib SBB AL,imm8
2 Subtract with borrow immediate byte
22 1D iw SBB AX,imm16
2 Subtract with borrow immediate word
24 1D id SBB EAX,imm32
2 Subtract with borrow immediate
26 80 /
3 ib SBB r/m8,imm8
2/
7 Subtract with borrow immediate byte
28 81 /
3 iw SBB r/m16,imm16
2/
7 Subtract with borrow immediate word
30 81 /
3 id SBB r/m32,imm32
2/
7 Subtract with borrow immediate
32 83 /
3 ib SBB r/m16,imm8
2/
7 Subtract with borrow sign-extended
33 immediate byte from r/m word
34 83 /
3 ib SBB r/m32,imm8
2/
7 Subtract with borrow sign-extended
35 immediate byte from r/m dword
36 18 /r SBB r/m8,r8
2/
6 Subtract with borrow byte register
38 19 /r SBB r/m16,r16
2/
6 Subtract with borrow word register
40 19 /r SBB r/m32,r32
2/
6 Subtract with borrow dword register
42 1A /r SBB r8,r/m8
2/
7 Subtract with borrow byte register
44 1B /r SBB r16,r/m16
2/
7 Subtract with borrow word register
46 1B /r SBB r32,r/m32
2/
7 Subtract with borrow dword register
53 IF SRC is a byte and DEST is a word or dword
54 THEN DEST := DEST - (SignExtend(SRC) + CF)
55 ELSE DEST := DEST - (SRC + CF);
60 SBB adds the second operand (DEST) to the carry flag (CF) and
61 subtracts the result from the first operand (SRC). The result of the
62 subtraction is assigned to the first operand (DEST), and the flags are
65 When an immediate byte value is subtracted from a word operand, the
66 immediate value is first sign-extended.
68 <H2>Flags Affected
</H2>
70 OF, SF, ZF, AF, PF, and CF as described in
<A HREF=
"appc.htm">Appendix C
</A>
72 <H2>Protected Mode Exceptions
</H2>
74 #GP(
0) if the result is in a nonwritable segment; #GP(
0) for an illegal
75 memory operand effective address in the CS, DS, ES, FS, or GS
76 segments; #SS(
0) for an illegal address in the SS segment; #PF(fault-code)
79 <H2>Real Address Mode Exceptions
</H2>
81 Interrupt
13 if any part of the operand would lie outside of the effective
82 address space from
0 to
0FFFFH
84 <H2>Virtual
8086 Mode Exceptions
</H2>
86 Same exceptions as in Real Address Mode; #PF(fault-code) for a page
93 <B>up:
</B> <A HREF=
"c17.htm">
94 Chapter
17 --
80386 Instruction Set
</A><BR>
95 <B>prev:
</B><A HREF=
"SAL.htm"> SAL/SAR/SHL/SHR Shift Instructions
</A><BR>
96 <B>next:
</B><A HREF=
"SCAS.htm"> SCAS/SCASB/SCASW/SCASD Compare String Data
</A>