Les Secrets du Microprocesseur 80286

1. Caracteristiques principales

Ce chapitre donne une description succincte de ce microprocesseur. Son but n'est pas d'etudier tous les aspects de la structure et de l'utilisation du 80286. On se reportera a des ouvrages plus specialises pour des informations complementaires.

La description concerne principalement le mode reel, compatible entre tous les 80x86 (86, 88, 286, 386, 486). C'est le mode utilise par tous les OM en principe, avec des executables sous MS-DOS (yapp, PCPAKRAT, ...).

En mode Windows ou OS2, le mode est different (mode protege ou pagine).

Le microprocesseur 80286 fait partie de la famille des microprocesseurs 16 bits iAPX286 (INTEL).

  • bus de donnees 16 bits, bus d'adresses 24 bits
  • 2 modes de fonctionnement :
    • . mode reel : fonctionnement compatible au 8086-8088 ; adressage de la memoire centrale sur 1 Mo,
    • . mode protege (virtuel): adressage de la memoire sur 16 Mo.
  • 64k d'adresses Entrees/Sorties.
  • horloge 16MHz ou 24MHz (cas du 80286-12) commutee par l'utilisateur (cette horloge est divisee par deux en interne par le 80286-12, et par trois par le 80287).
  • alimentation unique 5V,
  • 7 categories d'instructions, compatibles avec la famille 8086 INTEL : transferts de donnees, operations arithmetiques, operations logiques, operations sur des chaines de caracteres, instructions de branchement, controle du processeur, macro-instructions.
  • en mode protege :
    • protection hierarchisee des acces a la memoire (4 niveaux)
    • controle commutation de taches (3 taches).

    2. Organisation interne

    Le microprocesseur se compose de quatre zones qui travaillent en partie independamment :

  • EU (Execution Unit) : elle contient les registres generaux, l'ALU (Arithmetique and Logique Unit), le registre d'etat, et la logique de controle de l'execution des instructions.
  • AU (Adresse Unit) : elle contient les registres segment et s'occupe du calcul de l'adresse physique.
  • IU (Instruction Unit) : elle contient le decodeur d'instruction et une file d'attente contenant trois instructions decodees.
  • BU (Bus Unit) : elle s'occupe du transfert et de la synchronisation des bus de donnees, d'adresses, et de controle ; elle contient une file d'attente de six octets de code instruction.

    3. Registres internes

    
                          Selecteur    Acces        Base          Limite
                       |------|------||--|--||-------|--------||----|-----|
      |------|------|  |-------------|------|-----|-----|-----|-----|-----|
    AX|  AH  |  AL  |CS| Code Segment|      |                 |           |
      ---------------  ----------------------------------------------------
    BX|  BH  |  BL  |DS| Data Segment|      |                 |           |
      ---------------  ----------------------------------------------------
    CX|  CH  |  CL  |SS|Stack Segment|      |                 |           |
      ---------------  ----------------------------------------------------
    DX|  DH  |  DL  |ES|Extra Segment|      |                 |           |
      |------|------|  |-------------|------|-----|-----|-----|-----|-----|
      |-------------|         |-------------|-----|-----|-----|-----|-----|
    SI|Source Index |     LDTR|  Selecteur  |                 |           |
      ---------------         ---------------------------------------------
    DI| Dest. Index |       TR|  Selecteur  |                 |           |
      |-------------|         |--------------------------------------------
      |-------------|                   GDTR|                 |           |
    BP|Base Pointeur|                       -------------------------------
      ---------------                   IDTR|                 |           |
    SP|Stack Point. |                       |-----|-----|-----|-----|-----|
      ---------------                       |--------|--------||----|-----|
    IP|Inst. Point. |                               Base          Limite
      |-------------|
      |-------------|
      | Indicateurs |FLAGS
      ---------------
      | Mach. Status|MSW
      |-------------|
                                     - Registres internes du 80286
    

    4 registres generaux 16 bits : AX, BX, CX, DX.

    
        15                          0
       |--------------|--------------|
    AX |      AH      |      AL      |Accumulateur
       -------------------------------
    BX |      BH      |      BL      |Base
       -------------------------------
    CX |      CH      |      CL      |Compteur
       -------------------------------
    DX |      DH      |      DL      |Donnee
       |--------------|--------------|
    

    Chaque registre se compose de 2 registres de 8 bits :

  • .H : registre de poids forts
  • .L : registre de poids faibles

    Chaque registre beneficie de fonctions particulieres :

  • .AX (Accumulateur) :
    • transferts avec les entrees-sorties
    • operations arithmetiques et logiques
  • .BX (Base) : adressage de zone memoire.
  • .CX (Compteur) : utilise comme compteur lors des instructions de boucles, de decalages et rotations.
  • .DX (Donnee) : extension 32 bits pour divisions et multiplications, registre d'adresses entree-sorties.

    2 registres d'index pour l'adressage indexe :

    Ils servent en general a reperer un element dans un tableau dont la base est pointee soit par BX dans DS, soit par BP dans SS. En particulier ils permettent des transferts de tableau avec SI associe a DS et DI a ES.

    
     15                          0
    |-----------------------------|
    |   SI (Source Index)         |Index source
    -------------------------------
    |   DI (Destination Index)    |Index destination
    |-----------------------------|
    

    3 registres pointeur :

    
     15                          0
    |-----------------------------|
    |   BP (Base Pointer)         |Pointeur de base
    -------------------------------
    |   SP (Stack Pointer)        |Pointeur de pile
    -------------------------------
    |   IP (Instruction Pointer)  |Pointeur d'instruction
    |-----------------------------|
    
    .SP (pointeur de pile) : generation des adresses de la pile. .BP (pointeur de base) : genere l'adresse de base (segment) des donnees. .IP (pointeur d'instruction) : genere l'adresse de l'instruction suivante (deplacement dans le segment).

    4 registres segments (mode reel) :

    
     15                          0
    |-----------------------------|
    |   CS (Code Segment)         |Segment programme
    -------------------------------
    |   DS (Data Segment)         |Segment de donnees
    -------------------------------
    |   SS (Stack Segment)        |Segment de pile
    -------------------------------
    |   ES (Extra Segment)        |Segment de donnees supplem.
    |-----------------------------|
    
  • .CS (Code Segment) : ce registre determine la position du segment utilise pour adresser le programme en cours d'execution. L'adresse physique d'une instruction est calculee par la somme CS:IP (voir adressage de la memoire).
  • .DS (Data Segment) : ce registre determine la position du segment utilise pour adresser les donnees en memoire centrale. L'adresse physique d'une donnee est determinee par la somme de DS et d'une combinaison d'autres registres suivant le mode d'adressage (voir adressage de la memoire ^U4).
  • .ES (Extra Segment) : registre de donnees supplementaire plus particulierement utilise pour des transferts de donnees.
  • .SS (Stack Segment) : ce registre pointe le segment de la pile. La pile est utilisee soit par les programmes pour le passage de parametres vers des sous-programmes, soit directement par le microprocesseur pour sauvegarder des donnees et des adresses de retour de sous-progammes ou d'interruptions.

    En mode reel, ces registres determinent la segmentation de la memoire en zones de 64 ko ; ils permettent au microprocesseur de calculer l'adresse physique sur 20 bits pour les acces a la memoire centrale.

    En mode protege, ces registres deviennent des registres de selection du descripteur segment, ils pointent le descripteur du segment dans la table des descripteurs segment ; cette table est soit globale (GDT) soit locale (LDT). Chaque registre CS, DS, SS, ES, se compose alors de la maniere suivante :

    
     15                      2  1  0
    |----------------------|--|--|--|
    |        INDEX         |TI| RPL |
    |----------------------|--|--|--|
    
  • .INDEX : est le pointeur de la table des descripteurs de segment.
  • .TI (Table Indicator) : specifie l'emplacement de cette table des descripteurs :
    • TI=0, espace d'adressage global (l'index pointe sur la table globale des descripteurs segment GDT)
    • TI=1, espace d'adressage local (l'index pointe sur la table locale des descripteurs segment LDT)
  • .RPL (Requested privilege level) : privilege requis pour acceder au segment ; 0 est le privilege le plus eleve. On doit avoir RPLsDPL ; le privilege effectif du segment EPL (Effective Privilege Level) est egal a Max (RPL, DPL), ou DPL (Descriptor Privilege Level) est le privilege du segment.
  • .GDTR (registre de la table des descripteurs globaux)
    Memorise l'adresse de base (trois octets) et la limite (deux octets) du segment GDT, c'est-a-dire de la table des descripteurs globaux. Ce registre n'est accessible que par les instructions LGDT (Load GDT) et SGDT (Store GDT).
  • .LDTR (registre de la table des descripteurs locaux)
    Memorise l'adresse selecteur (deux octets), la base (trois octets) et la limite (deux octets) du segment LDT, c'est-a-dire de la table des descripteurs locaux. Seul le selecteur est visible. La partie cachee n'est accessible que par les instructions LLDT (Load LDT) et SLDT (Store LDT). Il est charge a l'initialisation et a chaque commutation de tache.
  • .IDTR (registre de la table des descripteurs d'interruption) Memorise l'adresse de base (trois octets) et la limite (deux octets) du segment IDT, c'est-a-dire de la table des descripteurs d'interruption. Ce registre n'est accessible que par les instructions LIDT (Load IDT) et SIDT (Store IDT).
  • .TR (registre de tache)
    Memorise l'adresse selecteur (deux octets), la base (trois octets) et la limite (deux octets) du segment TSS, c'est-a-dire de la table de commutation de tache. Seul le selecteur est visible. La partie cachee n'est accessible que par les instructions LTR (Load TR) et STR (Store TR).

    4 registres caches (48 bits) associes respectivement aux registres segment CS, DS, SS, ES :

    
    DROITS      24BITS BASE     16BITS DIMENSION
    D'ACCES    ADRESSE SEGMENT     DU SEGMENT
    47   40 39                 16 15          0
    |------|------|------|------|------|------|
    |      |                    |             |CS
    -------------------------------------------
    |      |                    |             |DS
    -------------------------------------------
    |      |                    |             |SS
    -------------------------------------------
    |      |                    |             |ES
    |------|------|------|------|------|------|
    

    Ces registres ne sont pas accessibles directement par le programmeur ; ils contiennent les descripteurs du segment. Le descripteur est charge dans un de ces registres par des instructions de type LDS, LES, MOV, qui modifient SS, DS, ES, ou par des instructions telles que CALL ou JMP, qui modifient CS.

    2 registres d'etat :

    
     15                            0
    |---------------|---------------|
    |     FLAGSH    |     FLAGSL    |Registre d'etat
    ----------------|----------------
    |   MSW (Machine Status Word)   |Mot d'etat machine
    |-------------------------------|
    
    FLAGS (registre d'etat indicateurs).
    
     15                            0
    |-------------------------------|
    |             FLAGSH            |
    ----|---|---|---|---|---|---|----
    |b15|b14|b13|b12|B11|b10|b9 |b8 |
    ---------------------------------
    | . |NT | IOPL  |OF |DF |IF |TF |
    |---|---|---|---|---|---|---|---|
    
  • NT (Nested Task Flag) : indicateur de tache imbriquee Ce bit controle l'instruction IRET ; si NT=0, l'instruction IRET est normale (retour d'interruption) ; si NT=1, l'instruction IRET execute un basculement sur une autre tache.
  • IOPL (I/O Previlege Level) : niveau de privilege
  • OF (Overflow Flag) : indicateur de depassement ; indique le depassement de capacite d'une operation, lorsque le resultat, meme avec la retenue, n'est plus representable. Cette erreur provoque l' interruption specifique INTO.
  • DF (Direction Flag) : indicateur de direction ; c'est le sens de progression des registres d'index SI et DI lors des instructions de traitement de chaines. Le programmeur positionne : DF=0 adresses croissantes, incrementation.
  • IF (Interrupt enable Flag) : indicateur d'autorisation d'interruption ; cet indicateur autorise (IF=1) ou interdit (IF=0) les interruptions externes demandees sur la broche INTR du circuit.
  • TF (Trap Flag) : indicateur de mode pas-a-pas ; si TF=1 une interruption est generee apres execution de chaque instruction du programme.
    
    |-------------------------------|
    |             FLAGSL            |
    ----|---|---|---|---|---|---|----
    |b7 |b6 |b5 |b4 |B3 |b2 |b1 |b0 |
    ---------------------------------
    |SF |ZF | . |AF | . |PF | . |CF |
    |---|---|---|---|---|---|---|---|
    
  • SF (Sign Flag) : indicateur de signe.
  • ZF (Zero Flag) : indicateur de zero.
  • AF (Auxiliary Flag) : indicateur de retenue auxiliaire ; la retenue auxiliaire est la retenue generee par les 4 bits de poids faibles du resultat d'une operation arithmetique. Elle permet la mise du resultat sous forme BCD.
  • PF (Parity Flag) : indicateur de parite. La parite est la somme modulo 2 de 8 bits de l'octet de poids faibles du mot resultat, ou de l'octet resultat, de l'operation qui vient d'etre effectuee par une instruction. Si cette somme modulo 2 est nulle, la parite est paire et PF=1, sinon la parite est impaire et PF=0.
  • CF (Carry Flag) : indicateur de retenue.

    MSW (registre d'etat machine)

    
    |-------------------------------|
    |     REGISTRE D'ETAT MACHINE   |
    ---- - - - - ---|---|---|---|----
    |b15.........b4 |b3 |b2 |b1 |b0 |
    ---- - - - - --------------------
    |...Reserve.....|TS |EM |MP |PE |
    |--- - - - - ---|---|---|---|---|
    
  • TS (Task Switch) : a l'etat 1, ce bit indique que le coprocesseur peut executer une autre tache.
  • EM (processor Extension Emulated) : a l'etat 1, ce bit indique que les instruction du coprocesseur sont emulees par logiciel, si le coprocesseur est absent. Dans ce cas, le 80286 se branche sur INT07H pour cette emulation.
  • MP (Math Present) : indique la presence du coprocesseur arithmetique 80287.
  • PE (Protection Enable) : positionne a l'etat 1, ce bit place le 80286 en mode protege ; seul l'execution de l'instruction LMSW ou une reinitialisation peuvent remettre le processeur en mode reel.

    4. Adressage de la memoire

    En mode reel (compatible), l'acces a la memoire est realise comme pour la famille iAPX86.

    L'espace adressable est de 1 Mo. Ce champ d'adresse est decoupe en segments de 64 ko.

    L'adresse de debut du segment est donnee par le registre segment. Le deplacement dans le segment est donne par une adresse effective AE, calculee suivant le mode d'adressage.

     15                0          15                0
     ------------------------     -------------------
     |    SEGMENT      |0000|     |        AE       |
     ------------------------     -------------------
     19    DS  | |         0               | |  BP  DI
           SS  | |                         | |  IP 
           CS  | |                         | |  BX 
           ES  \ /                         \ /  SI
              ----------------------------------
              |               +                |
              ----------------------------------
              19             | |              0
                             | | 
                             | | 
                             \ / 
          23     20 19                           0
          --------- ------------------------------
          |0 0 0 0| |Adresse physique sur 20 bits|
          --------- ------------------------------
    

    Ainsi, l'adresse physique sur 24 bits d'une donnee est calculee a partir de la somme d'un deplacement AE a l'interieur du segment de 64 ko et de l'adresse de debut du segment (donnee par un registre segment : DS, CS, ES, SS).

    En mode protege, les adresses physiques sont attribuees par des adresses logiques (virtuelles).

    Ce principe repose sur la segmentation ; un segment est une zone entiere de memoire n'excedant pas 64 ko. Chaque segment est defini par :

  • sa base,
  • sa limite,
  • son droit d'acces.

    Il est decrit par un descripteur de segment, situe en memoire.
    Le descripteur est charge dans les registres du 80286 pour permettre a l'unite de gestion memoire integree au microprocesseur d'adresser la memoire.

    Une adresse (donnee ou code) comprend :

  • un selecteur,
  • un deplacement.

    Le selecteur pointe la table des descripteurs, situee en memoire ; cette table est soit globale (GDT), soit local (LDT), suivant le bit TI du selecteur.
    La GDT decrit l'espace d'adressage global a toutes les taches, tandis que la LDT decrit l'espace d'adressage d'une tache.
    Il existe quatres types de descripteurs :

  • les descripteurs de segment de donnees,
  • les descripteurs de segment de code (executable),
  • les descripteurs de segment systeme,
  • les descripteurs de guichet.
    
    DESCRIPTEUR DE SEGMENT DE CODE
    7                      0 7                        0
    |-----------------------|-------------------------|
    |    Reserve pour 80386 (tout doit etre a zero)   | +6
    ---|--|--|--|--|--|--|--|--------------------------
    | P| DPL | 1| 1| C| R| A|        Base (23-16)     | +4
    ---|--|--|--|--|--|--|--|--------------------------
    |                   Base (15-0)                   | +2
    ---------------------------------------------------
    |                  Limite (15-0)                  |  0
    |-----------------------|-------------------------|
    
    DESCRIPTEUR DE SEGMENT DE DONNEES
    7                      0 7                        0
    |-----------------------|-------------------------|
    |    Reserve pour 80386 (tout doit etre a zero)   | +6
    ---|--|--|--|--|--|--|--|--------------------------
    | P| DPL | 1| 0|ED| W| A|        Base (23-16)     | +4
    ---|--|--|--|--|--|--|--|--------------------------
    |                   Base (15-0)                   | +2
    ---------------------------------------------------
    |                  Limite (15-0)                  |  0
    |-----------------------|-------------------------|
    
    DESCRIPTEUR DE SEGMENT SYSTEME
    (decrit un segment d'etat de tache TSS)
    7                      0 7                        0
    |-----------------------|-------------------------|
    |    Reserve pour 80386 (tout doit etre a zero)   | +6
    ---|--|--|--|--|--|--|--|--------------------------
    | P| DPL | 0| 0| 0| Type|        Base (23-16)     | +4
    ---|--|--|--|--|--|--|--|--------------------------
    |                   Base (15-0)                   | +2
    ---------------------------------------------------
    |                  Limite (15-0)                  |  0
    |-----------------------|-------------------------|
    
    DESCRIPTEUR DE GUICHET
    7                      0 7                        0
    |-----------------------|-------------------------|
    |    Reserve pour 80386 (tout doit etre a zero)   | +6
    ---|--|--|--|--|--|--|--|--|--|--|-----------------
    | P| DPL | 0| 0| 1| Type| x  x  x|Nb de mots/typ00| +4
    ---|--|--|--|--|--|--|-----|--|--|----------|--|---
    |          Selecteur destination            | x  x| +2
    --------------------------------------------|--|---
    |    Deplacement destination (sauf pour typ01,11  |  0
    |-----------------------|-------------------------|
    
  • .DPL (Descriptor Privilege Level) : privilege du segment accessible par le descripteur.
  • .P (bit de Presence) : est positionne a 1 si le segment adresse par le descripteur est actuellement en memoire.
  • .ED (Expansion Direction) : partie et sens d'utilisation du segment par rapport a la limite :
    • 0 = de la base vers la limite,
    • 1 = du sommet vers la limite.
  • .W (Writable) :
    • 0 = protege contre toute ecriture,
    • 1 = accessible en ecriture.
  • .A (Accessed) : positionne a 1 lorsque le descripteur est ou a ete utilise.
  • .R (Readable) :
    • 0 = le contenu du segment ne peut etre qu'execute,
    • 1 = le segment est accessible en lecture.
  • .C (Conforming) :
    • 0 = la procedure appelee s'execute avec le niveau de privilege DPL du descripteur,
    • 1 = la procedure se conforme au niveau de privilege de la procedure appelante.
    
                                 Memoire RAM            Memoire RAM
                               |             |     |-----------------
                               |             |     |  |             |
                               ---------------     |  |             |
                    Descripteur|Reserve      |     |  |             |
                               --------|------     |  |             |
                          de   |Droit  |Base |     |  |             |
    Registre LDTR              |d'acces|23-16|--|  |  |             |
         +              segment--------|------  |  |  ---------------
    |-----------|---------|    |Base 15-0    |--|  |  |   Donnee    |-|
    |Deplacement|Selecteur|    ---------------  |  |  --------------- |
    |-----|-----|----|----|    |Limite 15-0  |-----|  |             | |
          |          |------------------------  |     |             | |
          |                    |             |  |     |             | |
          |                    |             |  |     |             | |
          |                    |    LDT      |  |     |             | |
          |                    |Table des    |  |-------------------- |
          |                    |descripteurs |        |             | |
          |                     locaux                                |
          |-----------------------------------------------------------|
    
     15                      2  1  0
    |----------------------|--|--|--|
    |        INDEX         |TI| RPL | SELECTEUR
    |----------------------|--|--|--|
    
              - Mecanisme d'acces a un segment avec LDTR
    

    5. Jeu d'instruction

    7 categories d'instructions : transfert de donnees, operations arithmetiques, operations logiques, operations sur des chaines de caracteres, instructions de branchement, controle du processeur, macro instructions.

    |-|--------------------------------------------------|
    |1|INSTRUCTIONS DE TRANSFERT                         |
    | -------------------|--------------------------------
    | |MOV,XCHG          |Deplace, echange               |
    | |PUSH,POP          |Operations sur les piles       |
    | |IN,OUT            |Transfert avec les ports d'E/S |
    | |XLAT              |Traduction                     |
    | |LEA,LDS,LES       |Chargement registre ou pointeur|
    | |LAHF,SAHF,PUSHF,..|Transfert du registre FLAGS    |
    ---------------------|--------------------------------
    |2|INSTRUCTIONS ARITHMETIQUES                        |
    | -------------------|--------------------------------
    | |ADC,ADD,SBB,SUB,..|Addition, soustraction         |
    | |AAA,DAA,AAS,CBW,..|Ajustement et conversion       |
    | |INC,DEC           |Incremente, decremente         |
    | |MUL,DIV,NEG       |Multiplication, division       |
    | |CMP               |Comparaison                    |
    ---------------------|--------------------------------
    |3|INSTRUCTIONS LOGIQUES                             |
    | -------------------|--------------------------------
    | |NOT,AND           |Complement, Et                 |
    | |OR,XOR            |Ou inclusif, exclusif          |
    | |TEST              |Comparaison logique            |
    | |SHL,SHR,ROL,ROR,..|Rotation et decalages          |
    ---------------------|--------------------------------
    |4|INSTRUCTIONS DE MANIPULATION DE CHAINES           |
    | -------------------|--------------------------------
    | |MOVS,INS,         |Deplacement, transferts        |
    | |CMPS,SCAS         |Comparaison, recherche         |
    | |LODS,STOS         |Chargement, rangement          |
    | |REP,REPE,REPZ,....|Prefixe de repetition          |
    ---------------------|--------------------------------
    |5|INSTRUCTIONS DE BRANCHEMENT                       |
    | -------------------|--------------------------------
    | |CALL              |Appel d'un sous-programme      |
    | |RET,IRET          |Retour d'un sous-programme     |
    | |JMP,JZ,JNZ,...    |Saut                           |
    | |LOOP,LOOPNE       |Boucle                         |
    | |INT,INTO,         |Interruption                   |
    ---------------------|--------------------------------
    |6|INSTRUCTIONS DE CONTROLE DU MICROPROCESSEUR       |
    | -------------------|--------------------------------
    | |CLC,STC,..        |Positionnement indicateur      |
    | |LGDT,SGDT LIDT,.. |Operations sur les descripteurs|
    | |ARPL,..           |Ajustement de privilege        |
    | |HLT,LOCK,ESC,..   |Arret,ver. bus,extensions      |
    ---------------------|--------------------------------
    |7|MACRO-INSTRUCTIONS                                |
    | -------------------|--------------------------------
    | |ENTER,LEAVE,BOUND |Procedures                     |
    |-|------------------|-------------------------------|
    

    6. Signaux d'entrees-sorties

  • A0 a A23 : Bus d'adresse unidirectionnel (en sortie). Sa capacite d'adressage est de 16 Mo. Le bus d'adresse est a l'etat haute impedance pendant une phase de prise des bus (HLDA). Les bits A23-A16 sont a l'etat bas pendant les acces E/S.
  • BHE* : (Bus High Enable) cette sortie, combinee avec A0, indique si la donnee a transmettre est un octet ou un mot.
    |-----|-----|------------------------------------------|
    | BHE*|  A0 |      Fonction                            |
    --------------------------------------------------------
    |  0  |  0  |Transfert d'un mot                        |
    |  0  |  1  |Transfert d'un octet sur D15-D8 (impaire) |
    |  1  |  0  |Transfert d'un octet sur D7-D0 (paire)    |
    |  1  |  1  |Reserve                                   |
    |-----|-----|------------------------------------------|
    
  • BUSY* : Cette entree, active a 0, indique que le coprocesseur est en cours d'execution d'une instruction ; si le 80286 execute une autre instruction de type ESCape (avec PM et EM = 0) alors le 80286 appel l'interruption INT07H (exception 80286). L'instruction WAIT met en etat d'attente le 80286 tant que BUSY* est actif.
  • CLK : Entree signal d'horloge systeme 16 ou 24 MHz ; cette horloge est divisee par deux en interne.
  • COD/INTA* : (CODe INTerrupt Acknowledge) Sortie signal code instruction/reconnaissance d'interruption : non utilise.
  • D0 a D15 : Bus de donnees 16 bits bidirectionnel. Il est en entree pendant les phases de lectures memoire, E/S et reconnaissance d'interruption (cycle INTA) ; il est en sortie pendant les phases d'ecriture ; il est a l'etat haute impedance apres un cycle accuse reception (HLDA actif) d'une phase de prise des bus par un circuit externe.
  • ERROR* : Cette entree n'est pas utilisee ; elle est cablee a l'etat haut inactif.
  • HLDA : (Hold Acknowledge) Cette sortie indique a l'environnement que, suite a une demande HOLD, les bus ne sont plus controles par le 80286 ; un circuit externe (par exemple un controleur DMA) peut alors controler le systeme.
  • HOLD : Entree de demande de controle des bus par un circuit externe ; l'acceptation de cette demande est le signal HLDA.
  • INTR : (INTerrupt Request) Cette entree de demande d'interruption, active a l'etat haut, est masquable au niveau du 80286 par le bit IF du registre d'etat ; Si l'entree INTR est active, le 80286 interrompt son programme, sauvegarde les registres FLAGS, CS:IP, et se connecte sur le programme de traitement de cette interruption. L'adresse de ce programme est pointee par le vecteur delivre par le circuit de gestion des interruptions 8259 pendant le 2ieme cycle INTA.
  • LOCK* : Sortie de verrouillage des bus. Ce signal interdit a un circuit externe la prise en compte des bus : non utilise.
  • M/IO* : (Memory/Input-Output) Sortie de selection memoire ou E/S.
  • NMI : (Non Masquable Interrupt request) Cette entree est active sur un front montant (4 cycles CLK minimum a l'etat haut). L'interruption NMI n'est pas masquable au niveau du 80286 ; elle n'affecte pas le drapeau IF dans le registre d'etat. Si l'entree NMI est active, le 80286 interrompt son programme et se connecte sur INT02H apres sauvegarde des registres FLAGS et CS:IP.
  • PEACK* : (Processor Extension ACKnowledge) Cette sortie indique au coprocesseur que l'operande est en cours de transfert. Ce signal est utilise conjointement avec le signal PEREQ.
  • PEREQ : (Processor Extension REQuest) Cette entree est une demande de transfert d'un operande vers le coprocesseur.
  • READY* : Cette entree indique la fin d'un cycle bus (bus pret).
  • RESET : Entree de remise a zero de la logique interne du 80286 (16 cycles CLK minimum).
  • S0*, S1* : (Status) Sorties etats des cycles bus.
    |-----|-----|-----------------------------|
    | S1* | S0* |      Etat cycle bus         |
    -------------------------------------------
    |  0  |  0  |Reconnaissance d'interruption|
    |  0  |  1  |Lecture                      |
    |  1  |  0  |Ecriture                     |
    |-----|-----|-----------------------------|
    
  • Vcc : Alimentation +5V
  • Vss : Masse alimentation

    Instructions 80286

         |octet poids faible
         |    0        1        2        3        4       5       6       7
    --------------|--------|--------|--------|-------|-------|-------|--------
    poids|ADD     |ADD     |ADD     |ADD     |ADD    |ADD    |PUSH   |POP    |
        0|b.f.r/m |w.f.r/m |b.t.r/m |w.t.r/m |b.ia   |w.ia   |ES     |ES     |
    forts---------------------------------------------------------------------
         |ADC     |ADC     |ADC     |ADC     |ADC    |ADC    |PUSH   |POP    |
        1|b.f.r/m |w.f.r/m |b.t.r/m |w.t.r/m |b.i    |w.i    |SS     |SS     |
         ---------------------------------------------------------------------
         |AND     |AND     |AND     |AND     |AND    |AND    |SEG =  |DAA    |
        2|b.f.r/m |w.f.r/m |b.t.r/m |w.t.r/m |b.i    |w.i    |ES     |       |
         ---------------------------------------------------------------------
         |XOR     |XOR     |XOR     |XOR     |XOR    |XOR    |SEG =  |AAA    |
        3|b.f.r/m |w.f.r/m |b.t.r/m |w.t.r/m |b.i    |w.i    |SS     |       |
         ---------------------------------------------------------------------
         |INC     |INC     |INC     |INC     |INC    |INC    |INC    |INC    |
        4|AX      |CX      |DX      |BX      |SP     |BP     |SI     |DI     |
         ---------------------------------------------------------------------
         |PUSH    |PUSH    |PUSH    |PUSH    |PUSH   |PUSH   |PUSH   |PUSH   |
        5|AX      |CX      |DX      |BX      |SP     |BP     |SI     |DI     |
         ---------------------------------------------------------------------
         |PUSHA   |POPA    |BOUND   |ARPL    |       |       |       |       |
        6|        |        |        |        |       |       |       |       |
         ---------------------------------------------------------------------
         |JO      |JNO     |JC/JB/  |JNC/JNB/|JE/    |JNE/   |JBE/   |JNBE/  |
        7|        |        |JNAE    |JAE     |JZ     |JNZ    |JNA    |JA     |
         ---------------------------------------------------------------------
         |Immediat|Immediat|Immediat|Immediat|TEST   |TEST   |XCHG   |XCHG   |
        8|b.r/m   |w.r/m   |b.r/m   |is.r/m  |b.r/m  |w.r/m  |b.r/m  |w.r/m  |
         ---------------------------------------------------------------------
         |XCHG    |XCHG    |XCHG    |XCHG    |XCHG   |XCHG   |XCHG   |XCHG   |
        9|AX      |CX      |DX      |BX      |SP     |BP     |SI     |DI     |
         ---------------------------------------------------------------------
         |MOV     |MOV     |MOV     |MOV     |MOVS   |MOVS   |CMPS   |CMPS   |
        A|m AL    |m AX    |AL m    |AX m    |b      |w      |b      |w      |
         ---------------------------------------------------------------------
         |MOV     |MOV     |MOV     |MOV     |MOV    |MOV    |MOV    |MOV    |
        B|i AL    |i CL    |i DL    |i BL    |i AH   |i CH   |i DH   |i BH   |
         ---------------------------------------------------------------------
         |Shift,n |Shift,n |RET     |RET     |LES    |LDS    |MOV    |MOV    |
        C|b       |w       |(I+SP)  |        |       |       |b.i.r/m|w.i.r/m|
         ---------------------------------------------------------------------
         |Shift   |Shift   |Shift   |Shift   |AAM    |AAD    |       |XLAT   |
        D|b       |w       |b.v     |w.v     |       |       |       |       |
         ---------------------------------------------------------------------
         |LOOPNZ/ |LOOPZ/  |LOOP    |JCXZ    |IN     |IN     |OUT    |OUT    |
        E|LOOPNE  |LOOPE   |        |        |b      |w      |b      |w      |
         ---------------------------------------------------------------------
         |LOCK    |        |REP     |REPZ    |HLT    |CMC    |Groupe1|Groupe1|
        F|        |        |REPNZ   |        |       |       |b.r/m  |w.r/m  |
    --------------|--------|--------|--------|-------|-------|-------|--------
         |    0        1        2        3        4       5       6       7
         |octet poids faible
    
         |octet poids faible
         |    8       9       A        B       C        D        E        F
    -------------|-------|--------|-------|--------|--------|--------|--------
    poids|OR     |OR     |OR      |OR     |OR      |OR      |PUSH    |MODE   |
        0|b.f.r/m|w.f.r/m|b.t.r/m |w.t.r/m|b.i     |w.i     |CS      |PROT.  |
    forts---------------------------------------------------------------------
         |SBB    |SBB    |SBB     |SBB    |SBB     |SBB     |PUSH    |POP    |
        1|b.f.r/m|w.f.r/m|b.t.r/m |w.t.r/m|b.i     |w.i     |DS      |DS     |
         ---------------------------------------------------------------------
         |SUB    |SUB    |SUB     |SUB    |SUB     |SUB     |SEG =   |DAS    |
        2|b.f.r/m|w.f.r/m|b.t.r/m |w.t.r/m|b.i     |w.i     |CS      |       |
         ---------------------------------------------------------------------
         |CMP    |CMP    |CMP     |CMP    |CMP     |CMP     |SEG =   |AAS    |
        3|b.f.r/m|w.f.r/m|b.t.r/m |w.t.r/m|b.i     |w.i     |DS      |       |
         ---------------------------------------------------------------------
         |DEC    |DEC    |DEC     |DEC    |DEC     |DEC     |DEC     |DEC    |
        4|AX     |CX     |DX      |BX     |SP      |BP      |SI      |DI     |
         ---------------------------------------------------------------------
         |POP    |POP    |POP     |POP    |POP     |POP     |POP     |POP    |
        5|AX     |CX     |DX      |BX     |SP      |BP      |SI      |DI     |
         ---------------------------------------------------------------------
         |PUSH   |IMUL   |PUSH    |IMUL   |INS     |INS     |OUTS    |OUTS   |
        6|b.i    |b.r/m  |w.i     |w.r/m  |b       |w       |b       |w      |
         ---------------------------------------------------------------------
         |JS     |JNS    |JP/     |JNP/   |JL/     |JNL/    |JLE/    |JNLE/  |
        7|       |       |JPE     |JPO    |JNGE    |JGE     |JNG     |JG     |
         ---------------------------------------------------------------------
         |MOV    |MOV    |MOV     |MOV    |MOV     |LEA     |MOV     |POP    |
        8|b.f.r/m|w.f.r/m|b.t.r/m |w.t.r/m|sr.f.r/m|        |sr.t.r/m|w.t.r/m|
         ---------------------------------------------------------------------
         |CBW    |CWD    |CALL    |WAIT   |PUSHF   |POPF    |SAHF    |LAHF   |
        9|       |       |l.d     |       |        |        |        |       |
         ---------------------------------------------------------------------
         |TEST   |TEST   |STOS    |STOS   |LODS    |LODS    |SCAS    |SCAS   |
        A|b,ia   |w,ia   |b       |w      |b       |w       |b       |w      |
         ---------------------------------------------------------------------
         |MOV    |MOV    |MOV     |MOV    |MOV     |MOV     |MOV     |MOV    |
        B|i AX   |i CX   |i DX    |i BX   |i SP    |i BP    |i SI    |i DI   |
         ---------------------------------------------------------------------
         |ENTER  |LEAVE  |RET     |RET    |INT     |INT     |INTO    |IRET   |
        C|       |       |l.(i+SP)|l      |Type 3  |(autres)|        |       |
         ---------------------------------------------------------------------
         |ESC    |ESC    |ESC     |ESC    |ESC     |ESC     |ESC     |ESC    |
        D|0      |1      |2       |3      |4       |5       |6       |7      |
         ---------------------------------------------------------------------
         |CALL   |JMP    |JMP     |JMP    |IN      |IN      |OUT     |OUT    |
        E|d      |d      |l.d     |si.d   |v.b     |v.w     |v.b     |v.w    |
         ---------------------------------------------------------------------
         |CLC    |STC    |CLI     |STI    |CLD     |STD     |Groupe2 |Groupe2|
        F|       |       |        |       |        |        |b.r/m   |w.r/m  |
    -------------|-------|--------|-------|--------|--------|--------|--------
         |    8       9       A        B       C        D        E        F
         |octet poids faible
    
    
    
    |--------|------|-------|-------|-------|-------|-------|-------|--------|
    |mod _r/m|000   |001    |010    |011    |100    |101    |110    |111     |
    --------------------------------------------------------------------------
    |MODE    |SLDT  |STR    |LLDT   |LTR    |VERR   |VERW   |       |        |
    |        -----------------------------------------------------------------
    |PROTEGE |SGDT  |SIDT   |LGDT   |LIDT   |SMSW   |       |LMSW   |        |
    --------------------------------------------------------------------------
    |Immediat|ADD   |OR     |ADC    |SBB    |AND    |SUB    |XOR    |CMP     |
    |        |      |       |       |       |       |       |       |        |
    --------------------------------------------------------------------------
    |Shift   |ROL   |ROR    |RCL    |RCR    |SHL/SAL|SHR    |       |SAR     |
    |        |      |       |       |       |       |       |       |        |
    --------------------------------------------------------------------------
    |Groupe 1|TEST  |       |NOT    |NEG    |MUL    |IMUL   |DIV    |IDIV    |
    |        |      |       |       |       |       |       |       |        |
    --------------------------------------------------------------------------
    |Groupe 2|INC   |DEC    |CALL   |CALL   |JMP    |JMP    |PUSH   |PUSH    |
    |        |      |       |id     |I.id   |id     |I.id   |I.id   |reg.srce|
    |--------|------|-------|-------|-------|-------|-------|-------|--------|
    b  = operation sur octet                   m   = memoire
    d  = direct                                r/m = second octet
    f  = du registre CPU                       si  = intersegment court
    i  = immediat                              sr  = registre segment
    ia = immediat vers accumulateur            t   = vers registre CPU
    id = indirect                              v   = variable
    is = octet immediat                        w   = operation sur mot
    l  = intersegment long                     z   = zero
    
    
    |------------|----|----|----|----|
    |2xOctet     | 06H| 01H| 00H| 02H|
    ----------------------------------
    |            |CTS |LGDT|LLDT|LAR |
    |INSTRUCTIONS|    |SGDT|SLDT|LSL |
    |MODE        |    |LIDT|LTR |    |
    |PROTEGE     |    |SIDT|STR |    |
    |            |    |LMSW|VERR|    |
    |            |    |SMSW|VERW|    |
    |------------|----|----|----|----|
    
    
    

    Principaux formats d'instruction (code operation sur un octet)

        1x octet     2x octet    3x octet    4x octet    5x octet
      |-----------|
     1|   opcode  |
      |-----------|
      |-----------|-----------|
     2|   opcode  |mod reg r/m|
      |-----------|-----------|
      |-----------|-----------|-----------|
     3|   opcode  |mod reg r/m|    dp8    |
      |-----------|-----------|-----------|
      |-----------|-----------|-----------|-----------|
     4|   opcode  |mod reg r/m| lsb     dp16      msb |
      |-----------|-----------|-----------|-----------|
      |-----------|-----------|-----------|
     5|   opcode  |mod reg r/m|   data8   |
      |-----------|-----------|-----------|
      |-----------|-----------|-----------|-----------|
     6|   opcode  |mod reg r/m| lsb    data16     msb |
      |-----------|-----------|-----------|-----------|
      |-----------|-----------|-----------|-----------|
     7|   opcode  |mod reg r/m|    dp8    |   data8   |
      |-----------|-----------|-----------|-----------|
      |-----------|-----------|
     8|   opcode  |   data8   |
      |-----------|-----------|
      |-----------|-----------|-----------|
     9|   opcode  | lsb    data16     msb |
      |-----------|-----------|-----------|
      |-----------|-----------|-----------|
    10|   opcode  | lsb      dp16     msb |
      |-----------|-----------|-----------|
      |-----------|-----------|-----------|-----------|-----------|
    11|   opcode  | lsb      dp16     msb | lsb     seg16     msb |
      |-----------|-----------|-----------|-----------|-----------|
    
    Format type d'une instruction
    |---------------|---------------|---------|---------|---------|---------|
    |    1xoctet    |    2xoctet    | 3xoctet | 4xoctet | 5xoctet | 6xoctet |
    --|-|-|-|-|-|-|---|-|-|-|-|-|-|------------------------------------------
    |7|6|5|4|3|2|1|0|7|6|5|4|3|2|1|0|         |         |         |         |
    --|-|-|-|-|-------|---|-|---|-|--         |         |         |         |
    |   opcode  |d|w|mod| reg | r/m |         |         |         |         |
    |-----------|-|-|---|-----|-----|---------|---------|---------|---------|
    dp8    = deplacement sur 8 bits        mod    = mode d'adressage
    selectionne
    dp16   = deplacement sur 16 bits       reg    = indique un registre
    data8  = deplacement sur 8 bits        r/m    = indique le mode de calcul
    de
    data16 = deplacement sur 16 bits                l'adresse (en fonction de
    mod)
    seg16  = segment sur 16 bits           msb    = poids forts
    d      = sens de l'operation par       lsb    = poids faibles
             rapport au registre "reg"     w      = operation sur un octet (0)
             0 : reg est la source                  ou un mot (1)
             1 : reg est le resultat
    
    
    

    MODE DE CALCUL DE L'ADRESSE EFFECTIVE AE

    |---|----------------------------------------------------------|
    |   |                            mod                           |
    |   ---------------|--------------|--------------|--------------
    |r/m|      00      |      01      |      10      |      11     |
    |   |              |              |              -------|-------
    |   |              |              |              |  w=0 |  w=1 |
    ----------------------------------------------------------------
    |000|   (BX)+(SI)  | (BX)+(SI)+dp8|(BX)+(SI)+dp16|  AL  |  AX  |
    ----------------------------------------------------------------
    |001|   (BX)+(DI)  | (BX)+(DI)+dp8|(BX)+(DI)+dp16|  CL  |  CX  |
    ----------------------------------------------------------------
    |010|   (BP)+(SI)  | (BP)+(SI)+dp8|(BP)+(SI)+dp16|  DL  |  DX  |
    ----------------------------------------------------------------
    |011|   (BX)+(DI)  | (BX)+(DI)+dp8|(BX)+(DI)+dp16|  BL  |  BX  |
    ----------------------------------------------------------------
    |100|   (SI) (**)  |   (SI)+dp8   |   (SI)+dp16  |  AH  |  SP  |
    ----------------------------------------------------------------
    |101|   (DI) (**)  |   (DI)+dp8   |   (DI)+dp16  |  CH  |  BP  |
    ----------------------------------------------------------------
    |110|   dp16 (*)   |   (BP)+dp8   |   (BP)+dp16  |  DH  |  SI  |
    ----------------------------------------------------------------
    |111|   (BX) (**)  |   (BX)+dp8   |   (BX)+dp16  |  BH  |  DI  |
    |---|--------------|--------------|--------------|------|------|
    
    
    
    ---------------------------------------------------------------------------
    AAA  |Pas d'operande.                                            |x...xxmxm
         |Corrige resultat addition 2 chiffres ASCII en un nombre BCD|
         |Exemple : ADD AL,37H avec AX=0034H donne AX=006BH          |
         |          AAA donne AX=0101H (soit 7+4=11 en decimal)      |
    ---------------------------------------------------------------------------
    AAD  |Pas d'operande.                                            |x...mmxmx
         |Ajustement ASCII pour division.                            |
         |Converti 1 nombre decimal ASCII contenu dans AX en 1 nombre|
         |nombre binaire equivalent dans AX                          |
         |Exemple : AL = 33H et AH = 35H donne AL = 23H et AH = 00H  |
    ---------------------------------------------------------------------------
    AAM  |Pas d'operande.                                            |x...mmxmx
         |Ajustement ASCII pour multiplication                       |
         |Corrige le resultat binaire d'une multiplication en 2 nombr|
         |ASCII en un nombre decimal BCD                             |
         |Exemple : MUL AL,BL avec AL=37H et BL=39H donne AX=0C3FH   |
         |          AAM donne AX=0603H (soit 7x9=63 en decimal)      |
    ---------------------------------------------------------------------------
    AAS  |Pas d'operande.                                            |x...xxmxm
         |Ajustement ASCII pour soustraction.                        |
         |Corrige le resultat d'une soustraction de 2 nombres ASCIIen|
         |un nombre binaire                                          |
         |Exemple : SUB AL,37H avec AL=3334H donne AX=33FDH          |
         |          AAM donne AX=3207H (soit 34-7=27 en decimal)     |
    ---------------------------------------------------------------------------
    ADC  |Destination, source                                        |m...mmmmm
         |Addition avec retenue                                      |
    ---------------------------------------------------------------------------
    ADD  |Destination, source                                        |m...mmmmm
         |Addition sans retenue                                      |
    ---------------------------------------------------------------------------
    AND  |Destination, source                                        |0...mmxm0
         |ET logique entre 2 operandes                               |
    ---------------------------------------------------------------------------
    ARPL |Destination, source  (uniquement en mode protege)          |.....m...
         |Ajustement du champ RPL d'un selecteur(ExINT06H mode reel) |
    ---------------------------------------------------------------------------
    BOUND|Destination, source                                        |.........
         |Test d'un registre entre 2 limites                         |
    ---------------------------------------------------------------------------
    CALL |Destination                                                |.........
         |Execution d'un sous-programme avec retour sur RET          |
    ---------------------------------------------------------------------------
    CBW  |Pas d'operande                                             |.........
         |Conversion d'un octet signe en un mot                      |
    ---------------------------------------------------------------------------
    CLC  |Pas d'operande                                             |........0
         |Effacement de la retenue CF                                |
    ---------------------------------------------------------------------------
    CLD  |Pas d'operande                                             |0........
         |Increment. automatique des operations de chaine (DF mis a0)|
    ---------------------------------------------------------------------------
    CLI  |Pas d'operande                                             |..0......
         |Suppression des interruptions externes (IF force a 0)      |
    ---------------------------------------------------------------------------
    CLTS |Pas d'operande                                             |.........
         |Mise a 0 de l'indicateur TS du registre d'etat machine MSW |
    ---------------------------------------------------------------------------
    CMC  |Pas d'operande                                             |........m
         |Inversion de l'indicateur CF                               |
    ---------------------------------------------------------------------------
    CMP  |Destination, source                                        |m...mmmmm
         |Comparaison de 2 operandes                                 |
    ---------------------------------------------------------------------------
    CMPS |Destination, source                                        |m...mmmmm
         |Compare 2 operandes dans chaines + incrementation SI et DI |
    ---------------------------------------------------------------------------
    CWD  |Pas d'operande                                             |.........
         |Conversion mot signe dans AX en double mot etendu dans DX  |
    ---------------------------------------------------------------------------
    DAA  |Pas d'operande                                             |x...mmmmm
         |Ajuste en BCD le resultat AL d'une addition 2 nombres BCD  |
    ---------------------------------------------------------------------------
    DAS  |Pas d'operande                                             |x...mmmmm
         |Ajuste en BCD le resultat AL d'une soustrac. 2 nombres BCD |
    ---------------------------------------------------------------------------
    DEC  |Destination                                                |m...mmmmm
         |Decrementation de 1 de l'operande destination              |
    ---------------------------------------------------------------------------
    DIV  |Source                                                     |x...xxxxx
         |Division non signee                                        |
    ---------------------------------------------------------------------------
    ENTER|Nombre d'octet, niveau d'imbrication (0 a 31)              |.........
         |Allocation memoire pile pour passage de parametres         |
    ---------------------------------------------------------------------------
    ESC  |Operande externe, adresse                                  |.........
         |Transmission d'une instruction a un coprocesseur           |
    ---------------------------------------------------------------------------
    HLT  |Pas d'operande                                             |.........
         |Arret 80286; reactive par interruption INT(non masquee),NMI|
    ---------------------------------------------------------------------------
    IDIV |Source                                                     |x...xxxxx
         |Division Accu/source, AL ou AX = quotient, AH ou DX = reste|
    ---------------------------------------------------------------------------
    IMUL |Source                                                     |m...xxxxm
         |Multiplication AL * Source = AX ou AX * Source = DX:AX     |
    ---------------------------------------------------------------------------
    IN   |Source                                                     |.........
         |Lecture du port d'E/S source mis dans accumulateur         |
    ---------------------------------------------------------------------------
    INC  |Destination                                                |m...mmmm.
         |Incrementation de 1 de l'operande destination              |
    ---------------------------------------------------------------------------
    INS  |Pas d'operande                                             |.........
         |Entree d'une chaine du port DX vers la memoire ES:DI       |
         |+ decrement (DF=1) ou incremente(DF=0)de1(INSB)ou2(INSW)   |
    ---------------------------------------------------------------------------
    INT  |Type d'interruption (0 a 255)                              |..00.....
         |Interruption logicielle                                    |
    ---------------------------------------------------------------------------
    INTO |Pas d'operande                                             |..m0.....
         |Validation d'interrupt sur overflow OF=1(corresp a INT04H) |
    ---------------------------------------------------------------------------
    IRET |Pas d'operande                                             |mmmmmmmmm
         |Retour d'interruption avec restitution IP,CS et FLAGS      |
    ---------------------------------------------------------------------------
    JMP  |Destination                                                |.........
         |Saut inconditionnel (si non commut tache,FLAGS conserve)   |mmmmmmmmm
    
    
    ---------------------------------------------------------------------------
    Jcond|Deplacement 8 bits                                         |.........
         |Saut conditionnel a l'adresse IP + deplacement             |
         |JA/JNBE Si superieur et non egal  non signe (CFet ZF = 0)  |
         |JAE/JNB Si superieur ou egal      non signe (CF=0)         |
         |JB/JNAE Si inferieur et non egal  non signe (CF=1)         |
         |JBE/JNA Si inferieur ou egal      non signe (CF=1 ou ZF=1) |
         |JC      Si retenue (idd JB/JNAE)  non signe (CF=1)         |
         |JCXZ    Si CX = 0                                          |
         |JE/JZ   Si egal                   non signe (ZF=1)         |
         |JG/JNLE Si superieur et non egal  signe     (SF=OF et ZF=0)|
         |JGE/JNL Si superieur ou egal      signe     (SF=OF)        |
         |JL/JNGE Si inferieur et non egal  signe     (SF><OF)       |
         |JLE/JNG Si inferieur ou egal      signe     (SF><OF ouZF=1)|
         |JNC     Si pas de retenue         non signe (CF= 0)        |
         |JNE/JNZ Si non egal               non signe (ZF= 0)        |
         |JNO     Si pas de debordement     signe     (OF= 0)        |
         |JNS     Si positif                signe     (SF= 0)        |
         |JNP/JPO Si parite impaire         non signe (PF= 0)        |
         |JO      Si debordement            signe     (OF= 1)        |
         |JP/JPE  Si parite paire           non signe (PF= 1)        |
         |JS      Si negatif                signe     (SF=1)         |
    ---------------------------------------------------------------------------
    LAHF |Pas d'operande                                             |.........
         |Chargement des flags dans AH.(AH=SF,ZF,x,AF,x,PF,x,CF)     |
    ---------------------------------------------------------------------------
    LAR  |Destination, source  (en mode protege uniquement)          |.....1...
         |Chargement octet de droit d'acces. (Except INT06H en reel) |
    ---------------------------------------------------------------------------
    LDS  |Destination, source                                        |.........
    LES  |Chargement pointeur 32 bits dans DS/ES suivant instruct.   |
    ---------------------------------------------------------------------------
    LEA  |Destination, source                                        |.........
         |Chargement registre avec adresse effective                 |
    ---------------------------------------------------------------------------
    LEAVE|Pas d'operande                                             |.........
         |Desallocation memoire en pile  (inverse de ENTER)          |
    ---------------------------------------------------------------------------
    LGDT |Source                                                     |.........
    LIDT |Chargement des registres GDTR/IDTR suivant instruction     |
    ---------------------------------------------------------------------------
    LLDT |Source           (uniquement en mode protege)              |.........
         |Chargement de LDTR   (Exception INT06H en mode reel)       |
    ---------------------------------------------------------------------------
    LMSW |Source                                                     |.........
         |Chargement d'un mot d'etat machine                         |
    ---------------------------------------------------------------------------
    LOCK |Pas d'operande                                             |.........
         |Prefixe d'activation du signal LOCK* pour verrouillage     |
         |acces externes aux bus durant l'instruction suivante       |
    ---------------------------------------------------------------------------
    LODS |Source                                                     |.........
         |Chargement chaine caracteres dans AX ou AL + SI decremente |
         |(DF=1) ou incremente (DF=0) de 1 (LODSB) ou 2 (LODSW)      |
    ---------------------------------------------------------------------------
    LOOP |Deplacement                                                |.........
         |Saut incond. a IP+deplacement tant que CX <>0 +CX=CX-1     |
    ---------------------------------------------------------------------------
    LOOPx|Deplacement                                                |.........
         |Saut cond a IP+deplacement tant que CX <>0 + CX=CX-1       |
         |LOOPE/LOOPZ     et si ZF=1                                 |
         |LOOPNE/LOOPNZ   et si ZF=0                                 |
    ---------------------------------------------------------------------------
    LSL  |Destination, source (uniquement mode protege,INT06H sinon) |.....m...
         |Chargement de la limite d'un segment dans un registre      |
    ---------------------------------------------------------------------------
    LTR  |Source                                                     |.........
         |Chargement du registre de tache                            |
    ---------------------------------------------------------------------------
    MOV  |Destination, source                                        |.........
         |Transfert de donnees                                       |
    ---------------------------------------------------------------------------
    MOVS |Chaine destination, chaine source                          |.........
         |Transfert de donne + SI et DI incrementes (DF=0) ou        |
         |decrementes de 1 (MOVSB) ou de 2 (MOVSW)                   |
    ---------------------------------------------------------------------------
    MUL  |Source                                                     |m...xxxxm
         |Multiplication non signee AL*operande=AX                   |
         |                       ou AX*operande=DX:AX                |
    ---------------------------------------------------------------------------
    NEG  |Destination                                                |m...mmmmm
         |Complement a 2                                             |
    ---------------------------------------------------------------------------
    NOP  |Pas d'operande                                             |.........
         |Pas d'operation (3 cycles machine, code op sur 1octet)     |
    ---------------------------------------------------------------------------
    NOT  |Destination                                                |.........
         |Operation logique NON (inverse tous les bits)              |
    ---------------------------------------------------------------------------
    OR   |Destination, source                                        |0...mmxm0
         |Operat. logique OU inclusif Destination=Destination ou src |
    ---------------------------------------------------------------------------
    OUT  |Source                                                     |.........
         |Ecriture port d'E/S source avec la donnee dans accumulateur|
    ---------------------------------------------------------------------------
    OUTS |Pas d'operande                                             |.........
         |Sortie chaine port DX vers la memoire ES:DI + decrement    |
         |(DF=1) ou increment (DF=0) de 1 (OUTSB) ou 2 (OUTSW)       |
    ---------------------------------------------------------------------------
    POP  |Destination                                                |.........
         |Restitution d'un mot par la pile a l'adresse destination   |
    ---------------------------------------------------------------------------
    POP* |Pas d'operande                                             |.........
         |Restitution registre (DS,ES ou SS) par pile; (SP)=(SP)+2   |
    ---------------------------------------------------------------------------
    POPA |Pas d'operande                                             |.........
         |Restitut. registres DI,SI,BP,SP,BX,DX,CX,AX; (SP)=(SP)+16  |
    ---------------------------------------------------------------------------
    POPF |Pas d'operande                                             |mmmmmmmmm
         |Restitution du registre des indicateurs FLAGS; (SP)=(SP)+2 |
    ---------------------------------------------------------------------------
    PUSH |Source                                                     |.........
         |Sauvegarde d'un mot a l'adresse source dans la pile        |
    ---------------------------------------------------------------------------
    PUSH*|Pas d'operande                                             |.........
         |Sauvegarde 1 registre (DS,ES ou SS) dans pile; (SP)=(SP)-2 |
    ---------------------------------------------------------------------------
    PUSHA|Pas d'operande                                             |.........
         |Sauvegarde DI,SI,BP,SP,BX,DX,CX,AX dans pile; (SP)=(SP)-16 |
    ---------------------------------------------------------------------------
    PUSHF|Pas d'operande                                             |.........
         |Sauvegarde des indicateurs FLAGS dans la pile; (SP)=(SP)-2 |
    
    
    ---------------------------------------------------------------------------
    RCL  |Destination, compteur (ou CL)                              |m.......m
         |Rotation gauche de donnee destination;n bits avec retenue  |
    ---------------------------------------------------------------------------
    RCR  |Destination, compteur (ou CL)                              |m.......m
         |Rotation droite de donnee destination ; n bits avec retenu |
    ---------------------------------------------------------------------------
    REP  |Prefixe pour repeter instruction suivante tant que CX><0   |.........
    ---------------------------------------------------------------------------
    REP* |Prefixe repetition condition. instruction tant que CX><0   |
         |REPNE/REPNZ  et non zero ou non egal (ZF=0)                |.........
         |REPE/REPZ    et zero ou egal (ZF=1)                        |.........
    ---------------------------------------------------------------------------
    RET  |Valeur de depilement facultative                           |.........
         |Retour de sous-programme avec passage parametres eventuel  |
    ---------------------------------------------------------------------------
    ROL  |Destination, compteur (ou CL)                              |m.......m
         |Rotation gauche de donnee destination ;n bits sans retenue |
    ---------------------------------------------------------------------------
    RCR  |Destination, compteur (ou CL)                              |m.......m
         |Rotation droite de donnee destination ;n bits sans retenue |
    ---------------------------------------------------------------------------
    SAHF |Pas d'operande                                             |....mmmmm
         |Transfert de AH dans FLAGS (b0=CF,b2=PF,b4=AF,b6=ZF,b7=SF) |
    ---------------------------------------------------------------------------
    SAL  |Destination, compteur (ou CL)                              |m...mmxmm
         |Decalage gauche de donnee destination; n bits avec retenue |
    ---------------------------------------------------------------------------
    SAR  |Destination, compteur (ou CL)                              |m...mmxmm
         |Decalage droite signe donnee destination; n bits avec reten|
    ---------------------------------------------------------------------------
    SBB  |Destination, source                                        |m...mmmmm
         |Soustraction avec retenue; (dest)=(dest)-(srce)-(CF)       |
    ---------------------------------------------------------------------------
    SCAS |Pas d'operande                                             |m...mmmmm
         |Comparaison donnee (accu) a une chaine de donnees pointee  |
         |par ES:DI ; (DI)=(DI)-1 si DF=1 ou (DI)=(DI)+1 si DF=0     |
         |de 1 (SCASB) ou 2 (SCASW)                                  |
    ---------------------------------------------------------------------------
    SGDT |Destination                                                |.........
    SIDT |Memorisation registre GDTR ou IDTR a l'adresse destination |
    ---------------------------------------------------------------------------
    SHR  |Destination                                                |m...mmxmm
         |Decalage a gauche non signe de la donnee destination;n bits|
         |avec retenue                                               |
    ---------------------------------------------------------------------------
    SLDT |Destination                                                |.........
         |Stockage de LDTR dans un registre ou en memoire            |
    ---------------------------------------------------------------------------
    SMSW |Destination                                                |.........
         |Stockage de MSW dans un registre ou en memoire             |
    ---------------------------------------------------------------------------
    STC  |Pas d'operande                                             |........1
         |Positionnement de la retenue CF=1                          |
    ---------------------------------------------------------------------------
    STD  |Pas d'operande                                             |.1.......
         |Positionnement de l'indicateur de direction DF=1           |
    ---------------------------------------------------------------------------
    STI  |Pas d'operande                                             |..1......
         |Positionnement indicateur autorisation d'interruption IF=1 |
    ---------------------------------------------------------------------------
    STOS |Destination                                                |.........
         |Stockage donnee (accu) dans une chaine de donnees pointee  |
         |par ES:DI ; (DI)=(DI)-1 si DF=1 ou (DI)=(DI)+1 si DF=0     |
         |de 1 (STOSB) ou 2 (STOSW)                                  |
    ---------------------------------------------------------------------------
    STR  |Destination (uniquement mode protege,sinon except.INT06H)  |.........
         |Stockage du registre TR dans un registre ou en memoire     |
    ---------------------------------------------------------------------------
    SUB  |Destination, source                                        |m...mmmmm
         |Soustraction sans retenue; (dest)=(dest)-(srce)            |
    ---------------------------------------------------------------------------
    TEST |Destination, source                                        |0...mmxm0
         |ET logique entre destination et source                     |
    ---------------------------------------------------------------------------
    VERR |Source (uniquement en mode protege,sinon except. INT06H)   |.....m...
    VERW |Test segment en lecture ou ecriture: accessible = ZF a 1   |
    ---------------------------------------------------------------------------
    WAIT |Pas d'operande                                             |.........
         |Met le 80286 en attente tant que la ligne BUSY* est active |
    ---------------------------------------------------------------------------
    XCHG |Destination, source                                        |.........
         |Echange contenu registre destination avec celui d'une srce |
         |Le signal LOCK est active durant l'echange                 |
    ---------------------------------------------------------------------------
    XLAT |Destination, source                                        |.........
         |Traduction de table: (AL)=(BX+DS:AL)                       |
    ---------------------------------------------------------------------------
    XOR  |Destination, source                                        |0...mmxm0
         |Ou exclusif : (dest)=(dest)XOR(srce)                       |
    ---------------------------------------------------------------------------
         |                                                           |ODITSZAPC
    
    
    src = source
    dest= destination
    m   = modifie par l'instruction en fonction du resultat
    x   = indefini apres execution de l'instruction
    .   = non affecte
    
    
    O   = Overflow flag
    D   = Direction flag
    I   = Interrupt enable flag
    T   = Trap flag
    S   = Sign flag
    Z   = Zero flag
    A   = Auxiliary flag
    P   = Parity flag
    C   = Carry flag
    
    
    |------------------|--------------||------------------|--------------|
    | Mnemonique       |  Code        || Mnemonique       |  Code        |
    ----------------------------------------------------------------------
    |AAA               |37            ||CMP AX,XXYY       |3D YY XX      |
    |AAD               |D5 0A         ||CMPS              |A6            |
    |AAM               |D4 0A         ||CMPS              |A7            |
    |AAS               |3F            ||CS:               |2E            |
    |ADC [BX+SI],AL    |10 00         ||CWD               |99            |
    |ADC [BX+SI],AX    |11 00         ||DAA               |27            |
    |ADC AL,[BX+SI]    |12 00         ||DAS               |2F            |
    |ADC AX,[BX+SI]    |13 00         ||DECB [BX+SI]      |FE 08         |
    |ADC [BX+SI],XX    |80 10 XX      ||DECW [BX+SI]      |FF 08         |
    |ADC [BX+SI],XXYY  |81 10 YY XX   ||DEC AX            |48            |
    |ADC [BX+SI],+XX   |83 10 XX      ||DEC CX            |49            |
    |ADC AL,XX         |14 XX         ||DEC DX            |4A            |
    |ADC AX,XXYY       |15 YY XX      ||DEC BX            |4B            |
    |ADD [BX+SI],AL    |00 00         ||DEC SP            |4C            |
    |ADD [BX+SI],AX    |01 00         ||DEC BP            |4D            |
    |ADD AL,[BX+SI]    |02 00         ||DEC SI            |4E            |
    |ADD AX,[BX+SI]    |03 00         ||DEC DI            |4F            |
    |ADD [BX+SI],XX    |80 00 XX      ||DIVB [BX+SI]      |F6 30         |
    |ADD [BX+SI],XXYY  |81 00 YY XX   ||DIVW [BX+SI]      |F7 30         |
    |ADD [BX+SI],+XX   |83 00 XX      ||DS:               |3E            |
    |ADD AL,XX         |04 XX         ||ENTER XXYYZZ      |C8 ZZ YY XX   |
    |ADD AX,XXYY       |05 YY XX      ||ES:               |26            |
    |AND [BX+SI],AL    |20 00         ||ESC               |              |
    |AND [BX+SI],AX    |21 00         ||HLT               |F4            |
    |AND AL,[BX+SI]    |22 00         ||IDVB [BX+SI]      |F6 38         |
    |AND AX,[BX+SI]    |23 00         ||IDVW [BX+SI]      |F7 38         |
    |AND [BX+SI],XX    |80 40 XX      ||IMULB [BX+SI]     |F6 28         |
    |AND [BX+SI],XXYY  |81 40 YY XX   ||IMULW [BX+SI]     |F7 28         |
    |AND [BX+SI],+XX   |83 40 XX      ||IN AL,XX          |E4 XX         |
    |AND AL,XX         |24 XX         ||IN AL,XXYY        |E5 YY XX      |
    |AND AX,XXYY       |25 YY XX      ||IN AL,DX          |EC            |
    |ARPL AX,[BX+SI]   |63 00         ||IN AX,DX          |ED            |
    |BOUND AX,[BX+SI]  |62 00         ||INC AX            |40            |
    |CALL XXYY         |E8 YY XX      ||INC CX            |41            |
    |CALL [BX+SI]      |FF 10         ||INC DX            |42            |
    |CALL [BX+SI] (F)  |FF 18         ||INC BX            |43            |
    |CALL XXYY VVWW    |9A YY XX WW VV||INC SP            |44            |
    |CBW               |98            ||INC BP            |45            |
    |CLC               |F8            ||INC SI            |46            |
    |CLD               |FC            ||INC DI            |47            |
    |CLI               |FA            ||INT 3             |CC            |
    |CLTS              |0F 06         ||INT XX            |CD XX         |
    |CMC               |F5            ||INTO              |CE            |
    |CMP [BX+SI],AL    |38 00         ||IRET              |CF            |
    |CMP [BX+SI],AX    |39 00         ||JA XX             |77 XX         |
    |CMP AL,[BX+SI]    |3A 00         ||JAE XX            |73 XX         |
    |CMP AX,[BX+SI]    |3B 00         ||JB XX             |72 XX         |
    |CMP [BX+SI],XX    |80 38 XX      ||JBE XX            |76 XX         |
    |CMP [BX+SI],XXYY  |81 38 YY XX   ||JC XX             |72 XX         |
    |CMP [BX+SI],+XX   |83 38 XX      ||JCXZ              |E3 XX         |
    |CMP AL,XX         |3C XX         ||JE XX             |74 XX         |
    |------------------|--------------||------------------|--------------|
    
    |------------------|--------------||------------------|--------------|
    | Mnemonique       |  Code        || Mnemonique       |  Code        |
    ----------------------------------------------------------------------
    |JG XX             |7F XX         ||MOV AX,[BX+SI]    |8B 00         |
    |JGE XX            |7D XX         ||MOV [BX+SI],XX    |C6 00 XX      |
    |JL XX             |7C XX         ||MOV [BX+SI],XXYY  |C7 00 YY XX   |
    |JLE XX            |7E XX         ||MOV AL,XX         |B0 XX         |
    |JMP XXYY          |E9 YY XX      ||MOV AX,XXYY       |B8 YY XX      |
    |JMP +XX           |EB XX         ||MOV AL,[XXYY]     |A0 YY XX      |
    |JMP [BX+SI]       |FF 20         ||MOV AX,[XXYY]     |A1 YY XX      |
    |JMP [BX+SI] (F)   |FF 28         ||MOV [XXYY],AL     |A2 YY XX      |
    |JMP XXYY VVWW     |EA YY XX WW VV||MOV [XXYY],AX     |A3 YY XX      |
    |JNA XX            |76 XX         ||MOV AX,ES         |8C C0         |
    |JNAE XX           |72 XX         ||MOV ES,AX         |8E C0         |
    |JNB XX            |73 XX         ||MOVSB             |A4            |
    |JNBE XX           |77 XX         ||MOVSW             |A5            |
    |JNC XX            |73 XX         ||MUL [BX+SI] (O)   |F6 20         |
    |JNE XX            |75 XX         ||MUL [BX+SI] (M)   |F7 20         |
    |JNG XX            |7E XX         ||NEG [BX+SI] (O)   |F6 18         |
    |JNGE XX           |7C XX         ||NEG [BX+SI] (O)   |F7 18         |
    |JNL XX            |7D XX         ||NOP               |90            |
    |JNLE XX           |7F XX         ||NOT [BX+SI] (O)   |F6 10         |
    |JNO XX            |71 XX         ||NOT [BX+SI] (M)   |F7 10         |
    |JNP XX            |7B XX         ||OR [BX+SI],AL     |08 00         |
    |JNS XX            |79 XX         ||OR [BX+SI],AX     |09 00         |
    |JNZ XX            |75 XX         ||OR AL,[BX+SI]     |0A 00         |
    |JO XX             |70 XX         ||OR AX,[BX+SI]     |0B 00         |
    |JP XX             |7A XX         ||OR [BX+SI],XX     |80 08 XX      |
    |JPE XX            |7A XX         ||OR [BX+SI],XXYY   |81 08 YY XX   |
    |JPO XX            |7B XX         ||OR AL,XX          |0C XX         |
    |JS XX             |78 XX         ||OR AX,XXYY        |0D YY XX      |
    |JZ XX             |74 XX         ||OUT XX,AL         |E6            |
    |LAHF              |9F            ||OUT XXYY,AL       |E7            |
    |LAR AX,[BX+SI]    |0F 02 00      ||OUT DX,AL         |EE            |
    |LDS AX,[BX+SI]    |C5 00         ||OUT DX,AX         |EF            |
    |LEA AX,[BX+SI]    |8D 00         ||POP [BX+SI]       |8F 00         |
    |LES AX,[BX+SI]    |C4 00         ||POPA              |61            |
    |LGDT [BX+SI]      |0F 01 10      ||POPF              |9D            |
    |LIDT [BX+SI]      |0F 01 18      ||POP AX            |58            |
    |LLDT [BX+SI]      |0F 00 10      ||POP BP            |5D            |
    |LMSW [BX+SI]      |0F 01 30      ||POP BX            |5B            |
    |LOCK              |F0            ||POP CX            |59            |
    |LODS (M)          |AC            ||POP DI            |5F            |
    |LODS (O)          |AD            ||POP DS            |1F            |
    |LOOP XX           |E2 XX         ||POP DX            |5A            |
    |LOOPE XX          |E1 XX         ||POP ES            |07            |
    |LOOPZ XX          |E1 XX         ||POP SI            |5E            |
    |LOOPNZ XX         |E0 XX         ||POP SP            |5C            |
    |LOOPNE XX         |E2 XX         ||POP SS            |17            |
    |LSL AX,[BX+SI]    |0F 03 00      ||PUSH [BX+SI]      |FF 30         |
    |LTR [BX+SI]       |0F 00 18      ||PUSHB XX          |68 XX         |
    |MOV [BX+SI],AL    |88 00         ||PUSHW XXYY        |6A YY XX      |
    |MOV [BX+SI],AX    |89 00         ||PUSHA             |60            |
    |MOV AL,[BX+SI]    |8A 00         ||PUSHF             |9C            |
    |------------------|--------------||------------------|--------------|
    
    
    
    |------------------|--------------||------------------|--------------|
    | Mnemonique       |  Code        || Mnemonique       |  Code        |
    ----------------------------------------------------------------------
    |PUSH AX           |50            ||SCAS (O)          |AE            |
    |PUSH BP           |55            ||SCAS (M)          |AF            |
    |PUSH BX           |53            ||SGDT [BX+SI]      |0F 01 00      |
    |PUSH CS           |0E            ||SHL [BX+SI],1 (O) |D0 20         |
    |PUSH CX           |51            ||SHL [BX+SI],1 (M) |D1 20         |
    |PUSH DI           |57            ||SHL [BX+SI],CL (O)|D2 20         |
    |PUSH DS           |1E            ||SHL [BX+SI],CL (M)|D3 20         |
    |PUSH DX           |52            ||SHR [BX+SI],1 (O) |D0 28         |
    |PUSH ES           |06            ||SHR [BX+SI],1 (M) |D1 28         |
    |PUSH SI           |56            ||SHR [BX+SI],CL (O)|D2 28         |
    |PUSH SP           |54            ||SHR [BX+SI],CL (M)|D3 28         |
    |PUSH SS           |16            ||SIDT [BX+SI]      |0F 01 08      |
    |RCL [BX+SI],1 (O) |D0 10         ||SLDT[BX+SI]       |0F 00 00      |
    |RCL [BX+SI],1 (M) |D1 10         ||SMSW [BX+SI]      |0F 01 20      |
    |RCL [BX+SI],CL (O)|D2 10         ||SS:               |36            |
    |RCL [BX+SI],CL (M)|D3 10         ||STC               |F9            |
    |RCR [BX+SI],1 (O) |D0 18         ||STD               |FD            |
    |RCR [BX+SI],1 (M) |D1 18         ||STI               |FB            |
    |RCR [BX+SI],CL (O)|D2 18         ||STOS (O)          |AA            |
    |RCR [BX+SI],CL (M)|D3 18         ||STOS (M)          |AB            |
    |REP               |F3            ||STR [BX+SI]       |0F 00 08      |
    |REPE              |F3            ||SUB [BX+SI],AL    |28 00         |
    |REPNE             |F2            ||SUB [BX+SI],AX    |29 00         |
    |REPNZ             |F2            ||SUB AL,[BX+SI]    |2A 00         |
    |REPZ              |F3            ||SUB AX,[BX+SI]    |2B 00         |
    |RET               |C3            ||SUB [BX+SI],XX    |80 28 XX      |
    |RET XXYY          |C2 YY XX      ||SUB [BX+SI],XXYY  |81 28 YY XX   |
    |RET (F)           |CB            ||SUB [BX+SI],+XX   |83 28 XX      |
    |RET XXYY (F)      |CA YY XX      ||SUB AL,XX         |2C XX         |
    |ROL [BX+SI],1 (O) |D0 00         ||SUB AX,XXYY       |2D YY XX      |
    |ROL [BX+SI],1 (M) |D1 00         ||TEST [BX+SI],AL   |84 00         |
    |ROL [BX+SI],CL (O)|D2 00         ||TEST [BX+SI],AX   |85 00         |
    |ROL [BX+SI],CL (M)|D3 00         ||TEST [BX+SI],XX   |F6 00 XX      |
    |ROR [BX+SI],1 (O) |D0 08         ||TEST [BX+SI],XXYY |F7 00 YY XX   |
    |ROR [BX+SI],1 (M) |D1 08         ||TEST AL,XX        |A8 XX         |
    |ROR [BX+SI],CL (O)|D2 08         ||TEST AX,XXYY      |A9 YY XX      |
    |ROR [BX+SI],CL (M)|D3 08         ||VERR [BX+SI]      |0F 00 20      |
    |SAHF              |9E            ||VERW [BX+SI]      |0F 00 28      |
    |SAR [BX+SI],1 (O) |D0 38         ||WAIT              |9B            |
    |SAR [BX+SI],1 (M) |D1 38         ||XCHG [BX+SI],AL   |86 00         |
    |SAR [BX+SI],CL (O)|D2 38         ||XCHG [BX+SI],AX   |87 00         |
    |SAR [BX+SI],CL (M)|D3 38         ||XCHG CX,AX        |91            |
    |SBB [BX+SI],AL    |18 00         ||XCHG DX,AX        |92            |
    |SBB [BX+SI],AX    |19 00         ||XCHG BX,AX        |93            |
    |SBB AL,[BX+SI]    |1A 00         ||XCHG SP,AX        |94            |
    |SBB AX,[BX+SI]    |1B 00         ||XCHG BP,AX        |95            |
    |SBB [BX+SI],XX    |80 18 XX      ||XCHG SI,AX        |96            |
    |SBB [BX+SI],XXYY  |81 18 YY XX   ||XCHG DI,AX        |97            |
    |SBB [BX+SI],+XX   |83 18 XX      ||XLAT              |D7            |
    |SBB AL,XX         |1C XX         ||XOR [BX+SI],AL    |30 00         |
    |SBB AX,XXYY       |1D YY XX      ||XOR [BX+SI],AX    |31 00         |
    |------------------|--------------||------------------|--------------|
    
    |------------------|--------------|
    | Mnemonique       |  Code        |
    -----------------------------------
    |XOR AL,[BX+SI]    |32 00         |
    |XOR AX,[BX+SI]    |33 00         |
    |XOR [BX+SI],XX    |80 30 XX      |
    |XOR [BX+SI],XXYY  |81 30 YY XX   |
    |XOR AL,XX         |34 XX         |
    |XOR AX,XXYY       |35 YY XX      |
    |------------------|--------------|
    (O) = operation sur un octet
    (M) = operation sur un mot
    
    
    
    |--------------|------------------||--------------|------------------|
    |  Code        | Mnemonique       ||  Code        | Mnemonique       |
    ----------------------------------------------------------------------
    |              |ESC               ||24 XX         |AND AL,XX         |
    |00 00         |ADD [BX+SI],AL    ||25 YY XX      |AND AX,XXYY       |
    |01 00         |ADD [BX+SI],AX    ||26            |ES:               |
    |02 00         |ADD AL,[BX+SI]    ||27            |DAA               |
    |03 00         |ADD AX,[BX+SI]    ||28 00         |SUB [BX+SI],AL    |
    |04 XX         |ADD AL,XX         ||29 00         |SUB [BX+SI],AX    |
    |05 YY XX      |ADD AX,XXYY       ||2A 00         |SUB AL,[BX+SI]    |
    |06            |PUSH ES           ||2B 00         |SUB AX,[BX+SI]    |
    |07            |POP ES            ||2C XX         |SUB AL,XX         |
    |08 00         |OR [BX+SI],AL     ||2D YY XX      |SUB AX,XXYY       |
    |09 00         |OR [BX+SI],AX     ||2E            |CS:               |
    |0A 00         |OR AL,[BX+SI]     ||2F            |DAS               |
    |0B 00         |OR AX,[BX+SI]     ||30 00         |XOR [BX+SI],AL    |
    |0C XX         |OR AL,XX          ||31 00         |XOR [BX+SI],AX    |
    |0D YY XX      |OR AX,XXYY        ||32 00         |XOR AL,[BX+SI]    |
    |0E            |PUSH CS           ||33 00         |XOR AX,[BX+SI]    |
    |0F 00 00      |SLDT[BX+SI]       ||34 XX         |XOR AL,XX         |
    |0F 00 08      |STR [BX+SI]       ||35 YY XX      |XOR AX,XXYY       |
    |0F 00 10      |LLDT [BX+SI]      ||36            |SS:               |
    |0F 00 18      |LTR [BX+SI]       ||37            |AAA               |
    |0F 00 20      |VERR [BX+SI]      ||38 00         |CMP [BX+SI],AL    |
    |0F 00 28      |VERW [BX+SI]      ||39 00         |CMP [BX+SI],AX    |
    |0F 01 00      |SGDT [BX+SI]      ||3A 00         |CMP AL,[BX+SI]    |
    |0F 01 08      |SIDT [BX+SI]      ||3B 00         |CMP AX,[BX+SI]    |
    |0F 01 10      |LGDT [BX+SI]      ||3C XX         |CMP AL,XX         |
    |0F 01 18      |LIDT [BX+SI]      ||3D YY XX      |CMP AX,XXYY       |
    |0F 01 20      |SMSW [BX+SI]      ||3E            |DS:               |
    |0F 01 30      |LMSW [BX+SI]      ||3F            |AAS               |
    |0F 02 00      |LAR AX,[BX+SI]    ||40            |INC AX            |
    |0F 03 00      |LSL AX,[BX+SI]    ||41            |INC CX            |
    |0F 06         |CLTS              ||42            |INC DX            |
    |10 00         |ADC [BX+SI],AL    ||43            |INC BX            |
    |11 00         |ADC [BX+SI],AX    ||44            |INC SP            |
    |12 00         |ADC AL,[BX+SI]    ||45            |INC BP            |
    |13 00         |ADC AX,[BX+SI]    ||46            |INC SI            |
    |14 XX         |ADC AL,XX         ||47            |INC DI            |
    |15 YY XX      |ADC AX,XXYY       ||48            |DEC AX            |
    |16            |PUSH SS           ||49            |DEC CX            |
    |17            |POP SS            ||4A            |DEC DX            |
    |18 00         |SBB [BX+SI],AL    ||4B            |DEC BX            |
    |19 00         |SBB [BX+SI],AX    ||4C            |DEC SP            |
    |1A 00         |SBB AL,[BX+SI]    ||4D            |DEC BP            |
    |1B 00         |SBB AX,[BX+SI]    ||4E            |DEC SI            |
    |1C XX         |SBB AL,XX         ||4F            |DEC DI            |
    |1D YY XX      |SBB AX,XXYY       ||50            |PUSH AX           |
    |1E            |PUSH DS           ||51            |PUSH CX           |
    |1F            |POP DS            ||52            |PUSH DX           |
    |20 00         |AND [BX+SI],AL    ||53            |PUSH BX           |
    |21 00         |AND [BX+SI],AX    ||54            |PUSH SP           |
    |22 00         |AND AL,[BX+SI]    ||55            |PUSH BP           |
    |23 00         |AND AX,[BX+SI]    ||56            |PUSH SI           |
    |--------------|------------------||--------------|------------------|
    
    
    |--------------|------------------||--------------|------------------|
    |  Code        | Mnemonique       ||  Code        | Mnemonique       |
    ----------------------------------------------------------------------
    |57            |PUSH DI           ||80 38 XX      |CMP [BX+SI],XX    |
    |58            |POP AX            ||80 40 XX      |AND [BX+SI],XX    |
    |59            |POP CX            ||81 00 YY XX   |ADD [BX+SI],XXYY  |
    |5A            |POP DX            ||81 08 YY XX   |OR [BX+SI],XXYY   |
    |5B            |POP BX            ||81 10 YY XX   |ADC [BX+SI],XXYY  |
    |5C            |POP SP            ||81 18 YY XX   |SBB [BX+SI],XXYY  |
    |5D            |POP BP            ||81 28 YY XX   |SUB [BX+SI],XXYY  |
    |5E            |POP SI            ||81 30 YY XX   |XOR [BX+SI],XXYY  |
    |5F            |POP DI            ||81 38 YY XX   |CMP [BX+SI],XXYY  |
    |60            |PUSHA             ||81 40 YY XX   |AND [BX+SI],XXYY  |
    |61            |POPA              ||83 00 XX      |ADD [BX+SI],+XX   |
    |62 00         |BOUND AX,[BX+SI]  ||83 10 XX      |ADC [BX+SI],+XX   |
    |63 00         |ARPL AX,[BX+SI]   ||83 18 XX      |SBB [BX+SI],+XX   |
    |68 XX         |PUSHB XX          ||83 28 XX      |SUB [BX+SI],+XX   |
    |6A YY XX      |PUSHW XXYY        ||83 38 XX      |CMP [BX+SI],+XX   |
    |70 XX         |JO XX             ||83 40 XX      |AND [BX+SI],+XX   |
    |71 XX         |JNO XX            ||84 00         |TEST [BX+SI],AL   |
    |72 XX         |JB XX             ||85 00         |TEST [BX+SI],AX   |
    |72 XX         |JC XX             ||86 00         |XCHG [BX+SI],AL   |
    |72 XX         |JNAE XX           ||87 00         |XCHG [BX+SI],AX   |
    |73 XX         |JAE XX            ||88 00         |MOV [BX+SI],AL    |
    |73 XX         |JNB XX            ||89 00         |MOV [BX+SI],AX    |
    |73 XX         |JNC XX            ||8A 00         |MOV AL,[BX+SI]    |
    |74 XX         |JE XX             ||8B 00         |MOV AX,[BX+SI]    |
    |74 XX         |JZ XX             ||8C C0         |MOV AX,ES         |
    |75 XX         |JNE XX            ||8D 00         |LEA AX,[BX+SI]    |
    |75 XX         |JNZ XX            ||8E C0         |MOV ES,AX         |
    |76 XX         |JBE XX            ||8F 00         |POP [BX+SI]       |
    |76 XX         |JNA XX            ||90            |NOP               |
    |77 XX         |JA XX             ||91            |XCHG CX,AX        |
    |77 XX         |JNBE XX           ||92            |XCHG DX,AX        |
    |78 XX         |JS XX             ||93            |XCHG BX,AX        |
    |79 XX         |JNS XX            ||94            |XCHG SP,AX        |
    |7A XX         |JP XX             ||95            |XCHG BP,AX        |
    |7A XX         |JPE XX            ||96            |XCHG SI,AX        |
    |7B XX         |JNP XX            ||97            |XCHG DI,AX        |
    |7B XX         |JPO XX            ||98            |CBW               |
    |7C XX         |JL XX             ||99            |CWD               |
    |7C XX         |JNGE XX           ||9A YY XX WW VV|CALL XXYY VVWW    |
    |7D XX         |JGE XX            ||9B            |WAIT              |
    |7D XX         |JNL XX            ||9C            |PUSHF             |
    |7E XX         |JLE XX            ||9D            |POPF              |
    |7E XX         |JNG XX            ||9E            |SAHF              |
    |7F XX         |JG XX             ||9F            |LAHF              |
    |7F XX         |JNLE XX           ||A0 YY XX      |MOV AL,[XXYY]     |
    |80 00 XX      |ADD [BX+SI],XX    ||A1 YY XX      |MOV AX,[XXYY]     |
    |80 08 XX      |OR [BX+SI],XX     ||A2 YY XX      |MOV [XXYY],AL     |
    |80 10 XX      |ADC [BX+SI],XX    ||A3 YY XX      |MOV [XXYY],AX     |
    |80 18 XX      |SBB [BX+SI],XX    ||A4            |MOVSB             |
    |80 28 XX      |SUB [BX+SI],XX    ||A5            |MOVSW             |
    |80 30 XX      |XOR [BX+SI],XX    ||A6            |CMPS              |
    |--------------|------------------||--------------|------------------|
    
    |--------------|------------------||--------------|------------------|
    |  Code        | Mnemonique       ||  Code        | Mnemonique       |
    ----------------------------------------------------------------------
    |A7            |CMPS              ||D3 38         |SAR [BX+SI],CL (M)|
    |A8 XX         |TEST AL,XX        ||D4 0A         |AAM               |
    |A9 YY XX      |TEST AX,XXYY      ||D5 0A         |AAD               |
    |AA            |STOS (O)          ||D7            |XLAT              |
    |AB            |STOS (M)          ||E0 XX         |LOOPNZ XX         |
    |AC            |LODS (M)          ||E1 XX         |LOOPE XX          |
    |AD            |LODS (O)          ||E1 XX         |LOOPZ XX          |
    |AE            |SCAS (O)          ||E2 XX         |LOOP XX           |
    |AF            |SCAS (M)          ||E2 XX         |LOOPNE XX         |
    |B0 XX         |MOV AL,XX         ||E3 XX         |JCXZ              |
    |B8 YY XX      |MOV AX,XXYY       ||E4 XX         |IN AL,XX          |
    |C2 YY XX      |RET XXYY          ||E5 YY XX      |IN AL,XXYY        |
    |C3            |RET               ||E6            |OUT XX,AL         |
    |C4 00         |LES AX,[BX+SI]    ||E7            |OUT XXYY,AL       |
    |C5 00         |LDS AX,[BX+SI]    ||E8 YY XX      |CALL XXYY         |
    |C6 00 XX      |MOV [BX+SI],XX    ||E9 YY XX      |JMP XXYY          |
    |C7 00 YY XX   |MOV [BX+SI],XXYY  ||EA YY XX WW VV|JMP XXYY VVWW     |
    |C8 ZZ YY XX   |ENTER XXYYZZ      ||EB XX         |JMP +XX           |
    |CA YY XX      |RET XXYY (F)      ||EC            |IN AL,DX          |
    |CB            |RET (F)           ||ED            |IN AX,DX          |
    |CC            |INT 3             ||EE            |OUT DX,AL         |
    |CD XX         |INT XX            ||EF            |OUT DX,AX         |
    |CE            |INTO              ||F0            |LOCK              |
    |CF            |IRET              ||F2            |REPNE             |
    |D0 00         |ROL [BX+SI],1 (O) ||F2            |REPNZ             |
    |D0 08         |ROR [BX+SI],1 (O) ||F3            |REP               |
    |D0 10         |RCL [BX+SI],1 (O) ||F3            |REPE              |
    |D0 18         |RCR [BX+SI],1 (O) ||F3            |REPZ              |
    |D0 20         |SHL [BX+SI],1 (O) ||F4            |HLT               |
    |D0 28         |SHR [BX+SI],1 (O) ||F5            |CMC               |
    |D0 38         |SAR [BX+SI],1 (O) ||F6 00 XX      |TEST [BX+SI],XX   |
    |D1 00         |ROL [BX+SI],1 (M) ||F6 10         |NOT [BX+SI] (O)   |
    |D1 08         |ROR [BX+SI],1 (M) ||F6 18         |NEG [BX+SI] (O)   |
    |D1 10         |RCL [BX+SI],1 (M) ||F6 20         |MUL [BX+SI] (O)   |
    |D1 18         |RCR [BX+SI],1 (M) ||F6 28         |IMULB [BX+SI]     |
    |D1 20         |SHL [BX+SI],1 (M) ||F6 30         |DIVB [BX+SI]      |
    |D1 28         |SHR [BX+SI],1 (M) ||F6 38         |IDVB [BX+SI]      |
    |D1 38         |SAR [BX+SI],1 (M) ||F7 00 YY XX   |TEST [BX+SI],XXYY |
    |D2 00         |ROL [BX+SI],CL (O)||F7 10         |NOT [BX+SI] (M)   |
    |D2 08         |ROR [BX+SI],CL (O)||F7 18         |NEG [BX+SI] (O)   |
    |D2 10         |RCL [BX+SI],CL (O)||F7 20         |MUL [BX+SI] (M)   |
    |D2 18         |RCR [BX+SI],CL (O)||F7 28         |IMULW [BX+SI]     |
    |D2 20         |SHL [BX+SI],CL (O)||F7 30         |DIVW [BX+SI]      |
    |D2 28         |SHR [BX+SI],CL (O)||F7 38         |IDVW [BX+SI]      |
    |D2 38         |SAR [BX+SI],CL (O)||F8            |CLC               |
    |D3 00         |ROL [BX+SI],CL (M)||F9            |STC               |
    |D3 08         |ROR [BX+SI],CL (M)||FA            |CLI               |
    |D3 10         |RCL [BX+SI],CL (M)||FB            |STI               |
    |D3 18         |RCR [BX+SI],CL (M)||FC            |CLD               |
    |D3 20         |SHL [BX+SI],CL (M)||FD            |STD               |
    |D3 28         |SHR [BX+SI],CL (M)||FE 08         |DECB [BX+SI]      |
    |--------------|------------------||--------------|------------------|
    
    |--------------|------------------|
    |  Code        | Mnemonique       |
    -----------------------------------
    |FF 08         |DECW [BX+SI]      |
    |FF 10         |CALL [BX+SI]      |
    |FF 18         |CALL [BX+SI] (F)  |
    |FF 20         |JMP [BX+SI]       |
    |FF 28         |JMP [BX+SI] (F)   |
    |FF 30         |PUSH [BX+SI]      |
    |--------------|------------------|
    (O) = operation sur un octet
    (M) = operation sur un mot