78 lines
4.1 KiB
HTML
78 lines
4.1 KiB
HTML
<html><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
|
|
<html>
|
|
|
|
<head>
|
|
<title>80386 Programmer's Reference Manual -- Opcode SBB</title>
|
|
</head>
|
|
|
|
<body>
|
|
<b>up:</b> <a href="C17.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C17.HTM">Chapter 17 -- 80386 Instruction Set</a><br>
|
|
<b>prev:</b><a href="SAL.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/SAL.HTM"> SAL/SAR/SHL/SHR Shift Instructions</a><br>
|
|
<b>next:</b><a href="SCAS.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/SCAS.HTM"> SCAS/SCASB/SCASW/SCASD Compare String Data</a>
|
|
<p>
|
|
<hr>
|
|
<p>
|
|
<h1>SBB -- Integer Subtraction with Borrow</h1>
|
|
<pre>
|
|
|
|
|
|
|
|
Opcode Instruction Clocks Description
|
|
|
|
1C ib SBB AL,imm8 2 Subtract with borrow immediate byte
|
|
from AL
|
|
1D iw SBB AX,imm16 2 Subtract with borrow immediate word
|
|
from AX
|
|
1D id SBB EAX,imm32 2 Subtract with borrow immediate
|
|
dword from EAX
|
|
80 /3 ib SBB r/m8,imm8 2/7 Subtract with borrow immediate byte
|
|
from r/m byte
|
|
81 /3 iw SBB r/m16,imm16 2/7 Subtract with borrow immediate word
|
|
from r/m word
|
|
81 /3 id SBB r/m32,imm32 2/7 Subtract with borrow immediate
|
|
dword from r/m dword
|
|
83 /3 ib SBB r/m16,imm8 2/7 Subtract with borrow sign-extended
|
|
immediate byte from r/m word
|
|
83 /3 ib SBB r/m32,imm8 2/7 Subtract with borrow sign-extended
|
|
immediate byte from r/m dword
|
|
18 /r SBB r/m8,r8 2/6 Subtract with borrow byte register
|
|
from r/m byte
|
|
19 /r SBB r/m16,r16 2/6 Subtract with borrow word register
|
|
from r/m word
|
|
19 /r SBB r/m32,r32 2/6 Subtract with borrow dword register
|
|
from r/m dword
|
|
1A /r SBB r8,r/m8 2/7 Subtract with borrow byte register
|
|
from r/m byte
|
|
1B /r SBB r16,r/m16 2/7 Subtract with borrow word register
|
|
from r/m word
|
|
1B /r SBB r32,r/m32 2/7 Subtract with borrow dword register
|
|
from r/m dword
|
|
</pre>
|
|
<h2>Operation</h2>
|
|
<pre>
|
|
|
|
|
|
|
|
IF SRC is a byte and DEST is a word or dword
|
|
THEN DEST := DEST - (SignExtend(SRC) + CF)
|
|
ELSE DEST := DEST - (SRC + CF);
|
|
</pre>
|
|
<h2>Description</h2>
|
|
SBB adds the second operand (DEST) to the carry flag (CF) and subtracts the result from the first operand (SRC). The result of the subtraction is assigned to the first operand (DEST), and the flags are set accordingly.
|
|
<p>When an immediate byte value is subtracted from a word operand, the immediate value is first sign-extended.
|
|
<h2>Flags Affected</h2>
|
|
OF, SF, ZF, AF, PF, and CF as described in <a href="APPC.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/APPC.HTM">Appendix C</a>
|
|
<h2>Protected Mode Exceptions</h2>
|
|
#GP(0) if the result is in a nonwritable segment; #GP(0) for an illegal memory operand effective address in the CS, DS, ES, FS, or GS segments; #SS(0) for an illegal address in the SS segment; #PF(fault-code) for a page fault
|
|
<h2>Real Address Mode Exceptions</h2>
|
|
Interrupt 13 if any part of the operand would lie outside of the effective address space from 0 to 0FFFFH
|
|
<h2>Virtual 8086 Mode Exceptions</h2>
|
|
Same exceptions as in Real Address Mode; #PF(fault-code) for a page fault
|
|
<p>
|
|
<hr>
|
|
<p><b>up:</b> <a href="C17.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/C17.HTM">Chapter 17 -- 80386 Instruction Set</a><br>
|
|
<b>prev:</b><a href="SAL.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/SAL.HTM"> SAL/SAR/SHL/SHR Shift Instructions</a><br>
|
|
<b>next:</b><a href="SCAS.HTM" tppabs="http://webster.cs.ucr.edu/Page_TechDocs/Doc386/SCAS.HTM"> SCAS/SCASB/SCASW/SCASD Compare String Data</a>
|
|
</body>
|
|
|