Bitte aktiviere JavaScript!
8086/88 Assembler Befehlsreferenz SBB

Subtract with borrow.

Subtrahiere unter Berücksichtigung des Carry-Flags.

Syntax:

SBB <Zieloperand>,<Quelloperand>

Dieser Befehl subtrahiert den Quelloperanden vom Zieloperanden und legt das Ergebnis wieder im <Zieloperanden> ab. Die beiden Operanden dürfen entweder Byte- oder Wort-Format besitzen. Das SBB-Kommando berücksichtigt einen möglichen Übertrag im Carry-Flag. Es wird also immer zusätzlich eine Eins subtrahiert, falls das Carry-Flag gesetzt ist. Die Berücksichtigung des Übertrags ist vor allem bei nachfolgenden Subtraktionen mehrerer Zahlen von Bedeutung. Sollen beispielsweise zwei 32-Bit-Zahlen voneinander abgezogen werden, so wird zuerst die beiden höherwertigen Worte ohne Beachtung des Übertrags subtrahiert(also mit dem SUB-Befehl) oder mit gelöschtem Übertrag. Dann werden die beiden niederwertigen Worte der Zahlen unter Berücksichtigung des Übertrags subtrahiert. In einem solchen Fall wird ein möglicher Übertrag aus der ersten Operation in das zweite Ergebnis übernommen und so ein korrektes Endergebnis erzielt. Wichtig ist, dass mit dem SBB-Kommando nicht zwei Speicherinhalte unmittelbar voneinander abgezogen werden können. Statt dessen wird eine der Zahlen zuerst in ein Register übertragen. Ähnliches gilt für das Abziehen eines Speicherinhalts oder eines Registers von einer Konstante.

Beispiel:

;Subtraktion zweier 32-Bit-Zahlen
MOV AX,HIGH_WORT1 ;lade höherwertiges Wort1 nach AX
SUB AX,HIGH_WORT2 ;ziehe höherwertiges Wort2 ab
MOV BX,LOW_WORT1 ;lade niederwertiges Wort1 nach BX
SBB BX,LOW_WORT2 ;und ziehe niederwertiges Wort2 unter Berücksichtigung des Übertrags ab