8086 et 8088
Voici la liste des instructions d'origines des 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. |
80186 et 80188
Voici la liste des instructions ajouter au 80186 et 80188 :
Instruction | Signification | Description |
---|---|---|
BOUND | Bounds | Cette instruction permet de vérifier la validité pouvant exister entre avec un tableau et son indexation. |
ENTER | Enter stack frame | Cette instruction permet de créer les structures de paramètres nécessaires aux procédures des langages de haut niveau. |
INS | Input from port to string | Cette instruction permet de demander un octet, un mot ou un double mot du port d'entrée/sortie et retourne le résultat dans 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. |
INSB | Input from port to string Byte | Cette instruction permet de demander un octet du port d'entrée/sortie et retourne le résultat dans l'adresse ES:[DI] et incrémente/décrémente le registre DI de 1 en fonction de l'état du drapeau de direction. |
INSW | Input from port to string Word | Cette instruction permet de demander un mot du port d'entrée/sortie et retourne le résultat dans l'adresse ES:[DI] et incrémente/décrémente le registre DI de 2 en fonction de l'état du drapeau de direction. |
LEAVE | Leave stack frame | Cette instruction permet de libérer une zone de mémoire attribué par l'instruction «ENTER» lorsqu'on utilise des procédures dans des langages de programmation de haut niveau. |
OUTS | Output string to port | Cette instruction permet d'envoyer un octet, un mot ou un double mot contenu dans l'adresse DS:[SI] du port d'entrée/sortie et incrémente/décrémente le registre SI en fonction de la taille de l'opérande cible et de l'état du drapeau de direction. |
OUTSB | Output String Byte to port | Cette instruction permet d'envoyer un octet contenu dans l'adresse DS:[SI] du port d'entrée/sortie et incrémente/décrémente le registre SI de 1 en fonction de l'état du drapeau de direction. |
OUTSW | Output String Word to port | Cette instruction permet d'envoyer un mot contenu dans l'adresse DS:[SI] du port d'entrée/sortie et incrémente/décrémente le registre SI de 2 en fonction de l'état du drapeau de direction. |
POPA | Pop All | Cette instruction permet de désempiler de la pile respectivement les registres DI, SI, BP, SP, BX, DX, CX et AX. |
PUSHA | Push All | Cette instruction permet d'empiler respectivement les registres DI, SI, BP, SP, BX, DX, CX et AX dans la pile. |
80286
Voici la liste des instructions ajouter au 80286 :
Instruction | Signification | Description |
---|---|---|
ARPL | Adjust RPL field of selector | Cette instruction permet de contrôler et corriger le niveau de privilège du segment de code en mode protégée. |
CLTS | Clear task-switched flag in register CR0 | Cette instruction permet de mettre à 0 le drapeau de l'indicateur de tâche (Task-Switch) du registre CR0. |
LAR | Load access rights byte | Cette instruction permet de charger le registre des indicateurs d'un descripteur. |
LGDT | Load global descriptor table | Cette instruction permet de charger un descripteur de tables globale. |
LIDT | Load interrupt descriptor table | Cette instruction permet de charger un descripteur de tables d'interruption. |
LLDT | Load local descriptor table | Cette instruction permet de charger un descripteur de tables local. |
LMSW | Load machine status word | Cette instruction permet de copier 4 des bits d'une opérande vers les 4 bits de registre de contrôle CR0. |
LOADALL | Load all CPU registers | Cette instruction permet d'effectuer le chargement de tous les registres de descripteur de cache. |
LSL | Load segment limit | Cette instruction permet de charger la limite de segment d'un descripteur de segment spécifié avec l'opérande source dans l'opérande de destination et fixe le drapeau ZF du registre EFLAGS. |
LTR | Load task register | Cette instruction permet de charger l'opérande source dans le champ du sélecteur de segment du registre de tâche. |
SGDT | Store global descriptor table | Cette instruction permet d'entreposer le sélecteur de segment dans le registre GDTR (registre de table global de descripteur) dans l'opérande de destination. |
SIDT | Store interrupt descriptor table | Cette instruction permet d'entreposer le registre de descripteur de table d'interruption (IDTR) dans l'opérande de destination. |
SLDT | Store local descriptor table | Cette instruction permet d'entreposer le sélecteur de segment dans le registre LDTR (registre de table local de descripteur) dans l'opérande de destination. |
SMSW | Store machine status word | Cette instruction permet d'entreposer le mot des états (soit les bits de 0 à 15 du registre de contrôle CR0) à partir du registre de tâche (TR) dans l'opérande cible. |
STR | Store task register | Cette instruction permet d'entreposer le sélecteur de segment à partir du registre de tâche (TR) à l'opérande cible |
VERR | Verify a segment for reading | Cette instruction permet de vérifier si le code ou le segment de données spécifié est en mode lecture à partir du niveau de privilège courant (CPL). |
VERW | Verify a segment for writing | Cette instruction permet de vérifier si le code ou le segment de données spécifié est en mode écriture à partir du niveau de privilège courant (CPL). |
80386
Voici la liste des instructions ajouter au 80386 :
Instruction | Signification | Description |
---|---|---|
BSF | Bit scan forward | Cette instruction permet d'effectuer une comparaison binaire de la droite vers la gauche. |
BSR | Bit scan reverse | Cette instruction permet d'effectuer une comparaison binaire de la gauche vers la droite. |
BT | Bit test | Cette instruction permet de transférer une Opérande vers l'indicateur de retenue. |
BTC | Bit test and complement | Cette instruction transfère une Opérande vers l'indicateur de retenue le bits spécifié et inverser la valeur du bit correspondant. |
BTR | Bit test and reset | Cette instruction permet de transférer l'Opérande vers l'indicateur de retenue le bits spécifié puis met le bits correspondant de l'Opérande à 0. |
BTS | Bit test and set | Cette instruction permet de transférer une Opérande vers l'indicateur de retenue le bits spécifié puis ensuite met le bits correspondant dans Opérande à 1. |
CDQ | Convert double-word to quad-word | Cette instruction permet de convertir le double mot en un quadruple mot, le résultat tient sur une taille de 64 bits. |
CMPSD | Compare string double-word | Cette instruction permet d'effectuer la comparaison d'un double 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. |
CWDE | Compare string double-word | Cette instruction est l'alternative pour convertir le mot du registre AX en un double mot contenu dans le registre EAX par extension du signe. |
INSD | Input from port to string double-word | Cette instruction permet de demander un double mot du port d'entrée/sortie et retourne le résultat dans l'adresse ES:[DI] et incrémente/décrémente le registre DI de 4 en fonction de l'état du drapeau de direction. |
IRETD | Interrupt Return Doubleword | Cette instruction permet d'effectuer un retour 32-bits précédemment provoquer par une interruption. |
JECXZ | Jump if register ECX is zero | Ces instructions permettent d'effectuer d'effectuer un branchement conditionnel à emplacement mémoire spécifié si le registre ECX vaut 0. |
LFS | Load pointer using FS | Cette instruction permet de copier une adresse de mémoire contenu sur 32 bits dans la paire de registre de segment FS et dans un registre d'offset spécifié. |
LGS | Load pointer using GS | Cette instruction permet de copier une adresse de mémoire contenu sur 32 bits dans la paire de registre de segment GS et dans un registre d'offset spécifié. |
LODSD | Load String Doubleword | 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 4 en fonction de l'état du drapeau de direction. |
LOOPD | Loop Double | Cette instruction de boucle permet de décrémenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre ECX ne vaut pas 0. |
LOOPED | Loop Equal Double | Cette instruction de boucle permet de décrémenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 1. |
LOOPNED | Loop Not Equal Double | Cette instruction de boucle permet de décrémenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 0. |
LOOPNZD | Loop Not Zero Double | Cette instruction de boucle permet de décrémenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 0. |
LOOPZD | Loop Zero Double | Cette instruction de boucle permet de décrémenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrôle à une étiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 1. |
LSS | Load pointer using SS | Cette instruction permet de copier une adresse de mémoire contenu sur 32 bits dans la paire de registre de segment SS (Segment de pile) et dans un registre d'offset spécifié. |
MOVSD | Move String Doubleword | Cette instruction permet de copier un double mot de l'adresse DS:SI dans l'adresse ES:DI et incrémente/décrémente les registres DI et SI de 4 en fonction de l'état du drapeau de direction. |
MOVSX | Move with sign-extend | Cette instruction permet de copier un registre de taille inférieur dans un registre de plus grande taille en remplissant les bits supplémentaires avec l'extension des signes. |
MOVZX | Move with zero-extend | Cette instruction permet de copier un registre de taille inférieur dans un registre de plus grande taille en remplissant les bits supplémentaires par des 0. |
OUTSD | Output String Doubleword | Cette instruction permet d'envoyer un double mot contenu dans l'adresse DS:[SI] du port d'entrée/sortie et incrémente/décrémente le registre SI de 4 en fonction de l'état du drapeau de direction. |
POPAD | Pop all double-word | Cette instruction permet de désempiler de la pile respectivement les registres EDI, ESI, EBP, ESP, EBX, EDX, ECX et EAX. |
POPFD | Pop data into EFLAGS register | Cette instruction permet de désempiler de la pile le registre 32 bits de drapeau contenant les indicateurs d'état. |
PUSHAD | Push all double-word | Cette instruction permet d'empiler respectivement les registres EDI, ESI, EBP, ESP, EBX, EDX, ECX et EAX dans la pile. |
PUSHFD | Push EFLAGS | Cette instruction permet d'empiler respectivement le registre 32 bits de drapeau des indicateurs d'état dans la pile. |
SCASD | Scan string double-word | Cette instruction permet de comparer le registre EAX avec la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI de 4 en fonction de l'état du drapeau de direction. |
SETcc | Set byte to one on condition | Cette directive permet de fixer la valeur d'une opérande 1 si la condition d'indicateur d'état du registre 32 bits de drapeau est vrai sinon fixe la valeur à 0. |
SHLD | Shift left double-word | Cette instruction permet d'effectuer une rotation des bits d'un double mot vers la gauche en réinsérant le bit dans l'indicateur de retenue (CF). |
SHRD | Shift right double-word | Cette instruction permet d'effectuer une rotation des bits d'un double mot vers la droite en réinsérant le bit dans l'indicateur de retenue (CF). |
STOSD | Store string double-word | Cette instruction permet de copier le registre EAX dans la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI de 4 en fonction de l'état du drapeau de direction. |
80486
Voici la liste des instructions ajouter au 80486 :
Instruction | Signification | Description |
---|---|---|
BSWAP | Byte Swap | Cette instruction permet d'inverse l'ordre des 4 octets d'un registre de taille de 32 bits. |
CMPXCHG | CoMPare and eXCHanGe | Cette instruction compare la destination avec l'accumulateur (AL, AX ou EAX) et les échanges si la condition est vrai. |
INVD | Invalidate Internal Caches | Cette instruction permet de désactiver et de vider le tampon interne du micro-processeur. |
INVLPG | Invalidate TLB Entry | Cette instruction permet d'invalider les transferts du TLB (Translation Lookaside Buffer) du micro-processeur |
WBINVD | Write Back and Invalidate Cache | Cette instruction permet de désactiver et de vider le tampon interne du micro-processeur. |
XADD | Exchange and Add | Cette instruction permet d'échanger le premier opérande avec le deuxième opérande, et ensuite effectue la somme des valeurs dans le première opérande. |
Cyrix 6x86MX (EMMX)
Voici la liste des instructions ajouter au Cyrix 6x86MX (EMMX):
Instruction | Signification | Description |
---|---|---|
PADDSIW | Packed Add with Saturation | Cette instruction permet d'effectuer l'addition du mot de format entier de l'opérande source au mot de format entier de l'opérande de destination et écrit le résultat dans le registre MMX. |
PAVEB | Packed Average Bits | Cette instruction permet d'effectuer le calcul de la moyenne des paquets spécifiés. |
PDISTIB | Packed Distribution | Cette instruction permet d'effectuer le calcul de la distance entre des octets de deux opérandes, le résultat de l'addition d'octet de l'opérande de destination et la saturation du résultat. |
PMACHRIW | Packed Multiply and Accumulate with Rounding | Cette instruction permet d'effectuer une multiplication de 2 opérandes sources en utilisant la méthode décrite par PMULHRW et accumule le résultat avec la valeur dans un registre de destination en utilisant un arrondissement arithmétique. |
PMAGW | Packed Magnitude | Cette instruction permet d'effectuer la comparaison de la valeur absolue d'un paquet de mots de l'opérande source et de l'ensemble des mots de destination et fixe l'opérande de destination avec la valeur de la plus large magnitude. |
PMULHRIW | Packed Multiply High with Rounding, result to Implied Register | Cette instruction permet de retourner le résultat d'une matrice de 16x16 bits avec un arrondissement LSB avant de tronquer les 16 bits et place ce résultat dans un registre MMX. |
PMULHRW | Packed Multiply High with Rounding | Cette instruction permet de retourner le résultat d'une matrice de 16x16 bits avec un arrondissement LSB avant de tronquer les 16 bits. |
PMVGEZB | Packed Conditional Move Great Zero Byte | Cette instruction permet de copier l'octet de paquet correspondant de l'opérande source dans l'opérande de destination si l'octet de l'opérande destination est supérieur à 0 et effectue se traitement pour chacun des 8 octets du paquet. |
PMVLZB | Packed Conditional Move Less Zero Byte | Cette instruction permet de copier l'octet de paquet correspondant de l'opérande source dans l'opérande de destination si l'octet de l'opérande destination est inférieur à 0 et effectue se traitement pour chacun des 8 octets du paquet. |
PMVNZB | Packed Conditional Move Not Zero Byte | Cette instruction permet de copier l'octet de paquet correspondant de l'opérande source dans l'opérande de destination si l'octet de l'opérande destination ne vaut pas 0 et effectue se traitement pour chacun des 8 octets du paquet. |
PMVZB | Packed Conditional Move Zero Byte | Cette instruction permet de copier l'octet de paquet correspondant de l'opérande source dans l'opérande de destination si l'octet de l'opérande destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet. |
PSUBSIW | Packed Subtract with Saturation | Cette instruction permet d'effectuer la soustraction du mot de format entier de l'opérande source au mot de format entier de l'opérande de destination et écrit le résultat dans le registre MMX. |
Pentium
Voici la liste des instructions ajouter au Pentium:
Instruction | Signification | Description |
---|---|---|
CMPXCHG8B | CoMPare and eXCHanGe 8 bytes | Cette instruction compare un nombre de 64 bits et les échanges si la condition est vrai. |
CPUID | CPU IDentification | Cette instruction retourne le code d'identification du microprocesseur. |
RDMSR | ReaD from Model-Specific Register | Cette instruction permet de charger le contenu du modèle de registre 64-bits (MSR) indiquer par le registre ECX dans le couple de registre EDX:EAX. |
RDTSC | ReaD Time Stamp Counter | Cette instruction permet de charger la valeur courante du compteur de temps du microprocesseur dans le couple de registres EDX:EAX. |
RSM | Resume operation of interrupted program | Cette instruction permet de retourner le contrôle du programme du mode de gestion système (SMM) pour le programme d'application ou la procédure du système d'exploitation ayant été interrompu lorsque le microprocesseur à reçu un signal SSM. |
WRMSR | WRite to Model-Specific Register | Cette instruction écrit les valeurs contenu dans le MSR (Model-Specific Register) en fonction du registre d'index ECX dans la paire des registres EDX:EAX. |
Pentium MMX
Voici la liste des instructions ajouter au Pentium MMX:
Instruction | Signification | Description |
---|---|---|
EMMS | Empty MMX State | Cette instruction fixe les mots marqués du MPU de chacun un. |
MOVD | Move Doubleword | Cette instruction permet de copier l'opérande dans un registre XMM ou vice-versa. |
MOVQ | Move Quadword | Cette instruction permet de copier un quadruple mot d'une opérande source vers une opérande destination dans le cas des registres XMM. |
PACKSSDW | Pack with Signed Saturation DoubleWord | Cette instruction permet de compacté 8 paquets de double mots en mots. |
PACKSSDW | Pack with Signed Saturation DoubleWord | Cette instruction permet de compacté 8 paquets de double mots en mots. |
PACKSSWB | Pack with Signed Saturation Word Byte | Cette instruction permet de compacté 8 paquets d'entier en octets. |
PACKUSWB | Pack with Signed Saturation Unsigned Word Byte | Cette instruction permet de compacté 8 paquets de mots en octets. |
PADDB | Packed Add Byte | Cette instruction permet d'effectuer une addition scalaire sur un paquet de 8 octets. |
PADDD | Packed Add Double | Cette instruction permet d'effectuer une addition scalaire sur un paquet de 2 double mots. |
PADDSB | Packed Add with Saturation Byte | Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 8 octets signés. |
PADDSW | Packed Add with Saturation Word | Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 entiers. |
PADDUSB | Packed Add Unsigned with Saturation Byte | Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 8 octets. |
PADDUSW | Packed Add Unsigned with Saturation Word | Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 mots. |
PADDW | Packed Add Word | Cette instruction permet d'effectuer une addition scalaire sur un paquet de 4 mots. |
PAND | Bitwise Logical AND | Cette instruction permet d'effectuer un «ET BINAIRE» d'un quadruple mot d'une opérande source avec une opérande destination dans le cas des registres XMM. |
PANDN | Bitwise Logical AND | Cette instruction permet d'effectuer un «ET BINAIRE» et une «NEGATION» de chacun des bits d'un quadruple mot d'une opérande source avec une opérande destination dans le cas des registres XMM. |
PCMPEQB | Packed Compare for Equal Byte | Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux à FFh s'ils sont égales sinon à 00h. |
PCMPEQD | Packed Compare for Equal Byte | Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de chacun d'eux à FFFFFFFFh s'ils sont égales sinon à 00000000h. |
PCMPEQW | Packed Compare for Equal Word | Cette instruction permet d'effectuer une comparaison sur un paquet de mots et fixe la valeur de chacun d'eux à FFFFh s'ils sont égales sinon à 0000h. |
PCMPGTB | Packed Compare for Greater Than Byte | Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux à FFh si l'opérande destinataire est supérieur à l'opérande source sinon à 00h. |
PCMPGTD | Packed Compare for Greater Than Doubleword | Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de chacun d'eux à FFFFFFFFFh si l'opérande destinataire est supérieur à l'opérande source sinon à 00000000h. |
PCMPGTW | Packed Compare for Greater Than Word | Cette instruction permet d'effectuer une comparaison sur un paquet de mots et fixe la valeur de chacun d'eux à FFFFFh si l'opérande destinataire est supérieur à l'opérande source sinon à 0000h. |
PMADDWD | Packed Multiply and Add Word | Cette instruction permet d'effectuer une multiplication de 2 registres MMX contenant dans un paquet de mots d'un emplacement/mémoire. |
PMULHW | Packed Multiply and Add Word | Cette instruction permet d'effectuer la multiplication de la partie haute de chacun des mots des 2 paquets d'opérandes. |
PMULLW | Packed Multiply and Add Word | Cette instruction permet d'effectuer la multiplication de la partie basse de chacun des mots des 2 paquets d'opérandes. |
POR | Bitwise Logical OR | Cette instruction permet d'effectuer un «OU BINAIRE» d'un quadruple mot d'une opérande source avec une opérande destination dans le cas des registres XMM. |
PSLLD | Packed Shift Left Logical Doubleword | Cette instruction permet d'effectuer le décalage de bits vers la gauche d'un paquet de double mots. |
PSLLQ | Packed Shift Left Logical Quadword | Cette instruction permet d'effectuer le décalage de bits vers la gauche d'un quadruple mot. |
PSLLW | Packed Shift Left Logical Word | Cette instruction permet d'effectuer le décalage de bits vers la gauche d'un paquet de mots. |
PSRAD | Packed Shift Right Arithmetic Doubleword | Cette instruction permet d'effectuer le décalage arithmétique de bits vers la droite d'un paquet de double mots. |
PSRAW | Packed Shift Right Arithmetic Word | Cette instruction permet d'effectuer le décalage de bits vers la droite d'un paquet de mots. |
PSRLD | Packed Shift Right Logical Doubleword | Cette instruction permet d'effectuer le décalage de bits vers la droite d'un paquet de double mots. |
PSRLQ | Packed Shift Right Logical Quadword | Cette instruction permet d'effectuer le décalage de bits vers la droite d'un quadruple mot. |
PSRLW | Packed Shift Right Logical Word | Cette instruction permet d'effectuer le décalage de bits vers la droite d'un paquet de mots. |
PSUBB | Packed Subtract Byte | Cette instruction permet d'effectuer la soustraction de la valeur de chacun des octets d'un paquet contenu dans des opérandes de 64 bits. |
PSUBD | Packed Subtract Byte | Cette instruction permet d'effectuer la soustraction de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PSUBSB | Packed Subtract with Saturation Byte | Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets signés d'un paquet contenu dans des opérandes de 64 bits. |
PSUBSW | Packed Subtract with Saturation Word | Cette instruction permet d'effectuer la soustraction du mot de format entier de l'opérande source au mot de format entier de l'opérande de destination et écrit le résultat dans l'opérande destinataire. |
PSUBUSB | Packed Subtract with Saturation Unsigned Byte | Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets d'un paquet contenu dans des opérandes de 64 bits. |
PSUBUSW | Packed Subtract Unsigned with Saturation Word | Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des mots d'un paquet contenu dans des opérandes de destinations. |
PSUBW | Packed Subtract Words | Cette instruction permet d'effectuer la soustraction de la valeur de chacun des mots d'un paquet contenu dans des opérandes de 64 bits. |
PUNPCKHBW | Unpack High Bytes to Words | Cette instruction permet de décompacter des octets en mots dans le haut d'un paquets de 64 bits. |
PUNPCKHDQ | Unpack High Dwords to Qwords | Cette instruction permet de décompacter des doubles mots en quadruples mots dans le haut d'un paquets de 64 bits. |
PUNPCKHWD | Unpack High Words to Dwords | Cette instruction permet de décompacter des mots en double mots dans le haut d'un paquets de 64 bits. |
PUNPCKLBW | Unpack Low Bytes to Words | Cette instruction permet de décompacter des octets en mots dans le bas d'un paquets de 64 bits. |
PUNPCKLDQ | Unpack Low Dwords to Qwords | Cette instruction permet de décompacter des doubles mots en quadruples mots dans le bas d'un paquets de 64 bits. |
PUNPCKLWD | Unpack Low Words to Dwords | Cette instruction permet de décompacter des mots en double mots dans le bas d'un paquets de 64 bits. |
PXOR | Bitwise Logical Exclusive OR | Cette instruction permet d'effectuer un ou exclusif binaire d'un quadruple mot d'une opérande source avec une opérande destination dans le cas des registres XMM. |
RDPMC | Read the Performance Monitoring Counter | Cette instruction permet d'effectuer la lecture du compteur du moniteur de performance. |
Pentium Pro
Voici la liste des instructions ajouter au Pentium Pro:
Instruction | Description |
---|---|
CMOV | Cette instruction copie des données d'une source (valeur) à une destination (registre) à la condition que la condition demandé soit remplie. |
FCOMI | Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des résultats. |
FCOMIP | Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des résultats et désempile de la pile la valeur dans le registre. |
FUCOMI | Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vérifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des résultats. |
FUCOMIP | Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vérifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des résultats et désempile de la pile la valeur dans le registre. |
FCMOV | Cette instruction permet de déplacé des nombres réel (virgule flottante) si la condition en question est satisfaite. |
SYSENTER | Cette instruction permet d'effectuer le transférer du contrôle d'un point d'entrée au système d'exploitation. |
SYSEXIT | Cette instruction permet de retourner du système d'exploitation à une application. |
UD2 | Cette instruction permet de provoquer l'exécution d'un code indéfinie. |
AMD K6-2
Voici la liste des instructions ajouter au AMD K6-2:
Instruction | Description |
---|---|
FEMMS | Cette instruction permet d'effacer les états MMX après le passage d'instructions MMX. |
PAVGUSB | Cette instruction permet d'effectuer le calcul de la moyenne de paquets de 8 octets spécifiés. |
PF2ID | Cette instruction permet de convertir un double mots d'un format réel à un format d'entier 32 bits. |
PFACC | Cette instruction permet d'effectuer l'accumulation de double mots. |
PFADD | Cette instruction permet d'effectuer l'addition de double mots. |
PFCMPEQ | Cette instruction permet d'effectuer la comparaison d'égalité d'un paquet de double mots contenu dans des opérandes de 64 bits. |
PFCMPGE | Cette instruction permet d'effectuer la comparaison d'égalité ou de supériorité d'un paquet de double mots contenu dans des opérandes de 64 bits. |
PFCMPGT | Cette instruction permet d'effectuer la comparaison de supériorité d'un paquet de double mots contenu dans des opérandes de 64 bits. |
PFMAX | Cette instruction permet de retourner la valeur maximal de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFMIN | Cette instruction permet de retourner la valeur minimal de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFMUL | Cette instruction permet d'effectuer la multiplication de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFRCP | Cette instruction permet d'effectuer la réciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFRCPIT1 | Cette instruction permet d'effectuer la première étape d'itération de la réciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFRCPIT2 | Cette instruction permet d'effectuer la deuxième étape d'itération de la réciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFRSQIT1 | Cette instruction permet d'effectuer la première étape d'itération de la racine carré de la réciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFRSQRT | Cette instruction permet d'effectuer la racine carré approximative de la réciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFSUB | Cette instruction permet d'effectuer la soustraction de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PFSUBR | Cette instruction permet d'effectuer la soustraction inversé de la valeur de chacun des doubles mots d'un paquet contenu dans des opérandes de 64 bits. |
PI2FD | Cette instruction permet de convertir un paquet de format d'entier 32 bits à double mots d'un format réel. |
PMULHRW | Cette instruction permet de retourner le résultat d'une matrice de 16x16 bits avec un arrondissement LSB avant de tronquer les 16 bits. |
PREFETCH | Cette instruction permet d'effectuer le chargement de l'entrée d'une séquence d'alignement de mémoire de 64 bits de l'adresse mémoire spécifié dans le cache de données L1 du microprocesseur. |
PREFETCHW | Cette instruction permet d'effectuer le chargement de l'entrée d'une séquence d'alignement de mémoire de 64 bits de l'adresse mémoire spécifié dans le cache de données L1 du microprocesseur dans un état de modification. |
SYSCALL | Cette instruction permet d'effectuer le transfert du contrôle d'un point d'entrée fixe au système d'exploitation. |
SYSRET | Cette instruction permet de retourner du système d'exploitation à une application. |
Pentium III (SSE)
Voici la liste des instructions ajouter au Pentium III (SSE):
Instruction | Description |
---|---|
ADDPS | Cette instruction permet d'effectuer une addition SIMD de 4 paquets de valeurs réels de simple précision d'une opérande source et d'une opérande destination et entrepose le résultat dans l'opérande de destination sous le format d'un paquet de valeurs réels de simple précision. |
ADDSS | Cette instruction permet d'effectuer une addition de la partie basse d'une valeur réel de simple précision d'une opérande source et destination et entrepose le résultat dans une opérande de destination de valeur réel de simple précision. |
ANDNPS | Cette instruction permet d'effectuer un ET BINAIRE sur les 2 opérandes 128 bits spécifiés et inverse chacun des bits du résultat. |
ANDPS | Cette instruction permet d'effectuer un ET BINAIRE sur les 2 opérandes 128 bits spécifiés. |
CMPPS | Cette instruction permet d'effectuer une comparaison SIMD de 4 paquets de valeurs réels de simple précision d'une opérande source et d'une opérande destination et entrepose le résultat de la comparaison dans l'opérande de destination. |
CMPSS | Cette instruction permet d'effectuer une comparaison de la partie basse de valeurs réels de simple précision d'une opérande source et d'une opérande destination et entrepose le résultat de la comparaison dans l'opérande de destination. |
COMISS | Cette instruction permet de comparer deux valeurs réel de simple-précision dans la partie faible du quadruple mot de deux opérande et fixe les drapeaux de ZF, PF et FC du registre EFLAGS en fonction du résultat (non-ordonnée, supérieur à, inférieur ou égal). |
CVTPI2PS | Cette instruction permet de convertir un entier de format double mot en une valeur réel de simple précision compacté. |
CVTPS2PI | Cette instruction permet de convertir une valeur réel de simple précision compacté en un entier de format double mot. |
CVTSI2SS | Cette instruction permet de convertir un entier de format double mot en une valeur réel de simple précision. |
CVTSS2SI | Cette instruction permet de convertir une valeur réel de simple précision en un entier de format double mot. |
CVTTPS2PI | Cette instruction permet de convertir une valeur réel de simple précision compacté avec tronquage en un entier de format double mot compacté. |
CVTTSS2SI | Cette instruction permet de convertir un entier de format double mot avec tronquage en une valeur réel de simple précision. |
DIVPS | Cette instruction permet d'effectuer une division de valeur réel de simple précision de registre XMM ou d'emplacement mémoire de 128 bits. |
DIVSS | Cette instruction permet d'effectuer une division scalaire de valeur réel de simple précision de registre XMM ou d'emplacement mémoire de 128 bits. |
LDMXCSR | Cette instruction permet d'effectuer le chargement du mot de contrôle et d'état du flux d'extension SIMD d'une opérande mémoire 32 bits. |
MASKMOVQ | Cette instruction permet d'entreposer les octets sélectionner de l'opérande source dans un emplacement mémoire de 64 bits. |
MAXPS | Cette instruction permet de retourner la valeur maximal de chacune des paires de valeur entre l'opérande source et l'opérande de destination. |
MAXSS | Cette instruction permet de retourner la valeur maximal entre l'opérande source et destination. |
MINPS | Cette instruction permet de retourner la valeur minimal de chacune des paires de valeur entre l'opérande source et l'opérande de destination. |
MINSS | Cette instruction permet de retourner la valeur minimal entre l'opérande source et destination. |
MOVAPS | Cette instruction permet de copier le contenu de 4 paquets alignés de valeurs réel de simple précision (4 x 32 bits). |
MOVHLPS | Cette instruction permet de copier le contenu du haut d'un paquet de valeurs réel de simple précision dans sa partie basse. |
MOVHPS | Cette instruction permet de copier le contenu du haut de deux paquets de valeurs réel de simple précision dans une opérande de destination. |
MOVLHPS | Cette instruction permet de copier le contenu du bas d'un paquet de valeurs réel de simple précision dans sa partie haute. |
MOVLPS | Cette instruction permet de copier le contenu du bas de deux paquets de valeurs réel de simple précision dans un opérande de destination. |
MOVMSKPS | Cette instruction permet de copier les bits de signes de quatre paquets de valeurs réels de simple précision d'un registre XMM dans les 4 bits les plus bas d'un registre 32 bits. Les autres bits du registres 32 bits sont fixés à 0. |
MOVNTPS | Cette instruction permet de copier le contenu de 4 paquets alignés de valeurs réel de simple précision sans utiliser la méthode temporel pour minimiser la pollution du cache. |
MOVNTQ | Cette instruction permet de copier une valeur 64 bits sans utiliser la méthode temporel pour minimiser la pollution du cache. |
MOVSS | Cette instruction permet de copier une valeur réel de simple précision d'une opérande source vers une opérande de destination. |
MOVUPS | Cette instruction permet de copier le contenu de 4 paquets désalignés de valeurs réel de simple précision (4 x 32 bits). |
MULPS | Cette instruction permet d'effectuer la multiplication de chacune des paires de valeur de l'opérande source et l'opérande de destination. |
MULSS | Cette instruction permet d'effectuer la multiplication scalaire de l'opérande source et l'opérande de destination. |
ORPS | Cette instruction permet d'effectuer un OU BINAIRE de 128 bits sur les 2 opérandes spécifiés. |
PAVGB | Cette instruction permet d'effectuer le calcul de la moyenne des paquets d'octets spécifiés. |
PAVGW | Cette instruction permet d'effectuer le calcul de la moyenne des paquets des mots spécifiés. |
PEXTRW | Cette instruction permet de copier le mot de l'opérande source spécifié par un compteur d'opérande dans l'opérande de destination. |
PINSRW | Cette instruction permet d'effectuer une copie d'un mot d'un opérande source et de l'insérer dans l'opérande de destination de l'emplacement spécifié par un compteur d'opérande. |
PMAXSW | Cette instruction permet de retourner la valeur maximal de chacun des mots (entier) des paquets contenu dans deux opérandes. |
PMAXUB | Cette instruction permet de retourner la valeur maximal de chacun des octets des paquets contenu dans deux opérandes. |
PMINSW | Cette instruction permet de retourner la valeur minimal de chacun des mots des paquets contenu dans deux opérandes. |
PMINUB | Cette instruction permet de retourner la valeur minimal de chacun des octets des paquets contenu dans deux opérandes. |
PMOVMSKB | Cette instruction permet de copiés les masques de chacun des octets d'un paquet contenu dans une opérande. |
PMULHUW | Cette instruction permet d'effectuer la multiplication de la partie haute de chacun des entiers des 2 paquets d'opérandes. |
PREFETCH0 | Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mémoire spécifié dans le cache de données T0 du microprocesseur. Alias de PREFETCHT0. |
PREFETCH1 | Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mémoire spécifié dans le cache de données T1 du microprocesseur. Alias de PREFETCHT1. |
PREFETCH2 | Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mémoire spécifié dans le cache de données T2 du microprocesseur. Alias de PREFETCHT2. |
PREFETCHNTA | Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mémoire spécifié dans le cache de données NTA du microprocesseur. |
PREFETCHT0 | Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mémoire spécifié dans le cache de données T0 du microprocesseur. Alias de PREFETCH0. |
PREFETCHT1 | Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mémoire spécifié dans le cache de données T1 du microprocesseur. Alias de PREFETCH1. |
PREFETCHT2 | Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mémoire spécifié dans le cache de données T2 du microprocesseur. Alias de PREFETCH2. |
PSADBW | Cette instruction permet d'effectuer le calcul la valeur de absolue de la différence des octets de paquet contenu dans une opérande source et destination. |
PSHUFW | Cette instruction permet de copier une double mots d'un opérande source avec emplacement spécifié par un opérande immédiate dans un opérande de destination. |
RCPPS | Cette instruction permet d'effectuer le calcul de la réciproque d'un paquet de valeurs de réel de simple précision. |
RCPSS | Cette instruction permet d'effectuer le calcul de la réciproque d'une valeur de réel de simple précision. |
RSQRTPS | Cette instruction permet de calculer la réciproque approximative de la racine carré d'un paquet de simple précision. |
RSQRTSS | Cette instruction permet de calculer la réciproque approximative de la racine carré d'un scalaire de simple précision. |
SFENCE | Cette instruction permet d'agir comme une barrière pour forcer une priorité en mémoire (sérialisation) entre les instructions précédant emmagasiner du SFENCE et les instructions suivant le SFENCE. |
SHUFPS | Cette instruction permet de copier 4 paquets de valeurs de format réel de simple précision dans une opérande destinataire dans la partie basse d'un quadruple mot de celle-ci et copie 2 des 4 paquets de valeurs de format réel de simple précision dans l'opérande source dans la partie haute d'un quadruple mot de l'opérande destinataire. |
SQRTPS | Cette instruction permet d'effectuer le calcul de la racine carré d'un paquet de valeur de simple précision réel de l'opérande source et de mettre son résultat dans l'opérande de destination sous forme d'un réel de simple précision. |
SQRTSS | Cette instruction permet d'effectuer le calcul de la racine carré d'une valeur de simple précision réel de l'opérande source et de mettre son résultat dans l'opérande de destination sous forme d'un réel de simple précision. |
STMXCSR | Cette instruction permet de copier le MXCSR dans un emplacement mémoire de 32 bits. |
SUBPS | Cette instruction permet d'effectuer une soustraction de 4 paquets de valeurs réels de simple précision d'une opérande source et d'une opérande destination et entrepose le résultat dans l'opérande de destination sous le format d'un paquet de valeurs réels de simple précision. |
SUBSS | Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur réel de simple précision d'une opérande source et destination et entrepose le résultat dans une opérande de destination de valeur réel de simple précision. |
UCOMISD | Cette instruction permet d'effectuer une comparaison désordonnée de valeurs réels de double précision dans la partie basse d'un double mot du premier opérande et du deuxième opérande, et fixe les drapeaux ZF, PF et FC dans le registre EFLAGS selon le résultat (non-ordonnée, supérieur à, inférieur ou égal) |
UCOMISS | Cette instruction permet d'effectuer une comparaison désordonnée de valeurs réels de simple précision dans la partie basse d'un double mot du premier opérande et du deuxième opérande, et fixe les drapeaux ZF, PF et FC dans le registre EFLAGS selon le résultat (non-ordonnée, supérieur à, inférieur ou égal) |
UNPCKHPS | Cette instruction permet d'effectuer un dépaquetage de la partie haute d'un réel de simple précision d'un opérande source et destination et met le résultat dans l'opérande de destination. |
UNPCKLPS | Cette instruction permet d'effectuer un dépaquetage de la partie basse d'un réel de simple précision d'une opérande source et destination et met le résultat dans l'opérande de destination. |
XORPS | Cette instruction permet d'effectuer un ou exclusif binaire de 4 paquets de valeurs réel de simple précision dans une opérande source et destination et de mettre le résultat dans l'opérande de destination. |
Pentium 4 (SSE2)
Voici la liste des instructions ajouter au Pentium 4 (SSE2):
Instruction | Description |
---|---|
ADDPD | Cette instruction permet d'effectuer une addition de 2 paquets de valeurs réels de double précision d'un opérande source et d'un opérande destination et entrepose le résultat dans l'opérande de destination sous le format d'un paquet de valeurs réels de double précision. |
ADDSD | Cette instruction permet d'effectuer une addition de la partie basse d'une valeur réel de double précision d'un opérande source et destination et entrepose le résultat dans un opérande de destination de valeur réel de double précision. |
ANDNPD | Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets d'opérandes de valeur de format réel de double précision et inverse chacun des bits du résultat. |
ANDPD | Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets d'opérandes de valeur de format réel de double précision. |
CLFLUSH | Cette instruction permet de vider la ligne de cache d'une adresse linéaire. |
CMPPD | Cette instruction permet d'effectuer une comparaison SIMD de 2 paquets de valeurs réels de double précision d'un opérande source et d'un opérande destination et entrepose le résultat de la comparaison dans l'opérande de destination. |
COMISD | Cette instruction permet de comparer deux valeurs réel de double-précision dans la partie faible du quadruple mot de deux opérande et fixe les drapeaux de ZF, PF et FC du registre EFLAGS en fonction du résultat (non-ordonnée, supérieur à, inférieur ou égal). |
CVTDQ2PD | Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs réel de double précision. |
CVTDQ2PS | Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs réel de simple précision. |
CVTPD2DQ | Cette instruction permet d'effectuer la conversion d'un paquet de valeurs réel de double précision en double mot entier et fixe à 0 le reste du paquet. |
CVTPD2PI | Cette instruction permet d'effectuer la conversion d'un paquet de valeurs réel de double précision en double mot entier. |
CVTPD2PS | Cette instruction permet d'effectuer la conversion d'un paquet de valeurs réel de double précision en valeurs réel de simple précision et fixe à 0 le reste du paquet. |
CVTPI2PD | Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs réel de double précision compacté. |
CVTPS2DQ | Cette instruction permet d'effectuer la conversion d'un paquet de valeurs réel de simple précision en paquet de doubles mots entiers. |
CVTPS2PD | Cette instruction permet d'effectuer la conversion d'un paquet de valeurs réel de simple précision en paquet de valeurs réel de double précision. |
CVTSD2SI | Cette instruction permet d'effectuer la conversion d'une valeur réel de simple précision en valeur entier de double mots. |
CVTSD2SS | Cette instruction permet d'effectuer la conversion d'une valeur réel de double précision en valeur réel de simple précision. |
CVTSS2SD | Cette instruction permet de convertir une valeur réel de simple précision en une valeur réel de double précision. |
CVTTPD2DQ | Cette instruction permet de convertir un paquet de valeur réel de double précision avec en un paquet d'entier de format double mot tronquer et fixe à 0 le reste du paquet. |
CVTTPD2PI | Cette instruction permet de convertir une valeur réel de double précision compacté avec tronquage en un entier de format double mot compacté. |
CVTTPS2DQ | Cette instruction permet de convertir un paquet de valeur réel de simple précision avec en un paquet d'entier de format double mot tronquer. |
CVTTSD2SI | Cette instruction permet de convertir une valeur réel de double précision avec en un entier de format double mot tronquer. |
DIVPD | Cette instruction permet d'effectuer une division de valeur réel de double précision de registre XMM ou d'emplacement mémoire de 128 bits. |
DIVSD | Cette instruction permet d'effectuer une division scalaire de valeur réel de double précision de registre XMM ou d'emplacement mémoire de 128 bits. |
LFENCE | Cette instruction permet d'agir comme une barrière pour forcer une priorité en mémoire (sérialisation) entre les instructions précédant le LFENCE et les instructions de chargement suivant le LFENCE. |
MASKMOVDQU | Cette instruction permet d'entreposer les octets sélectionnés par l'opérande source dans une emplacement mémoire de 128 bits. |
MAXPD | Cette instruction permet de retourner la valeur maximal de chacune des paires de valeur entre l'opérande source et l'opérande de destination de nombre réel de double précision. |
MAXSD | Cette instruction permet de retourner la valeur maximal entre l'opérande source et destination de nombre réel de simple précision. |
MFENCE | Cette instruction permet d'agir comme une barrière pour forcer une priorité en mémoire (sérialisation) entre les instructions précédant le MFENCE et les instructions de chargement et d'entreposage précédent le MFENCE. |
MINPD | Cette instruction permet de retourner la valeur minimal de chacune des paires de valeur entre l'opérande source et l'opérande de destination de nombre réel de double précision. |
MINSD | Cette instruction permet de retourner la valeur minimal entre l'opérande source et destination de nombre réel de simple précision. |
MOVAPD | Cette instruction permet de copier le contenu de 2 paquets alignés de valeurs réel de double précision. |
MOVHPD | Cette instruction permet de copier le contenu du haut de deux paquets de valeurs réel de double précision dans une opérande de destination. |
MOVLPD | Cette instruction permet de copier le contenu du bas de deux paquets de valeurs réel de double précision dans un opérande de destination. |
MOVMSKPD | Cette instruction permet de copier les bits de signes de deux paquets de valeurs réels de double précision d'un registre XMM dans les 2 bits les plus bas d'un registre 32 bits. Les autres bits du registres 32 bits sont fixés à 0. |
MOVNTI | Cette instruction permet de copier une valeur 32 ou 64 bits dans un emplacement mémoire afin de minimiser la pollution du cache dans un processus léger. |
MOVNTDQ | Cette instruction permet de copier le contenu de double quadruple mots d'un opérande source vers un opérande de destination sans utiliser la méthode temporel pour minimiser la pollution du cache. |
MOVNTPD | Cette instruction permet de copier le contenu de valeur réel de double précision d'un opérande source vers un opérande de destination sans utiliser la méthode temporel pour minimiser la pollution du cache. |
MOVSD | Cette instruction permet de copier un scalaire de valeur de double précision d'un opérande source vers un opérande destination. |
MOVUPD | Cette instruction permet de copier le contenu de 2 paquets désalignés de valeurs réel de double précision. |
MULPD | Cette instruction permet d'effectuer la multiplication de chacune des paires de valeur de double précision de l'opérande source et l'opérande de destination. |
MULSD | Cette instruction permet d'effectuer la multiplication scalaire de valeurs réel de double précision de l'opérande source et l'opérande de destination. |
ORPD | Cette instruction permet d'effectuer un OU BINAIRE de 128 bits sur les 2 opérandes réels de double précisions spécifiés. |
PAUSE | Cette instruction permet d'améliorer les performances des boucles de «SPIN», en fournissant une indication pour le microprocesseur que le code courant est dans une boucle en «SPIN». |
SHUFPD | Cette instruction permet de copier 4 paquets de valeurs de format réel de double précision dans un opérande destinataire dans la partie basse d'un quadruple mot de celle-ci et copie 2 des 4 paquets de valeurs de format réel de simple précision dans l'opérande source dans la partie haute d'un quadruple mot de l'opérande destinataire. |
SQRTPD | Cette instruction permet d'effectuer le calcul de la racine carré d'un paquet de valeur de double précision réel de l'opérande source et de mettre son résultat dans l'opérande de destination sous forme d'un réel de double précision. |
SQRTSD | Cette instruction permet d'effectuer le calcul de la racine carré d'une valeur de double précision réel de l'opérande source et de mettre son résultat dans l'opérande de destination sous forme d'un réel de double précision. |
SUBPD | Cette instruction permet d'effectuer une soustraction de 2 paquets de valeurs réels de double précision d'un opérande source et d'un opérande destination et entrepose le résultat dans l'opérande de destination sous le format d'un paquet de valeurs réels de double précision. |
SUBSD | Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur réel de double précision d'un opérande source et destination et entrepose le résultat dans un opérande de destination de valeur réel de double précision. |
UCOMISD | Cette instruction permet d'effectuer une comparaison désordonnée de valeurs réels de double précision dans la partie basse d'un double mot du premier opérande et du deuxième opérande, et fixe les drapeaux ZF, PF et FC dans le registre EFLAGS selon le résultat (non-ordonnée, supérieur à, inférieur ou égal) |
UNPCKHPD | Cette instruction permet d'effectuer un dépaquetage de la partie haute d'un réel de double précision d'un opérande source et destination et met le résultat dans l'opérande de destination. |
UNPCKLPD | Cette instruction permet d'effectuer un dépaquetage de la partie basse d'un réel de double précision d'un opérande source et destination et met le résultat dans l'opérande de destination. |
XORPD | Cette instruction permet d'effectuer un ou exclusif binaire de 2 paquets de valeurs réel de double précision dans un opérande source et destination et de mettre le résultat dans l'opérande de destination. |
Pentium 4 (SSE3)
Voici la liste des instructions ajouter au Pentium 4 (SSE3):
Instruction | Description |
---|---|
LDDQU | Cette instruction permet de copier un quadruple mot d'une opérande source vers une opérande destination. |
MONITOR | Cette instruction permet d'indiquer au microprocesseur quel rangé d'adresse est à serveiller par l'instruction STORE. |
MWAIT | Cette instruction permet d'indiquer au microprocesseur que l'état de l'alimentation de la ligne de cache est en attente d'écriture dans la plage d'adresse, mettant fin à la plupart des activités dans le noyau en le faisant. |
VMX
Voici la liste des instructions ajouter pour la virtualisation par INTEL sous le nom VMX :
Instruction | Description |
---|---|
INVEPT | Cette instruction permet d'invalider la cartographie dans translation des tampons (TLB) et des caches de pagination structuré dérivé des tables de pages étendue (EPT). |
INVVPID | Cette instruction permet d'invalider la cartographie dans translation des tampons (TLB) et des caches de pagination structuré basé sur l'identificateur de processeur virtuel (VPID). |
VMCALL | Cette instruction permet de fournir un mécanisme invité logiciel pour appeler un service dans un moniteur VM. |
VMCLEAR | Cette instruction permet d'appliquer un VMCS à une région VMCS à l'adresse physique contenu dans l'opération spécifié. |
VMLAUNCH | Cette instruction permet de gérer l'entrée VM par le VMCS courant, de façon à échoué si l'état de lancement VMCS courant n'est pas effacé. Si l'instruction est un succès, il définit l'état de lancement à relancer. |
VMPTRLD | Cette instruction permet de marquer le pointeur VMCS courant valide et charge celui-ci avec une adresse physique dans l'opérande d'instruction. |
VMPTRST | Cette instruction permet d'entreposer le pointeur VMCS courant dans l'adresse mémoire spécifié. |
VMREAD | Cette instruction permet d'effectuer la lecture du champ spécifié dans le VMCS et l'entrepose dans l'opérande de destination spécifié. |
VMRESUME | Cette instruction permet de gérer l'entrée VM par le VMCS courant, de façon à échoué si l'état le lancement VMCS courant n'est pas lancé. |
VMWRITE | Cette instruction permet d'effectuer l'écriture du champ spécifié du VMCS spécifié par l'opérande source secondaire (registre seulement) en utilisant le contenu de l'opérande source primaire (registre ou mémoire). |
VMXOFF | Cette instruction permet d'utiliser le processeur logique en dehors de l'opération VMX, de débloquer le signal INIT, de conditionnellement réactiver le A20M et d'effacer tous les rangs d'adresse du moniteur. |
VMXON | Cette instruction permet d'utiliser le processeur logique dans une opération VMX avec le VMCS non courant, le signal INIT bloqué, la désactivation A20M, et en effaçant n'importe quel rang d'adresse du moniteur établit avec l'instruction MONITOR. |
AMD-V
Voici la liste des instructions ajouter au AMD-V:
Instruction | Description |
---|---|
CLGI | Cette instruction permet d'effacer les drapeaux global d'interruption (GIF). Quand le GIF est à 0, toutes les interruptions externes sont désactivés. |
SKINIT | Cette instruction permet de réinitialiser de façon sécuritaire le microprocesseur et de démarrer un logiciel de confiance comme un VMM. |
STGI | Cette instruction permet de fixer les drapeaux global d'interruption (GIF). Quand le GIF est à 1, les interruptions externes sont réactivés. |
VMLOAD | Cette instruction permet d'effectuer le chargement d'un sous-ensemble d'état de microprocesseur dans un VMCB spécifié par une adresse physique contenu dans le registre RAX. |
VMMCALL | Cette instruction permet de fournir un mécanisme invité pour communiquer explicitement avec le VMM en générant un #VMEXIT. |
VMRUN | Cette instruction permet de lancer l'exécution d'un flux d'instructions invité. |
VMSAVE | Cette instruction permet d'entreposer un sous-ensemble d'état du microprocesseur dans un VMCB spécifié par une adresse physique contenu dans le registre RAX. |
x86-64
Voici la liste des instructions ajouter au x86-64:
Instruction | Description |
---|---|
CMPXCHG16B | Cette instruction permet de comparer un nombre de 128 bits et les échanges si la condition est vrai. |
CMPSQ | Cette instruction permet d'effectuer la comparaison d'un quadruple 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. |
INVLPGA | Cette instruction permet d'invalider la cartographie TLB (Translation Lookaside Buffer) pour une page virtual et un ASID spécifié. |
IRETQ | Cette instruction permet d'effectuer un retour 64-bits précédemment provoquer par une interruption. |
LODSQ | Cette instruction permet de copier un élément de l'adresse DS:(R)SI dans le registre accumulateur et incrémente/décrémente le registre (R)SI de 8 en fonction de l'état du drapeau de direction. |
PUSHFQ | Cette instruction permet d'empiler respectivement le registre 64 bits de drapeau (RFLAGS) des indicateurs d'état dans la pile. |
RDTSCP | Cette instruction permet de charger la valeur courante du compteur de temps du microprocesseur dans le couple de registres EDX:EAX et la valeur du TSC_AUX dans le registre ECX. |
MOVSQ | Cette instruction permet de copier un quadruple mot de l'adresse DS:(R)SI dans l'adresse ES:(R)DI et incrémente/décrémente les registres (R)DI et (R)SI de 8 en fonction de l'état du drapeau de direction. |
MOVSXD | Cette instruction permet de copier un registre de taille inférieur dans un registre 64 bits en remplissant les bits supplémentaires avec l'extension des signes. |
POPFQ | Cette instruction permet de désempiler de la pile le registre 64 bits de drapeau (RFLAGS) contenant les indicateurs d'état. |
STOSQ | Cette instruction permet de copier le registre RAX dans la cellule mémoire à l'adresse ES:[(R)DI] et incrémente/décrémente le registre (R)DI de 8 en fonction de l'état du drapeau de direction. |
SWAPGS | Cette instruction permet de fournir une méthode à un logiciel système pour charger un pointeur sur une structure de données système. |
AMD K10 (SSE4a)
Voici la liste des instructions ajouter au AMD K10 (SSE4a):
Instruction | Description |
---|---|
LZCNT | Cette instruction permet de compter le nombre de bits à 0 dans un registre 16, 32 ou 64 bits contenu dans l'opérande source. |
POPCNT | Cette instruction permet de compter le nombre de bits à 1 que possède une opérande source et place le résultat dans un registre destinataire. |
Références
Assembleur - Référence, Edition Micro Application, Pierre Maurette, 2003, ISBN: 2-7429-3061-2.
The Undocumented PC: A programmer's Guide to I/O, CPUs, and Fixed Memory Areas - Second Edition, Edition Addison-Wesley, Frank van Gilluwe, 1997, ISBN: 0-201-47950-8.