Section courante

A propos

Section administrative du site

Introduction

Le microprocesseur 8086 et 8088 sont des processeurs 16 et 8 bits supportant jusqu'à 1 Mo de mémoire adressable proposé par l'entreprise Intel. Il fonctionne uniquement en mode réel et il ne propose aucune protection des zones mémoires en lecture ou écriture. Ainsi, n'importe quel programme peut accéder à la totalité de la mémoire des autres programmes sans aucune restriction. Cet aspect d'ouverture à tous est cependant fort dangereux pour la stabilité de l'ensemble du système. Ainsi, un seul programme peut faire planter toute la machine au complet. En revanche, l'ensemble d'instruction est puissant pour manipuler des chaînes de caractères et des blocs de mémoires.

Périphérique disponible

Modèle Fabricant Description
Am8086 AMD Ce modèle est un clone et une version bus de données 16 bits.
H80C88 Hitachi Ce modèle est un clone et une version bus de données 16 bits.
Intel 8086 Intel Ce modèle est une version bus de données 16 bits.
Intel 8086A Intel Ce modèle est une version bus de données 16 bits.
Intel 8088 Intel Ce modèle est une version bus de données 8 bits.
Intel 8088A Intel Ce modèle est une version bus de données 8 bits.
Intel 80C88A Intel Ce modèle est une version bus de données 8 bits.

Les instructions

Voici la liste des instructions reconnus par le 8086 et 8088 :

