Section courante

A propos

Section administrative du site

Assembleur 80x86

SBB

INTEL 8088+ Subtraction With Borrow

Syntaxe

SBB opérandecible,opérandesource

Paramètres

Nom Description
opérandecible Ce paramètre permet d'indiquer l'opérande de base sur lequel l'opération sera effectué.
opérandesource Ce paramètre permet d'indiquer la quantité à soustraire

Description

Cette instruction permet de soustraire avec l'indicateur de retenue (CF) une valeur à une opérande.

Algorithme

opérandecibleopérandecible - (opérandesource + CF)

Mnémonique

Instruction Opcode Description
SBB AL, imm8 1Ch ib Soustrait une valeur immédiate de 8 bits du registre AL avec la retenue.
SBB AX, imm16 1Dh iw Soustrait une valeur immédiate de 16 bits du registre AX avec la retenue.
SBB EAX, imm32 1Dh id Soustrait une valeur immédiate de 32 bits du registre EAX avec la retenue.
SBB RAX, imm32 1Dh id Soustrait une valeur entière immédiate de 32 bits du registre RAX avec la retenue.
SBB reg/mem8, imm8 80h /3 ib Soustrait une valeur immédiate de 8 bits d'un emplacement registre ou mémoire de 8 bits avec la retenue.
SBB reg/mem16, imm16 81h /3 iw Soustrait une valeur immédiate de 16 bits d'un emplacement registre ou mémoire de 16 bits avec la retenue.
SBB reg/mem32, imm32 81h /3 id Soustrait une valeur immédiate de 32 bits d'un emplacement registre ou mémoire de 32 bits avec la retenue.
SBB reg/mem64, imm32 81h /3 id Soustrait une valeur immédiate de 32 bits d'un emplacement registre ou mémoire de 64 bits avec la retenue.
SBB reg/mem16, imm8 83h /3 ib Soustrait une valeur immédiate de 8 bits d'un emplacement registre ou mémoire de 16 bits avec la retenue.
SBB reg/mem32, imm8 83h /3 ib Soustrait une valeur entière immédiate de 8 bits d'un emplacement registre ou mémoire de 32 bits avec la retenue.
SBB reg/mem64, imm8 83h /3 ib Soustrait une valeur entière immédiate de 8 bits d'un emplacement registre ou mémoire de 64 bits avec la retenue.
SBB reg/mem8, reg8 18h /r Soustrait un registre de 8 bits d'un emplacement registre ou mémoire de 8 bits avec la retenue.
SBB reg/mem16, reg16 19h /r Soustrait un registre de 16 bits d'un emplacement registre ou mémoire de 16 bits avec la retenue.
SBB reg/mem32, reg32 19h /r Soustrait un registre de 32 bits d'un emplacement registre ou mémoire de 32 bits avec la retenue.
SBB reg/mem64, reg64 19h /r Soustrait un registre de 32 bits d'un emplacement registre ou mémoire de 32 bits avec la retenue.
SBB reg8, reg/mem8 1Ah /r Soustrait un emplacement registre ou mémoire de 8 bits avec la retenue d'un registre de 8 bits.
SBB reg16, reg/mem16 1Bh /r Soustrait un emplacement registre ou mémoire de 16 bits avec la retenue d'un registre de 16 bits.
SBB reg32, reg/mem32 1Bh /r Soustrait un emplacement registre ou mémoire de 32 bits avec la retenue d'un registre de 32 bits.
SBB reg64, reg/mem64 1Bh /r Soustrait un emplacement registre ou mémoire de 32 bits avec la retenue d'un registre de 32 bits.

Exceptions

Message Mode réel Virtuel 8086 Mode protégé Description
#SS(Pile) X X X Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique
#GP(Protection général) X X X Une adresse mémoire dépasse la limite du segment de données ou n'est pas canonique
    X L'opérande de destination n'est pas dans un segment non écrivable
    X Un segment de données nulle est utilisé comme référence mémoire
#PF(Faute de page)   X X Une faute de page résultat de l'exécution de l'instruction
#AC(Vérifie l'alignement)   X X Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé

Exemple

Voici un exemple, en Turbo Pascal, permettant d'effectuer une soustraction d'un nombre 16 bits par tranche de 8 bits en utilisant l'instruction «SBB» :

  1. Program SBBSamples;
  2.  
  3. Var _AX:Word;
  4.  
  5. BEGIN
  6.  ASM
  7.   MOV AX,00FEh
  8.   SBB AL,0FFh
  9.   SBB AH,00h
  10.   MOV _AX,AX
  11.  END;
  12.  WriteLn(_AX);
  13. END.

on obtiendra le résultat suivant :

65535

Voir également

Instruction assembleur 80x86 - Instruction SUB
Instruction assembleur 80x86 - Instruction ADD
Instruction assembleur 80x86 - Instruction ADC

Références

Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 832
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 416
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 221.
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 409 à 412.

Dernière mise à jour : Lundi, le 1 septembre 2014