Instruction Signification Description
AAA ASCII adjust AL after addition Cette instruction permet d'adapter le résultat obtenu par l'addition de 2 valeur en format DCB.
AAD ASCII adjust AX before division Cette instruction permet de convertir une valeur de format DCB non compactée.
AAM ASCII adjust AX after multiplication Cette instruction offre la possibilité de convertir le produit de la multiplication de 2 valeurs de format DCB en un format DCB.
AAS ASCII adjust AL after subtraction Cette instruction permet d'adapter le résultat de la soustraction de nombre de format DCB.
ADC Add with carry Cette instruction additionne 2 quantités numériques sur 8 ou 16 bits et ajoute ensuite la valeur de l'indicateur de retenue, lequel est contenu dans le drapeau CF(CARRY FLAG), à la somme obtenu.
ADD Add Cette instruction additionne 2 quantités numérique sur 8, 16 ou 32 bits.
AND And Cette instruction permet d'effectuer un ET BINAIRE sur les 2 opérandes spécifiés.
CALL Call procedure Cette instruction force le microprocesseur à exécuter les instructions du sous-programme indiqué par l'adresse d'appel avant de continuer.
CBW Convert byte to word Cette instruction permet de convertir un nombre contenu dans le registre AL en un format sur 16 bits pour se retrouver dans le registre AX en appliquant une extension du signe.
CLC Clear carry flag Cette instruction permet de mettre l'indicateur d'état de retenu CF à 0.
CLD Clear direction flag Cette instruction met l'indicateur d'état DF à 0, soit la direction croissante.
CLI Clear interrupt flag Cette instruction met l'indicateur d'état IF à 0, soit l'interdiction des interruptions.
CMC Complement carry flag Cette instruction offre la possibilité d'inverser la valeur de l'indicateur de retenue. Si ce dernier vaut 1, elle le met à 0 et inversement.
CMP Compare operands Cette instruction offre la possibilité essentielle de comparer 2 registres ou emplacements de mémoire.
CMPS Compare String Cette instruction permet d'effectuer la comparaison d'un octet, d'un mot ou double mot spécifié avec l'opérande source et destination spécifié et fixe l'état des drapeaux du registres EFLAGS en fonction des résultats de la comparaison.
CMPSB Compare String Byte Cette instruction permet d'effectuer la comparaison d'un octet avec l'opérande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'état des drapeaux du registres EFLAGS en fonction des résultats de la comparaison.
CMPSW Compare String Word Cette instruction permet d'effectuer la comparaison d'un mot avec l'opérande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'état des drapeaux du registres EFLAGS en fonction des résultats de la comparaison.
CWD Convert word to doubleword Cette instruction est l'alternative pour convertir le mot du registre AX en un double mot contenu dans le couple de registre DX et AX par extension du signe.
DAA Decimal adjust AL after addition Cette instruction corrige après coup les retenues lors de la manipulation de valeur DCB.
DAS Decimal adjust AL after subtraction Cette instruction offre l'intéressante possibilité de corrige le résultat d'une soustraction de 2 nombres de format DCB compactées.
DEC Decrement by 1 Cette instruction décrément de 1 le registre ou l'adresse mémoire spécifié.
DIV Unsigned divide Cette instruction permet d'effectuer une division non-signée (nombre naturel).
ESC Escape Cette instruction active le coprocesseur, lequel se permettra d'utiliser les méthodes d'adressage du processeur principal (CPU).
HLT Halt Cette instruction permet de faire passer le microprocesseur en mode d'arrêt. Toutefois, le processeur peut quitter cet état lorsqu'une ligne matérielle RESET ou lorsqu'une interruption non-masquable (NMI) reçoit un signal.
IDIV Integer divide Cette instruction permet d'effectuer une division signée (nombre entier).
IMUL Integer multiply Cette instruction permet d'effectuer une multiplication signée (nombre entier).
IN Input from port Cette instruction permet de demander un octet, un mot ou un double mot provenant du port d'entrée/sortie et le retourne dans le registre accumulateur (AL, AX, EAX).
INC Increment by 1 Cette instruction permet d'incrémenter un registre ou un emplacement mémoire.
INT Interrupt Cette instruction permet d'exécuter l'interruption avec le numéro spécifié.
INTO Interrupt if overflow Cette instruction permet d'exécuter l'interruption numéro 4 si le drapeau de débordement (OF) est fixé sur 1é
IRET Return from interrupt Cette instruction permet d'effectuer un retour précédemment provoquer par une interruption.
Jcc Jump if condition Ces instructions permettent d'effectuer d'effectuer un branchement conditionnel à emplacement mémoire spécifié.
JMP Jump Cette instruction permet d'effectuer un branchement à un emplacement mémoire spécifié.
LAHF Load flags into AH register Cette instruction permet de transférer les bits d'indicateurs du registre d'état vers le registre AH.
LDS Load pointer using DS Cette instruction permet de copier une adresse de mémoire contenu sur 32 bits dans la paire de registre de segment DS et dans un registre d'offset spécifié.
LEA Load Effective Address Cette instruction permet de copier l'offset d'une adresse de mémoire contenu dans un registre spécifié.
LES Load ES with pointer Cette instruction permet de copier une adresse de mémoire contenu sur 32 bits dans la paire de registre de segment ES et dans un registre d'offset spécifié.
LOCK Assert BUS LOCK# signal Cette instruction est utilisé comme préfixe avec d'autres instructions pour amener le microprocesseur à émettre un signal de verrouillage (Lock) sur le bus lors du traitement de l'instruction suivante.
LODS Load String Cette instruction permet de copier un élément de l'adresse DS:SI dans le registre accumulateur et incrémente/décrémente le registre SI en fonction de la taille de l'opérande source et de l'état du drapeau de direction.
LODSB Load String Byte Cette instruction permet de copier un élément de l'adresse DS:SI dans le registre accumulateur et incrémente/décrémente le registre SI de 1 en fonction de l'état du drapeau de direction.
LODSW Load String Word Cette instruction permet de copier un élément de l'adresse DS:SI dans le registre accumulateur et incrémente/décrémente le registre SI de 2 en fonction de l'état du drapeau de direction.
LOOP Loop Cette instruction de boucle permet de décrémenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre CX ne vaut pas 0.
LOOPE Loop equal Cette instruction de boucle permet de décrémenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 1.
LOOPNE Loop not equal Cette instruction de boucle permet de décrémenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 0.
MOV Move Cette instruction permet de copier opérande source dans une opérande destinataire.
MOVS Move String Cette instruction permet de copier un élément de l'adresse DS:SI dans l'adresse ES:DI et incrémente/décrémente les registres DI et SI en fonction de la taille de l'opérande source et de l'état du drapeau de direction.
MOVSB Move Byte from string to string Cette instruction permet de copier un octet de l'adresse DS:SI dans l'adresse ES:DI et incrémente/décrémente les registres DI et SI de 1 en fonction de l'état du drapeau de direction.
MOVSW Move Word from string to string Cette instruction permet de copier un mot de l'adresse DS:SI dans l'adresse ES:DI et incrémente/décrémente les registres DI et SI de 2 en fonction de l'état du drapeau de direction.
MUL Unsigned multiply Cette instruction permet d'effectuer une multiplication non-signée (nombre naturel).
NEG Negation Cette instruction permet d'effectuer le complément à 2 d'une opérande.
NOP No operation Cette instruction ne fait rien.
NOT Not Cette instruction permet d'inverser la valeur de chacun des bits d'une opérande.
OR Or Cette instruction permet d'effectuer un OU BINAIRE sur les 2 opérandes spécifiés.
OUT Output to port Cette instruction permet d'envoyer un octet, un mot ou un double mot sur le port d'entrée/sortie.
POP Pop data from stack Cette instruction permet de désempiler de la pile une mot ou un double mot et la met dans une opérande.
POPF Pop data into Flags register Cette instruction permet de désempiler de la pile le registre 16 bits de drapeau contenant les indicateurs d'état.
PUSH Push data onto stack Cette instruction permet d'empiler une mot ou un double mot dans la pile.
PUSHF Push flags onto stack Cette instruction permet d'empiler respectivement le registre 16 bits de drapeau des indicateurs d'état dans la pile.
RCL 1 Rotate left (with carry) Cette instruction permet d'effectuer une rotation des bits vers la gauche en réinsérant le bit dans l'indicateur de retenue (CF) ainsi que dans le bit le plus à droite libéré.
RCR 1 Rotate right (with carry) Cette instruction permet d'effectuer une rotation des bits vers la droite en réinsérant le bit dans l'indicateur de retenue (CF) ainsi que dans le bit le plus à gauche libéré.
REP Repeat Cette instruction est utilisé comme préfixe avec d'autres instructions pour effectuer des répétitions d'instructions tant que CX ne vaut pas 0.
REPE Repeat equal Cette instruction est utilisé comme préfixe avec d'autres instructions pour effectuer des répétitions d'instructions jusqu'à ce que CX = 0 ou tant que l'indicateur ZF = 0.
REPNE Repeat not equal Cette instruction est utilisé comme préfixe avec d'autres instructions pour effectuer des répétitions d'instructions jusqu'à ce que CX = 0 ou tant que l'indicateur ZF = 1.
RET Return from procedure Cette instruction permet de quitter une procédure.
RETF Return from far procedure Cette instruction permet de quitter une procédure ayant lieu avec un appel long (FAR CALL).
RETN Return from near procedure Cette instruction permet de quitter une procédure ayant lieu avec un appel court (NEAR CALL).
ROL 1 Rotate left Cette instruction permet d'effectuer une rotation des bits vers la gauche en réinsérant le bit dans le bit le plus à droite libéré.
ROR 1 Rotate right Cette instruction permet d'effectuer une rotation des bits vers la droite en réinsérant le bit dans le bit le plus à gauche libéré.
SAHF Store AH into flags Cette instruction permet de copier les bits du registre AH dans l'octet de poids faible dans le registre des drapeaux (les indicateurs d'état).
SAL 1 Shift Arithmetically left Cette instruction permet d'effectuer une rotation des bits vers la gauche en réinsérant le bit dans l'indicateur de retenue (CF).
SAR 1 Shift Arithmetically right Cette instruction permet d'effectuer une rotation des bits vers la droite en réinsérant le bit dans l'indicateur de retenue (CF).
SBB Subtraction with borrow Cette instruction permet de soustraire avec l'indicateur de retenue (CF) une valeur à une opérande.
SCAS String Compare String Cette instruction permet de comparer un octet, un mot ou un double mot avec la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI en fonction de la taille de l'opérande cible et de l'état du drapeau de direction.
SCASB String Compare String Byte Cette instruction permet de comparer le registre AL avec la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI de 1 en fonction de l'état du drapeau de direction.
SCASW String Compare String Word Cette instruction permet de comparer le registre AX avec la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI de 2 en fonction de l'état du drapeau de direction.
SEG Segment Cette directive permet de demander la partie segment de l'adresse d'une opérande.
SETALC Set AL Carry Cette instruction permet de copier la valeur du drapeau de retenue dans le registre AL en la multipliant par 0FFh.
SHL 1 Shift left Cette instruction permet d'effectuer une rotation des bits vers la gauche en réinsérant le bit dans l'indicateur de retenue (CF).
SHR 1 Shift right Cette instruction permet d'effectuer une rotation des bits vers la droite en réinsérant le bit dans l'indicateur de retenue (CF).
STC Set carry flag Cette instruction permet de fixer l'indicateur de retenue (CF) à la valeur 1.
STD Set direction flag Cette instruction permet de fixer l'indicateur de direction (DF) à la valeur 1.
STI Set interrupt flag Cette instruction permet de fixer l'indicateur d'interruption (IF) à la valeur 1.
STOS Store in string Cette instruction permet de copier un octet, un mot ou un double mot dans la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI en fonction de la taille de l'opérande cible et de l'état du drapeau de direction.
STOSB Store in string Byte Cette instruction permet de copier le registre AL dans la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI de 1 en fonction de l'état du drapeau de direction.
STOSW Store in string Word Cette instruction permet de copier le registre AX dans la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI de 2 en fonction de l'état du drapeau de direction.
SUB Subtraction Cette instruction permet de soustraire une valeur à une opérande.
TEST Test Cette instruction permet d'effectuer un «Et binaire» sur une opérande cible sans modifier sa valeur.
WAIT Wait Cette instruction permet de faire passer le microprocesseur en mode d'attente jusqu'à ce que la ligne de teste sur la carte mère s'active.
XCHG Exchange Cette instruction permet d'échanger la valeur de deux opérandes.
XLAT Table look-up translation Cette instruction permet de remplacer le contenu du registre AL par un octet de la «tablesource».
XOR Exclusive OR Cette instruction permet d'effectuer un OU exclusif BINAIRE sur les 2 opérandes spécifiés.


Dernière mise à jour : Samedi, le 22 décembre 2018