Ce document ne peut tre vendu sans le consentement de lauteur, cependant, il est libre de diffusion et il peut tre copi sur nimporte quel support de donnes du moment que le nom de lauteur nest pas effac ou remplac. Tous les informations sont galements disponible sur le site http://www.gladir.com/, lequel les informations original. De plus, les noms AMD, IBM, Cyrix, Intel et autres, sont des produits appartenant respectivements aux compagnies mentionns, et ils sont libres de modifis sans pravis le fonctionnement de leur matriel.
Annexe A Voici une table des instructions du langage de programmation assembleur de la famille 80x86 :
Instruction AAA AAD AAM AAS Description CPU/MPU Cette instruction permet d'adapter le rsultat obtenu par l'addition de 2 valeurs INTEL 8088+ en format DCB. Cette instruction permet de convertir une valeur de format DCB non INTEL 8088+ compacte. Cette instruction offre la possibilit de convertir le produit de la INTEL 8088+ multiplication de 2 valeurs de format DCB en un format DCB. Cette instruction permet d'adapter le rsultat de la soustraction de nombre de INTEL 8088+ format DCB. Cette instruction additionne 2 quantits numriques sur 8 ou 16 bits et ajoute ensuite la valeur de l'indicateur de retenue, lequel est contenu dans le drapeau INTEL 8088+ CF (CARRY FLAG), la somme obtenu. Cette instruction additionne 2 quantits numriques sur 8 ou 16 bits. INTEL 8088+
ADC ADD
ADDPD
Cette instruction permet d'effectuer une addition de 2 paquets de valeurs rels de double prcision dun oprande source et dun oprande destination et INTEL Pentium 4+ entrepose le rsultat dans l'oprande de destination sous le format d'un paquet de valeurs rels de double prcision. Cette instruction permet d'effectuer une addition SIMD de 4 paquets de valeurs rels de simple prcision dun oprande source et dun oprande INTEL Pentium III (SSE)+ destination et entrepose le rsultat dans l'oprande de destination sous le format d'un paquet de valeurs rels de simple prcision. Cette instruction permet d'effectuer une addition de la partie basse d'une valeur rel de double prcision dun oprande source et destination et INTEL Pentium 4+ entrepose le rsultat dans un oprande de destination de valeur rel de double prcision. Cette instruction permet d'effectuer une addition de la partie basse d'une valeur rel de simple prcision dun oprande source et destination et INTEL Pentium III (SSE)+ entrepose le rsultat dans un oprande de destination de valeur rel de simple prcision. Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur rel de double prcision dun oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de double INTEL Pentium 4 (SSE3)+ prcision et d'effectuer une addition de la partie haute d'une valeur rel de double prcision dun oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de double prcision. Cette instruction permet d'effectuer une soustraction de la partie basse d'un paquet de valeur rel de simple prcision dun oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de simple prcision et d'effectuer une addition de la partie haute d'un paquet de INTEL Pentium 4 (SSE3)+ valeur rel de simple prcision dun oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de simple prcision. Cette instruction permet d'effectuer un ET BINAIRE sur les 2 oprandes INTEL 8088+ spcifis. Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets d'oprandes de valeur de format rel de double prcision et inverse chacun INTEL Pentium 4+ des bits du rsultat. Cette instruction permet d'effectuer un ET BINAIRE sur les 2 oprandes 128 INTEL Pentium III (SSE)+ bits spcifis et inverse chacun des bits du rsultat. Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets INTEL Pentium 4+
ADDPS
ADDSD
ADDSS
ADDSUBPD
ADDSUBPS
AND
ANDNPD
ANDNPS ANDPD
d'oprandes de valeur de format rel de double prcision. ANDPS ARPL BOUND BSF BSR BSWAP BT BTC BTR Cette instruction permet d'effectuer un ET BINAIRE sur les 2 oprandes 128 INTEL Pentium III (SSE)+ bits spcifis. Cette instruction permet de contrler et corriger le niveau de privilge du INTEL 80286+ segment de code en mode protge. Cette instruction permet de vrifier la validit pouvant exister entre avec un INTEL 80186+ tableau et son indexation. Cette instruction permet d'effectuer une comparaison binaire de la droite vers INTEL 80386+ la gauche. Cette instruction permet d'effectuer une comparaison binaire de la gauche INTEL 80386+ vers la droite. Cette instruction permet d'inverse l'ordre des 4 octets d'un registre de taille de INTEL 80486+ 32 bits. Cette instruction permet de transfrer une Oprande vers l'indicateur de INTEL 80386+ retenue. Cette instruction transfre une Oprande vers l'indicateur de retenue le bit INTEL 80386+ spcifi et inverser la valeur du bit correspondant. Cette instruction permet de transfrer l'Oprande vers l'indicateur de retenue INTEL 80386+ le bit spcifi puis met le bit correspondant de l'Oprande 0. Cette instruction permet de transfrer une Oprande vers l'indicateur de retenue le bit spcifi puis ensuite met le bit correspondant dans Oprande INTEL 80386+ 1. Cette instruction force le microprocesseur excuter les instructions du sousINTEL 8088+ programme indiqu par l'adresse d'appel avant de continuer. 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 INTEL 8088+ une extension du signe. Cette instruction permet de convertir le double mot en un quadruple mot, le INTEL 80386+ rsultat tient sur une taille de 64 bits. Cette instruction permet de convertir le double mot du registre EAX en un x86-64+ quadruple mot RAX, le rsultat tient sur une taille de 64 bits. Cette instruction permet de mettre l'indicateur d'tat de retenu CF 0. Cette instruction met l'indicateur d'tat DF 0. Cette instruction permet de vider la ligne de cache d'une adresse linaire. INTEL 8088+ INTEL 8088+ INTEL Pentium 4 (SSE2)+
BTS
CALL
CBW
CDQ CDQE CLC CLD CLFLUSH CLGI CLI CLTS CMC CMOV CMP
Cette instruction permet d'effacer le drapeau global d'interruption (GIF). AMD-V Quand le GIF est 0, toutes les interruptions externes sont dsactives. Cette instruction met l'indicateur d'tat IF 0. INTEL 8088+
Cette instruction permet de mettre 0 le drapeau de l'indicateur de tche INTEL 80286+ (Task-Switch) du registre CR0. Cette instruction offre la possibilit d'inverser la valeur de l'indicateur de INTEL 8088+ retenue. Si ce dernier vaut 1, elle le met 0 et inversement. Cette instruction copie des donnes d'une source (valeur) une destination INTEL Pentium Pro+ (registre) la condition que la condition demande soit remplie. Cette instruction offre la possibilit essentielle de comparer 2 registres ou INTEL 8088+ emplacements de mmoire. Cette instruction permet d'effectuer une comparaison SIMD de 4 paquets de valeurs rels de simple prcision dun oprande source et dun oprande INTEL Pentium III (SSE)+ destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
CMPPS
CMPS
Cette instruction permet d'effectuer la comparaison d'un octet, d'un mot ou double mot spcifi avec l'oprande source et destination spcifi et fixe l'tat INTEL 8088+ des drapeaux du registres EFLAGS en fonction des rsultats de la comparaison. Cette instruction permet d'effectuer la comparaison d'un octet avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des drapeaux du INTEL 8086+ registres EFLAGS en fonction des rsultats de la comparaison. Cette instruction permet d'effectuer la comparaison d'un double mot avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des INTEL 80386+ drapeaux du registres EFLAGS en fonction des rsultats de la comparaison. Cette instruction permet d'effectuer la comparaison d'un quadruple mot avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des x86-64+ drapeaux du registres EFLAGS en fonction des rsultats de la comparaison. Cette instruction permet d'effectuer une comparaison de la partie basse de valeurs relles de simple prcision dun oprande source et dun oprande INTEL Pentium III (SSE)+ destination et entrepose le rsultat de la comparaison dans l'oprande de destination. Cette instruction permet d'effectuer la comparaison d'un mot avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des drapeaux du INTEL 8086+ registres EFLAGS en fonction des rsultats de la comparaison. Cette instruction compare la destination avec l'accumulateur (AL, AX ou EAX) INTEL Pentium+ et les changes si la condition est vraie. Cette instruction compare un nombre de 64 bits et les changes si la condition INTEL Pentium+ est vraie. Cette instruction permet de comparer un nombre de 128 bits et les changes si INTEL x86-64+ la condition est vraie. Cette instruction permet de comparer deux valeurs rel de double-prcision dans la partie faible du quadruple mot de deux oprande et fixe les drapeaux INTEL Pentium III+ de ZF, PF et FC du registre EFLAGS en fonction du rsultat (non-ordonne, suprieur , infrieur ou gal). Cette instruction permet de comparer deux valeurs rel de simple-prcision dans la partie faible du quadruple mot de deux oprande et fixe les drapeaux INTEL Pentium III+ de ZF, PF et FC du registre EFLAGS en fonction du rsultat (non-ordonne, suprieur , infrieur ou gal). Cette instruction retourne le code d'identification du microprocesseur. INTEL Pentium+
CMPSB
CMPSD
CMPSQ
CMPSS
CMPSW
COMISD
COMISS
Cette instruction permet de convertir le quadruple mot du registre EAX en x86-64+ deux quadruples mots RDX:RAX, le rsultat tient sur une taille de 128 bits. Cette instruction permet d'effectuer la conversion d'un paquet de double mot INTEL Pentium 4+ entier en valeurs rel de double prcision. Cette instruction permet d'effectuer la conversion d'un paquet de double mot INTEL Pentium 4+ entier en valeurs rel de simple prcision. Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel INTEL Pentium 4+ de double prcision en double mot entier et fixe 0 le reste du paquet. Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel INTEL Pentium 4+ de double prcision en double mot entier. Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de double prcision en valeurs rel de simple prcision et fixe 0 le reste du INTEL Pentium 4+ paquet. Cette instruction permet d'effectuer la conversion d'un paquet de double mot INTEL Pentium 4+ entier en valeurs rel de double prcision compact. Cette instruction permet de convertir un entier de format double mot en une Pentium III (KNI/MMX2)+ valeur rel de simple prcision compact. Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel INTEL Pentium 4+
CVTPD2PS
de simple prcision en paquet de doubles mots entiers. CVTPS2PD CVTPS2PI CVTSD2SI CVTSD2SS CVTSI2SD CVTSI2SS CVTSS2SD CVTSS2SI Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel INTEL Pentium 4+ de simple prcision en paquet de valeurs rel de double prcision. Cette instruction permet de convertir une valeur rel de simple prcision Pentium III (KNI/MMX2)+ compact en un entier de format double mot. Cette instruction permet d'effectuer la conversion d'une valeur rel de simple INTEL Pentium 4+ prcision en valeur entier de double mots. Cette instruction permet d'effectuer la conversion d'une valeur rel de double INTEL Pentium 4+ prcision en valeur rel de simple prcision. Cette instruction permet de convertir un entier de format double mot en une INTEL Pentium 4+ valeur rel de double prcision. Cette instruction permet de convertir un entier de format double mot en une Pentium III (KNI/MMX2)+ valeur rel de simple prcision. Cette instruction permet de convertir une valeur rel de simple prcision en INTEL Pentium 4+ une valeur rel de double prcision. Cette instruction permet de convertir une valeur rel de simple prcision en Pentium III (KNI/MMX2)+ un entier de format double mot. Cette instruction permet de convertir un paquet de valeur rel de double prcision avec en un paquet d'entier de format double mot tronquer et fixe 0 INTEL Pentium 4+ le reste du paquet. Cette instruction permet de convertir une valeur rel de double prcision INTEL Pentium 4+ compact avec tronquage en un entier de format double mot compact. Cette instruction permet de convertir un paquet de valeur rel de simple INTEL Pentium 4+ prcision avec en un paquet d'entier de format double mot tronquer. Cette instruction permet de convertir une valeur rel de simple prcision Pentium III (KNI/MMX2)+ compact avec tronquage en un entier de format double mot compact. Cette instruction permet de convertir une valeur rel de double prcision avec INTEL Pentium 4+ en un entier de format double mot tronquer. Cette instruction permet de convertir un entier de format double mot avec Pentium III (KNI/MMX2)+ tronquage en une valeur rel de simple prcision. 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 INTEL 8088+ signe. Cette instruction est l'alternative pour convertir le mot du registre AX en un INTEL 80386+ double mot contenu dans le registre EAX par extension du signe. Cette instruction corrige aprs coup les retenues lors de la manipulation de INTEL 8088+ valeur DCB. Cette instruction offre l'intressante possibilit de corrige le rsultat d'une INTEL 8088+ soustraction de 2 nombres de format DCB compactes. Cette instruction dcrment de 1 le registre ou l'adresse mmoire spcifi. Cette instruction permet d'effectuer une division non-signe (nombre naturel). INTEL 8088+ INTEL 8088+
CVTTPD2DQ
CWD
Cette instruction permet d'effectuer une division de valeur rel de double INTEL Pentium 4+ prcision de registre XMM ou d'emplacement mmoire de 128 bits. Cette instruction permet d'effectuer une division de valeur rel de simple INTEL Pentium III prcision de registre XMM ou d'emplacement mmoire de 128 bits. (KNI/MMX2)+ Cette instruction permet d'effectuer une division scalaire de valeur rel de INTEL Pentium 4+ double prcision de registre XMM ou d'emplacement mmoire de 128 bits. Cette instruction permet d'effectuer une division scalaire de valeur rel de Pentium III (KNI/MMX2)+ simple prcision de registre XMM ou d'emplacement mmoire de 128 bits.
INTEL Pentium-MMX
Cette instruction permet de crer les structures de paramtres ncessaires aux INTEL 80186+ procdures des langages de haut niveau. Cette instruction active le coprocesseur, lequel se permettra d'utiliser les INTEL 8088 au 80386 mthodes d'adressage du processeur principal (CPU). Cette instruction s'applique calculer 2 puissance le registre mathmatique ST(0) moins 1 et enregistre son produit dans le registre mathmatique ST(0). INTEL MPU 8087+ Alias de F2XM1, mais dconseill. Cette instruction permet d'effectuer le calcul de 2 puissance le registre mathmatique ST(0) moins 1 et enregistre son produit dans le registre INTEL MPU 8087+ mathmatique ST(0). Cette instruction permet de convertir le nombre rel contenu dans le registre INTEL MPU 8087+ mathmatique ST(0) en sa valeur absolue. Cette instruction offre l'essentiel possibilit d'ajouter le nombre rel de valeur INTEL MPU 8087+ positive source cible et enregistre la somme dans cible. Cette instruction complmentaire ajoute le nombre rel source au nombre rel cible et enregistrer la somme dans cible puis prendre le registre mathmatique INTEL MPU 8087+ ST(0) et le dpile. Cette instruction charge la valeur de format DCB compacte aprs le registre INTEL MPU 8087+ mathmatique ST(0). Cette instruction extrait la valeur de format DCB compacte du registre mathmatique ST(0), l'enregistrer dans cible et prendre le registre INTEL MPU 8087+ mathmatique ST(0) et sort de la pile. Cette instruction inverse tout simplement le signe du registre mathmatique INTEL MPU 8087+ ST(0). Cette instruction efface toutes les exceptions contenu dans les drapeaux de INTEL MPU 8087+ registres du coprocesseur mathmatique. Cette instruction permet de dplac des nombres rel (virgule flottante) si la INTEL P6+ condition en question est satisfaite. Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 INTEL MPU 8087+ avec la valeur 1. 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 INTEL Pentium III+ rsultats. 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 INTEL Pentium III+ rsultats et dsempile de la pile la valeur dans le registre. Cette instruction compare le nombre rel de valeur positive source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la INTEL MPU 8087+ valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres. Cette instruction permet de comparer les nombres rels du registre mathmatique ST(1) avec le registre mathmatique ST(0), ensuite de mettre INTEL MPU 8087+ les indicateurs d'tat C0 C3 la valeur 1 et prendre le couple de registre mathmatique ST(1) et ST(0) dans la pile de registres (2 dpilages). Cette instruction calcule le cosinus du registre mathmatique ST(0). Cette instruction permet de dcrmenter le pointeur de pile de registres. Cette instruction permettait de dsactiver les interruptions. INTEL MPU 80387+ INTEL MPU 8087+ INTEL MPU 8087+
F2XM
F2XM1
FABS FADD
FADDP
FBLD
FBSTP
FCOM
FCOMI
FCOMIP
FCOMP
FCOMPP
Cette instruction offre la possibilit d'effectuer des division de nombre rel de INTEL MPU 8087+ valeur positive. Cette instruction offre la possibilit d'effectuer des division de nombre rel et INTEL MPU 8087+
place ST(0) dans la pile. FDIVR FDIVRP FEMMS FENI FFREE FFREEP FIADD FICOM Cette instruction offre la possibilit d'effectuer des division de nombre rel de INTEL MPU 8087+ valeur positive avec les registres inverss cible par source. Cette instruction offre la possibilit d'effectuer des division de nombre rel INTEL MPU 8087+ avec les registres inverss cible par source et place ST(0) dans la pile. Cette instruction permet d'effacer les tats MMX aprs le passage AMD 3DNow! d'instructions MMX. Cette instruction permet d'autoriser les interruptions. Cette instruction permet de librer un des registres de la pile. INTEL MPU 8087 INTEL MPU 8087+
Cette instruction permet de librer un des registres de la pile et d'ensuite de INTEL MPU 80287+ dsempiler le registre de la pile. Cette instruction offre l'essentiel possibilit d'ajoute le nombre rel source INTEL MPU 8087+ cible et enregistre la somme dans cible. Cette instruction permet de comparer le nombre rel source avec le registre INTEL MPU 8087+ mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1. Cette instruction compare le nombre rel source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et INTEL MPU 8087+ dpile le registre mathmatique ST(0) de la pile de registres. Cette instruction offre la possibilit d'effectuer des division de nombre rel. INTEL MPU 8087+
FICOMP FIDIV FIDIVR FILD FIMUL FINCSTP FINIT FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV FLDL2E FLDL2T FLDLG2
Cette instruction offre la possibilit d'effectuer des division de nombre rel INTEL MPU 8087+ avec les registres inverss cible par source. Cette instruction permet de charger le nombre entier auprs du registre ST(0). INTEL MPU 8087+
Cette instruction permet de multiplier le nombre rel source par cible et INTEL MPU 8087+ sauvegarde le rsultat dans cible. Cette instruction permet d'incrmenter le pointeur de pile de registres. Cette instruction mathmatique. permet d'effectuer l'initialisation du coprocesseur INTEL MPU 8087+ INTEL MPU 8087+
Cette instruction permet de sauvegarder le nombre du registre ST(0) dans INTEL MPU 8087+ cible. Cette instruction permet de sauvegarder le nombre du registre ST(0) dans INTEL MPU 8087+ cible et prendre le registre ST(0) de la pile du registres. Cette instruction offre l'essentielle posibilit de soustraire le nombre source INTEL MPU 8087+ du registre ST(0). Cette instruction offre l'essentielle posibilit de soustraire le nombre du INTEL MPU 8087+ registre ST(0) de source. Cette instruction permet de charger le nombre rel du registre ST(0) dans la INTEL MPU 8087+ pile. Cette instruction permet de charger la constante 1,0 du registre ST(0) dans la INTEL MPU 8087+ pile. Cette instruction permet de charger le mot de contrle avec source. Cette instruction permet de charger l'environnement partir de source. INTEL MPU 8087+ INTEL MPU 8087+
Cette instruction permet de mettre le rsultat du logarithme de e de la base INTEL MPU 8087+ 2 dans ST(0). Cette instruction permet de mettre le rsultat du logarithme de 10 de la base 2 INTEL MPU 8087+ dans ST(0). Cette instruction permet de mettre le rsultat du logarithme de 2 de la base 10 INTEL MPU 8087+ dans ST(0).
Cette instruction permet de mettre le rsultat du logarithme de e de la base INTEL MPU 8087+ 10 dans ST(0). Cette instruction permet de mettre le rsultat de la constante PI () dans le INTEL MPU 8087+ registre ST(0). Cette instruction permet de mettre le rsultat de la constante 0,0 dans le INTEL MPU 8087+ registre ST(0). Cette instruction permet de multiplier le nombre rel de valeur positive INTEL MPU 8087+ source par cible et sauvegarde le rsultat dans cible. Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible et prend ensuite INTEL MPU 8087+ ST(0) dans la pile de registres. Cette instruction permet d'liminer et de grer les exceptions non masques. INTEL MPU 8087+
Cette instruction permet de dsactiver les interruptions et de grer les INTEL MPU 8087 exceptions non masques. Cette instruction permet d'activer les interruptions et de grer les exceptions INTEL MPU 8087 non masques. Cette instruction permet d'initialiser le coprocesseur mathmatique et de grer INTEL MPU 8087+ les exceptions non masques. Cette instruction permet de ne rien faire et de simplement passer INTEL MPU 8087+ l'instruction suivante. Cette instruction permet de sauvegarder l'tat courant du coprocesseur mathmatique dans l'emplacement mmoire partir de source et grer les INTEL MPU 8087+ exceptions numriques non masques. Cette instruction permet de sauvegarder le mot de contrle dans cible et INTEL MPU 8087+ grer les exceptions numriques non masques. Cette instruction permet de copier l'environnement du coprocesseur mathmatique vers une cible mais sans toutefois attendre que l'exception de INTEL MPU 8087+ nombre rel (virgule flottante) soit effac. Cette instruction permet de copier le mot d'tat du coprocesseur mathmatique vers une cible mais sans toutefois attendre que l'exception de INTEL MPU 8087+ nombre rel (virgule flottante) soit effac. Cette instruction permet de calculer le rsultat de l'arc tangente de ST(1) par INTEL MPU 8087+ ST(0) et de mettre le rsultat dans le registre ST(0). Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et INTEL MPU 8087+ enregistre le reste dans registre ST(0). Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et INTEL MPU 80387+ enregistre le reste IEEE dans registre ST(0). Cette instruction permet d'effectuer le calcule de la fonction trigonomtrique de la tangente du registre ST(0) et enregistre son rsultat dans le registre INTEL MPU 8087+ ST(0). Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 Cyrix 486 avec FPU dcimal selon la mthode CHOP. Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 Cyrix 486 avec FPU dcimal selon la mthode du plus proche. Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 dcimal selon la mthode du plus proche et si le nombre est exactement la Cyrix 486 avec FPU moiti, alors l'instruction arrondit au signe de l'infini. Cette instruction permet d'arrondir le registre ST(0) l'entier le plus proche et INTEL MPU 8087+ enregistre son rsultat dans le registre ST(0). Cette instruction permet de restituer l'tat du coprocesseur prcdamment INTEL MPU 8087+ sauvegard dans l'emplacement mmoire spcifi par source.
FNSAVE
FNSTCW
FNSTENV
FNSTSW
FPTAN
FRICHOP FRINEAR
FRINT2
FRNDINT FRSTOR
Cette instruction permet de sauvegarder l'tat courant du coprocesseur dans INTEL MPU 8087+ l'emplacement mmoire spcifi par source. Cette instruction permet d'effectuer la multiplication du registre ST(0) par 2 INTEL MPU 8087+ puissance le registre ST(1) et sauvegarde le rsultat dans le registre ST(0). Cette instruction permet de faire passer le coprocesseur mathmatique en INTEL MPU 80287 mode protg. Cette instruction permet d'effectuer le calcule de la fonction trigonomtrique du sinus du registre ST(0) et le copie dans le registre ST(1), le registre ST(0) INTEL MPU 80387+ prend la valeur 1,0. Cette instruction permet d'effectuer le calcule de la fonction trigonomtrique du sinus et du cosinus du registre ST(0) puis copie le rsultat du sinus dans le INTEL MPU 80387+ registre ST(0) et le cosinus dans le registre ST(1). Cette instruction permet d'extraire la racine carre du registre ST(0) et de INTEL MPU 8087+ copier son rsultat dans le registre ST(0). Cette instruction permet de copier la valeur rel contenu le registre ST(0) vers INTEL MPU 8087+ une cible. Cette instruction permet de copier le mot de contrle CW vers une cible. INTEL MPU 8087+
FSIN
FSINCOS
Cette instruction permet de copier l'environnement du coprocesseur INTEL MPU 8087+ mathmatique vers une cible. Cette instruction permet de copier un nombre entier et prendre le contenu du INTEL MPU 8087+ registre ST(0) dans la pile de registres (dpilage). Cette instruction permet de copier le mot d'tat du coprocesseur INTEL MPU 8087+ mathmatique vers une cible. Cette instruction permet de soustraire un nombre entier du registre ST(0). INTEL MPU 8087+
Cette instruction permet de soustraire un nombre entier du registre ST(0) et INTEL MPU 8087+ copie le registre ST(0) dans la pile de registres. Cette instruction permet de soustraire un nombre entier du registre ST(0) et copie le registre ST(0) dans la pile de registres. Cette instruction est INTEL MPU 8087+ dconseille. Cette instruction permet de soustraire le registre ST(0) du nombre entier et INTEL MPU 8087+ place le rsultat dans le registre ST(0). Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0) et copie le registre ST(0) dans la pile de INTEL MPU 8087+ registres. Cette instruction permet de comparer le sommet de la pile avec la valeur 0,0 INTEL MPU 8087+ et dfinit les indicateurs d'tats C0 et C3 de faon appropri. Cette instruction compare le registre ST0 avec un oprande et fixe les INTEL MPU 80387+ drapeaux de faon appropri. Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vrifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre INTEL Pentium III+ EFLAGS en fonction des rsultats. Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vrifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre INTEL Pentium III+ EFLAGS en fonction des rsultats et dsempile de la pile la valeur dans le registre. Cette instruction compare le registre ST0 avec un oprande et fixe les INTEL MPU 80387+ drapeaux de faon appropri et dsempile la pile. Cette instruction compare le registre ST0 avec le registre ST1 et fixe les INTEL MPU 80387+ drapeaux de faon appropri et dsempile les registres ST0 et ST1 de la pile. Cette instruction permet d'attendre la fin de l'excution d'une commande INTEL MPU 8087+ avant de poursuivre.
FSUBPP
FSUBR
FSUBRP
FTST FUCOM
FUCOMI
FUCOMIP
10
FXAM FXCH
Cette instruction permet d'examiner le sommet de la pile et dfinit les INTEL MPU 8087+ indicateurs d'tat C0 et C3 de faon appropri. Cette instruction permet d'changer le contenu d'une expression avec celle du INTEL MPU 8087+ registre ST(0) s'il est omis. Cette instruction permet de restituer rapidement 94 (en mode 16 bits) ou 108 (en mode 32 bits) octets d'un contexte de coprocesseur mathmatique vers la INTEL MMX-2+ mmoire. Cette instruction permet de sauvegarder rapidement 94 (en mode 16 bits) ou 108 (en mode 32 bits) octets d'un contexte de coprocesseur mathmatique de INTEL MMX-2+ la mmoire. Cette instruction permet de copier l'exposant du registre ST(0) dans le registre ST(1) comme nombre entier puis copie la mantisse dans la registre ST(0) INTEL MPU 8087+ comme nombre entier. Cette instruction permet de calculer la multiplication du registre ST(1) par le logarithme du registre ST(0) dans la base 2 et copie le rsultat dans le registre INTEL MPU 8087+ ST(0). Cette instruction permet de calculer la multiplication du registre ST(1) par le logarithme du registre ST(0) plus 1 dans la base 2 et copie le rsultat dans le INTEL MPU 8087+ registre ST(0). Cette instruction permet de faire passer le microprocesseur en mode d'arrt. Toutefois, le processeur peut quitter cet tat lorsqu'une ligne matrielle INTEL 8088+ RESET ou lorsqu'une interruption non-masquable (NMI) reoit un signal. Cette instruction permet de faire un tableau de bits du deuxime oprand et le INTEL 80386+ met dans le premier. Cette instruction permet de passer en mode d'instruction ICE (In-Circuit INTEL 80386 au Pentium Pro Emulator) si le bit 12 du registre DR7 vaut 1 sinon il excute l'interruption 1. Cette instruction permet d'effectuer une division signe (nombre entier). Cette instruction permet d'effectuer une multiplication signe (nombre entier). INTEL 8086+ INTEL 8086+
FXRSTOR
FXSAVE
FXTRACT
FYL2X
FYL2XP1
HLT
Cette instruction permet de demander un octet, un mot ou un double mot provenant du port d'entre/sortie et le retourne dans le registre accumulateur INTEL 8086+ (AL, AX, EAX). Cette instruction permet d'incrmenter un registre ou un emplacement INTEL 8086+ mmoire. Cette instruction permet de demander un octet, un mot ou un double mot du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et INTEL 8086+ incrmente/dcrmente le registre DI en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction. Cette instruction permet de demander un octet du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et incrmente/dcrmente le INTEL 80286+ registre DI de 1 en fonction de l'tat du drapeau de direction. Cette instruction permet de demander un double mot du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et incrmente/dcrmente le INTEL 80386+ registre DI de 4 en fonction de l'tat du drapeau de direction. Cette instruction permet de demander un mot du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et incrmente/dcrmente le INTEL 80286+ registre DI de 2 en fonction de l'tat du drapeau de direction. Cette instruction permet d'excuter l'interruption avec le numro spcifi. INTEL 8086+
INC
INS
INSB
INSD
Cette instruction permet d'excuter l'interruption numro 4 si le drapeau de INTEL 8086+ dbordement (OF) est fix sur 1 Cette instruction permet de dsactiver et de vider le tampon interne du microINTEL 80486+ processeur. Cette instruction permet d'invalider les transferts du TLB (Translation INTEL 80486+
11
Lookaside Buffer) du micro-processeur INVLPGA IRET IRETD IRETQ Jump if JMP LAHF LAR LDDQU LDMXCSR LDS LEA Cette instruction permet d'invalider la cartographie TLB (Translation x86-64+ Lookaside Buffer) pour une page virtual et un ASID spcifi. Cette instruction permet d'effectuer un retour prcdemment provoquer par INTEL 8086+ une interruption. Cette instruction permet d'effectuer un retour 32-bits prcdemment INTEL 80386+ provoquer par une interruption. Cette instruction permet d'effectuer un retour 64-bits prcdemment x86-64+ provoquer par une interruption. Ces instructions permettent d'effectuer d'effectuer conditionnel emplacement mmoire spcifi. un branchement INTEL 8086+
Cette instruction permet d'effectuer un branchement un emplacement INTEL 8086+ mmoire spcifi. Cette instruction permet de transfrer les bits d'indicateurs du registre d'tat INTEL 8086+ vers le registre AH. Cette instruction permet de charger le registre des indicateurs d'un INTEL 80286+ descripteur. Cette instruction permet de copier un quadruple mot d'une oprande source INTEL Pentium 4 (SSE3)+ vers une oprande destination. Cette instruction permet d'effectuer le chargement du mot de contrle et d'tat INTEL Pentium III du flux d'extension SIMD d'une oprande mmoire 32 bits. (KNI/MMX2)+ Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits INTEL 8086+ dans la paire de registre de segment DS et dans un registre d'offset spcifi. Cette instruction permet de copier l'offset d'une adresse de mmoire contenu INTEL 8086+ dans un registre spcifi. Cette instruction permet de librer une zone de mmoire attribu par l'instruction ENTER lorsqu'on utilise des procdures dans des langages de INTEL 80286+ programmation de haut niveau. Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits INTEL 8086+ dans la paire de registre de segment ES et dans un registre d'offset spcifi. Cette instruction permet d'agir comme une barrire pour forcer une priorit en mmoire (srialisation) entre les instructions prcdant le LFENCE et les INTEL Pentium 4 (SSE2)+ instructions de chargement suivant le LFENCE. Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits INTEL 80386+ dans la paire de registre de segment FS et dans un registre d'offset spcifi. Cette instruction permet de charger un descripteur de tables globale. INTEL 80286+
LEAVE
LES
LFENCE
Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits INTEL 80386+ dans la paire de registre de segment GS et dans un registre d'offset spcifi. Cette instruction permet de charger un descripteur de tables d'interruption. Cette instruction permet de charger un descripteur de tables local. INTEL 80286+ INTEL 80286+
Cette instruction permet de copier 4 des bits d'une oprande vers les 4 bits de INTEL 80286+ registre de contrle CR0. Cette instruction permet d'effectuer le chargement de tous les registres de INTEL 80286 ou 80386 descripteur de cache. Cette instruction est utilis comme prfixe avec d'autres instructions pour amener le microprocesseur mettre un signal de vrouillage (Lock) sur le INTEL 8086+ bus lors du traitement de l'instruction suivante. Cette instruction permet de copier un lment de l'adresse DS:SI dans le INTEL 8086+ registre accumulateur et incrmente/dcrmente le registre SI en fonction de
LOCK
LODS
12
la taille de l'oprande source et de l'tat du drapeau de direction. LODSB Cette instruction permet de copier un lment de l'adresse DS:SI dans le registre accumulateur et incrmente/dcrmente le registre SI de 1 en fonction INTEL 8086+ de l'tat du drapeau de direction. Cette instruction permet de copier un lment de l'adresse DS:SI dans le registre accumulateur et incrmente/dcrmente le registre SI de 4 en fonction INTEL 80386+ de l'tat du drapeau de direction. Cette instruction permet de copier un lment de l'adresse DS:(R)SI dans le registre accumulateur et incrmente/dcrmente le registre (R)SI de 8 en x86-64+ fonction de l'tat du drapeau de direction. Cette instruction permet de copier un lment de l'adresse DS:SI dans le registre accumulateur et incrmente/dcrmente le registre SI de 2 en fonction INTEL 8086+ de l'tat du drapeau de direction. Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 8086+ destinataire tant que le registre CX ne vaut pas 0. Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 80386+ destinataire tant que le registre ECX ne vaut pas 0. Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 8086+ destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 1. Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 80386+ destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 1. Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 8086+ destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 0. Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 80386+ destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 0. Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 8086+ destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 0. Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 80386+ destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 0. Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 8086+ destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 1. Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette INTEL 80386+ destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 1. Cette instruction permet de charger la limite de segment d'un descripteur de segment spcifi avec l'oprande source dans l'oprande de destination et fixe INTEL 80286+ le drapeau ZF du registre EFLAGS. Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits dans la paire de registre de segment SS (Segment de pile) et dans un registre INTEL 80386+ d'offset spcifi. Cette instruction permet de charger l'oprande source dans le champ du INTEL 80286+ slecteur de segment du registre de tche. Cette instruction permet de compter le nombre de bits 0 dans un registre 16, AMD K10 (SSE4a)+ 32 ou 64 bits contenu dans l'oprande source.
LODSD
LODSQ
LODSW
LOOP
LOOPD
LOOPE
LOOPED
LOOPNE
LOOPNED
LOOPNZ
LOOPNZD
LOOPZ
LOOPZD
LSL
LSS
LTR LZCNT
13
Cette instruction permet d'entreposer les octets slectionns par l'oprande INTEL Pentium 4 (SSE2)+ source dans une emplacement mmoire de 128 bits. Cette instruction permet d'entreposer les octets slectionner de l'oprande Pentium III (KNI/MMX2)+ source dans un emplacement mmoire de 64 bits. Cette instruction permet de retourner la valeur maximal de chacune des paires Pentium III (KNI/MMX2)+ de valeur entre l'oprande source et l'oprande de destination. Cette instruction permet de retourner la valeur maximal entre l'oprande Pentium III (KNI/MMX2)+ source et destination. Cette instruction permet d'agir comme une barrire pour forcer une priorit en mmoire (srialisation) entre les instructions prcdant le MFENCE et les INTEL Pentium 4 (SSE2)+ instructions de chargement et d'entreposage prcdent le MFENCE. Cette instruction permet de retourner la valeur minimal de chacune des paires Pentium III (KNI/MMX2)+ de valeur entre l'oprande source et l'oprande de destination. Cette instruction permet de retourner la valeur minimal entre l'oprande Pentium III (KNI/MMX2)+ source et destination. Cette instruction permet d'indiquer au microprocesseur quel rang d'adresse INTEL Pentium 4+ est serveiller par l'instruction STORE. Cette instruction permet de copier oprande source dans une oprande INTEL 8086+ destinataire. Cette instruction permet de copier le contenu de 4 paquets aligns de valeurs Pentium III (KNI/MMX2)+ rel de simple prcision (4 x 32 bits). Cette instruction permet de copier l'oprande dans un registre XMM ou viceINTEL Pentium MMX+ vera. Cette instruction permet de copier le contenu du haut d'un paquet de valeurs Pentium III (KNI/MMX2)+ rel de simple prcision dans sa partie basse. Cette instruction permet de copier le contenu du haut de deux paquets de Pentium III (KNI/MMX2)+ valeurs rel de simple prcision dans une oprande de destination. Cette instruction permet de copier le contenu du bas d'un paquet de valeurs Pentium III (KNI/MMX2)+ rel de simple prcision dans sa partie haute. Cette instruction permet de copier le contenu du bas de deux paquets de Pentium III (KNI/MMX2)+ valeurs rel de simple prcision dans une oprande de destination. Cette instruction permet de copier le contenu de 4 paquets aligns de valeurs rel de simple prcision sans utiliser la mthode temporel pour minimiser la Pentium III (KNI/MMX2)+ pollution du cache. Cette instruction permet de copier les bits de signes de deux paquets de valeurs rels de double prcision d'un registre XMM dans les 2 bits les plus INTEL Pentium 4 (SSE2)+ bas d'un registre 32 bits. Les autres bits du registres 32 bits sont fixs 0. Cette instruction permet de copier les bits de signes de quatre paquets de valeurs rels de simple prcision d'un registre XMM dans les 4 bits les plus INTEL Pentium 3 (SSE)+ bas d'un registre 32 bits. Les autres bits du registres 32 bits sont fixs 0. Cette instruction permet de copier une valeur 32 ou 64 bits dans un emplacement mmoire afin de minimiser la pollution du cache dans un INTEL Pentium 4 (SSE2)+ processus lger. Cette instruction permet de copier une valeur 64 bits sans utiliser la mthode Pentium III (KNI/MMX2)+ temporel pour minimiser la pollution du cache. Cette instruction permet de copier un quadruple mot d'une oprande source INTEL Pentium MMX+ vers une oprande destination dans le cas des registres XMM. Cette instruction permet de copier un lment de l'adresse DS:SI dans l'adresse ES:DI et incrmente/dcrmente les registres DI et SI en fonction de INTEL 8086+ la taille de l'oprande source et de l'tat du drapeau de direction. Cette instruction permet de copier un octet de l'adresse DS:SI dans l'adresse INTEL 8086+
MFENCE
MINPS MINSS MONITOR MOV MOVAPS MOVD MOVHLPS MOVHPS MOVLHPS MOVLPS
MOVNTPS
MOVMSKPD
MOVMSKPS
MOVNTI
MOVNTQ MOVQ
MOVS MOVSB
14
ES:DI et incrmente/dcrmente les registres DI et SI de 1 en fonction de l'tat du drapeau de direction. MOVSD Cette instruction permet de copier un double mot de l'adresse DS:SI dans l'adresse ES:DI et incrmente/dcrmente les registres DI et SI de 4 en INTEL 80386+ fonction de l'tat du drapeau de direction. Cette instruction permet de copier un quadruple mot de l'adresse DS:(R)SI dans l'adresse ES:(R)DI et incrmente/dcrmente les registres (R)DI et (R)SI x86-64+ de 8 en fonction de l'tat du drapeau de direction. Cette instruction permet de copier une valeur rel de simple prcision d'une Pentium III (KNI/MMX2)+ oprande source vers une oprande de destination. Cette instruction permet de copier un mot de l'adresse DS:SI dans l'adresse ES:DI et incrmente/dcrmente les registres DI et SI de 2 en fonction de INTEL 8086+ l'tat du drapeau de direction. Cette instruction permet de copier un registre de taille infrieur dans un INTEL 80386+ registre de plus grande taille en remplissant les bits supplmentaires par des 1. Cette instruction permet de copier un registre de taille infrieur dans un x86-64+ registre 64 bits en remplissant les bits supplmentaires par des 1. Cette instruction permet de copier le contenu de 4 paquets dsaligns de Pentium III (KNI/MMX2)+ valeurs rel de simple prcision (4 x 32 bits). Cette instruction permet de copier un registre de taille infrieur dans un INTEL 80386+ registre de plus grande taille en remplissant les bits supplmentaires par des 0. Cette instruction permet d'effectuer une multiplication non-signe (nombre INTEL 8086+ naturel). Cette instruction permet d'effectuer la multiplication de chacune des paires de Pentium III (KNI/MMX2)+ valeur de l'oprande source et l'oprande de destination. Cette instruction permet d'effectuer la multiplication scalaire de l'oprande Pentium III (KNI/MMX2)+ source et l'oprande de destination. 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 INTEL Pentium 4+ d'adresse, mettant fin la plupart des activits dans le noyau en le faisant. Cette instruction permet d'effectuer le complment 2 d'une oprande. Cette instruction ne fait rien. INTEL 8086+ INTEL 8086+
MOVSQ
MOVSS
MOVSW
Cette instruction permet d'inverser la valeur de chacun des bits d'une INTEL 8086+ oprande. Cette instruction permet de provoquer l'excution d'un code indfinie. Cyrix Cx6x86/AMD Am5k86
Cette instruction permet d'effectuer un OU BINAIRE sur les 2 oprandes INTEL 8086+ spcifis. Cette instruction permet d'effectuer un OU BINAIRE de 128 bits sur les 2 Pentium III (KNI/MMX2)+ oprandes spcifis. Cette instruction permet d'envoyer un octet, un mot ou un double mot sur le INTEL 8086+ port d'entre/sortie. Cette instruction permet d'envoyer un octet, un mot ou un double mot contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le INTEL 80286+ registre SI en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction. Cette instruction permet d'envoyer un octet contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le registre SI de 1 en fonction de INTEL 80286+ l'tat du drapeau de direction. Cette instruction permet d'envoyer un double mot contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le registre SI de 4 en INTEL 80386+ fonction de l'tat du drapeau de direction.
OUTS
OUTSB
OUTSD
15
Cette instruction permet d'envoyer un mot contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le registre SI de 2 en fonction de INTEL 80286+ l'tat du drapeau de direction. Cette instruction permet de compact 8 paquets de double mots en mots. Cette instruction permet de compact 8 paquets d'entier en octets. Cette instruction permet de compact 8 paquets de mots en octets. INTEL Pentium Pro+ INTEL Pentium Pro+ INTEL Pentium Pro+
Cette instruction permet d'effectuer une addition scalaire sur un paquet de 8 INTEL Pentium Pro+ octets. Cette instruction permet d'effectuer une addition scalaire sur un paquet de 2 INTEL Pentium Pro+ double mots. Cette instruction permet d'effectuer une addition scalaire avec saturation sur INTEL Pentium Pro+ un paquet de 8 octets signs. Cette instruction permet d'effectuer l'addition du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit Cyrix 6x86MX (EMMX)+ le rsultat dans le registre MMX. Cette instruction permet d'effectuer une addition scalaire avec saturation sur INTEL Pentium Pro+ un paquet de 4 entiers. Cette instruction permet d'effectuer une addition scalaire avec saturation sur INTEL Pentium Pro+ un paquet de 8 octets. Cette instruction permet d'effectuer une addition scalaire avec saturation sur INTEL Pentium Pro+ un paquet de 4 mots. Cette instruction permet d'effectuer une addition scalaire sur un paquet de 4 INTEL Pentium Pro+ mots. Cette instruction permet d'effectuer un ET BINAIRE d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres INTEL Pentium MMX+ XMM. Cette instruction permet d'effectuer un ET BINAIRE et une NEGATION de chacun des bits d'un quadruple mot d'une oprande source avec une INTEL Pentium Pro+ oprande destination dans le cas des registres XMM. Cette instruction permet d'amliorer les performances des boucles de SPIN, en fournissant une indication pour le microprocesseur que le code courant est INTEL Pentium 4 (SSE2)+ dans une boucle en SPIN. Cette instruction permet d'effectuer le calcul de la moyenne des paquets Cyrix 6x86MX (EMMX)+ spcifis. Cette instruction permet d'effectuer le calcul de la moyenne de paquets de 8 AMD 3DNow! octets spcifis. Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et INTEL Pentium Pro+ fixe la valeur de chacun d'eux FFh s'ils sont gales sinon 00h. 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 INTEL Pentium Pro+ 00000000h. Cette instruction permet d'effectuer une comparaison sur un paquet de mots et INTEL Pentium Pro+ fixe la valeur de chacun d'eux FFFFh s'ils sont gales sinon 0000h. Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux FFh si l'oprande destinataire est suprieur INTEL Pentium Pro+ l'oprande source sinon 00h. Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de chacun d'eux FFFFFFFFFh si l'oprande INTEL Pentium Pro+ destinataire est suprieur l'oprande source sinon 00000000h. Cette instruction permet d'effectuer une comparaison sur un paquet de mots et INTEL Pentium Pro+ fixe la valeur de chacun d'eux FFFFFh si l'oprande destinataire est
PADDSIW
PAND
PANDN
PAUSE
PCMPEQD
PCMPEQW
PCMPGTB
PCMPGTD
PCMPGTW
16
suprieur l'oprande source sinon 0000h. PDISTIB Cette instruction permet d'effectuer le calcul de la distance entre des octets de deux oprandes, le rsultat de l'addition d'octet de l'oprande de destination et Cyrix 6x86MX (EMMX)+ la saturation du rsultat. Cette instruction permet de copier le mot de l'oprande source spcifi par INTEL Pentium III une compteur d'oprande dans l'oprande de destination. (KNI/MMX2)+ Cette instruction permet de convertir un double mots d'un format rel un AMD 3DNow! format d'entier 32 bits. Cette instruction permet de convertir un double mots d'un format rel un AMD 3DNow! format d'entier 16 bits. Cette instruction permet d'effectuer l'accumulation de double mots. Cette instruction permet d'effectuer l'addition de double mots. AMD 3DNow! AMD 3DNow!
PEXTRW PF2ID PF2IW PFACC PFADD PFCMPEQ PFCMPGE PFCMPGT PFMAX PFMIN PFMUL PFNACC PFPNACC PFRCP
Cette instruction permet d'effectuer la comparaison d'galit d'un paquet de AMD 3DNow! double mots contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la comparaison d'galit ou de supriorit AMD 3DNow! d'un paquet de double mots contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la comparaison de supriorit d'un paquet AMD 3DNow! de double mots contenu dans des oprandes de 64 bits. Cette instruction permet de retourner la valeur maximal de chacun des AMD 3DNow! doubles mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet de retourner la valeur minimal de chacun des doubles AMD 3DNow! mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la multiplication de la valeur de chacun AMD 3DNow! des doubles mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer l'accumulation ngative de double mots. AMD 3DNow!
Cette instruction permet d'effectuer un mixe d'accumulation positive et AMD 3DNow! ngative de double mots. Cette instruction permet d'effectuer la rciproque de la valeur de chacun des AMD 3DNow! doubles mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la premire tape d'itration de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans AMD 3DNow! des oprandes de 64 bits. Cette instruction permet d'effectuer la deuxime tape d'itration de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans AMD 3DNow! des oprandes de 64 bits. Cette instruction permet d'effectuer la premire tape d'itration de la racine carr de la rciproque de la valeur de chacun des doubles mots d'un paquet AMD 3DNow! contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la racine carr approximative de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans AMD 3DNow! des oprandes de 64 bits. Cette instruction permet d'effectuer la soustraction de la valeur de chacun des AMD 3DNow! doubles mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la soustraction invers de la valeur de AMD 3DNow! chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet de convertir un paquet de format d'entier 32 bits AMD 3DNow! double mots d'un format rel. Cette instruction permet de convertir un paquet de format d'entier 16 bits AMD 3DNow! double mots d'un format rel.
PFRCPIT1
PFRCPIT2
PFRSQIT1
PFRSQRT
17
PINSRW
Cette instruction permet d'effectuer une copie d'une oprande source et de INTEL Pentium III l'insrer dans l'oprande de destination de l'emplacement spcifi par un (KNI/MMX2)+ compteur d'oprande. Cette instruction permet d'effectuer une multiplication de 2 oprandes sources en utilisant la mthode dcrite par PMULHRW et accumule le rsultat avec la Cyrix 6x86MX (EMMX)+ valeur dans un registre de destination en utilisant un arrondissement arithmtique. Cette instruction permet d'effectuer une multiplication de 2 registres MMX INTEL Pentium Pro+ contenant dans un paquet de mots d'un emplacement/mmoire. Cette instruction permet d'effectuer la comparaison de la valeur absolue d'un paquet de mots de l'oprande source et de l'ensemble des mots de destination Cyrix 6x86MX (EMMX)+ et fixe l'oprande de destination avec la valeur de la plus large magntude. Cette instruction permet de retourner la valeur maximal de chacun des mots INTEL Pentium III des paquets contenu dans deux oprandes. (KNI/MMX2)+ Cette instruction permet de retourner la valeur maximal de chacun des octets INTEL Pentium III des paquets contenu dans deux oprandes. (KNI/MMX2)+ Cette instruction permet de retourner la valeur minimal de chacun des mots INTEL Pentium III des paquets contenu dans deux oprandes. (KNI/MMX2)+ Cette instruction permet de retourner la valeur minimal de chacun des octets INTEL Pentium III des paquets contenu dans deux oprandes. (KNI/MMX2)+ Cette instruction permet de copis les masques de chacun des octets d'un INTEL Pentium III paquet contenu dans une oprande. (KNI/MMX2)+ Cette instruction permet de retourner le rsultat d'une matrice de 16x16 bits avec un arrondissement LSB avant de tronquer les 16 bits et place ce rsultat Cyrix 6x86MX (EMMX)+ dans un registre MMX. Cette instruction permet de retourner le rsultat d'une matrice de 16x16 bits Cyrix 6x86MX (EMMX)+ avec un arrondissement LSB avant de tronquer les 16 bits. Cette instruction permet d'effectuer la multiplication de la partie haute de INTEL Pentium III chacun des entiers des 2 paquets d'oprandes. (KNI/MMX2)+ Cette instruction permet d'effectuer la multiplication de la partie haute de INTEL Pentium Pro+ chacun des mots des 2 paquets d'oprandes. Cette instruction permet d'effectuer la multiplication de la partie basse de INTEL Pentium Pro+ chacun des mots des 2 paquets d'oprandes. Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande Cyrix 6x86MX (EMMX)+ destination est suprieur 0 et effectue se traitement pour chacun des 8 octets du paquet. Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande Cyrix 6x86MX (EMMX)+ destination est infrieur 0 et effectue se traitement pour chacun des 8 octets du paquet. Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande Cyrix 6x86MX (EMMX)+ destination ne vaut pas 0 et effectue se traitement pour chacun des 8 octets du paquet. Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande Cyrix 6x86MX (EMMX)+ destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet. Cette instruction permet de dsempiler de la pile une mot ou un double mot et INTEL 8086+ la met dans une oprande. Cette instruction permet de dsempiler de la pile respectivement les registres INTEL 80286+ DI, SI, BP, SP, BX, DX, CX et AX.
PMACHRIW
PMADDWD
PMAGW
PMULHRIW
PMVGEZB
PMVLZB
PMVNZB
PMVZB
POP POPA
18
Cette instruction permet de dsempiler de la pile respectivement les registres INTEL 80386+ EDI, ESI, EBP, ESP, EBX, EDX, ECX et EAX. Cette instruction permet de compter le nombre de bits 1 que possde une AMD K10 (SSE4a)+ oprande source et place le rsultat dans un registre destinataire. Cette instruction permet de dsempiler de la pile le registre 16 bits de drapeau INTEL 8086+ contenant les indicateurs d'tat. Cette instruction permet de dsempiler de la pile le registre 32 bits de drapeau INTEL 80386+ contenant les indicateurs d'tat. Cette instruction permet de dsempiler de la pile le registre 64 bits de drapeau x86-64+ (RFLAGS) contenant les indicateurs d'tat. Cette instruction permet d'effectuer un OU BINAIRE d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres INTEL Pentium MMX+ XMM. Cette instruction permet d'effectuer le chargement de l'entre d'une squence d'alignement de mmoire de 64 bits de l'adresse mmoire spcifi dans le AMD K6-2+ cache de donnes L1 du microprocesseur. Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T0 du microprocesseur. INTEL Pentium III (SSE)+ Alias de PREFETCHT0. Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T1 du microprocesseur. INTEL Pentium III (SSE)+ Alias de PREFETCHT1. Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T2 du microprocesseur. INTEL Pentium III (SSE)+ Alias de PREFETCHT2. Cette instruction permet d'effectuer le chargement de la ligne de cache de INTEL Pentium III (SSE)+ l'adresse mmoire spcifi dans le cache de donnes NTA du microprocesseur. Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T0 du microprocesseur. INTEL Pentium III (SSE)+ Alias de PREFETCH0. Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T1 du microprocesseur. INTEL Pentium III (SSE)+ Alias de PREFETCH1. Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T2 du microprocesseur. INTEL Pentium III (SSE)+ Alias de PREFETCH2. Cette instruction permet d'effectuer le chargement de l'entre d'une squence d'alignement de mmoire de 64 bits de l'adresse mmoire spcifi dans le AMD K6-2+ cache de donnes L1 du microprocesseur dans un tat de modification. Cette directive permet de dfinir une procdure (sous-programme). Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un INTEL Pentium Pro+ paquet de double mots. Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un INTEL Pentium Pro+ quadruple mot. Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un INTEL Pentium Pro+ paquet de mots. Cette instruction permet d'effectuer le dcalage arithmtique de bits vers la INTEL Pentium Pro+ droite d'un paquet de double mots. Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un INTEL Pentium Pro+ paquet de mots. Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un INTEL Pentium Pro+ paquet de double mots.
POR
PREFETCH
PREFETCH0
PREFETCH1
PREFETCH2
PREFETCHNTA
PREFETCHT0
PREFETCHT1
PREFETCHT2
19
Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un INTEL Pentium Pro+ quadruple mot. Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un INTEL Pentium Pro+ paquet de mots. Cette instruction permet d'effectuer la soustraction de la valeur de chacun des INTEL Pentium Pro+ octets d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la soustraction de la valeur de chacun des INTEL Pentium Pro+ doubles mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets signs d'un paquet contenu dans des oprandes de INTEL Pentium Pro+ 64 bits. Cette instruction permet d'effectuer la soustraction du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit Cyrix 6x86MX (EMMX)+ le rsultat dans le registre MMX. Cette instruction permet d'effectuer la soustraction du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit INTEL Pentium Pro+ le rsultat dans l'oprande destinataire. Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets d'un paquet contenu dans des oprandes de 64 INTEL Pentium Pro+ bits. Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des mots d'un paquet contenu dans des oprandes de INTEL Pentium Pro+ destinations. Cette instruction permet d'effectuer la soustraction de la valeur de chacun des INTEL Pentium Pro+ mots d'un paquet contenu dans des oprandes de 64 bits. Cette instruction permet d'effectuer l'change de la partie basse de 32 bits avec la partie haute de 32 bits dans des oprandes source de 64 bits et met le 3DNow! rsultat dans une oprande 64 bits destinataire. Cette directive permet de rendre publique une expression pour des liaisons externe. Cette instruction permet de dcompacter des octets en mots dans le haut d'un INTEL Pentium Pro+ paquets de 64 bits. Cette instruction permet de dcompacter des doubles mots en quadruples INTEL Pentium Pro+ mots dans le haut d'un paquets de 64 bits. Cette instruction permet de dcompacter des mots en double mots dans le INTEL Pentium Pro+ haut d'un paquets de 64 bits. Cette instruction permet de dcompacter des octets en mots dans le bas d'un INTEL Pentium Pro+ paquets de 64 bits. Cette instruction permet de dcompacter des doubles mots en quadruples INTEL Pentium Pro+ mots dans le bas d'un paquets de 64 bits. Cette instruction permet de dcompacter des mots en double mots dans le bas INTEL Pentium Pro+ d'un paquets de 64 bits. Cette instruction permet d'empiler une mot ou un double mot dans la pile. INTEL 8086+
PSUBSB
PSUBSIW
PSUBSW
PSUBUSB
PSUBUSW
PSUBW
PSWAPD
PUBLIC PUNPCKHBW PUNPCKHDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD PUSH PUSHA PUSHAD PUSHF PUSHFD
Cette instruction permet d'empiler respectivement les registres DI, SI, BP, SP, INTEL 80286+ BX, DX, CX et AX dans la pile. Cette instruction permet d'empiler respectivement les registres EDI, ESI, INTEL 80386+ EBP, ESP, EBX, EDX, ECX et EAX dans la pile. Cette instruction permet d'empiler respectivement le registre 16 bits de INTEL 8086+ drapeau des indicateurs d'tat dans la pile. Cette instruction permet d'empiler respectivement le registre 32 bits de INTEL 80386+ drapeau des indicateurs d'tat dans la pile.
20
PUSHFQ
Cette instruction permet d'empiler respectivement le registre 64 bits de x86-64+ drapeau (RFLAGS) des indicateurs d'tat dans la pile. Cette instruction permet d'effectuer un ou exclusif binaire d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres INTEL Pentium MMX+ XMM. Cette instruction permet d'effectuer une rotation des bits vers la gauche en rinsrant le bit dans l'indicateur de retenue (CF) ainsi que dans le bit le plus INTEL 8088+ droite libr. Cette instruction permet d'effectuer le calcul de la rciproque d'un paquet de INTEL Pentium III valeurs de rel de simple prcision. (KNI/MMX2)+ Cette instruction permet d'effectuer le calcul de la rciproque d'une valeur de INTEL Pentium III rel de simple prcision. (KNI/MMX2)+ Cette instruction permet d'effectuer une rotation des bits vers la droite en rinsrant le bit dans l'indicateur de retenue (CF) ainsi que dans le bit le plus INTEL 8088+ gauche libr. Cette instruction permet de charger le contenu du modle de registre 64-bits INTEL Pentium+ (MSR) indiquer par le registre ECX dans le couple de registre EDX:EAX. Cette instruction permet d'effectuer la lecture du compteur du moniteur de INTEL Pentium Pro+ performance. Cette instruction permet d'effectuer la lecture du registre de pointeur vers Cyrix CX6x86MX+ l'entte SMM. Cette instruction permet de charger la valeur courante du compteur de temps INTEL Pentium+ du microprocesseur dans le couple de registres EDX:EAX. 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 x86-64+ TSC_AUX dans le registre ECX. Cette instruction est utilis comme prfixe avec d'autres instructions pour INTEL 8086+ effectuer des rptitions d'instructions tant que CX ne vaut pas 0. Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que INTEL 8086+ l'indicateur ZF = 0. Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que INTEL 8086+ l'indicateur ZF = 1. Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que INTEL 8086+ l'indicateur ZF = 1. Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que INTEL 8086+ l'indicateur ZF = 0. Cette instruction permet d'effectuer le chargement de tous les registres de AMD Am386SXLV, descripteur de cache pour les 386. Am386DXLV Cette instruction permet d'effectuer le chargement de tous les registres de AMD Am486SXLV, descripteur de cache pour les 486. Am486DXLV Cette instruction permet de quitter une procdure. INTEL 8086+
PXOR
RCL
RCPPS RCPSS
RCR
RDTSCP
REP
REPE
REPNE
REPNZ
REPZ
Cette instruction permet de quitter une procdure ayant lieu avec un appel INTEL 8086+ long (FAR CALL). Cette instruction permet de quitter une procdure ayant lieu avec un appel INTEL 8086+ court (NEAR CALL). Cette instruction permet d'effectuer une rotation des bits vers la gauche en INTEL 8088+ rinsrant le bit dans le bit le plus droite libr.
21
Cette instruction permet d'effectuer une rotation des bits vers la droite en INTEL 8088+ rinsrant le bit dans le bit le plus gauche libr. Cette instruction permet d'effectuer le restauration de la structure des registres Quelques 486 et des descripteurs. Cette instruction permet d'effectuer la restauration des LDTR et des Quelques 486 descripteurs. Cette instruction permet de retourner le contrle du programme du mode de gestion systme (SMM) pour le programme d'application ou la procdure du INTEL 80486+ systme d'exploitation ayant t interrompu lorsque le microprocesseur recu un signal SSM. Cette instruction permet de calculer la rciproque approximative de la racine INTEL Pentium III carr d'un paquet de simple prcision. (KNI/MMX2)+ Cette instruction permet de calculer la rciproque approximative de la racine INTEL Pentium III carr d'un scalaire de simple prcision. (KNI/MMX2)+ Cette instruction permet d'effectuer le restauration des TR et des descripteurs. Quelques 486
RSM
Cette instruction permet de copier les bits du registre AH dans l'octet de poids INTEL 8088+ faible dans le registre des drapeaux (les indicateurs d'tat). Cette instruction permet d'effectuer une rotation des bits vers la gauche en INTEL 8088+ rinsrant le bit dans l'indicateur de retenue (CF). Cette instruction permet d'effectuer une rotation des bits vers la droite en INTEL 8088+ rinsrant le bit dans l'indicateur de retenue (CF). Cette instruction permet de soustraire avec l'indicateur de retenue (CF) une INTEL 8088+ valeur une oprande. Cette instruction permet de comparer un octet, un mot ou un double mot avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI INTEL 8086+ en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction. Cette instruction permet de comparer le registre AL avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 1 en fonction de INTEL 8086+ l'tat du drapeau de direction. Cette instruction permet de comparer le registre EAX avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 4 en fonction INTEL 80386+ de l'tat du drapeau de direction. Cette instruction permet de comparer le registre AX avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 2 en fonction de INTEL 8086+ l'tat du drapeau de direction. Cette directive permet de demander la partie segment de l'adresse d'une INTEL 8086+ oprande. Ces instructions permettent de fixer la valeur d'une oprande 1 si la condition d'indicateur d'tat du registre 32 bits de drapeau est vrai sinon fixe la valeur INTEL 80386+ 0. Cette instruction permet de copier la valeur du drapeau de retenue dans le INTEL 8086+ registre AL en la multipliant par 0FFh. Cette instruction permet d'agir comme une barrire pour forcer une priorit en mmoire (srialisation) entre les instructions prcdant emmagasiner du Pentium III (SSE)+ SFENCE et les instructions suivant le SFENCE. Cette instruction permet d'entreposer le slecteur de segment dans le registre INTEL 80386+ GDTR (registre de table global de descripteur) dans l'oprande de destination. Cette instruction permet d'effectuer une rotation des bits vers la gauche en INTEL 8088+ rinsrant le bit dans l'indicateur de retenue (CF). Cette instruction permet d'effectuer une rotation des bits d'un double mot vers INTEL 80386+ la gauche en rinsrant le bit dans l'indicateur de retenue (CF).
SCAS
SCASB
SCASD
SCASW
SEG
SET
SETALC
SFENCE
22
SHR SHRD
Cette instruction permet d'effectuer une rotation des bits vers la droite en INTEL 8088+ rinsrant le bit dans l'indicateur de retenue (CF). Cette instruction permet d'effectuer une rotation des bits d'un double mot vers INTEL 80386+ la droite en rinsrant le bit dans l'indicateur de retenue (CF). Cette instruction permet de copier 4 paquets de valeurs de format rel de simple prcision dans une oprande destinataire dans la partie basse d'un INTEL Pentium III quadruple mot de celle-ci et copie 2 des 4 paquets de valeurs de format rel (KNI/MMX2)+ de simple prcision dans l'oprande source dans la partie haute d'un quadruple mot de l'oprande destinataire. Cette instruction permet d'entreposer le registre de descripteur de table INTEL 80386+ d'interruption (IDTR) dans l'oprande de destination. Cette instruction permet de rinitialiser de faon scuritaire le AMD-V microprocesseur et de dmarrer un logiciel de confiance comme un VMM. Cette instruction permet d'entreposer le slecteur de segment dans le registre INTEL 80386+ LDTR (registre de table local de descripteur) dans l'oprande de destination. Cette instruction permet de grer les interruptions systmes en mode de AMD dboguage. Am386SXLV,Am386DXLV Cette instruction permet de faire entre le microprocesseur en mode SMM P6, Cyrix (System Management Mode). Cette instruction permet de faire entre le microprocesseur en mode SMM Quelques 486 (System Management Mode). Cette instruction permet d'entreposer le mot des tats (soit les bits de 0 15 du registre de contrle CR0) partir du registre de tche (TR) dans l'oprande INTEL 80386+ cible. Cette instruction permet d'effectuer le calcul de la racine carr d'un paquet de INTEL Pentium III valeur de simple prcision rel de l'oprande source et de mettre son rsultat (KNI/MMX2)+ dans l'oprande de destination sous forme d'un rel de simple prcision. Cette instruction permet d'effectuer le calcul de la racine carr d'une valeur de INTEL Pentium III simple prcision rel de l'oprande source et de mettre son rsultat dans (KNI/MMX2)+ l'oprande de destination sous forme d'un rel de simple prcision. Ce prfixe permet d'indiquer une instruction d'utiliser le Segment de Pile INTEL 8088+ (Stack Segment) pour adresse dans l'oprande. Cette instruction permet de fixer l'indicateur de retenue (CF) la valeur 1. Cette instruction permet de fixer l'indicateur de direction (DF) la valeur 1. INTEL 8088+ INTEL 8088+
SHUFPS
SMSW
SQRTPS
SQRTSS
Cette instruction permet de fixer les drapeaux global d'interruption (GIF). AMD-V Quand le GIF est 1, les interruptions externes sont ractivs. Cette instruction permet de fixer l'indicateur d'interruption (IF) la valeur 1. INTEL 8088+
Cette instruction permet de copier le MXCSR dans un emplacement mmoire INTEL Pentium III de 32 bits. (KNI/MMX2)+ Cette instruction permet de copier un octet, un mot ou un double mot dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI INTEL 8086+ en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction. Cette instruction permet de copier le registre AL dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 1 en fonction de INTEL 8086+ l'tat du drapeau de direction. Cette instruction permet de copier le registre EAX dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 4 en fonction de INTEL 80386+ l'tat du drapeau de direction. Cette instruction permet de copier le registre RAX dans la cellule mmoire l'adresse ES:[(R)DI] et incrmente/dcrmente le registre (R)DI de 8 en x86-64+ fonction de l'tat du drapeau de direction.
STOS
STOSB
STOSD
STOSQ
23
STOSW
Cette instruction permet de copier le registre AX dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 2 en fonction de INTEL 8086+ l'tat du drapeau de direction. Cette instruction permet d'entreposer le slecteur de segment partir du INTEL 80286+ registre de tche (TR) l'oprande cible Cette instruction permet de soustraire une valeur une oprande. INTEL 8088+
STR SUB
SUBPS
Cette instruction permet d'effectuer une soustraction de 4 paquets de valeurs rels de simple prcision d'une oprande source et d'une oprande destination INTEL Pentium III et entrepose le rsultat dans l'oprande de destination sous le format d'un (KNI/MMX2)+ paquet de valeurs rels de simple prcision. Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur rel de simple prcision d'une oprande source et destination et INTEL Pentium III entrepose le rsultat dans une oprande de destination de valeur rel de simple (KNI/MMX2)+ prcision. Cette instruction permet de sauvegarder le registre et le descripteur. Cette instruction permet de sauvegarder le LDTR et le descripteur. Cette instruction permet de sauvegarder le TR et le descripteur. Quelques 486 Quelques 486 Quelques 486
SUBSS
SVDC SVLDT SVTS SWAPGS SYSCALL SYSENTER SYSEXIT SYSRET TEST TPASCAL
Cette instruction permet de fournir une mthode un logiciel systme pour x86-64+ charger un pointeur sur une structure de donnes systme. Cette instruction permet d'effectuer le transfert du contrle d'un point d'entre AMD K6-2+ fixe au systme d'exploitation. Cette instruction permet d'effectuer le transfrer du contrle d'un point INTEL Pentium Pro+ d'entre au systme d'exploitation. Cette instruction permet de retourner du systme d'exploitation une INTEL Pentium Pro+ application. Cette instruction permet de retourner du systme d'exploitation une AMD K6-2+ application. Cette instruction permet d'effectuer un Et binaire sur une oprande cible INTEL 8088+ sans modifier sa valeur. Cette directive permet la configurant du modle de mmoire simplifi pour INTEL 8088+ crire des procdures appelable du TURBO PASCAL. Cette instruction permet d'effectuer une comparaison dsordonne de valeurs rels de double prcision dans la partie basse d'un double mot du premier oprande et du deuxime oprande, et fixe les drapeaux ZF, PF et FC dans le INTEL Pentium III+ registre EFLAGS selon le rsultat (non-ordonne, suprieur , infrieur ou gal) Cette instruction permet d'effectuer une comparaison dsordonne de valeurs rels de simple prcision dans la partie basse d'un double mot du premier oprande et du deuxime oprande, et fixe les drapeaux ZF, PF et FC dans le INTEL Pentium III+ registre EFLAGS selon le rsultat (non-ordonne, suprieur , infrieur ou gal) Cette instruction permet de provoquer l'excution d'un code indfinie. Cette instruction permet de provoquer l'excution d'un code indfinie. AMD Am5k86 (SSA/5, K5) INTEL Pentium Pro+
UCOMISD
UCOMISS
UD UD2 UMOV
AMD Am386SXLV, Cette instruction permet de copier un oprande source dans une emplacement Am386DXLV, 486s, IBM mmoire principal. 486SLC2 Cette instruction permet d'effectuer un dpaquetage de la partie basse d'un INTEL Pentium III+ rel de simple prcision d'une oprande source et destination et met le rsultat (KNI/MMX2) dans l'oprande de destination. Cette instruction permet de vrifier si le code ou le segment de donnes INTEL 80286+ spcifi est en mode lecture partir du niveau de privilge courant (CPL).
UNPCKLPS
VERR
24
VERW
Cette instruction permet de vrifier si le code ou le segment de donnes INTEL 80286+ spcifi est en mode criture partir du niveau de privilge courant (CPL). Cette instruction permet d'effectuer le chargement d'un sous-ensemble d'tat de microprocesseur dans un VMCB spcifi par une adresse physique contenu AMD-V dans le registre RAX. Cette instruction permet de fournir un mcanisme invit pour communiquer AMD-V explicitement avec le VMM en gnrant un #VMEXIT. Cette instruction permet de lancer l'excution d'un flux d'instructions invit. AMD-V
VMLOAD
Cette instruction permet d'entreposer un sous-ensemble d'tat du microprocesseur dans un VMCB spcifi par une adresse physique contenu AMD-V dans le registre RAX. Cette instruction permet de faire passer le microprocesseur en mode d'attente INTEL 8088+ jusqu' ce que la ligne de teste sur la carte mre s'active. Cette instruction permet de dsactiver et de vider le tampon interne du microINTEL 80486+ processeur. Cette instruction crit les valeurs contenues dans le MSR (Model-Specific Register) en fonction du registre d'index ECX dans la paire des registres INTEL Pentium+ EDX:EAX. Cette instruction crit les valeurs contenues dans l'oprande source dans Cyrix Cx6x86MX l'entte SMM. Cette instruction permet d'changer le premier oprande avec le deuxime INTEL 80486+ oprande, et ensuite effectue la somme des valeurs dans le premier oprande. Cette instruction permet de prendre des bits dun oprande source et de les INTEL 80386 mettres dans une oprande destinataire. Cette instruction permet d'changer la valeur de deux oprandes. INTEL 8088+
WAIT WBINVD
WRMSR
Cette instruction permet de remplacer le contenu du registre AL par un octet INTEL 8088+ de la tablesource. Cette instruction permet de remplacer le contenu du registre AL par un octet INTEL 8088+ de la tablesource sans oprande. Cette instruction permet d'effectuer un OU exclusif BINAIRE sur les 2 INTEL 8086+ oprandes spcifis. Cette instruction permet d'effectuer un ou exclusif binaire de 4 paquets de INTEL Pentium III+ valeurs rel de simple prcision dans une oprande source et destination et de (KNI/MMX2) mettre le rsultat dans l'oprande de destination.
XORPS
25
Assembleur 80x86
INTEL 8088+
AAA
Ascii Adjust after Addition
Syntaxe AAA
Description Cette instruction permet d'adapter le rsultat obtenu par l'addition de 2 valeurs en format DCB. Puisque le processeur additionne ces valeurs comme s'il s'agissait de nombres normaux, des dbordements peuvent se produire dans les sommes. Afin de remdier ce problme, la commande AAA offre de convertir le rsultat de l'addition de 2 valeurs de format DCB non compactes en une valeur de format DCB non compacte. Elle cherche la somme de l'addition dans le registre AL. Pour que cette instruction ragisse correctement, il faut qu'elle soit lance directement aprs l'addition de 2 valeurs de format DCB, tant donn que la valeur des indicateurs du micro-processeur revt une importance particulire lors de l'excution de cette commande.
Algorithme * Vaut 1 si c'est vrai retenue d'AL AL > 0F9h SI ( ( AL 0Fh > 9 ) U ( AF = 1 ) ALORS AL ( AL + 6 ) 0Fh AH AH + 1 + retenue d'AL Drapeau AF 1 Drapeau CF 1 SINON AL 0Fh Drapeau AF 0 Drapeau CF 0 FIN SI
26
Mnmonique Instruction AAA Opcode 37h Description Cette instruction permet de crer un nombre dpaquet BCD (invalide en mode 64-bits)
Cycles d'horloge
8086 8088 80186 80286 80386 i486 Pentium Cx486 SLC Cx486DX IBM 486BL3X UMC U5S
Instruction
Opcode
AAA
37h
27
Exceptions Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excute en mode 64bits
#UD(Opcode invalide)
Exemple Cet exemple permet d'effectuer une addition BCD: MOV AX,0005h MOV CL,06h ADD AL,CL AAA Ce programme retournera donc la valeur 0101h dans le registre AX.
Voir galement Instruction assembleur 80x86 - Instruction AAD Instruction assembleur 80x86 - Instruction AAM Instruction assembleur 80x86 - Instruction AAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 801 Le grand livre pour programmer en Assembleur sur PC, Holger Schakel, 1995, ISBN: 2-7429-0442-5, page 144. AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 53.
28
Description Grce cette instruction, on peut convertir une valeur de format DCB non compacte se trouvant dans le registre AX (un chiffre dans le registre AH tandis que l'autre est dans le registre AL) en un nombre binaire tant place dans le registre AL. Pour la division, on utilise l'instruction IDIV en veillant auparavant ce que le registre AH soit vide.
Mnmonique Instruction AAD Opcode D5h 0Ah Description Ajuste 2 chiffres BCD dans les registres AL et AH (invalide en mode 64-bits) Ajuste 2 chiffres BCD dans les registres AL et AH (invalide en mode 64-bits)
aucun
D5h ib
29
Cycles d'horloge UM IBM 801 802 803 i4 Penti Cx486S Cx486 C 486BL 86 86 86 86 um LC DX U5 3X S 15 14 19 14 10 4 4 15 11
80 88
AAD
60
60
Exceptions Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excute en mode 64-bits
#UD(Opcode invalide)
Voir galement Instruction assembleur 80x86 - Instruction AAA Instruction assembleur 80x86 - Instruction AAM Instruction assembleur 80x86 - Instruction AAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 801 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 54.
30
Assembleur 80x86 INTEL 8088+ Syntaxe AAM AAM immdiat 8 Paramtres Nom Description
immdiat 8 Ce paramtre permet une valeur statique de 8 bits Description Cette instruction offre la possibilit de convertir le produit de la multiplication de 2 valeurs de format DCB en un format DCB. tant donn que le microprocesseur multiplie ces valeurs comme s'il s'agissait de nombres normaux, des dbordements peuvent ventuellement se produire dans les rsultats. L'instruction AAM rectifie cela. Lors de l'excution de cette commande, le contenu du registre AL est divis en 2 chiffres de format DCB nom compacts: le chiffre le plus lev est plac dans le registre AH tandis que le moins lev est mis dans le registre AL. Algorithme AH AL immdiat 8 AL AL MOD immdiat 8
Mnmonique Instruction AAM Opcode D4h 0Ah Description Cre une paire des valeurs dpaqueter BCD dans les registres AL et AH (invalide en mode 64-bits) Cre une paire des valeurs dpaqueter immdiatement dans l'octets de base (invalide en mode 64-bits)
aucun
D4h ib
31
Cycles d'horloge UM IBM 801 802 803 i4 Penti Cx486S Cx486 C 486BL 86 86 86 86 um LC DX U5 3X S 19 16 17 15 18 16 16 17 12
80 88
AAM
83
83
Exceptions Message #DE(Division par zro) Mode rel Virtuel 8086 Mode protg Description Valeur immdiate 8 bits contient 0 Cette instruction est excute en mode 64-bits
#UD(Opcode invalide)
Voir galement Instruction assembleur 80x86 - Instruction AAA Instruction assembleur 80x86 - Instruction AAD Instruction assembleur 80x86 - Instruction AAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 802 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 55.
32
Description A l'aide de cette instruction, on peut adapter le rsultat de la soustraction de 2 nombre de format DCB. tant donn que le processeur soustrait ces valeurs comme s'il s'agissait de chiffres normales, des dbordements se produisent dans les rsultats. La commande AAS rectifie cela. Cette instruction ne peut fonctionner qu'avec des nombres sur 8 bits. Elle transforme la valeur place aprs la soustraction dans le registre AL en une valeur DCB acceptable.
Algorithme * Vaut 1 si c'est vrai AL infrieur AL < 6 SI ( AL 0Ah ) U ( AF = 1 ) ALORS AL ( AL - 6 ) 0Fh AH AH - 1 AL infrieur Drapeau CF 1 Drapeau AF 1 SINON AL AL 0Fh Drapeau CF 0 Drapeau AF 0 FIN SI
Mnmonique Instruction AAS Opcode 3Fh Description Cre un nombre dpacter BCD partir du contenu du registre AL (invalide en mode 64-bits)
33
Exceptions Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excut en mode 64-bits
#UD(Opcode invalide)
Voir galement Instruction assembleur 80x86 - Instruction AAA Instruction assembleur 80x86 - Instruction AAD Instruction assembleur 80x86 - Instruction AAM
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 802 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 56.
34
Paramtres Nom Oprande Cible Oprande Source Description Ce paramtre permet d'indiquer l'oprande reevant le rsultat Ce paramtre permet d'indiquer l'oprande ajouter au rsultat
Description Cette instruction, des plus indispensable, additionne 2 quantits numriques 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. Le rsultat pourra naturellement tre plac en mmoire ou dans un registre. Cette opration tient donc compte de la retenue ventuelle ainsi que de l'addition des 16 bits de poids faible pour continuer l'addition des 16 bits de poids fort.
Mnmonique Instruction ADC AL, imm8 ADC AX, imm16 Opcode 14h ib 15h iw Description Ajout immdiate de 8 bits AL + CF Ajout immdiate de 16 bits AX + CF
35
ADC EAX, imm32 ADC RAX, imm32 ADC reg/mem8, imm8 ADC reg/mem16, imm16 ADC reg/mem32, imm32 ADC reg/mem64, imm32 ADC reg/mem16, imm8 ADC reg/mem32, imm8 ADC reg/mem64, imm8 ADC reg/mem8, reg8 ADC reg/mem16, reg16 ADC reg/mem32, reg32 ADC reg/mem64, reg64 ADC reg8, reg/mem8 ADC reg16, reg/mem16 ADC reg32, reg/mem32 ADC reg64, reg/mem64
15h id 15h id 80h /2 ib 81h /2 iw 81h /2 id 81h /2 id 83h /2 ib 83h /2 ib 83h /2 ib 10h /r 11h /r 11h /r 11h /r 12h /r 13h /r 13h /r 13h /r
Ajout immdiate de 32 bits EAX + CF Ajout immdiate de 32 bits RAX + CF Ajout immdiate de 8 bits registre/mmoire + CF Ajout immdiate de 16 bits registre/mmoire 16 bits + CF Ajout immdiate de 32 bits registre/mmoire 32 bits + CF Ajout immdiate de 32 bits entier registre/mmoire 64 bits + CF Ajout immdiate de 8 bits entier registre/mmoire 16 bits + CF Ajout immdiate de 8 bits entier registre/mmoire 16 bits + CF Ajout immdiate de 8 bits entier registre/mmoire 64 bits + CF Ajout registre de 8 bits registre/mmoire 8 bits + CF Ajout registre de 16 bits registre/mmoire 16 bits + CF Ajout registre de 32 bits registre/mmoire 32 bits + CF Ajout registre de 64 bits registre/mmoire 64 bits + CF Ajout registre de 8 bits registre/mmoire 8 bits + CF Ajout registre de 16 bits registre/mmoire 16 bits + CF Ajout registre de 32 bits registre/mmoire 32 bits + CF Ajout registre de 64 bits registre/mmoire 64 bits + CF
36
Exceptions Message #SS(Pile noncanonique) #GP(Protection gnral) Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Exemple Cette exemple permet d'effectuer l'addition de la retenue d'une addition du registre AL sur le registre AH: MOV AX,0001h ADD AL,FFh ADC AH,00h Ce programme retournera donc la valeur 0100h dans le registre AX.
37
Voir galement Instruction assembleur 80x86 - Instruction ADD Instruction assembleur 80x86 - Instruction SBB Instruction assembleur 80x86 - Instruction SUB
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 802 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 126, 401 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 57 58.
38
Paramtres Nom Oprande Cible Oprande Source Description Ce paramtre permet d'indiquer l'oprande reevant le rsultat Ce paramtre permet d'indiquer l'oprande ajouter au rsultat
Description Cette instruction additionne 2 quantits numriques sur 8 ou 16 bits. La somme pourra tre place soit en mmoire ou encore dans un registre.
Mnmonique Instruction
ADD AL, imm8 ADD AX, imm16 ADD EAX, imm32 ADD RAX, imm32 ADD reg/mem8, imm8
Opcode
04h ib 05h iw 05h id 05h id 80h /0 ib
Description
Ajout immdiate de 8 bits AL Ajout immdiate de 16 bits AX Ajout immdiate de 32 bits EAX Ajout d'un entier immdiate de 32 bits RAX Ajout immdiate de 8 bits registre/mmoire 8 bits
39
ADD reg/mem16, imm16 ADD reg/mem32, imm32 ADD reg/mem64, imm32 ADD reg/mem16, imm8 ADD reg/mem32, imm8 ADD reg/mem64, imm8 ADD reg/mem8, reg8 ADD reg/mem16, reg16 ADD reg/mem32, reg32 ADD reg/mem64, reg64 ADD reg8, reg/mem8 ADD reg16, reg/mem16 ADD reg32, reg/mem32 ADD reg64, reg/mem64
81h /0 iw 81h /0 id 81h /0 id 83h /0 ib 83h /0 ib 83h /0 ib 00h /r 01h /r 01h /r 01h /r 02h /r 03h /r 03h /r 03h /r
Ajout immdiate de 16 bits registre/mmoire 16 bits Ajout immdiate de 32 bits registre/mmoire 32 bits Ajout entier immdiate de 32 bits registre/mmoire 64 bits Ajout entier immdiate de 8 bits registre/mmoire 16 bits Ajout entier immdiate de 8 bits registre/mmoire 32 bits Ajout entier immdiate de 8 bits registre/mmoire 64 bits Ajout registre de 8 bits registre/mmoire 8 bits Ajout registre de 16 bits registre/mmoire 16 bits Ajout registre de 32 bits registre/mmoire 32 bits Ajout registre de 64 bits registre/mmoire 64 bits Ajout registre de 8 bits registre/mmoire 8 bits Ajout registre de 16 bits registre/mmoire 16 bits Ajout registre de 32 bits registre/mmoire 32 bits Ajout registre de 64 bits registre/mmoire 64 bits
#SS(Pile noncanonique)
#GP(Protection gnral) X
40
limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction ADC Instruction assembleur 80x86 - Instruction SBB Instruction assembleur 80x86 - Instruction SUB
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 803 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 401 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 59 60.
41
Assembleur 80x86
INTEL Pentium 4+
Syntaxe ADDPD dest,source
ADDPD
Add Packed Double-Precision FloatingPoint Values
Description Cette instruction permet d'effectuer une addition de 2 paquets de valeurs rels de double prcision d'une oprande source et d'une oprande destination et entrepose le rsultat dans l'oprande de destination sous le format d'un paquet de valeurs rels de double prcision.
42
Assembleur 80x86
INTEL Pentium III (SSE)+
Syntaxe ADDPS xmm1, xmm2/m128
ADDPS
Packed Single-Precision Floating-Point Add
Description Cette instruction permet d'effectuer une addition SIMD de 4 paquets de valeurs rels de simple prcision d'une oprande source et d'une oprande destination et entrepose le rsultat dans l'oprande de destination sous le format d'un paquet de valeurs rels de simple prcision.
Algorithme xmm1(31..0) xmm1(31..0) + xmm2/m128(31..0) xmm1(63..32) xmm1(63..32) + xmm2/m128(63..32) xmm1(95..64) xmm1(95..64) + xmm2/m128(95..64) xmm1(127..96) xmm1(127..96) + xmm2/m128(127..96)
43
Assembleur 80x86
INTEL Pentium 4+
Syntaxe ADDSD dest,source
ADDSD
Add Scalar Double-Precision FloatingPoint Values
Description Cette instruction permet d'effectuer une addition de la partie basse d'une valeur rel de double prcision dun oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de double prcision.
44
Assembleur 80x86
INTEL Pentium III (SSE)+
Syntaxe ADDSS xmm1, xmm2/m32
ADDSS
Scalar Single-Precision Floating-Point Add
Description Cette instruction permet d'effectuer une addition de la partie basse d'une valeur rel de simple prcision dun oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de simple prcision.
45
Assembleur 80x86
INTEL Pentium 4 (SSE3)+
Syntaxe ADDSUBPD dest,source
ADDSUBPD
Packed Double-FP Add/Subtract
Description Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur rel de double prcision d'une oprande source et destination et entrepose le rsultat dans une oprande de destination de valeur rel de double prcision et d'effectuer une addition de la partie haute d'une valeur rel de double prcision d'une oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de double prcision.
46
Assembleur 80x86
INTEL Pentium 4 (SSE3)+
Syntaxe ADDSUBPS dest,source
ADDSUBPS
Packed Single-FP Add/Subtract
Description Cette instruction permet d'effectuer une soustraction de la partie basse d'un paquet de valeur rel de simple prcision d'une oprande source et destination et entrepose le rsultat dans une oprande de destination de valeur rel de simple prcision et d'effectuer une addition de la partie haute d'un paquet de valeur rel de simple prcision d'une oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de simple prcision.
Algorithme dest(0..31) dest(0..31) - source(0..31) dest(32..63) dest(32..63) + source(32..63) dest(64..95) dest(64..95) - source(64..95) dest(96..127) dest(96..127) + source(96..127)
47
Paramtres Nom
Oprande Cible
Description
Ce paramtre permet d'indiquer l'oprande reevant le rsultat
Oprande Source Ce paramtre permet d'indiquer l'oprande effectuant le masque binaire sur le rsultat
Description L'instruction AND effectue un ET BINAIRE sur les 2 oprandes spcifis, le calcul est plac dans la premire oprande, c'est--dire l'Oprande Cible. Rappelons qu'un ET BINAIRE donne le rsultat 1 si les 2 oprandes sont 1 et donne 0 dans les autres cas et cela sur chacun des bits de l'oprande. Algorithme Oprande Cible Oprande Cible Oprande Source drapeau CF 0 drapeau OF 0
Mnmonique Instruction
AND AL, imm8 AND AX, imm16
Opcode
24h ib 25h iw
Description
Et binaire sur le contenu du registre AL avec une valeur immdiate 8 bits et met le rsultat dans AL Et binaire sur le contenu du registre AX avec une valeur immdiate 16 bits et met le rsultat dans AX Et binaire sur le contenu du registre EAX avec une valeur immdiate 32 bits et met le rsultat dans EAX
25h iw
48
25h id
Et binaire sur le contenu du registre RAX avec une valeur entire immdiate 32 bits et met le rsultat dans RAX Et binaire sur le contenu du registre/mmoire 8 bits avec une valeur immdiate 8 bits Et binaire sur le contenu du registre/mmoire 16 bits avec une valeur immdiate 16 bits Et binaire sur le contenu du registre/mmoire 32 bits avec une valeur immdiate 32 bits Et binaire sur le contenu du registre/mmoire 64 bits avec une valeur entire immdiate 32 bits Et binaire sur le contenu du registre/mmoire 16 bits avec une valeur entire immdiate 8 bits Et binaire sur le contenu du registre/mmoire 32 bits avec une valeur entire immdiate 8 bits Et binaire sur le contenu du registre/mmoire 64 bits avec une valeur entire immdiate 8 bits Et binaire sur le contenu du registre/mmoire 8 bits avec un registre 8 bits Et binaire sur le contenu du registre/mmoire 16 bits avec un registre 16 bits Et binaire sur le contenu du registre/mmoire 32 bits avec un registre 32 bits Et binaire sur le contenu du registre/mmoire 64 bits avec un registre 64 bits Et binaire sur le contenu du registre 8 bits avec un registre/mmoire 8 bits Et binaire sur le contenu du registre 16 bits avec un registre/mmoire 16 bits Et binaire sur le contenu du registre 32 bits avec un registre/mmoire 32 bits Et binaire sur le contenu du registre 64 bits avec un registre/mmoire 64 bits
AND reg/mem8, imm8 AND reg/mem16, imm16 AND reg/mem32, imm32 AND reg/mem64, imm32 AND reg/mem16, imm8 AND reg/mem32, imm8 AND reg/mem64, imm8 AND reg/mem8, reg8 AND reg/mem16, reg16 AND reg/mem32, reg32 AND reg/mem64, reg64 AND reg8, reg/mem8 AND reg16, reg/mem16 AND reg32, reg/mem32 AND reg64, reg/mem64
80h /4 ib 81h /4 iw 81h /4 id 81h /4 id 83h /4 ib 83h /4 ib 83h /4 ib 20h /r 21h /r 21h /r 21h /r 22h /r 23h /r 23h /r 23h /r
#SS(Pile non-canonique)
49
canonique #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction OR Instruction assembleur 80x86 - Instruction NOT Instruction assembleur 80x86 - Instruction NEG Instruction assembleur 80x86 - Instruction TEST Instruction assembleur 80x86 - Instruction XOR
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 803 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 401 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 61 62.
50
Assembleur 80x86
INTEL Pentium 4+
Syntaxe ANDNPD dest,source
ANDNPD
Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values
Description Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets d'oprandes de valeur de format rel de double prcision et inverse chacun des bits du rsultat.
Mnmonique Instruction
ANDNPD xmm1, xmm2/m128
Opcode
66h 0Fh 55h /r
Description
Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets d'oprandes de valeur de format rel de double prcision et inverse chacun des bits du rsultat.
51
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)
Syntaxe ANDNPS dest,source
ANDNPS
Bitwise Logical AND NOT
Description Cette instruction permet d'effectuer un ET BINAIRE sur les 2 oprandes 128 bits spcifis et inverse chacun des bits du rsultat.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer un ET BINAIRE sur les 2 oprandes 128 bits spcifis et inverse chacun des bits du rsultat.
ANDNPS xmmreg,r/m128
0Fh 55h /r
52
Assembleur 80x86
INTEL Pentium 4+
Syntaxe ANDPD dest,source
ANDPD
Bitwise Logical AND of Packed DoublePrecision Floating-Point Values
Description Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets d'oprandes de valeur de format rel de double prcision.
Mnmonique Instruction
ANDPD xmm1, xmm2/m128
Opcode
66h 0Fh 54h /r
Description
Cette instruction permet d'effectuer un ET BINAIRE sur les 2 paquets d'oprandes de valeur de format rel de double prcision.
53
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)
Syntaxe ANDPS dest,source
ANDPS
Bitwise Logical AND
Description Cette instruction permet d'effectuer un ET BINAIRE sur les 2 oprandes 128 bits spcifis.
Mnmonique Instruction
ANDPS xmmreg,r/m128
Opcode
0Fh 54h /r
Description
Cette instruction permet d'effectuer un ET BINAIRE sur les 2 oprandes 128 bits spcifis.
54
Assembleur 80x86 INTEL 80286+ (Mode protg) Syntaxe ARPL Oprande Cible, Oprande Source
Description Avec cette instruction, on pourra contrler et corriger le niveau de privilge du segment de code en mode protge.
Algorithme SI RPL bits(0,1) DE Oprande Cible < RPL bits(0,1) DE Oprande Source ALORS drapeau ZF 1 RPL bits(0,1) DE Oprande Cible RPL bits(0,1) DE Oprande Source SINON drapeau ZF 0 FIN SI
Mnmonique Instruction
ARPL reg/mem16, reg16
Opcode
63h /r
Description
Ajuste le RPL du slecteur de segment de destination au niveau infrieur du RPL du slecteur de segment spcifi dans le registre source 16 bits. Invalide en mode 64 bits.
Exceptions Message
#UD(Opcode invalide)
Mode rel
Virtuel 8086
Mode protg
Description
Cette instruction est seulement reconnu en mode protg legacy et en mode de compatibilit.
55
X X
Une adresse mmoire dpasse la limite du segment de pile. Une adresse mmoire dpasse la limite du segment de donnes L'oprande de destination n'est pas dans un segment non crivable Un slecteur de segment nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction LAR Instruction assembleur 80x86 - Instruction LSL Instruction assembleur 80x86 - Instruction VERR Instruction assembleur 80x86 - Instruction VERW
56
Description Cette instruction, ayant fait sont apparition sur un processeur mconnue du public, offre la possibilit professionnel de vrifier la validit pouvant exister entre avec un tableau et son indexation.
Algorithme SI ( Source De Gauche < [Source De Droite] ) U ( Source De Gauche > [ Source De Droite + Taille Oprande 8 ] ) ALORS Interruption 5 FIN SI
Mnmonique Instruction
BOUND reg16, mem16&mem16 BOUND reg32, mem32&mem32
Opcode
62h /r 62h /r
Description
Test avec un index de tableau 16 bits spcifi deux valeurs 16 bits (Invalide en mode 64 bits) Test avec un index de tableau 32 bits spcifi deux valeurs 32 bits (Invalide en mode 64 bits)
Exceptions Message
#BR(Dbordement de rang) #UD(Opcode invalide)
Mode rel
X X
Virtuel 8086
X X
Mode protg
X X
Description
La limite du rang est dpass. La source de
57
l'oprande est un registre Cette instruction est excut en mode 64-bits Une adresse mmoire dpasse la limite du segment de pile Une adresse mmoire dpasse la limite du segment de donnes Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#SS(Pile non-canonique)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction INT Instruction assembleur 80x86 - Instruction INTO
58
Assembleur 80x86 INTEL 80386+ Syntaxe BSF Oprande Cible, Oprande Source
Description La combinaison binaire contenue dans l'Oprande Source est analyse de la droite vers la gauche jusqu' ce que l'on rencontre un bit gal 1. Le bit correspondant dans Oprande Cible sera alors galement mis 1 et tous les autres quivaudront 0. Les oprandes peuvent toutefois tre 2 registres ou un registre et un emplacement mmoire. Encore un dernier dtail, ils doivent naturellement avoir tous les 2 le mme type; soit 16 ou 32 bits.
Algorithme SI Oprande Source = 0 ALORS drapeau ZF 1 Oprande Cible Non dfinie SINON drapeau ZF 0 Index 0 FAIRE TANT QUE bit ( Source , Index ) = 0 Index Index + 1 Oprande Cible Index FIN FAIRE FIN SI
BSF reg16, reg/mem16 0Fh BCh /r BSF reg32, reg/mem32 0Fh BCh /r BSF reg64, reg/mem64 0Fh BCh /r
59
Exceptions Message
#SS(Pile noncanonique) #GP(Protection gnral)
Mode rel
X X
Virtuel 8086
X X
X #PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 803 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 65.
60
Description La combinaison binaire contenue dans l'Oprande Source est analyse de la gauche vers la droite jusqu' ce que l'on rencontre un bit gal 1. Le bit correspondant dans Oprande Cible sera ensuite mis 1 et tous les autres quivaudront 0. Les oprandes peuvent toutefois tre 2 registres ou un registre et un emplacement mmoire. Les 2 oprandes doivent naturellement avoir le mme type; soit 16 ou 32 bits.
Algorithme SI ( Registre Destination DANS [ AX , BX, CX , DX , SI , DI , BP , SP ] ) ALORS Dbut 15 SINON Dbut 31 FIN SI SI Source = 0 ALORS drapeau ZF 1 Destination Non dfinie SINON drapeau ZF 0 Index Dbut FAIRE TANT QUE bit ( Source , Index ) = 0 Index Index - 1 Destination Index FIN FAIRE FIN SI
61
BSR reg16, reg/mem16 0Fh BDh /r BSR reg32, reg/mem32 0Fh BDh /r BSR reg64, reg/mem64 0Fh BDh /r
Exceptions Message
#SS(Pile noncanonique)
Mode rel
X
Virtuel 8086
X X
Mode protg
X X
Description
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulles est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#GP(Protection X gnral)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 804 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 66.
62
Description L'instruction tardive BSWAP inverse l'ordre des 4 octets d'un registre de taille de 32 bits. L'octet de poids le plus fort devient celui de poids le plus faible et on affecte les 2 autres octets de la mme manire en les inversant eux aussi.
Algorithme Temporaire Oprande Oprande ( 0 7 ) Temporaire ( 24 31 ) Oprande ( 8 15 ) Temporaire ( 16 23 ) Oprande ( 16 23 ) Temporaire ( 8 15 ) Oprande ( 24 31 ) Temporaire ( 0 7 )
Mnmonique Instruction
BSWAP reg32 BSWAP reg64
Opcode
0Fh C8h +rd 0Fh C8h +rq
Description
Inverse l'ordre des octets du registre 32 bits Inverse l'ordre des octets du registre 64 bits
Cycles d'horloge 8086 8088 80186 80286 80386 i486 UMC U5S IBM 486BL3 X Cx486D X Cx486S LC Pentium
Instruction
Opcode
BSWAP reg32
63
Exceptions Aucune
64
BT Bit Test
Description Cette instruction permet de transfrer de l'Oprande Source 1 vers l'indicateur de retenue, le bit spcifi par l'Oprande Source 2. Les oprandes utiliss peuvent tre soit 16 ou 32 bits.
Remarque Processeur INTEL: Quand vous faites des accs en bits dans la mmoire, le microprocesseur fabriquer par le constructeur INTEL effectue des accs en mmoire d'adressage sous la forme suivante: Adresse Segment + ( 4 x ( Bit d'offset 32 ) ) Tandis que dans le cas d'une oprande de taille de 32 bits, ou lorsque vous fates des accs mmoire de 2 octets (16 bits), il utilise plutt la forme suivante: Adresse Segment + ( 2 x ( Bit d'offset 16 ) ) galement, lorsqu'il y a 1 octets, il faut appliquer l'opration en tenant compte du 8 bits: Adresse Segment + ( 1 x ( Bit d'offset 8 ) )
65
Mnmonique Instruction
BT reg/mem16, reg16 BT reg/mem32, reg32 BT reg/mem64, reg64 BT reg/mem16, imm8 BT reg/mem32, imm8 BT reg/mem64, imm8
Opcode
0Fh A3h /r 0Fh A3h /r 0Fh A3h /r 0Fh BAh /4 ib 0Fh BAh /4 ib 0Fh BAh /4 ib
Description
Copie la valeur de slection de bit dans le drapeau de retenu Copie la valeur de slection de bit dans le drapeau de retenu Copie la valeur de slection de bit dans le drapeau de retenu Copie la valeur de slection de bit dans le drapeau de retenu Copie la valeur de slection de bit dans le drapeau de retenu Copie la valeur de slection de bit dans le drapeau de retenu
Cycles d'horloge 8086 8088 80186 80286 80386 i486 UMC U5S IBM 486BL3 X Cx486D X Cx486S LC Pentium
Instruction
Opcode
3 12 3 12
3 6 3 12
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
Exceptions Message
#SS(Pile noncanonique) #GP(Protection gnral)
Mode rel
X
Virtuel 8086
X
Mode protg
X
Description
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire
66
#PF(Faute de page)
Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction BTC Instruction assembleur 80x86 - Instruction BTR Instruction assembleur 80x86 - Instruction BTS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 804 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 68 69.
67
Description Cette instruction offre la possibilit de transfrer tout d'abord de l'Oprande Source 1 vers l'indicateur de retenue les bits spcifis par l'Oprande Source 2 puis d'ensuite inverser la valeur du bit correspondant dans l'Oprande Source 1. Les oprandes utiliss peuvent tre soit sur 16 ou 32 bits. Il est possible d'associer 2 registres, un registre un emplacement mmoire, un registre ou un emplacement mmoire un registre ou une valeur immdiate. Algorithme drapeau CF BIT [ Oprande Source 1, Oprande Source 2 ] BIT [ Oprande Source 1, Oprande Source 2 ] Pas BIT [ Oprande Source 1, Oprande Source 2 ]
Remarque Processeur INTEL: Quand vous faites des accs en bits dans la mmoire, le microprocesseur fabriquer par le constructeur INTEL effectue des accs en mmoire d'adressage sous la forme suivante: Adresse Segment + ( 4 x ( Bit d'offset 32 ) ) Tandis que dans le cas dun oprande de taille de 32 bits, ou lorsque vous fates des accs mmoire de 2 octets (16 bits), il utilise plutt la forme suivante: Adresse Segment + ( 2 x ( Bit d'offset 16 ) ) galement, lorsqu'il y a 1 octets, il faut appliquer l'opration en tenant compte du 8 bits: Adresse Segment + ( 1 x ( Bit d'offset 8 ) )
68
Mnmonique Instruction
BTC reg/mem16, reg16 BTC reg/mem32, reg32 BTC reg/mem64, reg64 BTC reg/mem16, imm8 BTC reg/mem16, imm8 BTC reg/mem32, imm8 BTC reg/mem64, imm8
Opcode
0Fh BBh /r 0Fh BBh /r 0Fh BBh /r 0Fh BBh /r 0Fh BAh /7 ib 0Fh BAh /7 ib 0Fh BAh /7 ib
Description
Copie la valeur du bit de slection dans le drapeau de retenu et complmente le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et complmente le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et complmente le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et complmente le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et complmente le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et complmente le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et complmente le bit de slection.
Exceptions Message #SS(Pile noncanonique) #GP(Protection gnral) Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire
69
#PF(Faute de page)
Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction BT Instruction assembleur 80x86 - Instruction BTR Instruction assembleur 80x86 - Instruction BTS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 805 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 70 71.
70
Assembleur 80x86 INTEL 80386+ Syntaxe BTR Oprande Source 1, Oprande Source 2
Description Cette instruction permet de transfrer tout d'abord de l'Oprande Source 1 vers l'indicateur de retenue les bits spcifis par l'Oprande Source 2 puis met le bit correspondant de l'Oprande Source 1 0. Les oprandes utiliss peuvent tre soit sur 16 ou 32 bits. Algorithme drapeau CF BIT [ Oprande Source 1, Oprande Source 2 ] BIT [ Oprande Source 1, Oprande Source 2 ] 0
Remarque Processeur INTEL: Quand vous faites des accs en bits dans la mmoire, le microprocesseur fabriquer par le constructeur INTEL effectue des accs en mmoire d'adressage sous la forme suivante: Adresse Segment + ( 4 x ( Bit d'offset 32 ) )
Tandis que dans le cas d'une oprande de taille de 32 bits, ou lorsque vous fates des accs mmoire de 2 octets (16 bits), il utilise plutt la forme suivante: Adresse Segment + ( 2 x ( Bit d'offset 16 ) )
galement, lorsqu'il y a 1 octets, il faut appliquer l'opration en tenant compte du 8 bits: Adresse Segment + ( 1 x ( Bit d'offset 8))
71
Mnmonique Instruction
BTR reg/mem16, reg16 BTR reg/mem32, reg32 BTR reg/mem32, reg32 BTR reg/mem64, reg64 BTR reg/mem64, reg64 BTR reg/mem16, imm8 BTR reg/mem16, imm8 BTR reg/mem32, imm8 BTR reg/mem64, imm8
Opcode
0Fh B3h /r 0Fh B3h /r 0Fh B3h /r 0Fh B3h /r 0Fh B3h /r 0Fh B3h /r 0Fh BAh /6 ib 0Fh BAh /6 ib 0Fh BAh /6 ib
Description
Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et efface le bit de slection.
Exceptions Message
#SS(Pile noncanonique) #GP(Protection gnral)
Mode rel
X
Virtuel 8086
X
Mode protg
X
Description
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction
X #PF(Faute de page)
72
#AC(Vrifie l'alignement)
Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir galement Instruction assembleur 80x86 - Instruction BT Instruction assembleur 80x86 - Instruction BTC Instruction assembleur 80x86 - Instruction BTS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 805 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 72.
73
Assembleur 80x86 INTEL 80386+ Syntaxe BTS Oprande Source 1, Oprande Source 2
Description Cette instruction permet de transfrer tout d'abord de Oprande Source1 vers l'indicateur de retenue le bits spcifi par Oprande Source 2 puis ensuite met le bits correspondant dans Oprande Source 1 1. Les oprandes utiliss peuvent tre sur soit 16 ou 32 bits. Algorithme drapeau CF BIT ( Oprande Source 1, Oprande Source 2 ) BIT ( Oprande Source 1, Oprande Source 2 ) 1
Remarque Processeur INTEL: Quand vous faites des accs en bits dans la mmoire, le microprocesseur fabriquer par le constructeur INTEL effectue des accs en mmoire d'adressage sous la forme suivante: Adresse Segment + ( 4 x ( Bit d'offset 32 ) )
Tandis que dans le cas dun oprande de taille de 32 bits, ou lorsque vous fates des accs mmoire de 2 octets (16 bits), il utilise plutt la forme suivante: Adresse Segment + ( 2 x ( Bit d'offset 16 ) )
galement, lorsqu'il y a 1 octet, il faut appliquer l'opration en tenant compte du 8 bits: Adresse Segment + ( 1 x ( Bit d'offset 8))
Mnmonique Instruction
BTS reg/mem16, reg16 BTS reg/mem32, reg32 BTS reg/mem64, reg64 BTS reg/mem16, imm8 BTS reg/mem32, imm8 BTS reg/mem64, imm8
Opcode
0Fh ABh /r 0Fh ABh /r 0Fh ABh /r 0Fh BAh /5 ib 0Fh BAh /5 ib 0Fh BAh /5 ib
Description
Copie la valeur du bit de slection dans le drapeau de retenu et fixe le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et fixe le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et fixe le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et fixe le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et fixe le bit de slection. Copie la valeur du bit de slection dans le drapeau de retenu et fixe le bit de slection.
Exceptions Message
#SS(Pile noncanonique) #GP(Protection gnral)
Mode rel
X
Virtuel 8086
X
Mode protg
X
Description
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulles est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
X #PF(Faute de page)
#AC(Vrifie l'alignement)
75
Voir galement Instruction assembleur 80x86 - Instruction BT Instruction assembleur 80x86 - Instruction BTC Instruction assembleur 80x86 - Instruction BTR
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 805 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 72 73.
76
CALL CALL
Description Cette instruction force le microprocesseur excuter les instructions du sous-programme indiqu par l'adresse d'appel avant de continuer. Ds que la routine est termine, l'excution reprendra son cours l'instruction suivant le CALL.
Algorithme Appel long PUSH CS PUSH IP CS:IP Destination Appel court PUSH IP IP Destination
Mnmonique Instruction
CALL rel16off CALL rel32off CALL reg/mem16 CALL reg/mem32 CALL reg/mem64 CALL FAR pntr16:16 CALL FAR pntr16:32
Opcode
E8h iw E8h id FFh /2 FFh /2 FFh /2 9Ah cd 9Ah cp
Description
Appel court avec une destination spcifi par une adresse 16 bits Appel court avec une destination spcifi par une adresse 32 bits Appel court avec une destination spcifi par un registre/mmoire 16 bits Appel court avec une destination spcifi par un registre/mmoire 32 bits. Il n'y a pas de prfixe pour l'encoder en mode 64 bits. Appel court avec une destination spcifi par un registre/mmoire 64 bits Appel long direct, avec un destination spcifi par un pointeur long. Invalide en mode 64 bits. Appel long direct, avec un destination spcifi par un pointeur long.
77
Invalide en mode 64 bits. CALL FAR mem16:16 FFh /3 CALL FAR mem16:32 FFh /3 Appel long indirect, avec un destination spcifi par un pointeur long en mmoire. Appel long indirect, avec un destination spcifi par un pointeur long en mmoire.
Exceptions Message
#AC(Vrifie l'alignement) #GP(Protection gnral) X
Mode rel
X #GP(Slecteur) X
78
instruction plus grande que le CPL. Le DPL de l'appel de pont, de tche de pont, ou le descripteur TSS spcifi par l'instruction est infrieur au CPL ou RPL. Le descripteur de segment spcifi par l'appel de pont ou la tche de pont est un slecteur nulle. Le descripteur de segment spcifi par l'appel de pont n'est pas en segment de code en mode legacy pi n'est pas un segment de code 64 bits dans le mode long. Le DPL du du descripteur de segment spcifi par l'appel de pont est plus grand que le CPL. L'appel d'un pont 64 bits avec des bits d'attribues tendues n'est pas 0. Le TSS du descripteur est prsent dans le LDT. L'accs au segment de code, appel d'un pont, tche de pont, ou TSS n'est pas prsent. Une faute de page rsultat de l'excution de l'instruction Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique, et n'est pas l'change de pile spcifi. Aprs l'change de pile, un accs mmoire dpasse la limite de segment de pile ou est noncanonique. Aprs l'change de pile, le registre SS n'est pas charg avec un slecteur de segment non-nulle et le segment est marqu comme nonprsent. Lors d'une partie de l'change entre la pile, la destination du segment de la pile ou du registre RSP dans le TSS est en dehors des limites TSS.
X X
X X
#SS(Slecteur)
79
Lors d'une partie de l'change entre la pile, la destination du segment de la pile ou du registre RSP dans le TSS est dans un slecteur nulle. Lors d'une partie de l'change entre la pile, la destination du slecteur de pile du bit TI est fix, mais le slecteur LDT n'est pas un slecteur nulle. Lors d'une partie de l'change entre la pile, la destination du slecteur de segment de pile dans le TSS est en dehors des limites de la table du descripteur GDT ou LDT. Lors d'une partie de l'change entre la pile, la destination du slecteur de segment de pile dans le TSS contient un RPL n'est pas gale au DPL. Lors d'une partie de l'change entre la pile, la destination du slecteur de segment de pile dans le TSS contient un DPL n'est pas gale au CPL du slecteur de segment de code. Lors d'une partie de l'change entre la pile, la destination du slecteur de segment de pile dans le TSS n'est pas dans un segment crivable. L'appel long indirect avec le Opcode (FFh /3) est un oprande de registre. L'appel long direct avec le Opcode (9Ah) est effectu en mode 64 bits.
#UD(Opcode invalide)
Voir galement Instruction assembleur 80x86 - Instruction RET Instruction assembleur 80x86 - Instruction RETF Instruction assembleur 80x86 - Instruction RETN
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 806 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 401 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 76 83.
80
Syntaxe CBW
Description Cette instruction permet de convertir le 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. L'application des signes est applique de la faon suivante: le bit de signe de AL est copi dans les 8 bits du registre AH. Cette commande est destine au conversion de valeur 8 16 bits uniquement.
Mnmonique Instruction
CBW
Opcode
98h
Description
tendre les signes de AL dans AX
Exceptions Aucune
Voir galement Instruction assembleur 80x86 - Instruction CWD Instruction assembleur 80x86 - Instruction CWDE
81
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 806 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 402 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 84.
82
Syntaxe CDQ
Description L'instruction CDQ convertit le double mot (32 bits) se trouvant dans le registre EAX en un quadruple mot, le rsultat tient sur une taille de 64 bits. Pour russir fournir la rponse en entier, on procdera comme suit: Le double mot de poids le plus fort est plac dans EDX, celui de poids le plus faible dans le registre EAX. Les 32 bits du registre EDX sont positionns la valeur du bit de poids le plus fort du registre EAX.
Mnmonique Instruction
CQO
Opcode
99h
Description
tendre les signes de EAX dans EDX:EAX
Exceptions Aucune
83
Syntaxe
CDQE
Description Cette instruction permet de convertir le double mot du registre EAX en un quadruple mot RAX, le rsultat tient sur une taille de 64 bits.
Algorithme
RAX extension des signes de EAX
Mnmonique
Instruction
CDQE
Opcode
98h
Description
tendre les signes de EAX dans RAX
Exceptions Aucune
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 187 188.
84
Syntaxe
CLC
Algorithme
drapeau CF 0
Remarque A titre purement informatif, sachez que ce registre d'tat de retenue est toujours gal 1 lorsqu'une opration gnre une retenue arithmtique et qu'il est par consquent impossible de reprsenter le rsultat qu'avec l'aide des bits disponibles. Dans ce ventualit, l'indicateur de retenue est considr comme 17ime ou 9ime bit du rsultat. C'est surtout dans la perspective des instructions ADC et SBB que le positionnement 0 de l'indicateur de retenue s'avre utile. Dans les autres cas, l'interruption 21h du systme d'exploitation sans servira pour indiquer s'il y a eu une erreur d'excution, toutefois ce n'est pas une situation relier directement au microprocesseur mais une programmation logiciel.
Mnmonique
Instruction CLC Opcode F8h Description Efface le drapeau de retenu (CF) 0
Exceptions Aucune
85
Voir galement Instruction assembleur 80x86 - Instruction STC Instruction assembleur 80x86 - Instruction CMC
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 807 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 402 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 86. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 189 189.
86
Syntaxe
CLD
Description Cette instruction met l'indicateur d'tat DF 0. Les oprations sur les chanes de caractres, tel CMPSB, CMPSD, CMPSQ, CMPSW, LODSB, LODSD, LODSQ, LODSW, MOVSB, MOVSD, MOVSQ, MOVSW, OUTSB, OUTSD, OUTSW, STOSB, STOSD, STOSQ et STOSW par exemple, incrmenteront maintenant les registres SI et DI.
Algorithme
drapeau DF 0
Mnmonique
Instruction CLD Opcode FCh Description Efface le drapeau de direction (DF) 0
Exceptions Aucune
Voir galement Instruction assembleur 80x86 - Instruction CMPS Instruction assembleur 80x86 - Instruction INS Instruction assembleur 80x86 - Instruction LODS Instruction assembleur 80x86 - Instruction MOVS Instruction assembleur 80x86 - Instruction OUTS Instruction assembleur 80x86 - Instruction SCAS Instruction assembleur 80x86 - Instruction STD Instruction assembleur 80x86 - Instruction STOS
87
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 807 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 402 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 87. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 190 190.
88
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
CLFLUSH
Load Unaligned Integer 128 bits
Syntaxe
CLFLUSH mem8
Description Cette instruction permet de vider la ligne de cache d'une adresse linaire.
Mnmonique
Instruction
CLFLUSH mem8
Opcode
0Fh AEh /7
Description
Vide la ligne de cache contenu dans mem8.
Exceptions
Message Mode rel Virtuel 8086
X
Mode protg
X
Description
Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique, et n'est pas l'change de pile spcifi. Cette instruction n'est pas support, lequel est indiqu par le
#GP(Protection X gnral)
#UD(Opcode
89
invalide)
Voir galement Instruction assembleur 80x86 - Instruction INVD Instruction assembleur 80x86 - Instruction WBINVD
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 191 192.
90
Assembleur 80x86
AMD-V
Syntaxe
CLGI
CLGI
Clear Global Interrupt Flag
Description Cette instruction permet d'effacer les drapeaux global d'interruption (GIF). Quand le GIF est 0, toutes les interruptions externes sont dsactivs.
Mnmonique
Instruction CLGI Opcode 0Fh 01h DDh Description Efface le drapeau d'interruption global (GIF).
Exceptions
Message
#UD(Opcode invalide)
Mode rel
X
Virtuel 8086
X
Mode protg
X
Description
Les instructions SVM ne sont pas supports, comme indiqu par le bit 2 du registre ECX de la fonction 8000_00001h de l'instruction CPUID. La machine virtuel scuris n'est pas activ (EFER.SVME=0). Cette instruction est seulement reconnu en mode protg.
#GP(Protection X gnral)
91
92
Assembleur 80x86
INTEL 8088+
Syntaxe
CLI
CLI
Clear Interrupt Flag
Description Cette instruction met l'indicateur d'tat IF 0. Aprs avoir excuter cette instruction, aucune interruption ne sera admise tant que l'instruction STI n'est pas rencontre.
Algorithme
drapeau IF 0
Mnmonique
Instruction CLI Opcode FAh Description Efface le drapeau d'interruption (IF) et le met 0.
Cycles d'horloge
8086 8088 80186 80286 80386 i486 Pentium Cx486SLC Cx486DX IBM 486BL3X UMC U5S Instructio Opcod n e
CLI
FAh
93
Exceptions
Message
#GP(Protection gnral)
Mode rel
Virtuel 8086
X
Mode protg
Description
Le CPL est suprieur au IOCPL et les extensions du mode virtuel sont dsactivs (CR4.VME=0).
Le CPL est suprieur au IOCPL et le CPL n'est pas 3 ou l'interruption du mode protg virtuel n'est pas activ (CR4.PVI=0).
Remarque Afin que les choses soit bien claire, sachez que mme si ce registre d'tat d'interruption est mit 0, le microprocesseur ne masque pas les interruptions de type NMI (Non masquable Interruption). La commande CLI vise donc faire en sorte que toutes les interruptions masquables ne soient plus excutes. Cette interdiction peut tre leve l'aide de la commande STI.
Exemple Cet exemple, destin au mode rel, permet de retourner 1 dans le registre AL si la touche ALT du clavier est enfonc ou 0 s'il ne l'est pas :
1. 2. 3. 4. 5. 6. 7. 8. XOR AX,AX MOV ES,AX CLI MOV AL,ES:[417h] STI AND AL,8 JZ @@End MOV AL,1 9. @@End:
94
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 807 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 402 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 255. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 193 195.
95
Syntaxe
CLTS
Description Cette instruction permet d'effacer ou si vous prfrez de mettre 0 le drapeau de l'indicateur de tche (Task-Switch) du registre CR0.
Algorithme
drapeau TS 0
Mnmonique
Instruction CLTS Opcode 0Fh 06h Description Efface le drapeau d'changeur de tche (TS) du registre CR0
Cycles d'horloge 8086 Instruction Opcode 8088 80186 80286 80386 i486 Pentium Cx486SLC Cx486DX IBM 486BL3X UMC U5S
CLTS
0Fh 06h
Exceptions
Message #GP(Protection gnral) Mode rel Virtuel 8086 X Mode protg X Description Le CPL ne vaut pas 0.
96
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 196 197.
97
Syntaxe
CMC
Description 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. On utilise cette instruction surtout dans le cas des additions et des soustractions.
Algorithme
drapeau CF PAS drapeau CF
Mnmonique
Instruction CMC Opcode F5h Description Complment du drapeau de retenue (CF)
Exceptions Aucune
Voir galement Instruction assembleur 80x86 - Instruction CLC Instruction assembleur 80x86 - Instruction STC
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 807 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 90. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 198 198.
98
Syntaxe
CMOVcc registre, valeur
Description C'est l'quivalent d'un MOV conditionnel. Cette instruction copie des donnes d'une source (valeur) une destination (registre) la condition que la condition (cc) demand soit remplie.
Algorithme
SI condition ALORS registre valeur FIN SI
Remarque Avant de lancer cette instruction, il est important que vous sachiez que cette instruction n'est pas support par tous les Pentium Pro, l'instruction CPUID retourne un indicateur confirmant ou niant que cette instruction est supporte.
Mnmonique
Instruction
CMOVO reg16, reg/mem16 CMOVO reg32, reg/mem32 CMOVO reg64, reg/mem64 CMOVNO reg16, reg/mem16 CMOVNO reg32, reg/mem32 CMOVNO reg64, reg/mem64 CMOVB reg16, reg/mem16
Opcode
0Fh 40h /r 0Fh 40h /r 0Fh 40h /r 0Fh 41h /r 0Fh 41h /r 0Fh 41h /r 0Fh 42h /r
Description
Copie si dbordement (OF = 1) Copie si dbordement (OF = 1) Copie si dbordement (OF = 1) Copie si pas de dbordement (OF = 0) Copie si pas de dbordement (OF = 0) Copie si pas de dbordement (OF = 0) Copie si retenu (CF = 1)
99
CMOVB reg32, reg/mem32 CMOVB reg64, reg/mem64 CMOVC reg16, reg/mem16 CMOVC reg32, reg/mem32 CMOVC reg64, reg/mem64 CMOVNAE reg16, reg/mem16 CMOVNAE reg32, reg/mem32 CMOVNAE reg64, reg/mem64 CMOVNB reg16,reg/mem16 CMOVNB reg32,reg/mem32 CMOVNB reg64,reg/mem64 CMOVNC reg16,reg/mem16 CMOVNC reg32,reg/mem32 CMOVNC reg64,reg/mem64 CMOVAE reg16, reg/mem16 CMOVAE reg32, reg/mem32 CMOVAE reg64, reg/mem64 CMOVZ reg16, reg/mem16 CMOVZ reg32, reg/mem32 CMOVZ reg64, reg/mem64 CMOVE reg16, reg/mem16 CMOVE reg32, reg/mem32 CMOVE reg64, reg/mem64 CMOVNZ reg16, reg/mem16 CMOVNZ reg32, reg/mem32 CMOVNZ reg64, reg/mem64 CMOVNE reg16, reg/mem16 CMOVNE reg32, reg/mem32 CMOVNE reg64, reg/mem64 CMOVBE reg16, reg/mem16 CMOVBE reg32, reg/mem32
0Fh 42h /r 0Fh 42h /r 0Fh 42h /r 0Fh 42h /r 0Fh 42h /r 0Fh 42h /r 0Fh 42h /r 0Fh 42h /r 0Fh 43h /r 0Fh 43h /r 0Fh 43h /r 0Fh 43h /r 0Fh 43h /r 0Fh 43h /r 0Fh 43h /r 0Fh 43h /r 0Fh 43h /r 0Fh 44h /r 0Fh 44h /r 0Fh 44h /r 0Fh 44h /r 0Fh 44h /r 0Fh 44h /r 0Fh 45h /r 0Fh 45h /r 0Fh 45h /r 0Fh 45h /r 0Fh 45h /r 0Fh 45h /r 0Fh 46h /r 0Fh 46h /r
Copie si retenu (CF = 1) Copie si retenu (CF = 1) Copie si retenu (CF = 1) Copie si retenu (CF = 1) Copie si retenu (CF = 1) Copie si retenu (CF = 1) Copie si retenu (CF = 1) Copie si retenu (CF = 1) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si pas retenu (CF = 0) Copie si drapeau du zro (ZF = 1) Copie si drapeau du zro (ZF = 1) Copie si drapeau du zro (ZF = 1) Copie si drapeau du zro (ZF = 1) Copie si drapeau du zro (ZF = 1) Copie si drapeau du zro (ZF = 1) Copie si drapeau de pas de zro (ZF = 0) Copie si drapeau de pas de zro (ZF = 0) Copie si drapeau de pas de zro (ZF = 0) Copie si drapeau de pas de zro (ZF = 0) Copie si drapeau de pas de zro (ZF = 0) Copie si drapeau de pas de zro (ZF = 0) Copie si drapeau de zro (ZF = 1) ou drapeau de retenu (CF = 1) Copie si drapeau de zro (ZF = 1) ou drapeau de retenu (CF = 1)
100
CMOVBE reg64, reg/mem64 CMOVNA reg16, reg/mem16 CMOVNA reg32, reg/mem32 CMOVNA reg64, reg/mem64 CMOVNBE reg16, reg/mem16 CMOVNBE reg32, reg/mem32 CMOVNBE reg64, reg/mem64 CMOVA reg16, reg/mem16 CMOVA reg32, reg/mem32 CMOVA reg64, reg/mem64 CMOVS reg16, reg/mem16 CMOVS reg32, reg/mem32 CMOVS reg64, reg/mem64 CMOVNS reg16, reg/mem16 CMOVNS reg32, reg/mem32 CMOVNS reg64, reg/mem64 CMOVP reg16, reg/mem16 CMOVP reg32, reg/mem32 CMOVP reg64, reg/mem64 CMOVPE reg16, reg/mem16 CMOVPE reg32, reg/mem32 CMOVPE reg64, reg/mem64 CMOVNP reg16, reg/mem16 CMOVNP reg32, reg/mem32 CMOVNP reg64, reg/mem64 CMOVPO reg16, reg/mem16
0Fh 46h /r 0Fh 46h /r 0Fh 46h /r 0Fh 46h /r 0Fh 47h /r 0Fh 47h /r 0Fh 47h /r 0Fh 47h /r 0Fh 47h /r 0Fh 47h /r 0Fh 48h /r 0Fh 48h /r 0Fh 48h /r 0Fh 49h /r 0Fh 49h /r 0Fh 49h /r 0Fh 4Ah /r 0Fh 4Ah /r 0Fh 4Ah /r 0Fh 4Ah /r 0Fh 4Ah /r 0Fh 4Ah /r 0Fh 4Bh /r 0Fh 4Bh /r 0Fh 4Bh /r 0Fh 4Bh /r
Copie si drapeau de zro (ZF = 1) ou drapeau de retenu (CF = 1) Copie si drapeau de zro (ZF = 1) ou drapeau de retenu (CF = 1) Copie si drapeau de zro (ZF = 1) ou drapeau de retenu (CF = 1) Copie si drapeau de zro (ZF = 1) ou drapeau de retenu (CF = 1) Copie si drapeau de pas de zro (ZF = 0) et drapeau de pas de retenu (CF = 0) Copie si drapeau de pas de zro (ZF = 0) et drapeau de pas de retenu (CF = 0) Copie si drapeau de pas de zro (ZF = 0) et drapeau de pas de retenu (CF = 0) Copie si drapeau de pas de zro (ZF = 0) et drapeau de pas de retenu (CF = 0) Copie si drapeau de pas de zro (ZF = 0) et drapeau de pas de retenu (CF = 0) Copie si drapeau de pas de zro (ZF = 0) et drapeau de pas de retenu (CF = 0) Copie si drapeau de signe (SF = 1) Copie si drapeau de signe (SF = 1) Copie si drapeau de signe (SF = 1) Copie si drapeau de pas de signe (SF = 0) Copie si drapeau de pas de signe (SF = 0) Copie si drapeau de pas de signe (SF = 0) Copie si drapeau de parit (PF = 1) Copie si drapeau de parit (PF = 1) Copie si drapeau de parit (PF = 1) Copie si drapeau de parit (PF = 1) Copie si drapeau de parit (PF = 1) Copie si drapeau de parit (PF = 1) Copie si drapeau de pas de parit (PF = 0) Copie si drapeau de pas de parit (PF = 0) Copie si drapeau de pas de parit (PF = 0) Copie si drapeau de pas de parit (PF = 0)
101
CMOVPO reg32, reg/mem32 CMOVPO reg64, reg/mem64 CMOVL reg16, reg/mem16 CMOVL reg32, reg/mem32 CMOVL reg64, reg/mem64 CMOVNGE reg16, reg/mem16 CMOVNGE reg32, reg/mem32 CMOVNGE reg64, reg/mem64 CMOVNL reg16, reg/mem16 CMOVNL reg32, reg/mem32 CMOVNL reg64, reg/mem64 CMOVGE reg16, reg/mem16 CMOVGE reg32, reg/mem32 CMOVGE reg64, reg/mem64 CMOVLE reg16, reg/mem16 CMOVLE reg32, reg/mem32 CMOVLE reg64, reg/mem64 CMOVNG reg16, reg/mem16 CMOVNG reg32, reg/mem32 CMOVNG reg64, reg/mem64 CMOVNLE reg16, reg/mem16 CMOVNLE reg32, reg/mem32 CMOVNLE reg64, reg/mem64 CMOVG reg16, reg/mem16 CMOVG reg32, reg/mem32 CMOVG reg64, reg/mem64
0Fh 4Bh /r 0Fh 4Bh /r 0Fh 4Ch /r 0Fh 4Ch /r 0Fh 4Ch /r 0Fh 4Ch /r 0Fh 4Ch /r 0Fh 4Ch /r 0Fh 4Dh /r 0Fh 4Dh /r 0Fh 4Dh /r 0Fh 4Dh /r 0Fh 4Dh /r 0Fh 4Dh /r 0Fh 4Eh /r 0Fh 4Eh /r 0Fh 4Eh /r 0Fh 4Eh /r 0Fh 4Eh /r 0Fh 4Eh /r 0Fh 4Fh /r 0Fh 4Fh /r 0Fh 4Fh /r 0Fh 4Fh /r 0Fh 4Fh /r 0Fh 4Fh /r
Copie si drapeau de pas de parit (PF = 0) Copie si drapeau de pas de parit (PF = 0) Copie si SF <> OF Copie si SF <> OF Copie si SF <> OF Copie si SF <> OF Copie si SF <> OF Copie si SF <> OF Copie si SF = OF Copie si SF = OF Copie si SF = OF Copie si SF = OF Copie si SF = OF Copie si SF = OF Copie si ZF = 1 ou SF <> OF Copie si ZF = 1 ou SF <> OF Copie si ZF = 1 ou SF <> OF Copie si ZF = 1 ou SF <> OF Copie si ZF = 1 ou SF <> OF Copie si ZF = 1 ou SF <> OF Copie si ZF = 0 et SF = OF Copie si ZF = 0 et SF = OF Copie si ZF = 0 et SF = OF Copie si ZF = 0 et SF = OF Copie si ZF = 0 et SF = OF Copie si ZF = 0 et SF = OF
Exceptions
Message
#UD(Opcode invalide)
Mode rel
X
Virtuel 8086
X
Mode protg
X
Description
Cette instruction n'est pas support. C'est instruction est support si l'indicateur
102
de bit 15 du registre EDX de l'instruction CPUID avec la fonction 0000_0001h ou 8000_0001h. #SS(Pile noncanonique) #GP(Protection gnral) Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 199 204.
103
Assembleur 80x86
INTEL 8088+
Syntaxe
CMP Oprande Cible, Oprande Source
CMP
Compare two operands
Description Cette instruction offre la possibilit essentielle de comparer 2 registres ou emplacements de mmoire. Le rsultat de la comparaison est indiqu par les indicateurs (registre drapeau du microprocesseur).
Algorithme
Drapeau oprande1 = oprande2
Mnmonique
Instruction
CMP AL, imm8 CMP AX, imm16 CMP EAX, imm32 CMP RAX, imm32 CMP reg/mem8, imm8 CMP reg/mem16, imm16 CMP reg/mem32, imm32 CMP reg/mem64, imm32
Opcode
3Ch ib 3Dh iw 3Dh iw 3Dh id 80h /7 ib 81h /7 iw 81h /7 id 81h /7 id
Description
Compare une valeur 8 bits immdiate avec le contenu du registre AL. Compare une valeur 16 bits immdiate avec le contenu du registre AX. Compare une valeur 32 bits immdiate avec le contenu du registre EAX. Compare une valeur 32 bits immdiate avec le contenu du registre RAX. Compare une valeur 8 bits immdiate avec le contenu d'une oprande mmoire ou d'un registre 8 bits. Compare une valeur 16 bits immdiate avec le contenu d'une oprande mmoire ou d'un registre 16 bits. Compare une valeur 32 bits immdiate avec le contenu d'une oprande mmoire ou d'un registre 32 bits. Compare une valeur 32 bits immdiate avec le contenu d'une oprande mmoire ou d'un registre 64 bits.
104
CMP reg/mem16, imm8 CMP reg/mem32, imm8 CMP reg/mem64, imm8 CMP reg/mem8, reg8 CMP reg/mem16, reg16 CMP reg/mem32, reg32 CMP reg/mem64, reg64 CMP reg8, reg/mem8 CMP reg16, reg/mem16 CMP reg32, reg/mem32 CMP reg64, reg/mem64
83h /7 ib 83h /7 ib 83h /7 ib 38h /r 39h /r 39h /r 39h /r 39h /r 3Bh /r 3Bh /r 3Bh /r
Compare une valeur 8 bits immdiate avec le contenu d'une oprande mmoire ou d'un registre 16 bits. Compare une valeur 8 bits immdiate avec le contenu d'une oprande mmoire ou d'un registre 32 bits. Compare une valeur 8 bits immdiate avec le contenu d'une oprande mmoire ou d'un registre 64 bits. Compare le contenu d'une oprande mmoire ou d'un registre 8 bits avec un registre 8 bits. Compare le contenu d'une oprande mmoire ou d'un registre 16 bits avec un registre 16 bits. Compare le contenu d'une oprande mmoire ou d'un registre 32 bits avec un registre 32 bits. Compare le contenu d'une oprande mmoire ou d'un registre 64 bits avec un registre 64 bits. Compare le contenu d'une oprande mmoire ou d'un registre 8 bits avec un registre 8 bits. Compare le contenu d'une oprande mmoire ou d'un registre 16 bits avec un registre 16 bits. Compare le contenu d'une oprande mmoire ou d'un registre 32 bits avec un registre 32 bits. Compare le contenu d'une oprande mmoire ou d'un registre 64 bits avec un registre 64 bits.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
105
#AC(Vrifie l'alignement)
Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Exemple L'exemple suivant permet de retourner 1 si le caractre spcifi par la variable Chr est une lettre de l'alphabet (majuscule ou minucule) ou 0 s'il ne l'est pas :
1. 2. 3. 4. 5. 6. 7. 8. XOR AL,AL MOV CL,Chr AND CL,0DFh CMP CL,'A' JB @1 CMP CL,'Z' JA @1 INC AL 9. @1:
Voir galement Instruction assembleur 80x86 - Instruction SUB Instruction assembleur 80x86 - Instruction CMPS Instruction assembleur 80x86 - Instruction SCAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 808 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 403 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 94 96. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 206 208.
106
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
Syntaxe
CMPPD dest,source,immediat
CMPPD
Compare Packed Double-Precision FloatingPoint Values
Description Cette instruction permet d'effectuer une comparaison SIMD de 2 paquets de valeurs rels de double prcision d'un oprande source et d'un oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
Algorithme
EVALUER CAS immediat DE CAS 0: OPERATION EQ CAS 1: OPERATION LT CAS 2: OPERATION LE CAS 3: OPERATION UNORD CAS 4: OPERATION NEQ CAS 5: OPERATION NLT CAS 6: OPERATION NLE CAS 7: OPERATION ORD FIN SI CMP0 dest(63..0) OPERATION source(63..0) CMP1 dest(127..64) OPERATION source(127..64) SI CMP0 ALORS dest(63..0) FFFFFFFFFFFFFFFFh SINON dest(63..0) 0000000000000000h FIN SI SI CMP1 ALORS dest(127..64) FFFFFFFFFFFFFFFFh SINON dest(127..64) 0000000000000000h
107
FIN SI
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer une comparaison SIMD de 2 paquets de valeurs rels de double prcision d'un oprande source et d'un oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
CMPPD xmm1,xmm2/m128,imm8
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 209 213.
108
Assembleur 80x86
INTEL Pentium III (SSE)+
CMPPS
Compare Packed Single-Precision Floating-Point Values
Syntaxe
CMPPS dest, source, imm8
Description Cette instruction permet d'effectuer une comparaison SIMD de 4 paquets de valeurs rels de simple prcision d'une oprande source et d'une oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
Algorithme
EVALUER CAS (imm8) DE CAS 0: OPERATION EQ CAS 1: OPERATION LT CAS 2: OPERATION LE CAS 3: OPERATION UNORD CAS 4: OPERATION NE CAS 5: OPERATION NLT CAS 6: OPERATION NLE CAS 7: OPERATION ORD FIN EVALUER CAS CMP0 dest(31..0) OPERATION source(31..0) CMP1 dest(63..32) OPERATION source(63..32) CMP2 dest(95..64) OPERATION source(95..64) CMP3 dest(127..96) OPERATION source(127..96) SI CMP0 est vrai ALORS dest(31..0) FFFFFFFFh SINON dest(31..0) 00000000h FIN SI
109
SI CMP1 est vrai ALORS dest(63..32) FFFFFFFFh SINON dest(63..32) 00000000h FIN SI SI CMP2 est vrai ALORS dest(95..64) FFFFFFFFh SINON dest(95..64) 00000000h FIN SI SI CMP3 est vrai ALORS dest(127..96) FFFFFFFFh SINON dest(127..96) 00000000h FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison SIMD de 4 paquets de valeurs rels de simple prcision d'une oprande source et d'une oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 214 218.
110
Assembleur 80x86
INTEL 8088+
CMPS
Compare String
Syntaxe
CMPS destination,source
Description Cette instruction permet d'effectuer la comparaison d'un octet, d'un mot, double mot ou du quadruple mot spcifi avec l'oprande source et destination spcifi et fixe l'tat des drapeaux du registres EFLAGS en fonction des rsultats de la comparaison.
Algorithme
Fixe les drapeaux d'tats de (destination = source) SI (comparison d'octet) ALORS SI DF = 0 ALORS (E)SI (E)SI + 1 (E)DI (E)DI + 1 SINON (E)SI (E)SI - 1 (E)DI (E)DI - 1 FIN SI SINON SI (comparison d'un mot) ALORS SI DF = 0 ALORS (E)SI (E)SI + 2 (E)DI (E)DI + 2 SINON (E)SI (E)SI - 2 (E)DI (E)DI - 2 FIN SI SINON SI (comparaison d'un double mot) ALORS SI DF = 0 ALORS (E)SI (E)SI + 4 111
(E)DI (E)DI + 4 SINON (E)SI (E)SI - 4 (E)DI (E)DI - 4 FIN SI SINON SI (comparaison d'un quadruple mot) ALORS SI DF = 0 ALORS (E)SI (E)SI + 8 (E)DI (E)DI + 8 SINON (E)SI (E)SI - 8 (E)DI (E)DI - 8 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Compare l'octet l'adresse DS:(R)SI avec l'octet l'adresses ES:(R)DI et incrmente ou dcrmente les registres (R)SI et (R)DI Compare le mot l'adresse DS:(R)SI avec le mot l'adresses ES:(R)DI et incrmente ou dcrmente les registres (R)SI et (R)DI Compare le double mot l'adresse DS:(R)SI avec le double mot l'adresses ES:(R)DI et incrmente ou dcrmente les registres (R)SI et (R)DI Compare le quadruple mot l'adresse DS:(R)SI avec le quadruple mot l'adresses ES:(R)DI et incrmente ou dcrmente les 112
A6h
A7h
A7h
A7h
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
113
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir galement Instruction assembleur 80x86 - Instruction CMP Instruction assembleur 80x86 - Instruction SCAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 808 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 97. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 219 224.
114
Assembleur 80x86
INTEL 8086+
CMPSB
Compare String Byte
Syntaxe
CMPSB
Description Cette instruction permet d'effectuer la comparaison d'un octet avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des drapeaux du registres EFLAGS en fonction des rsultats de la comparaison.
Algorithme
Fixe les drapeaux d'tats de ([(E)DI] = [(E)SI]) SI DF = 0 ALORS (E)SI (E)SI + 1 (E)DI (E)DI + 1 SINON (E)SI (E)SI - 1 (E)DI (E)DI - 1 FIN SI
Mnmonique
Instruction Opcode Description Compare l'octet l'adresse DS:(R)SI avec l'octet l'adresses ES:(R)DI et incrmente ou dcrmente les registres (R)SI et (R)DI
CMPSB
A6h
115
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
116
Voir galement Instruction assembleur 80x86 - Instruction CMP Instruction assembleur 80x86 - Instruction SCAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 808 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 403 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 97. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 219 224.
117
Assembleur 80x86
INTEL 80386+
CMPSD
Compare String Double Word
Syntaxe
CMPSD
Description Cette instruction permet d'effectuer la comparaison d'un double mot avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des drapeaux du registres EFLAGS en fonction des rsultats de la comparaison.
Algorithme
Fixe les drapeaux d'tats de ([(E)DI] = [(E)SI]) SI DF = 0 ALORS (E)SI (E)SI + 4 (E)DI (E)DI + 4 SINON (E)SI (E)SI - 4 (E)DI (E)DI - 4 FIN SI
Mnmonique
Instruction Opcode Description Compare le double mot l'adresse DS:(R)SI avec le double mot l'adresses ES:(R)DI et incrmente ou dcrmente les registres (R)SI et
CMPSD
A7h
118
(R)DI
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
119
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir galement Instruction assembleur 80x86 - Instruction CMP Instruction assembleur 80x86 - Instruction SCAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 809 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 97. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 219 224.
120
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
CMPSD
Compare Scalar Double-Precision Floating-Point Values
Syntaxe
CMPSD dest,source,immediat
Description Cette instruction permet d'effectuer une comparaison de la partie basse de valeurs relles de double prcision d'un oprande source et d'un oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
Algorithme
EVALUER CAS immediat DE CAS 0: OPERATION EQ CAS 1: OPERATION LT CAS 2: OPERATION LE CAS 3: OPERATION UNORD CAS 4: OPERATION NEQ CAS 5: OPERATION NLT CAS 6: OPERATION NLE CAS 7: OPERATION ORD FIN EVALUER CAS CMP0 dest(63..0) OPERATION source(63..0) SI CMP0 ALORS dest(63..0) FFFFFFFFFFFFFFFFh SINON dest(63..0) 0000000000000000h FIN SI
Mnmonique
121
Instruction
Opcode
Description Cette instruction permet d'effectuer une comparaison de la partie basse de valeurs relles de double prcision d'un oprande source et d'un oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 225 228.
122
Assembleur 80x86
x86-64+
CMPSQ
Compare String Quadword
Syntaxe
CMPSQ
Description Cette instruction permet d'effectuer la comparaison d'un quadruple mot avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des drapeaux du registres EFLAGS en fonction des rsultats de la comparaison.
Algorithme
Fixe les drapeaux d'tats de ([(E)DI] = [(E)SI]) SI DF = 0 ALORS (E)SI (E)SI + 8 (E)DI (E)DI + 8 SINON (E)SI (E)SI - 8 (E)DI (E)DI - 8 FIN SI
Mnmonique
Instruction Opcode Description Compare le quadruple mot l'adresse DS:(R)SI avec le quadruple mot l'adresses ES:(R)DI et incrmente ou dcrmente les
CMPSQ
A7h
123
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
124
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir galement Instruction assembleur 80x86 - Instruction CMP Instruction assembleur 80x86 - Instruction SCAS
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 219 224.
125
Assembleur 80x86
INTEL Pentium III (SSE)+
CMPSS
Compare Scalar Single-Precision Floating-Point Values
Syntaxe
CMPSS dest, source, imm8
Description Cette instruction permet d'effectuer une comparaison de la partie basse de valeurs rels de simple prcision d'une oprande source et d'une oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
Algorithme
EVALUER CAS (imm8) DE CAS 0: OPERATION EQ CAS 1: OPERATION LT CAS 2: OPERATION LE CAS 3: OPERATION UNORD CAS 4: OPERATION NEQ CAS 5: OPERATION NLT CAS 6: OPERATION NLE CAS 7: OPERATION ORD FIN EVALUER CAS CMP0 dest(31..0) OPERATION source(31..0) SI CMP0 est vrai ALORS dest(31..0) FFFFFFFFh SINON dest(31..0) 00000000h FIN SI
Mnmonique
126
Instruction
Opcode
Description Cette instruction permet d'effectuer une comparaison de la partie basse de valeurs rels de simple prcision d'une oprande source et d'une oprande destination et entrepose le rsultat de la comparaison dans l'oprande de destination.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 229 232.
127
Assembleur 80x86
INTEL 8086+
CMPSW
Compare String Word
Syntaxe
CMPSW
Description Cette instruction permet d'effectuer la comparaison d'un mot avec l'oprande source (DS:(R)SI) et destination (ES:(R)DI) et fixe l'tat des drapeaux du registres EFLAGS en fonction des rsultats de la comparaison.
Algorithme
Fixe les drapeaux d'tats de ([(E)DI] = [(E)SI]) SI DF = 0 ALORS (E)SI (E)SI + 2 (E)DI (E)DI + 2 SINON (E)SI (E)SI - 2 (E)DI (E)DI - 2 FIN SI
Mnmonique
Instruction Opcode Description Compare le mot l'adresse DS:(R)SI avec le mot l'adresses ES:(R)DI et incrmente ou dcrmente les registres (R)SI et (R)DI
CMPSW
A7h
128
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
129
Voir galement Instruction assembleur 80x86 - Instruction CMP Instruction assembleur 80x86 - Instruction SCAS
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 809 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 403 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 97. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 219 224.
130
Syntaxe
CMPXCHG Oprande Destination, Oprande Source
Description A l'aide de l'instruction CMPXCHG, on peut comparer la destination avec l'accumulateur (AL, AX ou EAX). S'ils sont gaux, l'oprande de destination reoit le contenu de l'oprande source, tandis que s'ils sont diffrents, l'accumulation (AL, AX ou EAX) reoit le contenu de l'oprande de destination.
Algorithme
SI accumulateur = Oprande Destination ALORS drapeau ZF 1 Oprande Destination Oprande Source SINON drapeau ZF 0 accumulateur Oprande Destination FIN SI
Mnmonique
Instruction Opcode Description Compare de registre AL avec un emplacement 8 bits de registre ou mmoire. S'ils sont gale, le deuxime oprande est copi dans le premire oprande. Compare de registre AX avec un emplacement 16 bits de registre ou 131
0Fh B0h /r
0Fh B1h /r
mmoire. S'ils sont gale, le deuxime oprande est copi dans le premire oprande. Compare de registre EAX avec un emplacement 32 bits de registre ou mmoire. S'ils sont gale, le deuxime oprande est copi dans le premire oprande. Compare de registre RAX avec un emplacement 64 bits de registre ou mmoire. S'ils sont gale, le deuxime oprande est copi dans le premire oprande.
0Fh B1h /r
0Fh B1h /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de
#SS(Pile noncanonique)
#GP(Protection gnral)
132
destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction CMPXCHG8B Instruction assembleur 80x86 - Instruction CMPXCHG16B
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 233 235.
133
Syntaxe
CMPXCHG8B registre, mmoire
Description L'instruction CMPXCHG8B compare un nombre de 64 bits forme par le couple registre de EDX:EAX avec une valeur 64 bits se trouvant en mmoire. Si ces valeurs sont quivalente, les 64 bits se trouvant en mmoire sont remplacs par les 64 bits forms par le couple de registre ECX:EBX. Dans le cas contraire, les 64 bits forms par les registres EDX:EAX sont remplacs par les 64 bits se trouvant en mmoire.
Algorithme
SI EDX:EAX = Oprande Destination ALORS drapeau ZF 1 Oprande Destination ECX:EBX SINON drapeau ZF 0 EDX:EAX Oprande Destination FIN SI
Mnmonique
Instruction CMPXCHG8B mem64 Opcode 0Fh C7h /1 m64 Description Compare la paire de registres EDX:EAX l'emplacement mmoire de 64 bits. S'ils sont gale, alors fixe le drapeau de zro 1 et copie ECX:EBX dans l'emplacement
134
mmoire. Autrement, copie l'emplacement mmoire dans EDX:EAX et efface le drapeau de zro.
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description L'instruction CMPXCHG8B n'est pas support, lequel est indiquer par le bit 8 du registre EDX de l'instruction CPUID, fonction 0000_0001h ou 8000_0001h. L'oprande est un registre. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la
#UD(Opcode invalide) X
#SS(Pile noncanonique)
#GP(Protection gnral)
135
limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 236 238.
137
Assembleur 80x86
x86-64+
CMPXCHG16B
Compare and Exchange Sixteen Bytes
Syntaxe
CMPXCHG16B dest
Description Cette instruction permet de comparer un nombre de 128 bits et les changes si la condition est vrai.
Algorithme
SI RDX:RAX = dest ALORS ZF 1 dest RCX:RBX SINON ZF 0 RDX:RAX dest FIN SI
Mnmonique
Instruction Opcode Description Compare la paire de registres EDX:EAX l'emplacement mmoire de 128 bits. S'ils sont gale, alors fixe le drapeau de zro 1 et copie RCX:RBX dans l'emplacement mmoire. Autrement, copie l'emplacement mmoire dans
CMPXCHG16B mem128
138
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description L'instruction CMPXCHG16B n'est pas support, lequel est indiquer par le bit 13 du registre ECX de l'instruction CPUID, fonction 0000_0001h. L'oprande est un registre. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou
#UD(Opcode invalide) X
#SS(Pile noncanonique)
#GP(Protection gnral)
139
n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire L'oprande mmoire pour l'instruction CMPXCHG16B n'est pas align avec une limite de 16 octets. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement
#PF(Faute de page)
#AC(Vrifie l'alignement)
140
est activ
Exemple Cet exemple permet de tester la valeur d'un octet de deux adresses :
1. 2. 3. 4. MOVZX RBX,Byte Ptr [RAX] MOVZX RCX,Byte Ptr [RAX] MOVZX RDX,Byte Ptr [RAX] MOVZX RAX,Byte Ptr [RDI] 5. CMPXCHG16B OWord Ptr [RAX]
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 236 238.
141
Assembleur 80x86
INTEL Pentium III+
COMISD
Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS
Syntaxe
COMISD destination,source
Description Cette instruction permet de comparer deux valeurs rel de double-prcision dans la partie faible du quadruple mot de deux oprande et fixe les drapeaux de ZF, PF et FC du registre EFLAGS en fonction du rsultat (non-ordonne, suprieur , infrieur ou gal).
Algorithme
EVALUER CAS (OrderedCompare(destination(63..0) <> source(63..0))) DE CAS UNORDERED: ZF,PF,CF 111b CAS GREATER_THAN: ZF,PF,CF 000b CAS LESS_THAN: ZF,PF,CF 001b CAS EQUAL: ZF,PF,CF 100b FIN EVALUER CAS OF,AF,SF 0
Mnmonique
Instruction Opcode Description Cette instruction permet de comparer deux valeurs rel de double-prcision dans la partie faible du quadruple mot de deux oprande et fixe les drapeaux de ZF, PF et FC du
COMISD xmm1,xmm2/m64
142
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 239 241.
143
Assembleur 80x86
INTEL Pentium III+
COMISS
Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS
Syntaxe
COMISS destination,source
Description Cette instruction permet de comparer deux valeurs rel de simple-prcision dans la partie faible du quadruple mot de deux oprande et fixe les drapeaux de ZF, PF et FC du registre EFLAGS en fonction du rsultat (non-ordonne, suprieur , infrieur ou gal).
Algorithme
EVALUER CAS (OrderedCompare(destination(31..0) <> source(31..0))) DE CAS UNORDERED: ZF,PF,CF 111b CAS GREATER_THAN: ZF,PF,CF 000b CAS LESS_THAN: ZF,PF,CF 001b CAS EQUAL: ZF,PF,CF 100b FIN EVALUER CAS OF,AF,SF 0
Mnmonique
Instruction COMISS xmm1,xmm2/m32 Opcode 0Fh 2Fh /r Description Cette instruction permet de comparer deux valeurs rel de simple-prcision dans la partie faible du quadruple mot de deux oprande et fixe les drapeaux de ZF, PF et FC du
144
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 242 244.
145
Syntaxe CPUID
Description
Cette instruction retourne le code d'identification du microprocesseur dans les 4 registres suivants: EAX, EBX, ECX, EDX. Tout d'abord, si EAX = 0 lors de l'appel alors EAX retourne le nombre maximal d'entre d'EAX et EBX:EDX:ECX retourne la chane de caractres "GenuineIntel" si s'est un microprocesseur du fabricant INTEL (soit EBX = "Genu", EDX = "ineI", ECX = "ntel"). Si EAX = 1 lors de l'appel alors EAX contient le drapeau de fourniture fixe si les instructions CMPXCHG8B, CMOV, FCMOV, FCMOVB sont supporte. Le bit 23 est fixe si les instructions MMX sont supports. Si EAX = 2 lors de l'appel alors les 4 registres: EAX, EBX, ECX et EDX contient les informations concernant le cache et les TLBs (Translation Lookahead Buffers).
Algorithme VALUER EAX CAS 0: EAX hv EBX chane de caractres d'identification du fabricant : Intel: 756E6547h ("Genu") AMD: 68747541h ("Auth") Cyrix: 69727943h ("Cyri") EDX chane de caractres d'identification du fabricant : Intel: 49656E69h ("ineI") AMD: 69746E65h ("enti") Cyrix: 736E4978h ("xIns") ECX chane de caractres d'identification du fabricant : Intel: 6C65746Eh ("ntel") AMD: 444D4163h ("cAMD") Cyrix: 64616574h ("tead")
146
CAS 1: EAX*0 3+ Identification de niveau SI Intel ou AMD ALORS EAX*4 7+ Modle EAX*8 11+ Famille EAX*12 31+ rserve SINON Cyrix ALORS EAX*8 15+ 6 FIN SI EBX 0 ECX Drapeau de fourniture supplmentaire : Bit*13+ Instruction CMPXCHG16B support? Bit*27+ Instruction OSXSAVE (XGETBV, XRSTOR, XSAVE, XSETBV) support? EDX Drapeau de fourniture: Bit*0+ FPU: Coprocesseur mathmatique prsent Bit*1+ CYRIX: VME: Supporte le mode Virtuel 8086 Bit*2+ DE: Point d'arrt aux Entres/Sorties Bit*3+ CYRIX: PSE: Extension de taille de page Bit*4+ TSC: Compteur "Time Stamp" Bit*5+ MSR: CPU de style Pentium Bit*6+ CYRIX: PTE: Extension d'adresse physique, INTEL: PAE: Extension d'adresse physique Bit*7+ MCE: Vrification d'exception machine Bit*8+ CX8: CMPXCHG8B supporte? Bit*9+ CYRIX: APIC Bit*11+ SEP: Fourniture de d'appel rapide systme (Pentium Pro+) Bit*12+ MTRR: CYRIX: Type de registres de rang mmoire Bit*13+ PGE: Bit global PTE Bit*14+ CYRIX: MCA: Vrification de l'architecture machine support? Bit*15+ CMOV: Les instructions CMOV, FCMOV,... sont supports? Bit*16+ PAT: Table d'attribut de page Bit*17+ PSE36: Microprocesseur support des pages de 4 Mo pour l'accs la haute mmoire 2 Go Bit*18+ SN: Support le numro de srie du microprocesseur Bit*19+ Instruction CLFLUSH support? Bit*23+ MMX: Instruction MMX support? Bit*24+ FXSR: Sauvegarde/restauration rapide du microprocesseur (IA MMX-2) Bit*25+ SIMD: Extension de flux SIMD (IA MMX-2) Bit[26+ SSE2: Instruction LFENCE, MFENCE et MOVNTI support? CAS 2: SI (Pentium III ou plus) ou (Cyrix MediaGX MMX Enhanced) ALORS 147
EAX, EBX, ECX, EDX Les 4 type de cache de l'architecture du microprocesseur: 00h: Aucun 01h: Instruction TLB, 4 Ko par page, 4 routes, 64 entres 02h: Instruction TLB, 4 Mo par page, 4 routes, 4 entres 03h: Donne TLB, 4 Ko par page, 4 routes, 64 entres 04h: Donne TLB, 4 Mo par page, 4 routes, 8 entres 06h: Cache d'instruction, 8 Ko, 4 routes, 32 octets par ligne 08h: Cache d'instruction, 16 Ko, 4 routes, 32 octets par ligne 0Ah: Cache d'instruction, 8 Ko, 2 routes, 32 octets par ligne 0Ch: Cache d'instruction, 16 Ko, 2 routes, 32 octets par ligne 40h: Pas de cache L2 41h: Cache L2 unifi, 32 octets par ligne, 4 routes, 128 Ko 42h: Cache L2 unifi, 32 octets par ligne, 4 routes, 256 Ko 43h: Cache L2 unifi, 32 octets par ligne, 4 routes, 512 Ko 44h: Cache L2 unifi, 32 octets par ligne, 4 routes, 1 Mo 45h: Cache L2 unifi, 32 octets par ligne, 4 routes, 2 Mo SI Cyrix MediaGX MMX Enhanced ALORS 70h: Entre 32 bits TLB, 4 routes, Cache de 4 Ko 80h: Cache de 4 routes associative L1, 16 octets par ligne FIN SI SINON EAX non-dfini EBX non-dfini ECX non-dfini EDX non-dfini FIN SI CAS 3: SI (Pentium III ou plus) ALORS EDX:ECX Partie basse de 64 bits du numro de srie de 96 bits du microprocesseur SINON EAX non-dfini EBX non-dfini ECX non-dfini EDX non-dfini FIN SI CAS 80000000h: SI (AMD K5 sauf SSA/5, AMD K6 ou Cyrix GXm) ou (Pentium 4 ou plus) ALORS EAX Valeur maximal de la fonction contenu dans le registre EAX reconnu par l'instruction CPUID (Exemple AMD 5k86 (K5) = 80000005h) SINON EAX non-dfini 148
FIN SI EBX non-dfini ECX non-dfini EDX non-dfini CAS 80000001h: SI (AMD K5, AMD K6, Cyrix GXm ou IDT Winchip 2) ALORS EAX Signature du microprocesseur AMD 0000051Xh: AMD 5k86 (K5 sauf SSA/5) 0000066Xh: AMD 6k86 (K6) EDX Drapeaux des fournitures tendues: Bit*0+ FPU: Coprocesseur arithmtique include dans la puce du microprocesseur Bit*1+ VME: Extension de mode Virtual prsent Bit*2+ DE: Extensions de dboguage Bit*3+ PSE: CPU support la tailles de pages de 4 Mo Bit*4+ TSC: TSC prsent (Voir l'instruction RDTSC) Bit*5+ MSR: CPU est compatible MSR du K5 ou compatibilit MSR du Cyrix Bit*6+ PAE: Extensions de page d'adresse Bit*7+ MCE: Vrification d'exception machine Bit*8+ CX8: Support l'instruction CMPXCHG8B Bit*9+ APIC: CPU a un APIC local (doit tre activ) Bit*10+ Rserv Bit*11+ Instruction SYSCALL et SYSRET Bit*12+ MTRR: Registres de type de rang mmoire (Memory Type Range Registers) Bit*13+ Extensions de pagination global (PTE-PGE) Bit*14+ MCA: Architecture de vrification machine Bit*15+ CMOV: Le CPU support les instructions CMOV Bit*16+ FCMOV: Le CPU support les instructions FCMOV Bit*17+ PSE: Extension de taille de Page Bit*21..18+ Rserv Bit*22+ MMXE: CPU Support les extensions d'instructions MMX (AMD Athlon) Bit*23+ MMX: CPU support IA MMX Bit*24+ (Cyrix) Cyrix supporte l'extension MMX Bit*24+ (AMD) Support les instructions FXSAVE/FXRSTOR Bit*29..25+ Rserv Bit*30+ CPU support les instructions tendue 3DNow! Bit*31+ Support l'AMD 3DNow! SINON EAX non-dfini EDX non-dfini FIN SI EBX non-dfini 149
ECX Drapeau de fourniture supplmentaire: Bit*0+ Instruction LAHF est support en mode 64 bits? Bit*2+ Les instructions SVM (CLGI,...) sont supports? Bit*5+ Instruction LZCNT support? Bit*8+ Instruction PREFETCH du 3DNow! Prefetch support? CAS 80000002h,80000003h,80000004h: SI (AMD K5, AMD K6 ou Cyrix GXm) ALORS EAX, EBX, ECX, EDX Nom du CPU sous forme d'une chaine de caractres (si AMD K5, en format BIG-Endian) SINON EAX non-dfini EBX non-dfini ECX non-dfini EDX non-dfini FIN SI CAS 80000008h: EAX Demande des informations sur la taille des adresses et le compteur de coeur physique: Bit*23..16+ Demande la taille maximal physique invit d'octets en bits Bit*15..8+ Demande la taille maximal linaire d'une adresse d'octets en bits Bit*7..0+ Demande la taille maximal physique d'octets en bits ECX NC: Demande le nombre de coeur que comprendre le microprocesseur - 1. AUTREMENT: EAX non-dfini EBX non-dfini ECX non-dfini EDX non-dfini FIN VALUER
Remarque
Voici la table des fournitures standard retourner par le registre EAX=1 de l'instruction CPUID en fonction des diffrents fabricants:
C C C Regi N y yr y stre o ri ix ri EDX m x 6 x 6 x G Cy rix 6x 86 M C y ri x M C y ri x G A M D C A M D C A M D K A A A A M M M M D D D D K K At K 6 6 hl IN TE L Pe nti IN TE L Pe nti IN TE L Pe nti IN TE L Pe nti IN TE L Pe nti IN TE L Pe nti
150
x 8 8 6 6 L
X X
II X 6 2 5 6 - - o m 2 III n
u m
u m M M X
u m Pr o
u m II
u m III
u m Cel er on
+ +
+ + + + + + + + +
+ + + + +
+ -
+ + + + + + +
+ + + + +
+ + + + + + + + +
+ + + + + + + + +
M Bit[7 C ] E C Bit[8 X ] 8
+ + + + + + +
+ + + + + + + + +
Bit[9
A PI
151
+ -
+ + -
(2) +
PS Bit[1 E3 7] 6 Bit[1 S 8] N
(2) +
Bit[2 M 3] M
+ + + + -
+ + + +
152
X FX Bit[2 S 4] R SI Bit[2 M 5] D
(2) +
(1) = Intel produit des puces avec APIC et sans APIC. (2) = Il commence supporter les coeurs Deschutes
Mnmonique
Instruction CPUID Opcode 0Fh A2h Description Retourne les informations propos du microprocesseur et sa compatiblit. Le registre EAX correspond un numro de fonction et les donnes sont retournes dans les registres EAX, EBX, ECX et EDX.
Exceptions Aucune
Exemple Cet exemple permet de tester la prsence de l'instruction CMPXCHG16B avant de l'utiliser :
1. 2. 3. MOV EAX,1 CPUID BT ECX, 13 ; CPUID.1:ECX.CMPXCHG16B[bit 13] = 1: Estce que le CMPXCHG16B est disponible et actif pour l'utilisation d'application ? 4. JNC @not_supported 5. ; Mettre quelques instructions avant ici 153
6. 7. 8. 9.
; ... CMPXCHG16B OWord Ptr [RAX] ; Mettre quelques instructions aprs ici ; ... 10. @not_supported:
Rfrences
AMD CPUID Specification, Edition Advanced Micro Devices, Revision 2.28, April 2008, Publication No. 25481. AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 103 104. 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, page 64 67. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 245 279.
154
Syntaxe
CQO
Description Cette instruction permet de convertir le quadruple mot du registre EAX en deux quadruple mot RDX:RAX, le rsultat tient sur une taille de 128 bits.
Algorithme
RDX:RAX extension des signes de RAX
Mnmonique
Instruction CQO Opcode 99h Description tendre les signes de EAX dans RAX
Exceptions Aucune
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 349 350.
155
Assembleur 80x86
Nehalem (SSE4.2)+
CRC32
Accumulate CRC32 Value
Syntaxe
CRC32 dest,source
Description Cette instruction dbute avec une valeur initiale dans l'oprande de destination, accumule une valeur de code CRC-32 (polynomial de 11EDC6F41h) dans l'oprande source et enregistre le rsultat dans l'oprande de destination.
Algorithme
MODULE BIT_REFLECT64 dest(63..0) source(0..63) MODULEMODULE BIT_REFLECT32 dest(31..0) source(0..31) MODULE BIT_REFLECT16 dest(15..0) source(0..15) MODULE BIT_REFLECT8 dest(7..0) source(0..7) SI taille de l'oprande source = 64 bits ET taille de l'oprande de destination = 64 bits ALORS TEMP1(63..0) BIT_REFLECT64 (source(63..0)) TEMP2(31..0) BIT_REFLECT32 (dest(31..0)) TEMP3(95..0) TEMP1(63..0) << 32 TEMP4(95..0) TEMP2(31..0) << 64 TEMP5(95..0) TEMP3(95..0) XOR TEMP4(95..0) TEMP6(31..0) TEMP5(95..0) MOD2 11EDC6F41h DEST(31..0) BIT_REFLECT (TEMP6(31..0)) 156
DEST(63..32) 00000000h SINON SI taille de l'oprande source = 32 bits ET taille de l'oprande de destination = 32 bits ALORS TEMP1(31..0) BIT_REFLECT32 (source(31..0)) TEMP2(31..0) BIT_REFLECT32 (dest(31..0)) TEMP3(63..0) TEMP1(31..0) << 32 TEMP4(63..0) TEMP2(31..0) << 32 TEMP5(63..0) TEMP3(63..0) XOR TEMP4(63..0) TEMP6(31..0) TEMP5(63..0) MOD2 11EDC6F41h DEST(31..0) BIT_REFLECT (TEMP6(31..0)) SINON SI taille de l'oprande source = 16 bits ET taille de l'oprande de destination = 32 bits ALORS TEMP1[15-0+ BIT_REFLECT16 (source(15..0)) TEMP2[31-0+ BIT_REFLECT32 (dest(31..0)) TEMP3[47-0+ TEMP1(15..0) << 32 TEMP4[47-0] TEMP2(31..0) << 16 TEMP5[47-0+ TEMP3(47..0) XOR TEMP4(47..0) TEMP6[31-0+ TEMP5(47..0) MOD2 11EDC6F41h DEST[31-0+ BIT_REFLECT (TEMP6(31..0)) SINON SI taille de l'oprande source = 8 bits ET taille de l'oprande de destination = 64 bits ALORS TEMP1[7-0+ BIT_REFLECT8(source(7..0)) TEMP2[31-0+ BIT_REFLECT32 (dest(31..0)) TEMP3[39-0+ TEMP1(7..0) << 32 TEMP4[39-0+ TEMP2(31..0) << 8 TEMP5[39-0+ TEMP3(39..0) XOR TEMP4(39..0) TEMP6[31-0+ TEMP5(39..0) MOD2 11EDC6F41h DEST[31-0+ BIT_REFLECT (TEMP6(31..0)) DEST[63-32+ 00000000h SINON SI taille de l'oprande source = 8 bits ET taille de l'oprande de destination = 32 bits ALORS TEMP1[7-0+ BIT_REFLECT8(source(7..0)) TEMP2[31-0+ BIT_REFLECT32 (dest(31..0)) TEMP3[39-0+ TEMP1(7..0) << 32 TEMP4[39-0+ TEMP2(31..0) << 8 TEMP5[39-0+ TEMP3(39..0) XOR TEMP4(39..0) TEMP6[31-0+ TEMP5(39..0) MOD2 11EDC6F41h DEST[31-0+ BIT_REFLECT (TEMP6(31..0)) FIN SI
157
Mnmonique
Instruction Opcode Description Cette instruction dbute avec une valeur initiale dans l'oprande de destination, accumule une valeur de code CRC-32 (polynomial de 11EDC6F41h) dans l'oprande source et enregistre le rsultat dans l'oprande de destination. Cette instruction dbute avec une valeur initiale dans l'oprande de destination, accumule une valeur de code CRC-32 (polynomial de 11EDC6F41h) dans l'oprande source et enregistre le rsultat dans l'oprande de destination. Cette instruction dbute avec une valeur initiale dans l'oprande de destination, accumule une valeur de code CRC-32 (polynomial de 11EDC6F41h) dans l'oprande source et enregistre le rsultat dans l'oprande de destination. Cette instruction dbute avec une valeur initiale dans l'oprande de destination, accumule une valeur de code CRC-32 (polynomial de 11EDC6F41h) dans l'oprande source et enregistre le rsultat dans l'oprande de destination.
Cette instruction dbute avec une F2h REX.W 0Fh 38h F0h /r valeur initiale dans l'oprande de destination, accumule une valeur de code CRC-32 (polynomial de 158
11EDC6F41h) dans l'oprande source et enregistre le rsultat dans l'oprande de destination. Cette instruction dbute avec une valeur initiale dans l'oprande de destination, accumule une valeur F2h REX.W 0Fh 38h F1h /r de code CRC-32 (polynomial de 11EDC6F41h) dans l'oprande source et enregistre le rsultat dans l'oprande de destination.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 280 283.
159
Assembleur 80x86
INTEL Pentium 4+
CVTDQ2PD
Convert Packed Doubleword Integers to Packed Double-Precision Floating-Point Values
Syntaxe
CVTDQ2PD dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs rel de double prcision.
Algorithme
dest(0..63) ConvertIntegerToDouble(source(0..31)) dest(64..127) ConvertIntegerToDouble(source(32..63))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs rel de double prcision.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 284 285.
160
Assembleur 80x86
INTEL Pentium 4+
CVTDQ2PS
Convert Packed Doubleword Integers to Packed Single-Precision Floating-Point Values
Syntaxe
CVTDQ2PS dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs rel de simple prcision.
Algorithme
dest(0..31) ConvertIntegerToFloat(source(0..31)) dest(32..63) ConvertIntegerToFloat(source(32..63)) dest(64..95) ConvertIntegerToFloat(source(64..95)) dest(96..127) ConvertIntegerToFloat(source(96..127))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs rel de simple prcision.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 286 288.
161
Assembleur 80x86
INTEL Pentium 4+
CVTPD2DQ
Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
Syntaxe
CVTPD2DQ dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de double prcision en double mot entier et fixe 0 le reste du paquet.
Algorithme
dest(0..31) ConvertDoubleToInteger(Source(0..63)) dest(32..63) ConvertDoubleToInteger(Source(64..127)) dest(64..127) 0
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de double prcision en double mot entier et fixe 0 le reste du paquet.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 289 291.
162
Assembleur 80x86
INTEL Pentium 4+
CVTPD2PI
Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
Syntaxe
CVTPD2PI dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de double prcision en double mot entier.
Algorithme
dest(0..31) ConvertDoubleToInteger(Source(0..63)) dest(32..63) ConvertDoubleToInteger(Source(64..127))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de double prcision en double mot entier.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 292 294.
163
Assembleur 80x86
INTEL Pentium 4+
CVTPD2PS
Convert Packed Double-Precision Floating-Point Values to Packed Single-Precision FloatingPoint Values
Syntaxe
CVTPD2PS dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de double prcision en valeurs rel de simple prcision et fixe 0 le reste du paquet.
Algorithme
dest(0..31) ConvertDoubleToFloat(Source(0..63)) dest(32..63) ConvertDoubleToFloat(Source(64..127)) dest(64..127) 0
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de double prcision en valeurs rel de simple prcision et fixe 0 le reste du paquet.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 295 297.
164
Assembleur 80x86
INTEL Pentium 4+
CVTPI2PD
Convert Packed Double-Precision Floating-Point Values to Packed Single-Precision FloatingPoint Values
Syntaxe
CVTPI2PD dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs rel de double prcision compact.
Algorithme
dest(0..63) ConvertIntegerToDouble(source(0..31)) dest(64..127) ConvertIntegerToDouble(source(32..63))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de double mot entier en valeurs rel de double prcision compact.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 297 300.
165
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
CVTPI2PS
Convert Packed Integer to Packed Single
Syntaxe
CVTPI2PS dest,source
Description Cette instruction permet de convertir un entier de format double mot en une valeur rel de simple prcision compact.
Algorithme
dest(31..0) (rel) source(31..0) dest(63..32) (rel) source(63..32)
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir un entier de format double mot en une valeur rel de simple prcision compact.
CVTPI2PS xmm,mm/m64
0Fh 2Ah /r
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 301 302.
166
Assembleur 80x86
INTEL Pentium 4+
CVTPS2DQ
Convert Packed Single-Precision Floating-Point Values to Packed Doubleword Integers
Syntaxe
CVTPS2DQ dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de simple prcision en paquet de double mots entiers.
Algorithme
dest(0..31) ConvertFloatToInteger(source(0..31)) dest(32..63) ConvertFloatToInteger(source(32..63)) dest(64..95) ConvertFloatToInteger(source(64..95)) dest(96..127) ConvertFloatToInteger(source(96..127))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de simple prcision en paquet de double mots entiers.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 303 306.
167
Assembleur 80x86
INTEL Pentium 4+
CVTPS2PD
Convert Packed Single-Precision Floating-Point Values to Packed Double-Precision FloatingPoint Values
Syntaxe
CVTPS2PD dest,source
Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de simple prcision en paquet de valeurs rel de double prcision.
Algorithme
dest(0..63) ConvertFloatToDouble(source(0..31)) dest(64..127) ConvertFloatToDouble(source(32..63))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'un paquet de valeurs rel de simple prcision en paquet de valeurs rel de double prcision.
0Fh 5Ah /r
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 307 309.
168
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)+
CVTPS2PI
Convert Packed Single to Packed Integer
Syntaxe
CVTPS2PI dest,source
Description Cette instruction permet de convertir une valeur rel de simple prcision compact en un entier de format double mot.
Algorithme
dest(31..0) (entier) source(31..0) dest(63..32) (entier) source(63..32)
Mnmonique
Instruction
CVTPS2PI mm,xmm/m64
Opcode
0Fh 2Dh /r
Description
Cette instruction permet de convertir une valeur rel de simple prcision compact en un entier de format double mot.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 310 312.
169
Assembleur 80x86
INTEL Pentium 4+
CVTSD2SI
Convert Scalar Double-Precision Floating-Point Value to Doubleword Integer
Syntaxe
CVTSD2SI dest,source
Description Cette instruction permet d'effectuer la conversion d'une valeur rel de simple prcision en valeur entier de double mots.
Algorithme
dest(0..31) ConvertDoubleToInteger(source(0..63))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la conversion d'une valeur rel de simple prcision en valeur entier de double mots.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 313 315.
170
Assembleur 80x86
INTEL Pentium 4+
CVTSD2SS
Convert Scalar Double-Precision Floating-Point Value to Scalar Single-Precision Floating-Point Value
Syntaxe
CVTSD2SS dest,source
Description Cette instruction permet d'effectuer la conversion d'une valeur rel de double prcision en valeur rel de simple prcision.
Algorithme
dest(0..31) ConvertDoubleToFloat(source(0..63))
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer la conversion d'une valeur rel de double prcision en valeur rel de simple prcision.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, AM, Edition Intel, Mars 2010, Publication No. 253666-034US, page 316 318.
171
Assembleur 80x86
INTEL Pentium 4+
CVTSI2SD
Convert Doubleword Integer to Scalar DoublePrecision Floating-Point Value
Syntaxe
CVTSI2SD dest,source
Description Cette instruction permet de convertir un entier de format double mot en une valeur rel de double prcision.
Algorithme
dest(0..63) ConvertIntegerToDouble(source(0..31))
Mnmonique
Instruction CVTSI2SD xmm, r/m32 Opcode F2h 0Fh 2Ah /r Description Cette instruction permet de convertir un entier de format double mot en une valeur rel de double prcision.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 319 321.
172
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)
CVTSI2SS
Convert Doubleword Integer to Scalar SinglePrecision Floating-Point Value
Syntaxe
CVTSI2SS dest,source
Description Cette instruction permet de convertir un entier de format double mot en une valeur rel de simple prcision.
Algorithme
dest(31..0) (rel) source(31..0)
Mnmonique
Instruction CVTSI2SS xmm,r/m32 Opcode F3h 0Fh 2Ah /r Description Cette instruction permet de convertir un entier de format double mot en une valeur rel de simple prcision.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 322 324.
173
Assembleur 80x86
INTEL Pentium 4+
CVTSS2SD
Convert Scalar Single-Precision Floating-Point Value to Scalar Double-Precision Floating-Point Value
Syntaxe
CVTSS2SD dest,source
Description Cette instruction permet de convertir une valeur rel de simple prcision en une valeur rel de double prcision.
Algorithme
dest(0..63) ConvertFloatToDouble(source(0..31))
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir une valeur rel de simple prcision en une valeur rel de double prcision.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 325 327.
174
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)
CVTSS2SI
Convert Single-Precision Floating-Point to Scalar Integer
Syntaxe
CVTSS2SI dest,source
Description Cette instruction permet de convertir une valeur rel de simple prcision en un entier de format double mot.
Algorithme
dest(31..0) (entier) source(31..0)
Mnmonique
Instruction CVTSS2SI r32,xmm/m32 Opcode F3h 0Fh 2Dh /r Description Cette instruction permet de convertir une valeur rel de simple prcision en un entier de format double mot.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 328 330.
175
Assembleur 80x86
INTEL Pentium 4+
CVTTPD2DQ
Convert with Truncation Packed DoublePrecision Floating-Point Values to Packed Doubleword Integers
Syntaxe
CVTTPD2DQ dest,source
Description Cette instruction permet de convertir un paquet de valeur rel de double prcision avec en un paquet d'entier de format double mot tronquer et fixe 0 le reste du paquet.
Algorithme
dest(0..31) ConvertDoubleToIntegerTruncate(source(0..63)) dest(32..63) ConvertDoubleToIntegerTruncate(source(64..127)) dest(64..127) 0
Mnmonique
Instruction Opcode Description
Cette instruction permet de convertir un paquet de valeur rel de double prcision avec en un paquet d'entier de format double mot tronquer et fixe 0 le reste du paquet.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 331 333.
176
Assembleur 80x86
INTEL Pentium 4+
CVTTPD2PI
Convert with Truncation Packed DoublePrecision Floating-Point Values to Packed Doubleword Integers
Syntaxe
CVTTPD2PI dest,source
Description Cette instruction permet de convertir une valeur rel de double prcision compact avec tronquage en un entier de format double mot compact.
Algorithme
dest(0..31) ConvertDoubleToIntegerTruncate(source(0..63)) dest(32..63) ConvertDoubleToIntegerTruncate(source(64..127))
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir une valeur rel de double prcision compact avec tronquage en un entier de format double mot compact.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 334 336.
177
Assembleur 80x86
INTEL Pentium 4+
CVTTPS2DQ
Convert with Truncation Packed SinglePrecision Floating-Point Values to Packed Doubleword Integers
Syntaxe
CVTTPS2DQ dest,source
Description Cette instruction permet de convertir un paquet de valeur rel de simple prcision avec en un paquet d'entier de format double mot tronquer.
Algorithme
dest(0..31) ConvertFloatToIntegerTruncate(source(0..31)) dest(32..63) ConvertFloatToIntegerTruncate(source(32..63)) dest(64..95) ConvertFloatToIntegerTruncate(source(64..95)) dest(96..127) ConvertFloatToIntegerTruncate(source(96..127))
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir un paquet de valeur rel de simple prcision avec en un paquet d'entier de format double mot tronquer.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 337 339.
178
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)+
CVTTPS2PI
Convert Packed Single with truncation to Packed Integer
Syntaxe
CVTTPS2PI dest,source
Description Cette instruction permet de convertir une valeur rel de simple prcision compact avec tronquage en un entier de format double mot compact.
Algorithme
dest(31..0) (entier) source(31..0) dest(63..32) (entier) source(63..32)
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir une valeur rel de simple prcision compact avec tronquage en un entier de format double mot compact.
CVTTPS2PI mm,xmm/m64
0Fh 2Ch /r
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 340 342.
179
Assembleur 80x86
INTEL Pentium 4+
CVTTSD2SI
Convert with Truncation Scalar DoublePrecision Floating-Point Value to Signed Doubleword Integer
Syntaxe
CVTTSD2SI dest,source
Description Cette instruction permet de convertir une valeur rel de double prcision avec en un entier de format double mot tronquer.
Algorithme
dest(0..31) ConvertDoubleToIntegerTruncate(source(0..63))
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir une valeur rel de double prcision avec en un entier de format double mot tronquer.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 343 345.
180
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)
CVTTSS2SI
Convert Single-Precision Floating-Point with truncation to Scalar Integer
Syntaxe
CVTTSS2SI dest,source
Description Cette instruction permet de convertir un entier de format double mot avec tronquage en une valeur rel de simple prcision.
Algorithme
dest(31..0) (entier) source(31..0)
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir un entier de format double mot avec tronquage en une valeur rel de simple prcision.
CVTTSS2SI r32,xmm/m32
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 345 348.
181
Syntaxe
CWD
Description 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. Le bit de signe du registre AX est recopi dans les 16 bits du registre DX. En somme, cette commande ne prsente un intrt particulier que lorsque l'on manipule des valeurs binaires signes tant donn que le signe du registre AX est conserv dans le double mot du couple de registre DX:AX.
Algorithme
SI AX < 8000h ALORS DX 00000h FIN SI SI AX >= 8000h ALORS DX 0FFFFh FIN SI
Mnmonique
Instruction CWD Opcode 99h Description tendre les signes de AX dans DX:AX
Exceptions Aucune
182
Voir galement Instruction assembleur 80x86 - Instruction CBW Instruction assembleur 80x86 - Instruction CWDE Instruction assembleur 80x86 - Instruction CDQ
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 809 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 404 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 85. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 349 350.
183
Syntaxe
CWDE
Description S'appuyant sur la technique utilis par son frre CWD, l'instruction CWDE permet de convertir le mot se trouvant dans AX en un double mot, le rsultat tant plac dans le registre 32 bits EAX. Les 16 bits de poids forts du registre EAX sont positionns la valeur du bit de poids le plus fort du registre AX.
Algorithme
SI EAX < 8000h ALORS EAX EAX 00000FFFFh FIN SI SI EAX >= 8000h ALORS EAX EAX U 0FFFF0000h FIN SI
Mnmonique
Instruction CWDE Opcode 66h 98h Description tendre les signes de AX dans EAX
Exceptions Aucune
184
Voir galement Instruction assembleur 80x86 - Instruction CWD Instruction assembleur 80x86 - Instruction CBW Instruction assembleur 80x86 - Instruction CDQ
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 187 188.
185
Syntaxe
DAA
Description Cette instruction corrige aprs coup les retenues lors de la manipulation de valeur DCB. Pour y parvenir, la commande convertit le contenu dans le registre AL en une valeur DCB compacte (mme chose dans le registre AL).
Algorithme
SI ( ( AL 0Fh ) > 9 U AF = 1 ) ALORS AL AL + 6 drapeau AF 1 SINON drapeau AF 0 SI ( ( AL > 9Fh) U CF = 1 ) ALORS AL AL + 60h drapeau CF 1 SINON drapeau CF 0 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Ajuste les dcimal du registre AL (invalide en mode 64 bits)
DAA
27h
186
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excut en mode 64-bits
#UD(Opcode invalide)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 810 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 105. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 351 352.
187
Syntaxe
DAS
Description Cette instruction offre l'intressante possibilit de corrige le rsultat d'une soustraction de 2 nombres de format DCB compactes. tant donn que le microprocesseur soustrait ces valeurs comme s'il s'agissait de chiffres normales, des dbordements se produisent dans les rsultats. La commande DAS convertit le rsultat de la soustraction de 2 valeurs DCB compactes en une valeur de format DCB compacte.
Algorithme
SI ( AF = 1 ) U ( AL 0Fh ) > 9 ALORS AL AL - 6 drapeau AF 1 SINON drapeau AF 0 FIN SI SI ( CF = 1 ) U ( AL > 9Fh ) ALORS AL AL - 60h drapeau CF 1 SINON drapeau CF 0 FIN SI
Mnmonique
Instruction DAS Opcode 2Fh Description Ajuste les dcimal du registre AL aprs soustraction (invalide en mode 188
64 bits)
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excut en mode 64-bits
#UD(Opcode invalide)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 810 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 106. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 353 354.
189
DEC Decrement
Syntaxe
DEC oprande
Description Cette instruction est un quelque sorte un raccourci de l'instruction SUB, en effet celle-ci dcrment de 1 le registre ou l'adresse mmoire spcifi, le rsultat obtenu est donc identique celui d'un SUB avec 1 comme 2ime oprande.
Algorithme
oprande oprande - 1
Mnmonique
Instruction Opcode Description Dcrmente de 1 le contenu d'un emplacement de registre ou mmoire 8 bits Dcrmente de 1 le contenu d'un emplacement de registre ou mmoire 16 bits Dcrmente de 1 le contenu d'un emplacement de registre ou mmoire 32 bits Dcrmente de 1 le contenu d'un emplacement de registre ou mmoire
DEC reg/mem8
FEh /1
DEC reg/mem16
FFh /1
DEC reg/mem32
FFh /1
DEC reg/mem64
FFh /1
190
64 bits Dcrmente de 1 le contenu d'un registre 16 bits Dcrmente de 1 le contenu d'un registre 32 bits
DEC reg16
(48h + rw)
DEC reg32
(48h +rd)
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est
#SS(Pile noncanonique)
#GP(Protection gnral)
191
utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir galement Instruction assembleur 80x86 - Instruction INC Instruction assembleur 80x86 - Instruction SUB
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 810 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 404 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 107 108. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 355 357.
192
DIV Division
Syntaxe
DIV Oprande
Description L'instruction DIV permet d'effectuer une division non-signe (nombre naturel). Le dividende est implicite; il est ajuster en fonction de la taille du diviseur. Le restant est toujours plus petit que le diviseur. Le type de diviseur dtermine quel registre l'instruction utilisera:
Taille Octet Mot Dividende Diviseur AX DX:AX Quotient Restant AH DX EDX
Algorithme
SI Oprande = 0 ALORS Interruption 0 SINON SI Oprande 8 bits ALORS AL AX Oprande AH AX MOD Oprande FIN SI SI Oprande 16 bits ALORS AX ( ( DX x 65536 ) + AX ) Oprande DX ( ( DX x 65536 ) + AX ) MOD Oprande FIN SI SI Oprande 32 bits ALORS 193
EAX ( ( EDX x 65536 x 65536 ) + EAX ) Oprande EDX ( ( EDX x 65536 x 65536 ) + EAX ) MOD Oprande FIN SI FIN SI
Mnmonique
Instruction Opcode Description Division naturel de AX par le contenu d'un emplacement mmoire ou registre 8 bits et entrepose le quotient dans AL et restant dans AH. Division naturel de DX:AX par le contenu d'un emplacement mmoire ou registre 16 bits et entrepose le quotient dans AX et restant dans DX. Division naturel de EDX:EAX par le contenu d'un emplacement mmoire ou registre 32 bits et entrepose le quotient dans EAX et restant dans EDX. Division naturel de RDX:RAX par le contenu d'un emplacement mmoire ou registre 64 bits et entrepose le quotient dans RAX et restant dans RDX.
DIV reg/mem8
F6h /6
DIV reg/mem16
F7h /6
DIV reg/mem32
F7h /6
DIV reg/mem64
F7h /6
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description L'oprande de diviseur vaut
194
0. Le quotient est trop large pour le registre dsign. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie
195
l'alignement)
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir galement Instruction assembleur 80x86 - Instruction MUL Instruction assembleur 80x86 - Instruction IDIV
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 810 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 404 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 109. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 358 360.
196
Assembleur 80x86
INTEL Pentium 4+
DIVPD
Divide Packed Double-Precision Floating-Point Values
Syntaxe
DIVPD dest,source
Description Cette instruction permet d'effectuer une division de valeur rel de double prcision de registre XMM ou d'emplacement mmoire de 128 bits.
Algorithme
dest(0..63) dest(0..63) / source(0..63) dest(64..127) dest(64..127) / source(64..127)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une division de valeur rel de double prcision de registre XMM ou d'emplacement mmoire de 128 bits.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 361 364.
197
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
DIVPS
Packed Single-Precision Floating-Point Divide
Syntaxe
DIVPS dest,source
Description Cette instruction permet d'effectuer une division de valeur rel de simple prcision de registre XMM ou d'emplacement mmoire de 128 bits.
Algorithme
dest(31..0) dest(31..0) / source(31..0) dest(63..32) dest(63..32) / source(63..32) dest(95..64) dest(95..64) / source(95..64) dest(127..96) dest(127..96) / source(127..96)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une division de valeur rel de simple prcision de registre XMM ou d'emplacement mmoire de 128 bits.
DIVPS xmm1,xmm2/m128
0Fh 5Eh /r
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 365 366.
198
Assembleur 80x86
INTEL Pentium 4+
DIVSD
Divide Scalar Double-Precision Floating-Point Values
Syntaxe
DIVSD dest,source
Description Cette instruction permet d'effectuer une division scalaire de valeur rel de double prcision de registre XMM ou d'emplacement mmoire de 128 bits.
Algorithme
dest(0..63) = dest(0..63) / source(0..63)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une division scalaire de valeur rel de double prcision de registre XMM ou d'emplacement mmoire de 128 bits.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 367 370.
199
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
DIVSS
Scalar Single-Precision Floating-Point Divide
Syntaxe
DIVSS dest,source
Description Cette instruction permet d'effectuer une division scalaire de valeur rel de simple prcision de registre XMM ou d'emplacement mmoire de 128 bits.
Algorithme
dest(127..0) dest(127..0) / source(127..0)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une division scalaire de valeur rel de simple prcision de registre XMM ou d'emplacement mmoire de 128 bits.
DIVSS xmm1,xmm2/m128
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 371 372.
200
Assembleur 80x86
SSE4.1
DPPD
Dot Product of Packed Double Precision Floating-Point Values
Syntaxe
DPPD dest,source,immediat
Description Cette instruction permet d'effectuer une multiplication conditionnel d'un paquet de valeurs rel de double prcision dans l'oprande de destination avec le paquet de valeurs rel de l'oprande source et effectue un masque des bits extrait d'un oprande immdiat.
Algorithme
SI immediat(4) = 1 ALORS Temp1(63..0) dest(63..0) x source(63..0) SINON Temp1(63..0) +0,0 FIN SI SI immediat(5) = 1 ALORS Temp1(127..64) dest(127..64) x source(127..64) SINON Temp1(127..64) +0,0 FIN SI Temp2(63..0) Temp1(63..0) + Temp1(127..64) SI immediat(0) = 1 ALORS dest(63..0) Temp2(63..0) SINON dest(63..0) +0,0 FIN SI SI immediat(1) = 1 ALORS dest(127..64) Temp2(63..0) SINON
201
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une multiplication conditionnel d'un paquet de valeurs rel de double prcision dans l'oprande de destination avec le paquet de valeurs rel de l'oprande source et effectue un masque des bits extrait d'un oprande immdiat.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 374 377.
202
Assembleur 80x86
SSE4.1
DPPS
Dot Product of Packed Single Precision FloatingPoint Values
Syntaxe
DPPS dest,source,immediat
Description Cette instruction permet d'effectuer une multiplication conditionnel d'un paquet de valeurs rel de simple prcision dans l'oprande de destination avec le paquet de valeurs rel de l'oprande source et effectue un masque des bits extrait d'un oprande immdiat.
Algorithme
SI immediat(4) = 1 ALORS Temp1(31..0) dest(31..0) x source(31..0) SINON Temp1(31..0) +0.0 FIN SI SI immediat(5) = 1 ALORS Temp1(63..32) dest(63..32) x source(63..32) SINON Temp1(63..32) +0.0 FIN SI SI immediat(6) = 1 ALORS Temp1(95..64) dest(95..64) x source(95..64) SINON Temp1(95..64) +0.0 FIN SI SI immediat(7) = 1 ALORS Temp1(127..96) dest(127..96) x source(127..96) SINON Temp1(127..96) +0.0 FIN SI Temp2(31..0) Temp1(31..0) + Temp1(63..32) Temp3(31..0) Temp1(95..64) + Temp1(127..96) Temp4(31..0) Temp2(31..0) + Temp3(31..0) 203
SI immediat(0) = 1 ALORS dest(31..0) Temp4(31..0) SINON dest(31..0) +0.0 FIN SI SI immediat(1) = 1 ALORS dest(63..32) Temp4(31..0) SINON dest(63..32) +0.0 FIN SI SI immediat(2) = 1 ALORS dest(95..64) Temp4(31..0) SINON dest(95..64) +0.0 FIN SI SI immediat(3) = 1 ALORS dest(127..96) Temp4(31..0) SINON dest(127..96) +0.0 FIN SI
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer une multiplication conditionnel d'un paquet de valeurs rel de simple prcision dans l'oprande de destination avec le paquet de valeurs rel de l'oprande source et effectue un masque des bits extrait d'un oprande immdiat.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 378 380.
204
Syntaxe
EMMS
Description Cette instruction fixe les mots marqus du MPU (soit les registres virgule flottante disponible) de chacun un. Naturellement, ceci rclame que tous les registres du MPU soit disponible cette usage. Il devrait tre utilis avant l'excution les instructions MMX et par consquent les oprations virgule flottante.
Algorithme
FloatPointTagWord FFFFh
Mnmonique
Instruction EMMS Opcode 0Fh 77h Description Cette instruction permet de fixer les mots marqus du MPU de chacun un.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 381 383.
205
ENTER Enter
Syntaxe
ENTER taille,niveau
Description Cette instruction permet de grer des langages de programmation de haut niveau. La commande ENTER permet de crer les structures de paramtres ncessaires aux procdures des langages de haut niveau. taille indique le nombre d'octet devant tre rserves dans la pile pour la procdure. niveau indique le nombre niveau d'imbrication de la procdure, c'est--dire que le nombre de structures de paramtres devant tre imbriques dans la pile. Cette commande n'est disponible qu' partir des microprocesseurs 80186 ou postrieur.
Algorithme
NestingLevel NestingLevel 1Fh SI StackSize = 32 ALORS PUSH EBP FrameTemp ESP SINON PUSH BP FrameTemp SP FIN SI SI NestingLevel > 0 ALORS BOUCLE POUR i 1 JUSQU'A (NestingLevel - 1) FAIRE SI OperandSize = 32 ALORS SI StackSize 32 ALORS EBP EBP - 4 PUSH [EBP] SINON BP BP - 4 PUSH [BP] FIN SI SINON 206
SI StackSize = 32 ALORS EBP EBP - 2 PUSH [EBP] SINON BP BP - 2 PUSH [BP] FIN SI FIN SI FIN BOUCLE POUR SI OperandSize = 32 ALORS PUSH FrameTemp SINON PUSH FrameTemp FIN SI FIN SI SI StackSize = 32 ALORS EBP FrameTemp ESP EBP - Size SINON BP FrameTemp SP BP - Size FIN SI
Mnmonique
Instruction
ENTER imm16, 0 ENTER imm16, 1 ENTER imm16, imm8
Opcode
C8h iw 00h C8h iw 01h C8h iw ib
Description
Cre une procdure de cadre de pile Cre un cadre de pile pour une procdure Cre un cadre de pile pour une procdure
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la
#SS(Pile)
207
limite du segment de pile ou n'est pas canonique Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 811 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 111 112. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 384 390.
208
ESC ESCape
Syntaxe
ESC Code Opration,Adresse
Description Cette instruction active le coprocesseur, lequel se permettra d'utiliser les mthodes d'adressage du processeur principal (CPU). Le microprocesseur effectue un accs mmoire sur le coprocesseur et place les informations sur le bus de donnes. La technique dont le coprocesseur fait preuve pour traiter la commande Code Opration dpend ensuite de sa conception interne.
Mnmonique
Instruction ESC [xxyy],imm8 Opcode D8h 06h yyh xxh imm8 Description Cette instruction active le coprocesseur, lequel se permettra d'utiliser les mthodes d'adressage du processeur principal (CPU).
Cycles d'horloge
8086 8088 80186 80286 80386 i486 Pentium Cx486SLC UMC U5S IBM 486BL3X Cx486DX
Instruction
Opcode
ESC [xxyy],imm8
8/12+EA 8/12+EA
920
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 811
209
Syntaxe
F2XM
Description Cette instruction s'applique calculer 2 puissance le registre mathmatique ST(0) moins 1 et enregistre son produit dans le registre mathmatique ST(0).
Algorithme
ST(0) 2 ST(0) - 1
Remarque L'utilisation de cette instruction est dconseille, il est prfrable d'utiliser plutt F2XM1 car cette instruction est trs peu support par les compilateurs.
Mnmonique
Instruction F2XM Opcode D9h F0h Description Cette instruction permet de remplacer ST(0) avec 2 la (ST(0) - 1).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 841
210
Syntaxe
F2XM1
Description Cette instruction s'applique calculer 2 puissance le registre mathmatique ST(0) moins 1 et enregistre son produit dans le registre mathmatique ST(0).
Algorithme
ST(0) 2 ST(0) - 1
Mnmonique
Instruction Opcode Description Cette instruction permet de remplacer ST(0) avec 2 la (ST(0) - 1).
F2XM1
D9h F0h
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 391 392.
211
Syntaxe
FABS
Description Cette instruction permet de convertir le nombre rel contenu dans le registre mathmatique ST(0) en sa valeur absolue.
Algorithme
ST(0) | ST(0) |
Mnmonique
Instruction FABS Opcode D9h E1h Description Cette instruction permet de convertir le nombre rel contenu dans le registre mathmatique ST(0) en sa valeur absolue.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 841 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 393 394.
212
Syntaxe
FADD source, cible
Description Cette instruction offre l'essentiel possibilit d'ajouter le nombre rel de valeur positive source cible et enregistre la somme dans cible. Si cible n'est pas dfini, le registre mathmatique ST(0) est sera utilis par dfaut. Si source et cible ne sont pas spcifis, le couple de registre mathmatique ST(1) et ST(0) seront exploits.
Algorithme
Cible Cible + Source
Mnmonique
Instruction FADD mem32 Opcode D8h /0 Description Cette instruction permet d'ajouter le nombre rel de valeur positive source cible et enregistre la somme dans cible. Cette instruction permet d'ajouter le nombre rel de valeur positive source cible et enregistre la somme dans cible. Cette instruction permet d'ajouter le nombre rel de valeur positive source cible et enregistre la somme dans cible. Cette instruction permet d'ajouter le nombre rel de valeur positive source cible et enregistre la 213
FADD mem64
DCh /0
FADD fpureg
D8h (C0h+r)
FADD ST0,fpureg
D8h (C0+r)
somme dans cible. FADD TO fpureg DCh (C0h+r) Cette instruction permet d'ajouter le nombre rel de valeur positive source cible et enregistre la somme dans cible. Cette instruction permet d'ajouter le nombre rel de valeur positive source cible et enregistre la somme dans cible.
FADD fpureg,ST0
DCh (C0h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 841 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 395 398.
214
Syntaxe
FADDP source, cible
Description Cette instruction complmentaire ajoute le nombre rel source au nombre rel cible et enregistrer la somme dans cible puis prendre le registre mathmatique ST(0) et le dpile. Si cible n'est pas dfini, le registre mathmatique ST(0) est utilis par dfaut. Si source et cible ne sont pas spcifis, le couple de registre mathmatique ST(1) et ST(0) sont exploite.
Algorithme
Cible Cible + Source POP ST
Mnmonique
Instruction
FADDP fpureg
Opcode
DEh (C0h+r)
Description
Cette instruction complmentaire ajoute le nombre rel source au nombre rel cible et enregistrer la somme dans cible puis prendre le registre mathmatique ST(0) et le dpile. Cette instruction complmentaire ajoute le nombre rel source au nombre rel cible et enregistrer la somme dans cible puis prendre le registre mathmatique ST(0) et le dpile.
FADDP fpureg,ST0
DEh (C0h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 842 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 395 398.
215
Syntaxe
FBLD source
Description Cette instruction charge la valeur de format DCB compacte aprs le registre mathmatique ST(0).
Algorithme
Dcrmentation du pointeur de pile FPU ST(0) Source
Mnmonique
Instruction FBLD mem80 Opcode DFh /4 Description Cette instruction charge la valeur de format DCB compacte aprs le registre mathmatique ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 842 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 399 400.
216
Syntaxe
FBSTP cible
Description Cette instruction extrait la valeur de format DCB compacte du registre mathmatique ST(0), l'enregistrer dans cible et prendre le registre mathmatique ST(0) et sort de la pile.
Algorithme
cible ST(0) POP ST
Mnmonique
Instruction FBSTP mem80 Opcode DFh /6 Description Cette instruction extrait la valeur de format DCB compacte du registre mathmatique ST(0), l'enregistrer dans cible et prendre le registre mathmatique ST(0) et sort de la pile.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 842 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 401 403.
217
Syntaxe
FCHS
Description Cette instruction inverse tout simplement le signe du registre mathmatique ST(0). S'il est positive il deviendra ngatif et s'il est ngatif et deviendra positif.
Algorithme
ST(0) -ST(0)
Mnmonique
Instruction FCHS Opcode D9h E0h Description Cette instruction permet d'inverser le signe du registre mathmatique ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 842 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 404 405.
218
Syntaxe
FCLEX
Description Cette instruction efface toutes les exceptions contenu dans les drapeaux de registres du coprocesseur mathmatique.
Algorithme
SW(bit 0 7) 0 SW(bit 15) 0
Mnmonique
Instruction FCLEX Opcode 9Bh DBh E2h Description Cette instruction permet d'effacer toutes les exceptions contenu dans les drapeaux de registres du coprocesseur mathmatique.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 842 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 406 407.
219
Syntaxe
FCMOVB registre FCMOVB ST(0),registre FCMOVBE registre FCMOVBE ST(0),registre FCMOVE registre FCMOVE ST(0),registre FCMOVNB registre FCMOVNB ST(0),registre FCMOVNBE registre FCMOVNBE ST(0),registre FCMOVNE registre FCMOVNE ST(0),registre FCMOVNU registre FCMOVNU ST(0),registre FCMOVU registre FCMOVU ST(0),registre
220
Description Cette instruction permet de dplac des nombres rel (virgule flottante) si la condition en question est satisfaite.
Mnmonique
Instruction
FCMOVB ST,STi FCMOVE ST,STi FCMOVBE ST,STi FCMOVU ST,STi FCMOVNB ST,STi FCMOVNE ST,STi FCMOVNBE ST,STi FCMOVNU ST,STi
Opcode
DAh (C0h+i) DAh (C8h+i) DAh (D0h+i) DAh (D8h+i) DBh (C0h+i) DBh (C8h+i) DBh (D0h+i) DBh (D8h+i)
Description
Cette instruction permet de dplac des nombres rel si infrieur. Cette instruction permet de dplac des nombres rel si gale. Cette instruction permet de dplac des nombres rel si infrieur ou gale. Cette instruction permet de dplac des nombres rel si dsordonn. Cette instruction permet de dplac des nombres rel si pas infrieur. Cette instruction permet de dplac des nombres rel si pas gale. Cette instruction permet de dplac des nombres rel si pas infrieur ou gale. Cette instruction permet de dplac des nombres rel si pas dsordonn.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 408 409.
221
Syntaxe
FCOM source
Description Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1.
Algorithme
EVALUER CAS (relation de l'operande) DE CAS ST > source: C3 0 C2 0 C0 0 CAS ST < source: C3 0 C2 0 C0 1 CAS ST = source: C3 1 C2 0 C0 0 FIN EVALUER CAS SI ST(0) ou source = NaN OU format non support ALORS EXCEPTION #IA SI FPUControlWord.IM = 1 ALORS C3 1 C2 1 C0 1 FIN SI FIN SI
222
Mnmonique
Instruction FCOM mem32 Opcode D8h /2 Description Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1. Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1. Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1. Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1.
FCOM mem64
DCh /2
FCOM fpureg
D8h D0h+r
FCOM ST0,fpureg
D8h D0h+r
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 842 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 410 413.
223
Assembleur 80x86
INTEL Pentium III+
Syntaxe
FCOMI ST, ST(i)
FCOMI
Compare Real and Set EFLAGS
Description 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 rsultats.
Algorithme
EVALUER CAS (relation de l'oprande) DE CAS ST(0) > ST(i): ZF 0 PF 0 CF 0 CAS ST(0) < ST(i): ZF 0 PF 0 CF 1 CAS ST(0) ST(i): ZF 1 PF 0 CF 0 FIN EVALUER CAS SI ST(0) OU ST(i) NaN OU format non support ALORS EXCEPTION #IA SI FPUControlWord.IM = 1 ALORS ZF 1 PF 1 CF 1 FIN SI 224
FIN SI
Mnmonique
Instruction Opcode Description 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 rsultats.
FCOMI ST0,STi
DBh (F0h+i)
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 414 416.
225
Assembleur 80x86
INTEL Pentium III+
FCOMIP
Compare Real and Set EFLAGS
Syntaxe
FCOMIP ST, ST(i)
Description 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 rsultats et dsempile de la pile la valeur dans le registre.
Algorithme EVALUER CAS (relation de l'oprande) DE CAS ST(0) > ST(i): ZF 0 PF 0 CF 0 CAS ST(0) < ST(i): ZF 0 PF 0 CF 1 CAS ST(0) ST(i): ZF 1 PF 0 CF 0 FIN EVALUER CAS SI ST(0) OU ST(i) NaN OU format non support ALORS EXCEPTION #IA SI FPUControlWord.IM = 1 ALORS ZF 1 PF 1 CF 1 FIN SI FIN SI
226
Mnmonique
Instruction
FCOMIP ST0,STi
Opcode
DFh (F0h+i)
Description
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 rsultats et dsempile de la pile la valeur dans le registre.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 414 416.
227
Syntaxe
FCOMP source
Description Cette instruction compare le nombre rel de valeur positive source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres.
Algorithme
EVALUER CAS (relation de l'operande) DE CAS ST > source: C3 0 C2 0 C0 0 CAS ST < source: C3 0 C2 0 C0 1 CAS ST = source: C3 1 C2 0 C0 0 FIN EVALUER CAS SI ST(0) ou source = NaN OU format non support ALORS EXCEPTION #IA SI FPUControlWord.IM = 1 ALORS C3 1 C2 1 C0 1 FIN SI FIN SI
228
PopRegisterStack
Mnmonique
Instruction
FCOMP mem32
Opcode
D8h /3
Description
Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres. Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres. Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres. Cette instruction permet de comparer le nombre rel de valeur positive source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres.
FCOMP mem64
DCh /3
FCOMP fpureg
D8h D8h+r
FCOMP ST0,fpureg
D8h D8h+r
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 842 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 410 413.
229
Syntaxe
FCOMPP
Description Cette instruction permet de comparer les nombres rels du registre mathmatique ST(1) avec le registre mathmatique ST(0), ensuite de mettre les indicateurs d'tat C0 C3 la valeur 1 et prendre le couple de registre mathmatique ST(1) et ST(0) dans la pile de registres (2 dpilages).
Algorithme
EVALUER CAS (relation de l'operande) DE CAS ST > source: C3 0 C2 0 C0 0 CAS ST < source: C3 0 C2 0 C0 1 CAS ST = source: C3 1 C2 0 C0 0 FIN EVALUER CAS SI ST(0) ou source = NaN OU format non support ALORS EXCEPTION #IA SI FPUControlWord.IM = 1 ALORS C3 1 C2 1 C0 1 FIN SI FIN SI 230
PopRegisterStack PopRegisterStack
Mnmonique
Instruction FCOMPP Opcode DEh D9h Description Cette instruction permet de comparer les nombres rels du registre mathmatique ST(1) avec le registre mathmatique ST(0), ensuite de mettre les indicateurs d'tat C0 C3 la valeur 1 et prendre le couple de registre mathmatique ST(1) et ST(0) dans la pile de registres (2 dpilages).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 843 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 410 413.
231
Assembleur 80x86
FCOS
Syntaxe
FCOS
Description Cette instruction calcule le cosinus du registre mathmatique ST(0) et l'enregistrer dans le registre mathmatique ST(1); ensuite met dans le registre mathmatique ST(0) la valeur 1,0. Attention, cette commande est disponible uniquement sur les 80387 ou postrieur.
Algorithme
SI oprande dans le rang ALORS C2 0 ST COS(ST) SINON C2 1 FIN SI
Mnmonique
Instruction
FCOS
Opcode
D9h FFh
Description
Cette instruction permet de calculer le cosinus du registre mathmatique ST(0) et l'enregistrer dans le registre mathmatique ST(1); ensuite met dans le registre mathmatique ST(0) la valeur 1,0.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 843 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 417 418.
232
Syntaxe
FDECSTP
Algorithme
SI TOP = 0 ALORS TOP 7 SINON TOP TOP - 1 FIN SI
Mnmonique
Instruction FDECSTP Opcode D9h F6h Description Cette instruction permet de dcrmenter le pointeur de pile de registres.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 843 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 419 421.
233
Syntaxe
FDISI
Description Cette instruction permettait de dsactiver les interruptions; toutefois cette commande n'est disponible que sur le coprocesseur mathmatique 8087. Elle n'a pas t de retour dans les coprocesseur suivant.
Algorithme
IF 0
Mnmonique
Instruction FDISI Opcode 9Bh DBh E1h Description Cette instruction permet de dsactiver les interruptions.
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 843
234
Syntaxe
FDIV source, cible
Description Cette instruction offre la possibilit d'effectuer des divisions de nombre rel de valeur positive source par cible et enregistrer le rsultat dans cible. Si cible n'est pas spcifi, le registre mathmatique ST(0) est inutilis. Si source et cible ne sont pas dfini, le couple de registre mathmatique ST(1) et ST(0) sont utiliss.
Algorithme
source source cible
Mnmonique
Instruction FDIV mem32 Opcode D8h /6 Description Cette instruction permet d'effectuer des divisions de nombre rel de valeur positive source par cible et enregistrer le rsultat dans cible. Cette instruction permet d'effectuer des divisions de nombre rel de valeur positive source par cible et enregistrer le rsultat dans cible. Cette instruction permet d'effectuer des divisions de nombre rel de valeur positive source par cible et
FDIV mem64
DCh /6
FDIV fpureg
D8h (F0h+r)
235
enregistrer le rsultat dans cible. FDIV ST0,fpureg D8h (F0h+r) Cette instruction permet d'effectuer des divisions de nombre rel de valeur positive source par cible et enregistrer le rsultat dans cible. Cette instruction permet d'effectuer des divisions de nombre rel de valeur positive source par cible et enregistrer le rsultat dans cible. Cette instruction permet d'effectuer des divisions de nombre rel de valeur positive source par cible et enregistrer le rsultat dans cible.
FDIV TO fpureg
DCh (F8h+r)
FDIV fpureg,ST0
DCh (F8h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 843 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 422 424.
236
Syntaxe
FDIVP source, cible
Description Cette instruction offre la possibilit d'effectuer des division de nombre rel et place ST(0) dans la pile.
Algorithme
source source cible POP ST
Mnmonique
Instruction FDIVP fpureg Opcode DEh (F8h+r) Description Cette instruction permet d'effectuer des division de nombre rel et place ST(0) dans la pile. Cette instruction permet d'effectuer des division de nombre rel et place ST(0) dans la pile.
FDIVP fpureg,ST0
DEh (F8h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 843 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 422 424.
237
Syntaxe
FDIVR cible, source
Description Cette instruction offre la possibilit d'effectuer des division de nombre rel de valeur positive avec les registres inverss cible par source.
Algorithme
source source cible
Mnmonique
Instruction FDIVR mem32 Opcode D8h /7 Description Cette instruction permet d'effectuer des division de nombre rel de valeur positive avec les registres inverss cible par source. Cette instruction permet d'effectuer des division de nombre rel de valeur positive avec les registres inverss cible par source. Cette instruction permet d'effectuer des division de nombre rel de valeur positive avec les registres inverss cible par source.
FDIVR mem64
DCh /7
FDIVR fpureg
D8h (F8h+r)
238
FDIVR ST0,fpureg
D8h (F8h+r)
Cette instruction permet d'effectuer des division de nombre rel de valeur positive avec les registres inverss cible par source. Cette instruction permet d'effectuer des division de nombre rel de valeur positive avec les registres inverss cible par source. Cette instruction permet d'effectuer des division de nombre rel de valeur positive avec les registres inverss cible par source.
FDIVR TO fpureg
DCh (F0h+r)
FDIVR fpureg,ST0
DCh (F0h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 843 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 425 428.
239
Syntaxe
FDIVRP cible, source
Description Cette instruction offre la possibilit d'effectuer des divisions de nombre rel avec les registres inverss cible par source et place ST(0) dans la pile.
Algorithme
source source cible POP ST
Mnmonique
Instruction FDIVRP fpureg Opcode DEh (F0h+r) Description Cette instruction permet d'effectuer des divisions de nombre rel avec les registres inverss cible par source et place ST(0) dans la pile. Cette instruction permet d'effectuer des divisions de nombre rel avec les registres inverss cible par source et place ST(0) dans la pile. Cette instruction permet d'effectuer des division de nombre rel de valeur 240
FDIVRP fpureg,ST0
DEh (F0h+r)
FDIVRP
DEh F1h
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 844 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 425 428.
241
Assembleur 80x86
AMD 3DNow!+
Syntaxe FEMMS
FEMMS
Faster EMMS
Description Cette instruction permet d'effacer les tats MMX aprs le passage d'instructions MMX.
Mnmonique Instruction FEMMS Opcode 0Fh 0Eh Description Cette instruction permet d'effacer les tats MMX aprs le passage d'instructions MMX.
242
Syntaxe
FENI
Algorithme
IF 1
Mnmonique
Instruction FENI Opcode 9Bh DBh E0h Description Cette instruction permet d'autoriser les interruptions.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 844
243
Syntaxe
FFREE cible
Description Cette instruction permet de librer le registre cible devant reprsent un des registres de la pile.
Algorithme
TAG(cible) 11b
Mnmonique
Instruction FFREE fpureg Opcode DDh (C0h+r) Description Cette instruction permet de librer le registre cible devant reprsent un des registres de la pile.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 844 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 429 429.
244
Description Cette instruction permet de librer un des registres de la pile et d'ensuite de dsempiler le registre de la pile.
Mnmonique Instruction FFREEP fpureg Opcode DFh (C0h+r) Description Cette instruction permet de librer un des registres de la pile et d'ensuite de dsempiler le registre de la pile.
245
Syntaxe
FIADD source,cible
Description Cette instruction offre l'essentiel possibilit d'ajouter le nombre rel source cible et enregistre la somme dans cible. Si cible n'est pas dfini, le registre mathmatique ST(0) est sera utilis par dfaut. Si source et cible ne sont pas spcifis, le couple de registre mathmatique ST(1) et ST(0) seront exploits.
Algorithme
cible cible + source
Mnmonique
Instruction FIADD mem16 Opcode DEh /0 Description Cette instruction permet d'ajouter le nombre rel source cible et enregistre la somme dans cible. Cette instruction permet d'ajouter le nombre rel source cible et enregistre la somme dans cible.
FIADD mem32
DAh /0
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 844 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 395 398.
246
Syntaxe
FICOM source
Description Cette instruction permet de comparer le nombre rel source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1.
Algorithme
EVALUER CAS relation de l'oprande CAS non comparable: C3 1 C2 1 C0 1 CAS ST > source: C3 0 C2 0 C0 0 CAS ST < source: C3 0 C2 0 C0 1 CAS ST = source: C3 1 C2 0 C0 0 FIN EVALUER CAS
Mnmonique
247
Opcode DEh /2
Description Cette instruction permet de comparer le nombre rel source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1. Cette instruction permet de comparer le nombre rel source avec le registre mathmatique ST(0) et mettre les indicateurs d'tat C0 C3 avec la valeur 1.
FICOM mem32
DAh /2
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 844 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 430 431.
248
Syntaxe
FICOMP source
Description Cette instruction compare le nombre rel source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres.
Algorithme
EVALUER CAS relation de l'oprande CAS non comparable: C3 1 C2 1 C0 1 CAS ST > source: C3 0 C2 0 C0 0 CAS ST < source: C3 0 C2 0 C0 1 CAS ST = source: C3 1 C2 0 C0 0 FIN EVALUER CAS POP ST
Mnmonique
249
Opcode DEh /3
Description Cette instruction compare le nombre rel source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres. Cette instruction compare le nombre rel source avec le registre mathmatique ST(0), mettre les indicateurs d'tat C0 C3 avec la valeur 1 et dpile le registre mathmatique ST(0) de la pile de registres.
FICOMP mem32
DAh /3
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 844 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 430 431.
250
Syntaxe
FIDIV source,cible
Description Cette instruction offre la possibilit d'effectuer des divisions de nombre rel source par cible et enregistrer le rsultat dans cible. Si cible n'est pas spcifi, le registre mathmatique ST(0) est inutilis. Si source et cible ne sont pas dfini, le couple de registre mathmatique ST(1) et ST(0) sont utiliss.
Algorithme
source source cible
Mnmonique
Instruction FIDIV mem16 FIDIV mem32 Opcode DEh /6 DAh /6 Description Cette instruction permet d'effectuer des divisions de nombre rel source par cible et enregistrer le rsultat dans cible. Cette instruction permet d'effectuer des divisions de nombre rel source par cible et enregistrer le rsultat dans cible.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 844 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 422 424.
251
Syntaxe
FIDIVR source,cible
Description Cette instruction offre la possibilit d'effectuer des division de nombre rel avec les registres inverss cible par source.
Algorithme
source source cible
Mnmonique
Instruction FIDIVR mem16 FIDIVR mem32 Opcode DEh /7 DAh /7 Description Cette instruction offre la possibilit d'effectuer des division de nombre rel avec les registres inverss cible par source. Cette instruction offre la possibilit d'effectuer des division de nombre rel avec les registres inverss cible par source.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 425 428.
252
Syntaxe
FILD source
Description Cette instruction permet de charger le nombre entier auprs du registre ST(0).
Algorithme
Dcrmentation de la pile FPU ST(0) source
Mnmonique
Instruction FILD mem16 Opcode DFh /0 Description Cette instruction permet de charger le nombre entier auprs du registre ST(0). Cette instruction permet de charger le nombre entier auprs du registre ST(0). Cette instruction permet de charger le nombre entier auprs du registre ST(0).
FILD mem32
DBh /0
FILD mem64
DFh /5
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 432 434.
253
Syntaxe
FIMUL source,cible
Description Cette instruction permet de multiplier le nombre rel source par cible et sauvegarde le rsultat dans cible. Si la cible n'est pas dfinit, le registre ST(0) est utilis. Si source et cible ne sont pas dfinit, les registres ST(1) et ST(0) sont utiliss.
Algorithme
source source x cible
Mnmonique
Instruction
FIMUL mem16
Opcode
DEh /1
Description
Cette instruction permet de multiplier le nombre rel source par cible et sauvegarde le rsultat dans cible. Si la cible n'est pas dfinit, le registre ST(0) est utilis. Si source et cible ne sont pas dfinit, les registres ST(1) et ST(0) sont utiliss. Cette instruction permet de multiplier le nombre rel source par cible et sauvegarde le rsultat dans cible. Si la cible n'est pas dfinit, le registre ST(0) est utilis. Si source et cible ne sont pas dfinit, les registres ST(1) et ST(0) sont utiliss.
FIMUL mem32
DAh /1
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 455 459.
254
Syntaxe
FINCSTP
Algorithme
SI TOP = 7 ALORS TOP 0 SINON TOP TOP + 1 FIN SI
Mnmonique
Instruction FINCSTP Opcode D9h F7h Description Cette instruction permet d'incrmenter le pointeur de pile de registres.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 435 436.
255
Syntaxe
FINIT
Algorithme
CW 37Fh SW 0 TW 0FFFFh FEA 0 FDS 0 FIP 0 FOP 0 FCS 0
Mnmonique
Instruction FINIT Opcode 9Bh DBh E3h Description Cette instruction permet d'effectuer l'initialisation du coprocesseur mathmatique.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 437 437.
256
Syntaxe
FISTP cible
Description Cette instruction permet de sauvegarder le nombre du registre ST(0) dans cible.
Algorithme
cible ST(0)
Mnmonique
Instruction FIST mem16 Opcode DFh /2 Description Cette instruction permet de sauvegarder le nombre du registre ST(0) dans cible. Cette instruction permet de sauvegarder le nombre du registre ST(0) dans cible.
FIST mem32
DBh /2
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 438 442.
257
Syntaxe
FISTP cible
Description Cette instruction permet de sauvegarder le nombre du registre ST(0) dans cible et prendre le registre ST(0) de la pile du registres.
Algorithme
cible ST(0) POP ST
Mnmonique
Instruction
FISTP mem16 FISTP mem32 FISTP mem64
Opcode
DFh /3 DBh /3 DFh /7
Description
Cette instruction permet de sauvegarder le nombre du registre ST(0) dans cible et prendre le registre ST(0) de la pile du registres. Cette instruction permet de sauvegarder le nombre du registre ST(0) dans cible et prendre le registre ST(0) de la pile du registres. Cette instruction permet de sauvegarder le nombre du registre ST(0) dans cible et prendre le registre ST(0) de la pile du registres.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 438 442.
258
Assembleur 80x86
SSE3
FISTTP
Store Integer with Truncation
Syntaxe
FISTTP dest
Description Cette instruction permet de convertir la valeur contenu dans le registre ST dans un entier en utilisant on tronquage, de type chop, lequel est un mode d'arrondissement, et transfert le rsultat dans la destination et ensuite effectuer un dsempilage de ST.
Algorithme
dest ST pop ST
Mnmonique
Instruction Opcode Description Cette instruction permet de convertir la valeur contenu dans le registre ST dans un entier en utilisant on tronquage, de type chop, lequel est un mode d'arrondissement, et transfert le rsultat dans la destination et ensuite effectuer un dsempilage de ST. Cette instruction permet de convertir la valeur contenu dans le registre ST 259
FISTTP m16int
DFh /1
FISTTP m32int
DBh /1
dans un entier en utilisant on tronquage, de type chop, lequel est un mode d'arrondissement, et transfert le rsultat dans la destination et ensuite effectuer un dsempilage de ST. Cette instruction permet de convertir la valeur contenu dans le registre ST dans un entier en utilisant on tronquage, de type chop, lequel est un mode d'arrondissement, et transfert le rsultat dans la destination et ensuite effectuer un dsempilage de ST.
FISTTP m64int
DDh /1
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 443 444.
260
Syntaxe
FISUB source
Description Cette instruction offre l'essentielle posibilit de soustraire le nombre source du registre ST(0).
Algorithme
ST ST - source
Mnmonique
Instruction FISUB mem16 Opcode DEh /4 Description Cette instruction permet de soustraire le nombre source du registre ST(0). Cette instruction permet de soustraire le nombre source du registre ST(0).
FISUB mem32
DAh /4
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 845 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 503 506.
261
Syntaxe
FISUBR source
Description Cette instruction offre l'essentielle possibilit de soustraire le nombre du registre ST(0) de source.
Algorithme
source source - ST
Mnmonique
Instruction FISUBR mem16 Opcode DEh /5 Description Cette instruction permet de soustraire le nombre du registre ST(0) de source. Cette instruction permet de soustraire le nombre du registre ST(0) de source.
FISUBR mem32
DAh /5
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 507 510.
262
Syntaxe
FLD source
Description Cette instruction permet de charger le nombre rel du registre ST(0) dans la pile.
Algorithme
Dcrmentation de la pile du FPU ST(0) source
Mnmonique
Instruction Opcode
FLD mem32 FLD mem64 FLD mem80 FLD fpureg D9h /0 DDh /0 DBh /5 D9h (C0h+r)
Description
Cette instruction permet de charger le nombre rel du registre ST(0) dans la pile. Cette instruction permet de charger le nombre rel du registre ST(0) dans la pile. Cette instruction permet de charger le nombre rel du registre ST(0) dans la pile. Cette instruction permet de charger le nombre rel du registre ST(0) dans la pile.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 446 448.
263
Syntaxe
FLD1
Description Cette instruction permet de charger la constante 1,0 du registre ST(0) dans la pile.
Algorithme
Dcrmentation de la pile du FPU ST(0) 1
Mnmonique
Instruction FLD1 Opcode D9h E8h Description Cette instruction permet de charger la constante 1,0 du registre ST(0) dans la pile.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 449 450.
264
Assembleur 80x86
INTEL MPU 8087+
FLDCW
Float Load Control Word
Syntaxe
FLDCW source
Algorithme
CW source
Mnmonique
Instruction
FLDCW mem16
Opcode
D9h /5
Description
Cette instruction permet de charger le mot de contrle avec source.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 451 452.
265
Syntaxe
FLDENV source
Algorithme
environnement FPU source
Mnmonique
Instruction FLDENV mem Opcode D9h /4 Description Cette instruction permet de charger l'environnement partir de source.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 453 454.
266
Syntaxe
FLDL2E
Description Cette instruction permet de mettre le rsultat du logarithme de e de la base 2 dans ST(0).
Algorithme
Dcrmentation de la pile du FPU ST(0) 2e
Mnmonique
Instruction FLDL2E Opcode D9h EAh Description Cette instruction permet de mettre le rsultat du logarithme de e de la base 2 dans ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 449 450.
267
FLDL2T
Syntaxe
FLDL2T
Description Cette instruction permet de mettre le rsultat du logarithme de 10 de la base 2 dans ST(0).
Algorithme
Dcrmentation de la pile du FPU ST(0) 10e
Mnmonique
Instruction FLDL2T Opcode D9h E9h Description Cette instruction permet de mettre le rsultat du logarithme de 10 de la base 2 dans ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 449 450.
268
Syntaxe
FLDLG2
Description Cette instruction permet de mettre le rsultat du logarithme de 2 de la base 10 dans ST(0).
Algorithme
Dcrmentation de la pile du FPU ST(0) LOG 210
Mnmonique
Instruction FLDLG2 Opcode D9h ECh Description Cette instruction permet de mettre le rsultat du logarithme de 2 de la base 10 dans ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 449 450.
269
Syntaxe
FLDLN2
Description Cette instruction permet de mettre le rsultat du logarithme de e de la base 10 dans ST(0).
Mnmonique
Instruction FLDLN2 Opcode D9h EDh Description Cette instruction permet de mettre le rsultat du logarithme de e de la base 10 dans ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 846 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 449 450.
270
Syntaxe
FLDPI
Description Cette instruction permet de mettre le rsultat de la constante PI () dans le registre ST(0).
Algorithme
ST(0)
Mnmonique
Instruction FLDPI Opcode D9h EBh Description Cette instruction permet de mettre le rsultat de la constante PI () dans le registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 847 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 449 450.
271
Syntaxe
FLDZ
Description Cette instruction permet de mettre le rsultat de la constante 0,0 dans le registre ST(0).
Algorithme
ST(0) 0,0
Mnmonique
Instruction FLDZ Opcode D9h EEh Description Cette instruction permet de mettre le rsultat de la constante 0,0 dans le registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 847 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 449 450.
272
Syntaxe
FMUL source,cible
Description Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible. Si la cible n'est pas dfinit, le registre ST(0) est utilis. Si source et cible ne sont pas dfinit, les registres ST(1) et ST(0) sont utiliss.
Algorithme
source source x cible
Mnmonique
Instruction FMUL mem32 Opcode D8h /1 Description Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible. Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible. Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et
FMUL mem64
DCh /1
FMUL fpureg
D8h (C8h+r)
273
sauvegarde le rsultat dans cible. FMUL ST0,fpureg D8h (C8h+r) Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible. Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible. Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible.
FMUL TO fpureg
DCh (C8h+r)
FMUL fpureg,ST0
DCh (C8h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 847 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 455 459.
274
Assembleur 80x86
INTEL MPU 8087+
FMULP
Float MULtiplication in Pointer
Syntaxe
FMULP source,cible
Description Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible et prend ensuite ST(0) dans la pile de registres. Si source et cible ne sont pas dfinit, les registres ST(1) et ST(0) sont utiliss.
Algorithme
source source x cible POP ST(0)
Mnmonique
Instruction
FMULP fpureg
Opcode
DEh (C8h+r)
Description
Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible et prend ensuite ST(0) dans la pile de registres. Cette instruction permet de multiplier le nombre rel de valeur positive source par cible et sauvegarde le rsultat dans cible et prend ensuite ST(0) dans la pile de registres.
FMULP fpureg,ST0
DEh (C8h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 847 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 455 459.
275
Assembleur 80x86
INTEL MPU 8087+
FNCLEX
Float Numeric CLear EXecption
Syntaxe
FNCLEX
Description Cette instruction permet d'liminer et de grer les exceptions non masques.
Algorithme
FPUStatusWord(0..7) 0 FPUStatusWord(15) 0
Mnmonique
Instruction FNCLEX Opcode DBh E2h Description Cette instruction permet d'liminer et de grer les exceptions non masques.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 847 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 406 407.
276
FNDISI
Syntaxe
FNDISI
Description Cette instruction permet de dsactiver les interruptions et de grer les exceptions non masques.
Mnmonique
Instruction FNDISI Opcode DBh E1h Description Cette instruction permet de dsactiver les interruptions et de grer les exceptions non masques.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 847
277
FNENI
Syntaxe
FNENI
Description Cette instruction permet d'activer les interruptions et de grer les exceptions non masques.
Mnmonique
Instruction FNENI Opcode DBh E0h Description Cette instruction permet d'activer les interruptions et de grer les exceptions non masques.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 847
278
Assembleur 80x86
INTEL MPU 8087+
FNINIT
Float & Numeric Initialize
Syntaxe
FNINIT
Description Cette instruction permet d'initialiser le coprocesseur mathmatique et de grer les exceptions non masques.
Algorithme
FPUControlWord 037Fh FPUStatusWord 0 FPUTagWord FFFFh FPUDataPointer 0 FPUInstructionPointer 0 FPULastInstructionOpcode 0
Mnmonique
Instruction FNINIT Opcode DBh E3h Description Cette instruction permet d'initialiser le coprocesseur mathmatique et de grer les exceptions non masques.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 848 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 437 437.
279
Syntaxe
FNOP
Description Cette instruction permet de ne rien faire et de simplement passer l'instruction suivante.
Mnmonique
Instruction FNOP Opcode D9h D0h Description Cette instruction permet de ne rien faire et de simplement passer l'instruction suivante.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 848 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 460 460.
280
Assembleur 80x86
INTEL MPU 8087+
FNSAVE
Syntaxe
FNSAVE source
Description Cette instruction permet de sauvegarder l'tat courant du coprocesseur mathmatique dans l'emplacement mmoire partir de source et grer les exceptions numriques non masques.
Algorithme
source*FPUControlWord+ FPUControlWord source*FPUStatusWord+ FPUStatusWord source*FPUTagWord+ FPUTagWord source*FPUDataPointer) FPUDataPointer source*FPUInstructionPointer+ FPUInstructionPointer source*FPULastInstructionOpcode) FPULastInstructionOpcode source*ST(0)+ ST(0) source*ST(1)+ ST(1) source*ST(2)+ ST(2) source*ST(3)+ ST(3) source*ST(4)+ ST(4) source*ST(5)+ ST(5) source*ST(6)+ ST(6) source*ST(7)+ ST(7) FPUControlWord 037Fh FPUStatusWord 0 FPUTagWord FFFFh FPUDataPointer 0 FPUInstructionPointer 0 FPULastInstructionOpcode 0
281
Mnmonique
Instruction
FNSAVE mem
Opcode
DDh /6
Description
Cette instruction permet de sauvegarder l'tat courant du coprocesseur mathmatique dans l'emplacement mmoire partir de source et grer les exceptions numriques non masques.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 848 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 478 481.
282
FNSTCW
Syntaxe
FNSTCW cible
Description Cette instruction permet de sauvegarder le mot de contrle dans cible et grer les exceptions numriques non masques.
Algorithme
cible FPUControlWord
Mnmonique
Instruction FNSTCW mem16 Opcode D9h /7 Description Cette instruction permet de sauvegarder le mot de contrle dans cible et grer les exceptions numriques non masques.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 848 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 494 496.
283
Assembleur 80x86
INTEL MPU 8087+
FNSTENV
Float Not Waiting ST in ENVironment
Syntaxe
FNSTENV cible
Description Cette instruction permet de copier l'environnement du coprocesseur mathmatique vers une cible mais sans toutefois attendre que l'exception de nombre rel (virgule flottante) soit effac.
Algorithme
cible(FPUControlWord) FPUControlWord cible(FPUStatusWord) FPUStatusWord cible(FPUTagWord) FPUTagWord cible(FPUDataPointer) FPUDataPointer cible(FPUInstructionPointer) FPUInstructionPointer cible(FPULastInstructionOpcode) FPULastInstructionOpcode
Mnmonique
Instruction FNSTENV mem Opcode D9h /6 Description Cette instruction permet de copier l'environnement du coprocesseur mathmatique vers une cible mais sans toutefois attendre que l'exception de nombre rel (virgule flottante) soit effac.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 848 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 497 499.
284
FNSTSW
Syntaxe
FNSTSW cible
Description Cette instruction permet de copier le mot d'tat du coprocesseur mathmatique vers une cible mais sans toutefois attendre que l'exception de nombre rel (virgule flottante) soit effac.
Algorithme
cible FPUStatusWord
Mnmonique
Instruction FNSTSW mem16 Opcode DDh /7 Description Prrequis
Cette instruction INTEL 8087+ permet de copier le mot d'tat du coprocesseur mathmatique vers une cible mais sans toutefois attendre que l'exception de nombre rel (virgule flottante) soit effac. Cette instruction permet de copier le 285 INTEL 80287+
FNSTSW AX
DFh E0h
mot d'tat du coprocesseur mathmatique vers le registre AX mais sans toutefois attendre que l'exception de nombre rel (virgule flottante) soit effac.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 848 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 500 502.
286
FPATAN
Syntaxe
FPATAN
Description Cette instruction permet de calculer le rsultat de l'arc tangente de ST(1) par ST(0) et de mettre le rsultat dans le registre ST(0).
Algorithme
ST(1) ARCTAN(ST(1) / ST(0)) Dsempile la register de pile FPU
Mnmonique
Instruction FPATAN Opcode D9h F3h Description Cette instruction permet de calculer le rsultat de l'arc tangente de ST(1) par ST(0) et de mettre le rsultat dans le registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 848 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 461 463.
287
Assembleur 80x86
INTEL MPU 8087+
FPREM
Syntaxe
FPREM
Description Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et enregistre le reste dans registre ST(0).
Algorithme
D exponent(ST(0)) - exponent(ST(1)) SI D < 64 ALORS Q * TruncateTowardZero(ST(0) / ST(1)) + ST(0) ST(0) - (ST(1) * Q) C2 0 C0, C3, C1 LeastSignificantBits(Q) SINON C2 1 N un implmentation d'un nombre indpendant entre 32 et 63 QQ * Tronque autour de zro((ST(0) / ST(1)) / 2(D-N))) ] ST(0) ST(0) - (ST(1) * QQ * 2(D-N)) FIN SI
Mnmonique
Instruction
FPREM
Opcode
D9h F8h
Description
Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et enregistre le reste dans registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 849 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 464 466.
288
FPREM1
Syntaxe
FPREM1
Description Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et enregistre le reste IEEE dans registre ST(0).
Mnmonique
Instruction FPREM1 Opcode D9h F5h Description Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et enregistre le reste IEEE dans registre ST(0).
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 467 469.
289
Assembleur 80x86
INTEL MPU 8087+
FPTAN
Syntaxe
FPTAN
Description Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et enregistre le reste dans registre ST(0).
Algorithme
SI ST(0) < 263 ALORS C2 0 ST(0) TAN(ST(0)) TOP TOP - 1 ST(0) 1.0 SINON C2 1 FIN SI
Mnmonique
Instruction
FPTAN
Opcode
D9h F2h
Description
Cette instruction permet de diviser le registre ST(0) par le registre ST(1) et enregistre le reste dans registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 849 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 470 472.
290
Assembleur 80x86
Cyrix 486 avec FPU
Syntaxe FRICHOP
FRICHOP
FPU: Round to Integer chop
Description Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 dcimal selon la mthode CHOP.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 dcimal selon la mthode CHOP.
FRICHOP
DDh FCh
291
Assembleur 80x86
Cyrix 486 avec FPU
Syntaxe FRINEAR
FRINEAR
FPU: Round to Integer Near
Description Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 dcimal selon la mthode du plus proche.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 dcimal selon la mthode du plus proche.
FRINEAR
DFh FCh
292
Assembleur 80x86
Cyrix 486 avec FPU
Syntaxe FRINT2
FRINT2
FPU: Round to Integer Near
Description Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 dcimal selon la mthode du plus proche et si le nombre est exactement la moiti, alors l'instruction arrondit au signe de l'infini.
Algorithme SI exactement la moiti ALORS ST SIGN(ST) x arrondissement( | ST | + 0,5 ; NEAREST) SINON ST arrondissement( ST,NEAREST ) FIN SI
Mnmonique Instruction FRINT2 Opcode DBh FCh Description Cette instruction permet d'effectuer le calcul de l'arrondissement de ST avec 0 dcimal selon la mthode du plus proche et si le nombre est exactement la moiti, alors l'instruction arrondit au signe de l'infini.
293
Syntaxe
FRNDINT
Description Cette instruction permet d'arrondir le registre ST(0) l'entier le plus proche et enregistre son rsultat dans le registre ST(0).
Algorithme
ST(0) * ST(0) +
Mnmonique
Instruction FRNDINT Opcode D9h FCh Description Cette instruction permet d'arrondir le registre ST(0) l'entier le plus proche et enregistre son rsultat dans le registre ST(0).
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 473 474.
294
Assembleur 80x86
INTEL MPU 8087+
FRSTOR
Float ReSTORe
Syntaxe
FRSTOR source
Description Cette instruction permet de restituer l'tat du coprocesseur prcdamment sauvegard dans l'emplacement mmoire spcifi par source.
Algorithme
FPUControlWord source[FPUControlWord) FPUStatusWord source[FPUStatusWord) FPUTagWord source[FPUTagWord) FPUDataPointer source[FPUDataPointer) FPUInstructionPointer source[FPUInstructionPointer) FPULastInstructionOpcode source[FPULastInstructionOpcode) ST(0) source[ST(0)] ST(1) source[ST(1)] ST(2) source[ST(2)] ST(3) source[ST(3)] ST(4) source[ST(4)] ST(5) source[ST(5)] ST(6) source[ST(6)] ST(7) source[ST(7)]
Mnmonique
Instruction
FRSTOR mem
Opcode
DDh /4
Description
Cette instruction permet de restituer l'tat du coprocesseur prcdamment sauvegard dans l'emplacement mmoire spcifi par source.
295
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 849 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 475 477.
296
Assembleur 80x86
INTEL MPU 8087+
FSAVE
Float Save
Syntaxe
FSAVE source
Description Cette instruction permet de sauvegarder l'tat courant du coprocesseur dans l'emplacement mmoire spcifi par source.
Algorithme
source(FPUControlWord) FPUControlWord source(FPUStatusWord) FPUStatusWord source(FPUTagWord) FPUTagWord source(FPUDataPointer) FPUDataPointer source(FPUInstructionPointer) FPUInstructionPointer source(FPULastInstructionOpcode) FPULastInstructionOpcode source(ST(0)) ST(0) source(ST(1)) ST(1) source(ST(2)) ST(2) source(ST(3)) ST(3) source(ST(4)) ST(4) source(ST(5)) ST(5) source(ST(6)) ST(6) source(ST(7)) ST(7) FPUControlWord 037Fh FPUStatusWord 0 FPUTagWord FFFFh FPUDataPointer 0 FPUInstructionPointer 0 FPULastInstructionOpcode 0
Mnmonique
Instruction
FSAVE mem
Opcode
9Bh DDh /6
Description
Cette instruction permet de sauvegarder l'tat courant du
297
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 849 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 478 481.
298
Syntaxe
FSCALE
Description Cette instruction permet d'effectuer la multiplication du registre ST(0) par 2 puissance le registre ST(1) et sauvegarde le rsultat dans le registre ST(0).
Algorithme
ST(0) ST(0) x 2ST(1)
Mnmonique
Instruction FSCALE Opcode D9h FDh Description Cette instruction permet d'effectuer la multiplication du registre ST(0) par 2 puissance le registre ST(1) et sauvegarde le rsultat dans le registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 849 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 482 483.
299
Syntaxe
FSETPM
Description Cette instruction permet de faire passer le coprocesseur mathmatique en mode protg.
Mnmonique
Instruction Opcode Description Cette instruction permet de faire passer le coprocesseur mathmatique en mode protg.
FSETPM
DBh E4h
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 849
300
Assembleur 80x86
INTEL MPU 80387+
FSIN
Float SINus
Syntaxe
FSIN
Description Cette instruction permet d'effectuer le calcule de la fonction trigonomtrique du sinus du registre ST(0) et le copie dans le registre ST(1), le registre ST(0) prend la valeur 1,0.
Algorithme
SI ST(0) < 263 ALORS C2 0 ST(0) sin(ST(0)) SINON C2 1 FIN SI
Mnmonique
Instruction
FSIN
Opcode
D9h FEh
Description
Cette instruction permet d'effectuer le calcule de la fonction trigonomtrique du sinus du registre ST(0) et le copie dans le registre ST(1), le registre ST(0) prend la valeur 1,0.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 850 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 484 485.
301
Assembleur 80x86
INTEL MPU 8087+
FSINCOS
Float SINus COSinus
Syntaxe
FSINCOS
Description Cette instruction permet d'effectuer le calcule de la fonction trigonomtrique du sinus et du cosinus du registre ST(0) puis copie le rsultat du sinus dans le registre ST(0) et le cosinus dans le registre ST(1).
Algorithme
SI ST(0) < 263 ALORS C2 0 TEMP COS(ST(0)) ST(0) SIN(ST(0)) TOP TOP - 1 ST(0) TEMP SINON C2 1 FIN SI
Mnmonique
Instruction
FSINCOS
Opcode
D9h FBh
Description
Cette instruction permet d'effectuer le calcule de la fonction trigonomtrique du sinus et du cosinus du registre ST(0) puis copie le rsultat du sinus dans le registre ST(0) et le cosinus dans le registre ST(1).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 850 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 486 489.
302
Syntaxe
FSQRT
Description Cette instruction permet d'extraire la racine carre du registre ST(0) et de copier son rsultat dans le registre ST(0).
Algorithme
ST(0) (ST(0))
Mnmonique
Instruction FSQRT Opcode D9h FAh Description Cette instruction permet d'extraire la racine carre du registre ST(0) et de copier son rsultat dans le registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 850 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 489 490.
303
Syntaxe
FST cible
Description Cette instruction permet de copier la valeur rel contenu le registre ST(0) vers une cible.
Algorithme
cible ST(0)
Mnmonique
Instruction
FST mem32 FST mem64 FST fpureg
Opcode
D9h /2 DDh /2 DDh (D0h+r)
Description
Cette instruction permet de copier la valeur rel contenu le registre ST(0) vers une cible. Cette instruction permet de copier la valeur rel contenu le registre ST(0) vers une cible. Cette instruction permet de copier la valeur rel contenu le registre ST(0) vers une cible.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 850 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 491 493.
304
Assembleur 80x86
INTEL MPU 8087+
FSTCW
Float ST in Control Word
Syntaxe
FSTCW cible
Paramtres
Nom Description cible Ce paramtre permet d'indiquer l'oprande reevant le rsultat du mot de contrle CW
Description Cette instruction permet de copier le mot de contrle CW vers une cible.
Algorithme
cible FPUControlWord
Mnmonique
Instruction
FSTCW mem16
Opcode
9Bh D9h /7
Description
Cette instruction permet de copier le mot de contrle CW vers une cible.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 850 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 494 496.
305
Syntaxe
FSTENV cible
Description Cette instruction permet de copier l'environnement du coprocesseur mathmatique vers une cible.
Algorithme
cible(FPUControlWord) FPUControlWord cible(FPUStatusWord) FPUStatusWord cible(FPUTagWord) FPUTagWord cible(FPUDataPointer) FPUDataPointer cible(FPUInstructionPointer) FPUInstructionPointer cible(FPULastInstructionOpcode) FPULastInstructionOpcode
Mnmonique
Instruction
FSTENV mem
Opcode
9Bh D9h /6
Description
Cette instruction permet de copier l'environnement du coprocesseur mathmatique vers une cible.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 850 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 497 499.
306
Syntaxe
FSTP cible
Description Cette instruction permet de copier un nombre entier et prendre le contenu du registre ST(0) dans la pile de registres (dpilage).
Algorithme
cible ST(0) Desempile le registre de pile
Mnmonique
Instruction
FSTP mem32 FSTP mem64 FSTP mem80 FSTP fpureg
Opcode
D9h /3 DDh /3 DBh /7 DDh (D8h+r)
Description
Cette instruction permet de copier un nombre entier et prendre le contenu du registre ST(0) dans la pile de registres (dpilage). Cette instruction permet de copier un nombre entier et prendre le contenu du registre ST(0) dans la pile de registres (dpilage). Cette instruction permet de copier un nombre entier et prendre le contenu du registre ST(0) dans la pile de registres (dpilage). Cette instruction permet de copier un nombre entier et prendre le contenu du registre ST(0) dans la pile de registres (dpilage).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 850 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 491 493.
307
FSTSW
Syntaxe
FSTSW cible
Description Cette instruction permet de copier le mot d'tat du coprocesseur mathmatique vers une cible.
Algorithme
cible FPUStatusWord
Mnmonique
Instruction
FSTSW mem16 FSTSW AX
Opcode
9Bh DDh /7 9Bh DFh E0h
Description
Prrequis
Cette instruction permet de copier le mot d'tat INTEL 8087+ du coprocesseur mathmatique vers une cible. Cette instruction permet de copier le mot d'tat INTEL 80287+ du coprocesseur mathmatique vers le registre AX.
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 851 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 500 502.
308
Syntaxe
FSUB source
Algorithme
ST ST - source
Mnmonique
Instruction FSUB mem32 Opcode D8h /4 Description Cette instruction permet de soustraire un nombre entier du registre ST(0). Cette instruction permet de soustraire un nombre entier du registre ST(0). Cette instruction permet de soustraire un nombre entier du registre ST(0). Cette instruction permet de soustraire un nombre entier du
FSUB mem64
DCh /4
FSUB fpureg
D8h (E0h+r)
FSUB ST0,fpureg
D8h (E0h+r)
309
registre ST(0). FSUB TO fpureg DCh (E8h+r) Cette instruction permet de soustraire un nombre entier du registre ST(0). Cette instruction permet de soustraire un nombre entier du registre ST(0).
FSUB fpureg,ST0
DCh (E8h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 851 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 503 506.
310
Syntaxe
FSUBP source
Description Cette instruction permet de soustraire un nombre entier du registre ST(0) et copie le registre ST(0) dans la pile de registres.
Algorithme
ST ST - source Dsempile le registre de pile
Mnmonique
Instruction
FSUBP fpureg FSUBP fpureg,ST0
Opcode
DEh (E8h+r) DEh (E8h+r)
Description
Cette instruction permet de soustraire un nombre entier du registre ST(0) et copie le registre ST(0) dans la pile de registres. Cette instruction permet de soustraire un nombre entier du registre ST(0) et copie le registre ST(0) dans la pile de registres.
Rfrences
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 503 506.
311
FSUBPP
Syntaxe
FSUBPP source
Description Cette instruction permet de soustraire un nombre entier du registre ST(0) et copie le registre ST(0) dans la pile de registres.
Remarque L'utilisation de cette instruction est dconseille, il est prfrable d'utiliser plutt FSUBP car cette instruction est trs peu supporte par les compilateurs.
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 851
312
Assembleur 80x86
INTEL MPU 8087+
FSUBR
Syntaxe
FSUBR source
Description Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0).
Algorithme
ST source - ST
Mnmonique
Instruction
FSUBR mem32 FSUBR mem64 FSUBR fpureg FSUBR ST0,fpureg FSUBR TO fpureg FSUBR fpureg,ST0
Opcode
D8h /5 DCh /5 D8h (E8h+r) D8h (E8h+r) DCh (E0h+r) DCh (E0h+r)
Description
Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0). Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0). Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0). Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0). Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0). Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0).
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 851 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 507 510.
313
FSUBRP
Syntaxe
FSUBRP source
Description Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0) et copie le registre ST(0) dans la pile de registres.
Algorithme
ST source - ST Dsempile le registre de pile
Mnmonique
Instruction
FSUBRP fpureg
Opcode
DEh (E0h+r)
Description
Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0) et copie le registre ST(0) dans la pile de registres. Cette instruction permet de soustraire le registre ST(0) du nombre entier et place le rsultat dans le registre ST(0) et copie le registre ST(0) dans la pile de registres.
FSUBRP fpureg,ST0
DEh (E0h+r)
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 851 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 507 510.
314
Assembleur 80x86
INTEL MPU 8087+ Syntaxe FTST
FTST
Float TeST
Description Cette instruction permet de comparer le sommet de la pile avec la valeur 0,0 et dfinit les indicateurs d'tats C0 et C3 de faon appropri.
Algorithme
EVALUER CAS relation de l'oprande DE CAS Pas comparable: C3 1 C2 1 C0 1 CAS ST(0) > 0.0: C3 0 C2 0 C0 0 CAS ST(0) < 0.0: C3 0 C2 0 C0 1 CAS ST(0) 0.0: C3 1 C2 0 C0 0 FIN EVALUER CAS
Mnmonique
Instruction FTST Opcode D9h E4h Description Cette instruction permet de comparer le sommet de la pile avec la valeur 0,0 et dfinit les indicateurs d'tats C0 et C3 de faon appropri.
315
Rfrences
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 851 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 511 512.
316
Syntaxe
FUCOM fpureg FUCOM ST0,fpureg
Description Cette instruction compare le registre ST0 avec un oprande et fixe les drapeaux de faon appropri.
Algorithme
EVALUER CAS (relation de l'oprande) DE CAS ST(0) > ST(i): ZF 0 PF 0 CF 0 CAS ST(0) < ST(i): ZF 0 PF 0 CF 1 CAS ST(0) = ST(i): ZF 1 PF 0 CF 0 FIN EVALUER CAS
Mnmonique
317
Description Cette instruction compare le registre ST0 avec un oprande et fixe les drapeaux de faon appropri. Cette instruction compare le registre ST0 avec un oprande et fixe les drapeaux de faon appropri.
FUCOM ST0,fpureg
DDh (E0h+r)
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 513 515.
318
Assembleur 80x86
INTEL Pentium III+
FUCOMI
Compare Real and Set EFLAGS
Syntaxe
FUCOMI ST, ST(i)
Description Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vrifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des rsultats.
Mnmonique
Instruction FUCOMI ST0,STi Opcode DBh (E8h+i) Description Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vrifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des rsultats.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 414 416.
319
Assembleur 80x86
INTEL Pentium III+
FUCOMIP
Compare Real and Set EFLAGS
Syntaxe
FUCOMIP ST, ST(i)
Description Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vrifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des rsultats et dsempile de la pile la valeur dans le registre.
Mnmonique
Instruction FUCOMIP ST0,STi Opcode DFh (E8h+i) Description Cette instruction permet d'effectuer la comparaison de ST(0) avec ST(i) et vrifie l'ordre des valeurs et fixe la valeur drapeaux ZF, PF et CF du registre EFLAGS en fonction des rsultats et dsempile de la pile la valeur dans le registre.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 414 416.
320
Syntaxe
FUCOMP fpureg FUCOMP ST0,fpureg
Description Cette instruction compare le registre ST0 avec un oprande et fixe les drapeaux de faon appropri et dsempile la pile.
Mnmonique
Instruction FUCOMP fpureg Opcode DDh (E8h+r) Description Cette instruction compare le registre ST0 avec un oprande et fixe les drapeaux de faon appropri et dsempile la pile. Cette instruction compare le registre ST0 avec un oprande et fixe les drapeaux de faon appropri et dsempile la pile.
FUCOMP ST0,fpureg
DDh (E8h+r)
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 513 515.
321
Syntaxe
FUCOMPP
Description Cette instruction compare le registre ST0 avec le registre ST1 et fixe les drapeaux de faon appropri et dsempile les registres ST0 et ST1 de la pile.
Mnmonique
Instruction FUCOMPP Opcode DAh E9h Description Cette instruction compare le registre ST0 avec le registre ST1 et fixe les drapeaux de faon appropri et dsempile les registres ST0 et ST1 de la pile.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 513 515.
322
Syntaxe
FWAIT
Description Cette instruction permet d'attendre la fin de l'excution d'une commande avant de poursuivre.
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 851
323
Syntaxe
FXAM
Description Cette instruction permet d'examiner le sommet de la pile et dfinit les indicateurs d'tat C0 et C3 de faon appropri.
Algorithme
C1 signe du bit de ST * 0 pour positif, 1 pour ngatif EVALUER CAS (valeur de la classe ou nombre dans ST(0)) DE CAS Non support: C3 0 C2 0 C0 0 CAS NaN: C3 0 C2 0 C0 1 CAS Normal: C3 0 C2 1 C0 0 CAS Infini: C3 0 C2 1 C0 1 CAS Zro: C3 1 C2 0 C0 0 324
Mnmonique
Instruction FXAM Opcode D9h E5h Description Cette instruction permet d'examiner le sommet de la pile et dfinit les indicateurs d'tat C0 et C3 de faon appropri.
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 852 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 516 517.
325
Syntaxe
FXCH FXCH fpureg FXCH fpureg,ST0 FXCH ST0,fpureg
Description Cette instruction permet d'changer le contenu d'une expression avec celle du registre ST(0) s'il est omis.
Algorithme
SI nombre d'oprande est 1 ALORS temp ST(0) ST(0) fpureg fpureg temp SINON temp ST(0) ST(0) ST(1) ST(1) temp FIN SI
Mnmonique
Instruction Opcode Description
326
FXCH
D9h C9h
Cette instruction permet d'changer le contenu d'une expression avec celle du registre ST(0) s'il est omis. Cette instruction permet d'changer le contenu d'une expression avec celle du registre ST(0) s'il est omis. Cette instruction permet d'changer le contenu d'une expression avec celle du registre ST(0) s'il est omis. Cette instruction permet d'changer le contenu d'une expression avec celle du registre ST(0) s'il est omis. Cette instruction permet d'changer le contenu d'une expression avec celle du registre ST(0) s'il est omis.
FXCH fpureg
D9h (C8h+r)
FXCH fpureg
D9h C9h
FXCH fpureg,ST0
D9h (C8h+r)
FXCH ST0,fpureg
D9h C8h+r
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 852 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 518 519.
327
Assembleur 80x86
INTEL MMX-2+
FXRSTOR
Fast Restore
Syntaxe
FXRSTOR source
Description Cette instruction permet de restituer rapidement 94 (en mode 16 bits) ou 108 (en mode 32 bits) octets d'un contexte de coprocesseur mathmatique vers la mmoire.
Mnmonique
Instruction Opcode Description Cette instruction permet de restituer rapidement 94 (en mode 16 bits) ou 108 (en mode 32 bits) octets d'un contexte de coprocesseur mathmatique vers la mmoire.
FXRSTOR mem512byte
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 520 523.
328
Assembleur 80x86
INTEL MMX-2+
FXSAVE
Fast Save
Syntaxe
FXSAVE source
Description Cette instruction permet de sauvegarder rapidement 94 (en mode 16 bits) ou 108 (en mode 32 bits) octets d'un contexte de coprocesseur mathmatique de la mmoire.
Mnmonique
Instruction Opcode Description Cette instruction permet de sauvegarder rapidement 94 (en mode 16 bits) ou 108 (en mode 32 bits) octets d'un contexte de coprocesseur mathmatique de la mmoire.
FXSAVE mem512byte
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 524 534.
329
FXTRACT
Syntaxe
FXTRACT
Description Cette instruction permet de copier l'exposant du registre ST(0) dans le registre ST(1) comme nombre entier puis copie la mantisse dans le registre ST(0) comme nombre entier.
Algorithme
TEMP Signification(ST(0)) ST(0) Exponent(ST(0)) TOP TOP - 1 ST(0) TEMP
Mnmonique
Instruction FXTRACT Opcode D9h F4h Description Cette instruction permet de copier l'exposant du registre ST(0) dans le registre ST(1) comme nombre entier puis copie la mantisse dans la registre ST(0) comme nombre entier.
Rfrences 330
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 852 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 535 536.
331
FYL2X
Syntaxe
FYL2X
Description Cette instruction permet de calculer la multiplication du registre ST(1) par le logarithme du registre ST(0) dans la base 2 et copie le rsultat dans le registre ST(0).
Algorithme
LOG bx (LOG 2b)-1 * LOG 2x
Mnmonique
Instruction FYL2X Opcode D9h F1h Description Cette instruction permet de calculer la multiplication du registre ST(1) par le logarithme du registre ST(0) dans la base 2 et copie le rsultat dans le registre ST(0).
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 852 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 537 538.
332
FYL2XP1
Syntaxe
FYL2XP1
Description Cette instruction permet de calculer la multiplication du registre ST(1) par le logarithme du registre ST(0) plus 1 dans la base 2 et copie le rsultat dans le registre ST(0).
Algorithme
ST(1) ST(1) x log 2ST(0) Dsempile le registre de pile
Mnmonique
Instruction FYL2XP1 Opcode D9h F9h Description Cette instruction permet de calculer la multiplication du registre ST(1) par le logarithme du registre ST(0) plus 1 dans la base 2 et copie le rsultat dans le registre ST(0).
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 852 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 539 540.
333
Assembleur 80x86
SSE4.1
HADDPD
Packed Double-FP Horizontal Add
Syntaxe
HADDPD dest,source
Description Cette instruction permet d'effectuer l'addition horizontale de paquet de nombre rel de double prcision des deux oprandes.
Algorithme
dest(63..0) dest(63..0) + dest(127..64) dest(127..64) source(63..0) + source(127..64)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer l'addition horizontal de paquet de nombre rel de double prcision des deux oprandes.
HADDPD xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 541 544.
334
Assembleur 80x86
SSE4.1
HADDPS
Packed Single-FP Horizontal Add
Syntaxe
HADDPS dest,source
Description Cette instruction permet d'effectuer l'addition horizontale de paquet de nombre rel de simple prcision des deux oprandes.
Algorithme
dest(31..0) dest(31..0) + dest(63..32) dest(63..32) dest(95..64) + dest(127..96) dest(95..64) source(31..0) + source(63..32) dest(127..96) source(95..64) + source(127..96)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer l'addition horizontale de paquet de nombre rel de simple prcision des deux oprandes.
HADDPS xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
335
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 545 548.
336
HLT HaLT
Syntaxe
HLT
Description Cette instruction permet de faire passer le microprocesseur en mode d'arrt. Toutefois, le processeur peut quitter cet tat lorsqu'une ligne matrielle RESET ou lorsqu'une interruption non-masquable (NMI) reoit un signal.
Mnmonique
Instruction HLT Opcode F4h Description Excute l'instruction d'arrt
Exceptions
Message #GP(Protection gnral) Mode rel Virtuel 8086 X Mode protg X Description Le CPL ne vaut pas 0.
Rfrences
337
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 811 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 258. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 549 550.
338
Assembleur 80x86
INTEL Pentium 4 (SSE3)+
HSUBPD
Packed Double-FP Horizontal Subtract
Syntaxe
HSUBPD destination, source
Description Cette instruction permet d'effectuer la soustraction horizontale de paquet de nombre rel de double prcision des deux oprandes.
Algorithme
destination(0..63) destination(0..63) - destination(64..127) destination(64..127) source(0..63) - source(64..127)
Mnmonique
Instruction Opcode Description Cette instruction permet de soustraire horizontalement les paquets de simple prcisions de xmm2/m128 xmm1
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 551 555.
339
Assembleur 80x86
INTEL Pentium 4 (SSE3)+
HSUBPS
Packed Single-FP Horizontal Subtract
Syntaxe
HSUBPS destination, source
Description Cette instruction permet d'effectuer la soustraction horizontale de paquet de nombre rel de double prcision des deux oprandes.
Algorithme
destination(0..31) destination(0..31) - destination(32..63) destination(32..63) destination(64..95) - destination(96..127) destination(64..95) source(0..31) - source(32..63) destination(96..127) source(64..95) - source(96..127)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la soustraction horizontal de paquet de nombre rel de double prcision des deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
340
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 555 558.
341
Description Cette instruction permet de faire un tableau de bits du deuxime oprand et le met dans le premier.
Mnmonique Instruction IBTS r/m16,reg16 Opcode 0Fh A7h /r Description Cette instruction permet de faire un tableau de bits du deuxime oprand et le met dans le premier. Cette instruction permet de faire un tableau de bits du deuxime oprand et le met dans le premier.
IBTS r/m32,reg32
342
Assembleur 80x86
INTEL 80386 au Pentium Pro
Syntaxe ICEBP
ICEBP
In-Circuit Emulator
Description Cette instruction permet de passer en mode d'instruction ICE (In-Circuit Emulator) si le bit 12 du registre DR7 vaut 1 sinon il excute l'interruption 1.
Algorithme SI DR7(12) = 1 ALORS passe au mode d'instruction ICE SINON INT 1 FIN SI
Mnmonique Instruction Opcode Description Cette instruction permet de passer en mode d'instruction ICE (InCircuit Emulator) si le bit 12 du registre DR7 vaut 1 sinon il excute l'interruption 1.
ICEBP
F1h
343
Syntaxe
IDIV Oprande
Description Cette instruction permet d'effectuer une division signe (nombre entier). Le dividende est implicite; il est ajuster en fonction de la taille du diviseur. Le restant est toujours plus petit que le diviseur. Le type de diviseur dtermine quel registre l'instruction utilisera:
Taille Octet Mot Dividende Diviseur AX DX:AX Quotient Restant AH DX EDX
Algorithme
SI Oprande = 0 ALORS Interruption 0 SINON SI Oprande 8 bits ALORS AL AX Oprande AH AX MOD Oprande FIN SI SI Oprande 16 bits ALORS AX ( ( DX x 65536 ) + AX ) Oprande DX ( ( DX x 65536 ) + AX ) MOD Oprande FIN SI SI Oprande 32 bits ALORS EAX ( ( EDX x 65536 x 65536 ) + EAX ) Oprande 344
Mnmonique
Instruction Opcode Description Division entire de AX par le contenu d'un emplacement mmoire ou registre 8 bits et entrepose le quotient dans AL et restant dans AH. Division entire de DX:AX par le contenu d'un emplacement mmoire ou registre 16 bits et entrepose le quotient dans AX et restant dans DX. Division entire de EDX:EAX par le contenu d'un emplacement mmoire ou registre 32 bits et entrepose le quotient dans EAX et restant dans EDX. Division entire de RDX:RAX par le contenu d'un emplacement mmoire ou registre 64 bits et entrepose le quotient dans RAX et restant dans RDX.
IDIV reg/mem8
F6h /7
IDIV reg/mem16
F7h /7
IDIV reg/mem32
F7h /7
IDIV reg/mem64
F7h /7
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description L'oprande de diviseur vaut
345
0. Le quotient est trop large pour le registre dsign. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie
346
l'alignement)
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 811 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 404 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 113 114. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 559 562.
347
Syntaxe
IMUL Oprande IMUL dest, src INTEL 8088+ INTEL 80286+
Description Cette instruction permet d'effectuer une multiplication signe (nombre entier). Le multiplicateur est implicite; il est ajuster en fonction de la taille de la base. Le produit est toujours plus grand que le multiplicateur. Le type de multiplication dtermine quel registre l'instruction utilisera:
Taille Octet Mot Base Multiplicateur Rsultat AL AX Oprande Oprande Oprande AX DX:AX EDX:EAX
Algorithme
SI Nombre d'oprande = 1 ALORS SI Taille de l'oprande en bits = 8 ALORS AX AL x Oprande SI (AH = 00h) OU (AH = FFh) ALORS CF 0 OF 0 SINON CF 1 348
OF 1 FIN SI SINON SI Taille de l'oprande en bits = 16 ALORS DX:AX AX x Oprande SI (DX = 0000h) OU (DX = FFFFh) ALORS CF 0 OF 0 SINON CF 1 OF 1 FIN SI SINON EDX:EAX EAX x Oprande SI ((EDX = 00000000h) OU (EDX = FFFFFFFFh)) ALORS CF 0 OF 0 SINON CF 1 OF 1 FIN SI FIN SI SINON SI Nombre d'oprande = 2 ALORS temp dest x src dest dest x src SI temp = dest ALORS CF 1 OF 1 SINON CF 0 OF 0 FIN SI SINON temp dest x src dest dest x src SI temp = dest ALORS CF 1 OF 1 SINON CF 0 OF 0 FIN SI 349
FIN SI FIN SI
Mnmonique
Instruction Opcode Description Multiplie le contenu du registre AL avec une oprande mmoire ou registre de 8 bits et met le rsultat entier dans le registre AX. Multiplie le contenu du registre AX avec une oprande mmoire ou registre de 16 bits et met le rsultat entier dans le registre DX:AX. Multiplie le contenu du registre EAX avec une oprande mmoire ou registre de 32 bits et met le rsultat entier dans le registre EDX:EAX. Multiplie le contenu du registre RAX avec une oprande mmoire ou registre de 64 bits et met le rsultat entier dans le registre RDX:RAX. Multiplie le contenu d'un registre de destination 16 bits avec une oprande mmoire ou registre de 16 bits et met le rsultat entier dans le registre de destination 16 bits. Multiplie le contenu d'un registre de destination 32 bits avec une oprande mmoire ou registre de 32 bits et met le rsultat entier dans le registre de destination 32 bits.
IMUL reg/mem8
F6h /5
IMUL reg/mem16
F7h /5
IMUL reg/mem32
F7h /5
IMUL reg/mem64
F7h /5
0Fh AFh /r
0Fh AFh /r
350
0Fh AFh /r
Multiplie le contenu d'un registre de destination 64 bits avec une oprande mmoire ou registre de 64 bits et met le rsultat entier dans le registre de destination 64 bits. Multiplie le contenu d'une oprande mmoire ou registre de 16 bits par une valeur entire immdiate de 8 bits et met le rsultat entier dans le registre 16 bits. Multiplie le contenu d'une oprande mmoire ou registre de 32 bits par une valeur entire immdiate de 8 bits et met le rsultat entier dans le registre 32 bits. Multiplie le contenu d'une oprande mmoire ou registre de 64 bits par une valeur entire immdiate de 8 bits et met le rsultat entier dans le registre 64 bits. Multiplie le contenu d'une oprande mmoire ou registre de 16 bits par une valeur entire immdiate de 16 bits et met le rsultat entier dans le registre 16 bits. Multiplie le contenu d'une oprande mmoire ou registre de 32 bits par une valeur entire immdiate de 32 bits et met le rsultat entier dans le registre 32 bits. Multiplie le contenu d'une oprande mmoire ou registre de 64 bits par une valeur entire immdiate de 32 bits et met le rsultat entier dans le
351
registre 64 bits.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction
#AC(Vrifie l'alignement)
#GP(Protection gnral)
#PF(Faute de page)
352
#SS(Pile noncanonique)
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 812 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 405 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 115. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 563 567.
353
IN INput
Syntaxe
IN accumulateur,imm IN accumulateur,DX
Description Cette instruction permet de demander un octet ou un mot provenant du port d'entre/sortie et le retourne dans le registre accumulateur (AL, AX, EAX).
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON accumulateur Port(adresse) FIN SI SINON accumulateur Port(adresse) FIN SI
Mnmonique
Instruction Opcode Description
354
IN AL, imm8
E4h ib
Lit un octet dans un port d'entre/sortie l'adresse spcifi par l'imm8 et met le rsultat dans le registre AL. Lit un mot dans un port d'entre/sortie l'adresse spcifi par l'imm8 et met le rsultat dans le registre AX. Lit un double mot dans un port d'entre/sortie l'adresse spcifi par l'imm8 et met le rsultat dans le registre EAX. Lit un octet dans un port d'entre/sortie l'adresse spcifi par le registre DX et met le rsultat dans le registre AL. Lit un mot dans un port d'entre/sortie l'adresse spcifi par le registre DX et met le rsultat dans le registre AX. Lit un mot dans un port d'entre/sortie l'adresse spcifi par le registre DX et met le rsultat dans le registre EAX.
IN AX, imm8
E5h ib
IN EAX, imm8
E5h ib
IN AL, DX
ECh
IN AX, DX
EDh
IN EAX, DX
EDh
Exceptions
Message #GP(Protection gnral) Mode rel Virtuel 8086 X Mode protg Description Un ou plusieurs bits de permission d'entre/sortie
355
sont fixer par le TSS pour un accs au port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port. Une faute de page rsultat de l'excution de l'instruction
#PF(Faute de page)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 812 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 117. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 568 569.
356
INC Increment
Syntaxe
INC registre INC mmoire
Algorithme
operande operande + 1
Mnmonique
Instruction Opcode Description Incrmente le contenu d'un emplacement registre ou mmoire de 8 bits de 1. Incrmente le contenu d'un emplacement registre ou mmoire de 16 bits de 1. Incrmente le contenu d'un emplacement registre ou mmoire de 32 bits de 1.
INC reg/mem8
FEh /0
INC reg/mem16
FFh /0
INC reg/mem32
FFh /0
357
INC reg/mem64
FFh /0
Incrmente le contenu d'un emplacement registre ou mmoire de 64 bits de 1. Incrmente le contenu d'un registre 16 bits de 1. Incrmente le contenu d'un registre 32 bits de 1.
INC reg16
40h +rw
INC reg32
40h +rd
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment
#SS(Pile noncanonique)
#GP(Protection gnral)
358
de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 812 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 405 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 118. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 570 572.
359
Syntaxe
INS oprande_cible,DX
Description Cette instruction permet de demander un octet, un mot ou un double mot du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et incrmente/dcrmente le registre DI en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction. L'adresse du port est contenue obligatoirement dans le registre DX.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON accumulateur Port(adresse) FIN SI SINON accumulateur Port(adresse) FIN SI SI (taille de l'oprande_cible = octet) ALORS SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI SINON SI (taille de l'oprande_cible = mot) ALORS SI DF = 0 ALORS 360
(E)DI (E)DI + 2 SINON (E)DI (E)DI - 2 FIN SI SINON SI DF = 0 ALORS (E)DI (E)DI + 4 SINON (E)DI (E)DI - 4 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Lecture d'un octet dans le port spcifi par le registre DX, et met le rsultat dans l'emplacement mmoire spcifi par ES:(R)DI. Enfin, incrmente et dcrmente le registre (R)DI. Lecture d'un mot dans le port spcifi par le registre DX, et met le rsultat dans l'emplacement mmoire spcifi par ES:(R)DI. Enfin, incrmente et dcrmente le registre (R)DI. Lecture d'un double mot dans le port spcifi par le registre DX, et met le rsultat dans l'emplacement mmoire spcifi par ES:(R)DI. Enfin, incrmente et dcrmente le registre (R)DI.
INS mem8, DX
6Ch
INS mem16, DX
6Dh
INS mem32, DX
6Dh
361
Exceptions
Message #GP(Protection gnral) Mode rel X Virtuel 8086 X Mode protg X Description Un ou plusieurs bits de permission d'entre/sortie sont fix par le TSS pour un accs au port. Une ou plusieurs permissions bit d'entre/sortie sont fixes dans le TSS d'un accs de port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port. L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulles est utilis
362
comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est active
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 813 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 120. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 573 577.
363
Syntaxe
INSB
Description Cette instruction permet de demander un octet du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 1 en fonction de l'tat du drapeau de direction. L'adresse du port est contenue obligatoirement dans le registre DX.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON accumulateur Port(adresse) FIN SI SINON accumulateur Port(adresse) FIN SI SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI
Mnmonique
364
Instruction
Opcode
Description Lecture d'un octet dans le port spcifi par le registre DX, et met le rsultat dans l'emplacement mmoire spcifi par ES:(R)DI. Enfin, incrmente et dcrmente le registre (R)DI.
INSB
6Ch
Exceptions
Message #GP(Protection gnral) Mode rel X Virtuel 8086 X Mode protg X Description Un ou plusieurs bits de permission d'entre/sortie sont fix par le TSS pour un accs au port. Une ou plusieurs permissions bit d'entre/sortie sont fixes dans le TSS d'un accs de port. Le CPL est plus grand que lIOPL et une ou plusieurs bits de permission sont fixs par le TSS pour un
365
accs au port. L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulles est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 813 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System
366
Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 120. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 573 577.
367
Syntaxe
INSD
Description Cette instruction permet de demander un double mot du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 4 en fonction de l'tat du drapeau de direction. L'adresse du port est contenue obligatoirement dans le registre DX.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON accumulateur Port(adresse) FIN SI SINON accumulateur Port(adresse) FIN SI SI DF = 0 ALORS (E)DI (E)DI + 4 SINON (E)DI (E)DI - 4 FIN SI
Mnmonique
368
Instruction INSD
Opcode 6Dh
Description Lecture d'un double mot dans le port spcifi par le registre DX, et met le rsultat dans l'emplacement mmoire spcifi par ES:(R)DI. Enfin, incrmente et dcrmente le registre (R)DI.
Exceptions
Message #GP(Protection gnral) Mode rel X Virtuel 8086 X Mode protg X Description Un ou plusieurs bits de permission d'entre/sortie sont fix par le TSS pour un accs au port. Une ou plusieurs permission bit d'entre/sortie sont fixer dans le TSS d'un accs de port. Le CPL est plus grand que lIOPL et une ou plusieurs bits de permission sont fix par le TSS pour un accs au port.
369
L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulles est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 814 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 120.
370
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 573 577.
371
Assembleur 80x86
SSE4.1
INSERTPS
Insert Packed Single Precision Floating-Point Value
Syntaxe
INSERTPS dest,source,immediat
Description Cette instruction permet d'insrer une valeur rel de simple prcision d'un oprande source dans l'emplacement d'un registre d'oprande de destination et met des 0 dans les donnes en dehors du masque de destination.
Algorithme
SI source est un registre ALORS COUNT_S immediat(7..6) SINON COUNT_S 0 FIN SI COUNT_D immediat(5..4) ZMASK immediat(3..0) EVALUER CAS COUNT_S DE CAS 0: TMP source(31..0) CAS 1: TMP source(63..32) CAS 2: TMP source(95..64) CAS 3: TMP source(127..96) FIN EVALUER CAS EVALUER CAS COUNT_D DE CAS 0: TMP2(31..0) TMP TMP2(127..32) dest(127..32) CAS 1: TMP2(63..32) TMP
372
TMP2(31..0) dest(31..0) TMP2(127..64) dest(127..64) CAS 2: TMP2(95..64) TMP TMP2(63..0) dest(63..0) TMP2(127..96) dest(127..96) CAS 3: TMP2(127..96) TMP TMP2(95..0) dest(95..0) FIN EVALUER CAS SI ZMASK(0) = 1 ALORS dest(31..0) 00000000h SINON dest(31..0) TMP2(31..0) SI ZMASK(1) = 1 ALORS dest(63..32) 00000000h SINON dest(63..32) TMP2(63..32) SI ZMASK[2] = 1 ALORS dest(95..64) 00000000h SINON dest(95..64) TMP2(95..64) SI ZMASK[3] = 1 ALORS dest(127..96) 00000000h SINON dest(127..96) TMP2(127..96) FIN SI FIN SI FIN SI FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'insrer une valeur rel de simple prcision d'un oprande source dans l'emplacement d'un registre
373
d'oprande de destination et met des 0 dans les donnes en dehors du masque de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 578 580.
374
Syntaxe
INSW
Description Cette instruction permet de demander un mot du port d'entre/sortie et retourne le rsultat dans l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 2 en fonction de l'tat du drapeau de direction. L'adresse du port est contenu obligatoirement dans le registre DX.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON accumulateur Port(adresse) FIN SI SINON accumulateur Port(adresse) FIN SI SI DF = 0 ALORS (E)DI (E)DI + 2 SINON (E)DI (E)DI - 2 FIN SI
Mnmonique
375
Instruction
Opcode
Description Lecture d'un mot dans le port spcifi par le registre DX, et met le rsultat dans l'emplacement mmoire spcifi par ES:(R)DI. Enfin, incrmente et dcrmente le registre (R)DI.
INSW
6Dh
Exceptions
Message #GP(Protection gnral) Mode rel X Virtuel 8086 X Mode protg X Description Un ou plusieurs bits de permission d'entre/sortie sont fixer par le TSS pour un accs au port. Une ou plusieurs permission bit d'entre/sortie sont fixer dans le TSS d'un accs de port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port.
376
L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 813 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 120.
377
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 573 577.
378
Assembleur 80x86
INTEL 8088+
INT
Interrupt
Syntaxe
INT numro
Algorithme
drapeaux prserv SP SP - 2 drapeau IF 0 drapeau TF 0 CS prserv SP SP - 2 IP prserv CS Donne l'adresse mmoire (numro x 4 + 2) IP Donne l'adresse mmoire (numro x 4)
Mnmonique
Instruction Opcode Description Cette instruction permet d'excuter l'interruption avec le numro 03h. Appel une routine de service d'interruption spcifi par le vecteur
INT 03h
CCh
INT imm8
CDh ib
379
imm8.
Exceptions
Message #TS(Slecteur) Mode rel Virtuel 8086 X Mode protg X Description Une partie de l'changeur de pile, la destination du slecteur de segment de pile ou le registre (R)SP dans le TSS est en dehors des limites du TSS. Une partie de l'changeur de pile, la destination du slecteur de segment de pile ou le registre (R)SP dans le TSS a slecteur nulle. Une partie de l'changeur de pile, la destination du slecteur du bit TS est fix, mais le slecteur LDT a un slecteur
380
nulle. Une partie de l'changeur de pile, la destination du slecteur du TSS est en dehors des limites des tables de descripteur GDT ou LDT. Une partie de l'changeur de pile, la destination du slecteur du TSS contient un RPL n'tant pas gale au DPL. Une partie de l'changeur de pile, la destination du slecteur du TSS contient un DPL n'tant pas gale au CPL du slecteur de code segment. Une partie de l'changeur de pile, la destination du
381
slecteur du TSS n'est pas dans un segment crivable. L'accs au segment de code, le pont d'interruption, le pont de la trappe, le pont de la tche ou le TSS ne sont pas prsent. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Aprs un change de pile, une adresse mmoire dpasse les limites du segment de pile ou est noncanonique. Aprs un change de pile, le
#SS(Pile)
#SS(Slecteur)
382
registre SS est charg dans un slecteur de segment non-nulle et le segment est marqu comme non prsent. #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique La destination de dplacement dpasse la limite du segment de code ou n'est pas canonique. Le IOPL est infrieur 3 et le CR4.VME vaut 0. Le IOPL est infrieur 3, le CR4.VME vaut 1 et le bit correspondant la
383
redirection de la cartographie d'interruption VME vaut 1. #GP(Slecteur) X X X Le vecteur d'interruption est en dehors des limites du IDT. Le descripteur d'IDT n'est pas une interruption, une trappe ou une tche de pont dans un mode legacy ou n'est pas une interruption 64 bits ou un pont de trappe pour un mode long. Le DPL de l'interruption, de la trappe, du descripteur de pont de tche est infrieur au CPL. Le slecteur de segment
384
spcifi par l'interruption ou la trappe du pont est un bit TI fix, mais le slecteur LDT a un slecteur nulle. X X Le slecteur de segment spcifi par l'interruption ou la trappe du pont dpasse la limite de la table de descripteur ou a un slecteur nulle. Le descripteur de segment spcifi par l'interruption ou le pont de la trappe n'est pas un segment de code dans un mode legacy, ou un segment de code 64 bits dans un mode long. Le segment de
385
DPL spcifi par l'interruption ou le pont de la trappe est suprieur au CPL. X Le segment de DPL spcifi par l'interruption ou le pont ne pointe pas sur 0 ou est dans un segment conforme. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Exemples L'exemple suivant permet d'afficher un message Bonjour sur la console du systme d'exploitation DOS :
386
1. 2. 3. 4.
Message DB 'Bonjour$' ; Place des instructions ici MOV AH,09h MOV DX,Offset Message 5. INT 21h
assembleur assembleur
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 814 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 405 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 122 128. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 581 595.
387
Syntaxe
INTO
Description Cette instruction permet d'excuter l'interruption numro 4 si le drapeau de dbordement (OF) est fix sur 1. Parcontre, si le drapeau de dbordement (OF) est gal 0, l'excution se poursuit tout simplement l'instruction suivante.
Algorithme
SI OF = 1 ALORS SP SP - 2 Les drapeaux sont prserv SP SP - 2 CS est prserv SP SP - 2 IP est prserv CS Donne la position mmoire 12h IP Donne la position mmoire 10h FIN SI
Mnmonique
Instruction Opcode Description Appel une exception de dbordement si le drapeau de dbordement vaut 1. Invalide en
INTO
CEh
388
mode 64 bits.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excut avec OF fix 1. Cette instruction est excut en mode 64-bits
#OF(Dbordement)
#UD(Opcode invalide)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 814 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 129. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 581 595.
389
Syntaxe
INVD
Algorithme
Vide le cache interne ( Cela signifie que toutes les lignes de caches internes sont dfinit comme invalide ) Envoi un signal au cache externe vider
Mnmonique
Instruction Opcode Description Invalide le cache interne et les dclencheurs de cache externe invalide
INVD
0Fh 08h
Exceptions
Message #GP(Protection gnral) Mode rel Virtuel 8086 X Mode protg X Description Le CPL ne vaut pas 0.
390
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 596 597.
391
Assembleur 80x86
INTEL VMX (Virtualisation)
INVEPT
Invalidate Translations Derived from EPT
Syntaxe
INVEPT destination, source
Description Cette instruction permet d'invalider la cartographie dans translation des tampons (TLB) et des caches de pagination structur driv des tables de pages tendue (EPT).
Algorithme
SI (pas dans opration VMX ) ou (RFLAGS.VM = 1) ou (IA32_EFER.LMA = 1 et CS.L = 0) ALORS EXCEPTION #UD SINON SI dans VMX mais pas l'opration racine ALORS quitte le VM SINON SI CPL > 0 ALORS EXCEPTION #GP(0) SINON INVEPT_TYPE valeur de l'oprande de registre SI IA32_VMX_EPT_VPID_CAP MSR inqieue que le processus ne support pas INVEPT_TYPE ALORS VMfail(Opration invalide INVEPT/INVVPID) SINON INVEPT_DESC valeur d'oprande mmoire EPTP INVEPT_DESC(63..0) EVALUER CAS INVEPT_TYPE CAS 1: SI entre VM avec l'active EPT VM contrle d'excution fix 1 en chec cause de la valeur EPTP ALORS VMfail(Oprande invalide INVEPT/INVVPID) SINON Cartographie invalide associ avec EPTP(51..12) 392
succs VM FIN SI CAS 2: Cartographie invalide associ avec tous les EPTPs succs VM FIN EVALUER CAS FIN SI FIN SI
Mnmonique
Instruction INVEPT r64, m128 Opcode 66h 0Fh 38h 80h Description Cette instruction permet d'invalider la cartographie dans translation des tampons (TLB) et des caches de pagination structur driv des tables de pages tendue (EPT). Cette instruction permet d'invalider la cartographie dans translation des tampons (TLB) et des caches de pagination structur driv des tables de pages tendue (EPT).
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 570 572.
393
Syntaxe
INVLPG
Description Cette instruction permet d'invalider les transferts du TLB (Translation Lookaside Buffer) du micro-processeur.
Mnmonique
Instruction Opcode Description Invalide l'entre TLB pour la page contenant en emplacement mmoire spcifi.
INVLPG mem8
0Fh 01h /7
Exceptions
Message #GP(Protection gnral) Mode rel Virtuel 8086 X Mode protg X Description Le CPL ne vaut pas 0.
galement INVLPGA
Rfrences
394
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 598 599.
395
Assembleur 80x86
x86-64+
INVLPGA
Invalidate TLB Entry in a Specified ASID
Syntaxe
INVLPGA RAX, ECX
Description Cette instruction permet d'invalider la cartographie TLB (Translation Lookaside Buffer) pour une page virtual et un ASID spcifi.
Mnmonique
Instruction Opcode Description Cette instruction invalide le cartographie TLB pour la page virtuel spcifi dans le registre RAX et l'ASID spcifi par le registre ECX.
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description Les instructions SVM ne sont pas supports, comme indiqu par le bit 2 du registre ECX de la fonction
#UD(Opcode invalide) X
396
8000_00001h de l'instruction CPUID. X La machine virtuel scuris n'est pas activ (EFER.SVME=0). Cette instruction est seulement reconnu en mode protg. X Le CPL ne vaut pas 0.
#GP(Protection gnral)
galement
397
Assembleur 80x86
INTEL VMX (Virtualisation)
INVVPID
Invalidate Translations Based on VPID
Syntaxe
INVVPID destination, source
Description 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).
Algorithme
SI (pas dans opration VMX ) ou (RFLAGS.VM = 1) ou (IA32_EFER.LMA = 1 et CS.L = 0) ALORS EXCEPTION #UD SINON mais pas l'opration racine ALORS quitte VM SINON CPL > 0 ALORS EXCEPTION #GP(0) SINON INVVPID_TYPE valeur de l'oprande registre SI IA32_VMX_EPT_VPID_CAP MSR indique que le processeur ne support pas INVVPID_TYPE ALORS VMfail(Opration invalide INVEPT/INVVPID) SINON INVVPID_DESC valeur de l'oprande mmoire SI INVVPID_DESC(63..16) 0 ALORS VMfail(Opration invalide INVEPT/INVVPID) SINON EVALUER CAS INVVPID_TYPE CAS 0: VPID INVVPID_DESC(15..0) SI VPID = 0 ALORS VMfail(Opration invalide INVEPT/INVVPID) 398
SINON GL_ADDR INVVPID_DESC(127..64) SI GL_ADDR n'a pas une forme canonique ALORS VMfail(Opration invalide INVEPT/INVVPID) SINON Cartographie invalide pour la balise GL_ADDR avec VPID succs VM FIN SI FIN SI CAS 1: VPID_CTX INVVPID_DESC(15..0) SI VPID = 0 ALORS VMfail(Opration invalide INVEPT/INVVPID) SINON Toute la cartographie avec VPID succs VM FIN SI CAS 2: Toute la cartographie invalide avec tous les VPID non zros succs VM CAS 3: VPID INVVPID_DESC(15..0) SI VPID = 0 ALORS VMfail(Opration invalide INVEPT/INVVPID) SINON Toute la cartographique invalide avec une exception VPID de translation global succs VM FIN SI FIN EVALUER CAS FIN SI FIN SI FIN SI
Mnmonique
Instruction INVVPID r64, m128 Opcode 66h 0Fh 38h 81h Description Cette instruction permet d'invalider la cartographie dans translation des
399
tampons (TLB) et des caches de pagination structur bas sur l'identificateur de processeur virtuel (VPID). INVVPID r32, m128 66h 0Fh 38h 81h 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).
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 573 576.
400
Syntaxe
IRET
Description Cette instruction permet d'effectuer un retour prcdemment provoquer par une interruption.
Algorithme
IP est retir de la pile SP SP + 2 CS est retir de la pile SP SP + 2 Les drapeaux sont retir de la pile SP SP + 2
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer un retour prcdemment provoquer par une interruption.
IRET
CFh
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 814 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 405 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 129. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 600 610.
402
Assembleur 80x86
INTEL 80386+
IRETD
Interrupt Return Doubleword
Syntaxe
IRETD
Description Cette instruction permet d'effectuer un retour 32-bits prcdemment provoquer par une interruption.
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer un retour 32-bits prcdemment provoquer par une interruption.
IRETD
66h CFh
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 600 610.
403
Assembleur 80x86
x86-64+
IRETQ
Interrupt Return Quadword
Syntaxe
IRETQ
Description Cette instruction permet d'effectuer un retour 64-bits prcdemment provoquer par une interruption.
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer un retour 64-bits prcdemment provoquer par une interruption.
IRETQ
CFh
Rfrences AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 265.
404
J?? Jump if ??
Syntaxe
J?? destination
Description Cette instruction permet d'effectuer un branchement conditionnel un emplacement mmoire spcifi. Il est a noter que les combinaisons de lettres permettant de reprsenter la condition sont indiques dans le tableau suivant:
Instruction Condition Description JA JAE JB JBE JC JCXZ JE JECXZ A AE B BE C CXZ E ECXZ Suprieur Suprieur ou gal Infrieur Infrieur ou gal Indicateur de retenue gal 1 Si CX = 0 Zro (Egal) Si ECX = 0 CPU/MPU INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 80386+ INTEL 8086+
JG
Suprieur
405
JGE JL JLE JNA JNAE JNB JNC JNE JNG JNGE JNL JNLE JNO
Suprieur ou gal Infrieur Infrieur ou gal Pas suprieur Ni suprieur ni gal Pas infrieur Indicateur de retenue gal 0 Pas gal (Zro) Pas suprieur Ni suprieur ni gal Pas infrieur Ni infrieur ni gal Pas de dbordement (indicateur de dbordement gal 0) Pas de parit Pas de signe Pas zro Dbordement (indicateur de dbordement gal 1) Parit Parit paire
INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+
NP NS NZ O P PE
INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+ INTEL 8086+
406
JPO JRCXZ JS JZ
PO RCXZ S Z
Algorithme
SI condition ALORS EIP EIP + SignExtend(destination) SI taille de l'oprande = 16 bits ALORS EIP EIP 0000FFFFh FIN SI FIN SI
Mnmonique
Instruction Opcode Description Saut si drapeau de dbordement vaut 1 (OF = 1). Saut si drapeau de dbordement vaut 1 (OF = 1). Saut si drapeau de dbordement vaut 1 (OF = 1). Saut si drapeau de dbordement vaut 0 (OF = 0). Saut si drapeau de dbordement vaut 0 (OF = 0).
JO rel8off
70h cb
JO rel16off
0Fh 80h cw
JO rel32off
0Fh 80h cd
JNO rel8off
71h cb
JNO rel16off
0Fh 81h cw
407
JNO rel32off
0Fh 81h cd
Saut si drapeau de dbordement vaut 0 (OF = 0). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 1 (CF = 1). Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau de retenue vaut 0 (CF = 0).
JB rel8off
72h cb
JB rel16off
0Fh 82h cw
JB rel32off
0Fh 82h cd
JC rel8off
72h cb
JC rel16off
0Fh 82h cw
JC rel32off
0Fh 82h cd
JNAE rel8off
72h cb
JNAE rel16off
0Fh 82h cw
JNAE rel32off
0Fh 82h cd
JNB rel8off
73h cb
JNB rel16off
0Fh 83h cw
JNB rel32off
0Fh 83h cd
408
JNC rel8off
73h cb
Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau de retenue vaut 0 (CF = 0). Saut si drapeau du zro vaut 1 (ZF = 1). Saut si drapeau du zro vaut 1 (ZF = 1). Saut si drapeau du zro vaut 1 (ZF = 1). Saut si drapeau du zro vaut 1 (ZF = 1). Saut si drapeau du zro vaut 1 (ZF = 1). Saut si drapeau du zro vaut 1 (ZF = 1). Saut si drapeau du zro vaut 0 (ZF = 0).
JNC rel16off
0Fh 83h cw
JNC rel32off
0Fh 83h cd
JAE rel8off
73h cb
JAE rel16off
0Fh 83h cw
JAE rel32off
0Fh 83h cd
JZ rel8off
74h cb
JZ rel16off
0Fh 84h cw
JZ rel32off
0Fh 84h cd
JE rel8off
74h cb
JE rel16off
0Fh 84h cw
JE rel32off
0Fh 84h cd
JNZ rel8off
75h cb
409
JNZ rel16off
0Fh 85h cw
Saut si drapeau du zro vaut 0 (ZF = 0). Saut si drapeau du zro vaut 0 (ZF = 0). Saut si drapeau du zro vaut 0 (ZF = 0). Saut si drapeau du zro vaut 0 (ZF = 0). Saut si drapeau du zro vaut 0 (ZF = 0). Saut si drapeau du zro vaut 1 ou drapeau de retenue vaut 1 (CF = 1 ou ZF = 1). Saut si drapeau du zro vaut 1 ou drapeau de retenue vaut 1 (CF = 1 ou ZF = 1). Saut si drapeau du zro vaut 1 ou drapeau de retenue vaut 1 (CF = 1 ou ZF = 1). Saut si drapeau du zro vaut 1 ou drapeau de retenue vaut 1 (CF = 1 ou ZF = 1). Saut si drapeau du zro vaut 1 ou drapeau de retenue vaut 1 (CF = 1 ou ZF = 1). Saut si drapeau du zro vaut 1 ou drapeau de retenue vaut 1 (CF = 1 ou ZF = 1).
JNZ rel32off
0Fh 85h cd
JNE rel8off
75h cb
JNE rel16off
0Fh 85h cw
JNE rel32off
0Fh 85h cd
JBE rel8off
76h cb
JBE rel16off
0Fh 86h cw
JBE rel32off
0Fh 86h cd
JNA rel8off
76h cb
JNA rel16off
0Fh 86h cw
JNA rel32off
0Fh 86h cd
410
JNBE rel8off
77h cb
Saut si drapeau du zro vaut 0 et drapeau de retenue vaut 0 (CF = 0 et ZF = 0). Saut si drapeau du zro vaut 0 et drapeau de retenue vaut 0 (CF = 0 et ZF = 0). Saut si drapeau du zro vaut 0 et drapeau de retenue vaut 0 (CF = 0 et ZF = 0). Saut si drapeau du zro vaut 0 et drapeau de retenue vaut 0 (CF = 0 et ZF = 0). Saut si drapeau du zro vaut 0 et drapeau de retenue vaut 0 (CF = 0 et ZF = 0). Saut si drapeau du zro vaut 0 et drapeau de retenue vaut 0 (CF = 0 et ZF = 0). Saut si drapeau de signe vaut 1 (SF = 1). Saut si drapeau de signe vaut 1 (SF = 1). Saut si drapeau de signe vaut 1 (SF = 1). Saut si drapeau de signe vaut 0 (SF = 0). Saut si drapeau de signe vaut 0 (SF = 0).
JNBE rel16off
0Fh 87h cw
JNBE rel32off
0Fh 87h cd
JA rel8off
77h cb
JA rel16off
0Fh 87h cw
JA rel32off
0Fh 87h cd
JS rel8off
78h cb
JS rel16off
0Fh 88h cw
JS rel32off
0Fh 88h cd
JNS rel8off
79h cb
JNS rel16off
0Fh 89h cw
411
JNS rel32off
0Fh 89h cd
Saut si drapeau de signe vaut 0 (SF = 0). Saut si drapeau de parit vaut 1 (PF = 1). Saut si drapeau de parit vaut 1 (PF = 1). Saut si drapeau de parit vaut 1 (PF = 1). Saut si drapeau de parit vaut 1 (PF = 1). Saut si drapeau de parit vaut 1 (PF = 1). Saut si drapeau de parit vaut 1 (PF = 1). Saut si drapeau de parit vaut 0 (PF = 0). Saut si drapeau de parit vaut 0 (PF = 0). Saut si drapeau de parit vaut 0 (PF = 0). Saut si drapeau de parit vaut 0 (PF = 0). Saut si drapeau de parit vaut 0 (PF = 0). Saut si drapeau de parit vaut 0 (PF = 0).
JP rel8off
7Ah cb
JP rel16off
0Fh 8Ah cw
JP rel32off
0Fh 8Ah cd
JPE rel8off
7Ah cb
JPE rel16off
0Fh 8Ah cw
JPE rel32off
0Fh 8Ah cd
JNP rel8off
7Bh cb
JNP rel16off
0Fh 8Bh cw
JNP rel32off
0Fh 8Bh cd
JPO rel8off
7Bh cb
JPO rel16off
0Fh 8Bh cw
JPO rel32off
0Fh 8Bh cd
412
JL rel8off JL rel16off JL rel32off JNGE rel8off JNGE rel16off JNGE rel32off JNL rel8off JNL rel16off JNL rel32off JGE rel8off JGE rel16off JGE rel32off JLE rel8off JLE rel16off JLE rel32off JNG rel8off JNG rel16off JNG rel32off JNLE rel8off
7Ch cb 0Fh 8Ch cw 0Fh 8Ch cd 7Ch cb 0Fh 8Ch cw 0Fh 8Ch cd 7Dh cb 0Fh 8Dh cw 0Fh 8Dh cd 7Dh cb 0Fh 8Dh cw 0Fh 8Dh cd 7Eh cb 0Fh 8Eh cw 0Fh 8Eh cd 7Eh cb 0Fh 8Eh cw 0Fh 8Eh cd 7Fh cb
Saut si SF <> OF. Saut si SF <> OF. Saut si SF <> OF. Saut si SF <> OF. Saut si SF <> OF. Saut si SF <> OF. Saut si SF = OF. Saut si SF = OF. Saut si SF = OF. Saut si SF = OF. Saut si SF = OF. Saut si SF = OF. Saut si ZF = 1 ou SF <> OF. Saut si ZF = 1 ou SF <> OF. Saut si ZF = 1 ou SF <> OF. Saut si ZF = 1 ou SF <> OF. Saut si ZF = 1 ou SF <> OF. Saut si ZF = 1 ou SF <> OF. Saut si ZF = 0 et SF = OF.
413
JNLE rel16off JNLE rel32off JG rel8off JG rel16off JG rel32off JCXZ rel8off JECXZ rel8off JRCXZ rel8off
0Fh 8Fh cw 0Fh 8Fh cd 7Fh cb 0Fh 8Fh cw 0Fh 8Fh cd E3h cb E3h cb E3h cb
Saut si ZF = 0 et SF = OF. Saut si ZF = 0 et SF = OF. Saut si ZF = 0 et SF = OF. Saut si ZF = 0 et SF = OF. Saut si ZF = 0 et SF = OF. Saut si le registre CX vaut zro. Saut si le registre ECX vaut zro. Saut si le registre RCX vaut zro.
Exceptions
Message #GP(Protection gnral) Mode rel X Virtuel 8086 X Mode protg X Description Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique
galement JMP
Rfrences
414
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 815 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 405 409 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 130 134. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 611 618.
415
JMP Jump
Syntaxe
JMP destination
Algorithme
SI near jump ALORS SI saut relatif court ALORS tempEIP EIP + destination SINON tempEIP destination FIN SI SI tempEIP est en dehors des limites du code segment ALORS EXCEPTION #GP(0) FIN SI SI taille de l'oprande = 32 bits ALORS EIP tempEIP SINON EIP tempEIP 0000FFFFh FIN SI FIN SI SI saut long ET (PE = 0 OU (PE = 1 ET VM = 1)) ALORS * Adresse rel ou mode virtuel 8086 tempEIP destination(offset) SI tempEIP est en dehors des limites du code de segment ALORS EXCEPTION #GP(0) FIN SI CS destination(Slecteur de segment) SI taille de l'oprande = 32 bits ALORS EIP tempEIP 416
SINON EIP tempEIP 0000FFFFh FIN SI FIN SI SI far jump ET (PE = 1 ET VM = 0) ALORS * Mode protg, pas mode virtuel 8086 SI l'adresse effective dans les segments CS, DS, ES, FS, GS ou SS est illgale OU slecteur de segment dans une destination d'oprande nulle ALORS EXCEPTION #GP(0) FIN SI SI index de slecteur de segment n'est pas dans la limite de descripteur de table ALORS EXCEPTION #GP(nouveau slecteur) FIN SI Lecture du type et de l'accs correct du descripteur de segment SI type de segment n'est pas conforme OU code de segment non conforme, appel le pont, tche du pont, ou TSS ALORS EXCEPTION #GP(slecteur de segment) FIN SI Type de dpendance et accs correct ALLER A CONFORMING-CODE-SEGMENT ALLER A NONCONFORMING-CODE-SEGMENT ALLER A CALL-GATE ALLER A TASK-GATE ALLER A TASK-STATE-SEGMENT SINON EXCEPTION #GP(Slecteur de segment) FIN SI CONFORMING-CODE-SEGMENT: SI DPL > CPL ALORS EXCEPTION #GP(Slecteur de segment) FIN SI SI segment pas prsent ALORS EXCEPTION #NP(Slecteur de segment) FIN SI tempEIP destination(Offset) SI Taille de l'oprande = 16 bits ALORS tempEIP tempEIP 0000FFFFh FIN SI SI tempEIP n'est pas dans la limite du code segment ALORS EXCEPTION #GP(0) FIN SI 417
CS destination(Slecteur de segment) CS(RPL) CPL EIP tempEIP FIN NONCONFORMING-CODE-SEGMENT: SI (RPL > CPL) OU (DPL = CPL) ALORS EXCEPTION #GP(Slecteur de code segment) FIN SI SI segment n'est pas prsent ALORS EXCEPTION #NP(Slecteur de segment) FIN SI SI pointeur d'instruction est en dehors des limites du segment ALORS EXCEPTION #GP(0) FIN SI tempEIP destination(offset) SI taille de l'oprande = 16 bits ALORS tempEIP tempEIP 0000FFFFh FIN SI SI tempEIP n'est pas dans les limites du code segment ALORS EXCEPTION #GP(0) FIN SI CS destination(Slecteur de segment) CS(RPL) CPL EIP tempEIP FIN CALL-GATE: SI appel de pont DPL < CPL OU appel de pont DPL < appel de pont de slecteur de segment RPL ALORS EXCEPTION #GP(slecteur d'appel de pont) FIN SI SI appel d'un pont non prsent ALORS EXCEPTION #NP(Slecteur d'appel de pont) FIN SI SI appel d'un pont du slecteur de code segment est nulle ALORS EXCEPTION #GP(0) FIN SI SI appel d'un pont d'index de slecteur de code de segment est en dehors des limites du descripteur de table ALORS EXCEPTION #GP(slecteur de code segment) 418
FIN SI Lecture du descripteur de code segment SI descripteur de code segment n'est pas indiquer dans le code segment OU descripteur de code segment est conforme et DPL > CPL OU decripteur de segment de code n'est pas conforme ET DPL = CPL ALORS EXCEPTION #GP(Slecteur de code segment) FIN SI SI code segment n'est pas prsent ALORS EXCEPTION #NP(slecteur de code segment) FIN SI SI pointeur d'instruction n'est pas dans les limites du code segment ALORS EXCEPTION #GP(0) FIN SI tempEIP destination(offset) SI Taille du pont = 16 bits ALORS tempEIP tempEIP 0000FFFFh FIN SI SI tempEIP n'est pas dans les limites du code segment ALORS EXCEPTION #GP(0) FIN SI CS destination(Slecteur de segment) CS(RPL) CPL EIP tempEIP FIN TASK-GATE: SI tche du pont DPL < CPL OU tche du pont DPL < slecteur de segment du pont de tche RPL ALORS EXCEPTION #GP(Slecteur de tche du pont) FIN SI SI pont de tche n'est pas prsent ALORS EXCEPTION #NP(Slecteur de pont) FIN SI Lecteur du slecteur de segment TSS dans le descripteur de pont de tche SI bit de slecteur de segment TSS local/global est fixer local OU index n'est dans les limites du GDT OU que le descripteur TSS specifi est occup ALORS EXCEPTION #GP(Slecteur TSS) FIN SI SI TSS n'est pas prsent ALORS EXCEPTION #NP(Slecteur TSS) FIN SI 419
SWITCH-TASKS TSS SI EIP n'est dans les limites de code de segment ALORS EXCEPTION #GP(0) FIN SI FIN TASK-STATE-SEGMENT: SI TSS DPL < CPL OU TSS DPL < slecteur de segment TSS RPL OU descripteur TSS indique que le TSS n'est pas disponible ALORS EXCEPTION #GP(Slecteur TSS) FIN SI SI TSS n'est pas prsent ALORS EXCEPTION #NP(Slecteur TSS) FIN SI SWITCH-TASKS TSS SI EIP n'est pas dans les limites de code segment ALORS EXCEPTION #GP(0) FIN SI FIN
Mnmonique
Instruction Opcode Description Saut court la destination spcifi par un dplacement sign de 8 bits Saut court la destination spcifi par un dplacement sign de 16 bits Saut court la destination spcifi par un dplacement sign de 32 bits Saut court la destination spcifi par un le registre/mmoire 16 bits Saut court la destination spcifi par un le registre/mmoire 32 bits
JMP rel8off
EBh cb
JMP rel16off
E9h cw
JMP rel32off
E9h cd
JMP reg/mem16
FFh /4
JMP reg/mem32
FFh /4
420
JMP reg/mem64
FFh /4
Saut court la destination spcifi par un le registre/mmoire 64 bits Saut long direct avec la destination spcifi par un long pointeur contenu dans l'instruction. Cette instruction est invalide en mode 64 bits. Saut long direct avec la destination spcifi par un long pointeur contenu dans l'instruction. Cette instruction est invalide en mode 64 bits. Saut long indirect avec la destination spcifi par un long pointeur contenu en mmoire. Cette instruction est invalide en mode 64 bits. Saut long indirect avec la destination spcifi par un long pointeur contenu en mmoire. Cette instruction est invalide en mode 64 bits.
EAh cd
EAh cp
FFh /5
FFh /5
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description Cette instruction est excut en mode 64-bits avec un code un opcode indirect JMP (FFh /5) dans un oprande de registre.
#UD(Opcode invalide) X
421
Cette instruction est excut en mode 64-bits avec un code un opcode direct JMP (EAh) Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique L'accs au segment de code, au pont d'appel, un pont de tche, ou a un TSS non prsent. Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable
#SS(Pile noncanonique)
#NP(Slecteur)
#GP(Protection gnral)
422
Un segment de donnes nulle est utilis comme rfrence mmoire La destination de slecteur de segment de code est un slecteur nulle. Un code, un pont d'appel, une tche de pont, ou un descripteur TSS dpasse la limite de descripteur de table. Un slecteur de segment de bit TI est fix, mais le slecteur LDT est un slecteur nulle. Le descripteur de segment spcifi par l'instruction n'est pas un segment de code, une
#GP(Slecteur)
423
tche de pont, un pont d'appel, ou un TSS disponible dans le mode legacy, ou n'est pas un segment de code 64 bits ou un appel 64 bits long d'un pont dans le mode long. X Le RPL d'un slecteur de segment de code nonconforme spcifi par l'instruction est suprieur au CPL, ou le DPL n'est pas gale au CPL. Le DPL du descripteur de segment de code spcifi est conforme quand l'instruction est suprieur au CPL. Le DPL est un pont d'appel, une tche de
424
pont, un descripteur TSS spcifi quand l'instruction est infrieur au CPL ou au RPL. X Le slecteur de segment spcifi par le pont d'appel ou le pont de tche est un slecteur nulle. Le descripteur de segment spcifi par l'appel de pont n'est pas un segment de code en mode legacy ou segment de code 64 bits dans un mode long. Le DPL du descripteur de segment spcifi par le pont d'appel est suprieur au CPL et dans un segment
425
conforme. X Le DPL du descripteur de segment spcifi par le pont d'appel n'est pas gale au CPL et il n'est pas dans un segment conforme. L'attribut tendue du pont d'appel 64 bits n'est pas 0. Le descripteur TSS n'est pas un LDT. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
426
Voir
galement
Instruction assembleur 80x86 - Instruction Jump if (JA, JB, JC, JCX, JE,...)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 816 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 135. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 619 629.
427
Syntaxe
LAHF
Description Cette instruction permet de transfrer les bits d'indicateurs du registre d'tat vers le registre AH.
Algorithme
AH Registre de drapeaux(7..0)
Mnmonique
Instruction Opcode Description Charge les drapeaux SF, ZF, AF, PF et CF dans le registre AH
LAHF
9Fh
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instruction n'est pas support en mode 64-
#UD(Opcode invalide)
428
bits comme indiquer par le bit 0 du registre ECX par la fonction 8000_0001h de l'instruction CPUID.
galement SAHF
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 816 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 409 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 142. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 630 631.
429
LAR
Syntaxe
LAR dest,source
Description Cette instruction permet de charger le registre des indicateurs d'un descripteur.
Algorithme
SI source(Offset) > limite du descripteur de table ALORS ZF 0 FIN SI Lecteur du descripteur de segment SI type de Descripteur de segment n'est pas conforme au code segment ET (CPL > DPL) OU (RPL > DPL) OU type de segment n'est pas valide pour l'instruction ALORS ZF 0 SINON SI la taille de l'oprande = 32 bits ALORS dest(source) 00FxFF00h SINON dest(source) FF00h FIN SI FIN SI
Mnmonique
Instruction LAR r16,r/m16 Opcode 0Fh 02h /r Description Cette instruction permet de charger le registre des indicateurs d'un 430
descripteur avec un masque de FF00h. Cette instruction permet de charger le registre des indicateurs d'un descripteur avec un masque de 00FxFF00h.
LAR r32,r/m32
0Fh 02h /r
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 632 634.
431
Assembleur 80x86
INTEL Pentium 4 (SSE3)+
LDDQU
Load Unaligned Integer 128 bits
Syntaxe
LDDQU dest, source
Description Cette instruction permet de copier un quadruple mot d'une oprande source vers une oprande destination. Les oprandes doivent tre des registres XMM.
Algorithme
dest(0..127) dest
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un quadruple mot d'une oprande source vers une oprande destination. Les oprandes doivent tre des registres XMM.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 635 638.
432
433
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
LDMXCSR
Load Streaming SIMD Extension Control/Status
Syntaxe
LDMXCSR source
Description Cette instruction permet d'effectuer le chargement du mot de contrle et d'tat du flux d'extension SIMD d'une oprande mmoire 32 bits.
Algorithme
MXCSR source
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le chargement du mot de contrle et d'tat du flux d'extension SIMD d'une oprande mmoire 32 bits.
LDMXCSR m32
0Fh AEh /2
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
434
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 639 641.
435
LDS Load in DS
Syntaxe
LDS oprande_cible,oprande_source
Description Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits dans la paire de registre de segment DS et dans un registre d'offset spcifi.
Algorithme
Registre d'offset Source Registre de segment DS Source + 2
Mnmonique
Instruction Opcode Description Charge le DS:reg16 avec un pointeur long dans la mmoire. Invalide en mode 64 bits. Charge le DS:reg32 avec un pointeur long dans la mmoire. Invalide en mode 64 bits.
C5h /r
C5h /r
Exceptions
436
Message
Mode rel
Virtuel 8086 X
Mode protg X
Description L'oprande source est un registre. Cette instruction est excut en mode 64-bits. Le registre DS, ES, FS ou GS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non prsent. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Le registre SS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non
#UD(Opcode invalide) X
#NP(Slecteur)
#SS(Pile)
#SS(Slecteur)
437
prsent. #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Un registre de segment est charg, mais le descripteur de segment dpasse la limite du descripteur de la table. Un registre de segment est charg et le bit TI de slecteur de segment est fix, mais le slecteur LDT est un slecteur nulle.
#GP(Slecteur)
438
Le registre SS est charg avec un slecteur de segment nulle dans un mode 64-bits ou avec CPL = 3. Le registre SS est charg avec un slecteur de segment RPL et le descripteur de segment DPL n'est pas gale au CPL. Le registre SS est charg et le pointeur de segment n'est pas dans un segment de donnes crivable. Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code nonconforme, mais le RPL ou
439
CPL est suprieur au DPL. X X X Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code en lecture. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 817 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 409 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 143.
440
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 642 646.
441
Syntaxe
LEA oprande_cible,oprande_source
Algorithme
Destination Adresse (source)
Mnmonique
Instruction Opcode Description Entrepose l'adresse effective dans un registre 16 bits. Entrepose l'adresse effective dans un registre 32 bits. Entrepose l'adresse effective dans un registre 64 bits.
8Dh /r
8Dh /r
8Dh /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
442
#UD(Opcode invalide)
galement MOV
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 817 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 409 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 145. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 647 651.
443
LEAVE
Syntaxe
LEAVE
Description Cette instruction permet de librer une zone de mmoire attribu par l'instruction ENTER lorsqu'on utilise des procdures dans des langages de programmation de haut niveau.
Algorithme
SI taille de l'adresse de pile = 32 bits ALORS ESP EBP SINON SP BP FIN SI SI taille l'oprande = 32 bits ALORS EBP POP() SINON BP POP() FIN SI
Mnmonique
Instruction Opcode Description Fixe le pointeur de pile du registre SP la valeur du registre BP et POP BP.
LEAVE
C9h
444
LEAVE
C9h
Fixe le pointeur de pile du registre ESP la valeur du registre EBP et POP EBP. Pas de prfixe pour le mode 64 bits. Fixe le pointeur de pile du registre RSP la valeur du registre RBP et POP RBP.
LEAVE
C9h
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#SS(Pile)
#PF(Faute de page)
#AC(Vrifie l'alignement)
445
galement ENTER
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 817 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 147. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 651 652.
446
Assembleur 80x86
INTEL 8088+
LES
Load in ES
Syntaxe
LES oprande_cible,oprande_source
Description Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits dans la paire de registre de segment ES et dans un registre d'offset spcifi.
Algorithme
Registre d'offset Source Registre de segment ES Source + 2
Mnmonique
Instruction Opcode Description Charge le ES:reg16 avec un pointeur long dans la mmoire. Invalide en mode 64 bits. Charge le ES:reg32 avec un pointeur long dans la mmoire. Invalide en mode 64 bits.
C4h /r
C4h /r
Exceptions
447
Message
Mode rel
Virtuel 8086 X
Mode protg X
Description L'oprande source est un registre. Cette instruction est excut en mode 64-bits. Le registre DS, ES, FS ou GS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non prsent. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Le registre SS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non
#UD(Opcode invalide) X
#NP(Slecteur)
#SS(Pile)
#SS(Slecteur)
448
prsent. #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Un registre de segment est charg, mais le descripteur de segment dpasse la limite du descripteur de la table. Un registre de segment est charg et le bit TI de slecteur de segment est fix, mais le slecteur LDT est un slecteur nulle.
#GP(Slecteur)
449
Le registre SS est charg avec un slecteur de segment nulle dans un mode 64-bits ou avec CPL = 3. Le registre SS est charg avec un slecteur de segment RPL et le descripteur de segment DPL n'est pas gale au CPL. Le registre SS est charg et le pointeur de segment n'est pas dans un segment de donnes crivable. Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code nonconforme, mais le RPL ou
450
CPL est suprieur au DPL. X X X Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code en lecture. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Exemple Cette exemple permet de retourner dans la paire de registres DX:AX, l'heure de l'horloge tant incrment tous les 18,2 par seconde. Pour se faire il utilise une mthode d'accs directe la mmoire et prend soit de ne pas tre interrompu par un IRQ. L'astuce de l'utilisation de cette instruction consiste au fait qu'il utilise une seule instruction pour un charg double mot de 32 bits (l'instruction LES) plutt que deux instructions MOV beaucoup plus longue en cycle d'horloge et en consommation d'octets :
451
1. 2. 3. 4. 5. 6. 7.
PUSH 0 POP ES XOR AX,AX MOV ES,AX CLI LES AX,ES:[$46C] STI 8. MOV DX,ES
Cette routine est utilis dans le coeur de la bibliothque RLL de l'application MonsterBook des Chevaliers de Malte/Dveloppeur par soucis de performance lorsqu'on tant de faire jouer des .MOD en arrire plan en mme temps que le MonsterBook fonctionne.
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 817 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 410 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 143. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 642 646.
452
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
LFENCE
Load Fence
Syntaxe
LFENCE
Description Cette instruction permet d'agir comme une barrire pour forcer une priorit en mmoire (srialisation) entre les instructions prcdant le LFENCE et les instructions de chargement suivant le LFENCE.
Mnmonique
Instruction Opcode Description Force l'ordre de srialisation de chargement des oprations
LFENCE
Exceptions
Message #UD(Opcode invalide) Mode rel Virtuel 8086 Mode protg X Description Cette instruction n'est pas support et est indiqu par le bit 26 du registre EDX de la fonction
453
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 653 653.
454
LFS Load in FS
Syntaxe
LFS oprande_cible,oprande_source
Description Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits dans la paire de registre de segment FS et dans un registre d'offset spcifi.
Algorithme
Registre d'offset Source Registre de segment FS Source + 2
Mnmonique
Instruction Opcode Description Charge le FS:reg16 avec un pointeur long dans la mmoire. Invalide en mode 64 bits. Charge le FS:reg32 avec un pointeur long dans la mmoire. Invalide en mode 64 bits.
0Fh B4h /r
0Fh B4h /r
Exceptions
455
Message
Mode rel
Virtuel 8086 X
Mode protg X
Description L'oprande source est un registre. Cette instruction est excut en mode 64-bits. Le registre DS, ES, FS ou GS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non prsent. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Le registre SS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non
#UD(Opcode invalide) X
#NP(Slecteur)
#SS(Pile)
#SS(Slecteur)
456
prsent. #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Un registre de segment est charg, mais le descripteur de segment dpasse la limite du descripteur de la table. Un registre de segment est charg et le bit TI de slecteur de segment est fix, mais le slecteur LDT est un slecteur nulle.
#GP(Slecteur)
457
Le registre SS est charg avec un slecteur de segment nulle dans un mode 64-bits ou avec CPL = 3. Le registre SS est charg avec un slecteur de segment RPL et le descripteur de segment DPL n'est pas gale au CPL. Le registre SS est charg et le pointeur de segment n'est pas dans un segment de donnes crivable. Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code nonconforme, mais le RPL ou
458
CPL est suprieur au DPL. X X X Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code en lecture. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 642 646.
459
Syntaxe
LGDT mmoire
Algorithme
SI taille de l'oprande = 16 bits ALORS GDTR(Limit) mmoire(0..15) GDTR(Base) mmoire(16..47) 00FFFFFFh SINON GDTR(Limit) mmoire(0..15) GDTR(Base) mmoire(16..47) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de charger un descripteur de tables globale.
LGDT m16/32
0Fh 01h /2
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86
460
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 654 656.
461
LGS Load in GS
Syntaxe
LGS oprande_cible,oprande_source
Description Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits dans la paire de registre de segment FS et dans un registre d'offset spcifi.
Algorithme
Registre d'offset Source Registre de segment GS Source + 2
Mnmonique
Instruction Opcode Description Charge le GS:reg16 avec un pointeur long dans la mmoire. Invalide en mode 64 bits. Charge le GS:reg32 avec un pointeur long dans la mmoire. Invalide en mode 64 bits.
0Fh B5h /r
0Fh B5h /r
Exceptions
462
Message
Mode rel
Virtuel 8086 X
Mode protg X
Description L'oprande source est un registre. Cette instruction est excut en mode 64-bits. Le registre DS, ES, FS ou GS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non prsent. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Le registre SS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non
#UD(Opcode invalide) X
#NP(Slecteur)
#SS(Pile)
#SS(Slecteur)
463
prsent. #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Un registre de segment est charg, mais le descripteur de segment dpasse la limite du descripteur de la table. Un registre de segment est charg et le bit TI de slecteur de segment est fix, mais le slecteur LDT est un slecteur nulle.
#GP(Slecteur)
464
Le registre SS est charg avec un slecteur de segment nulle dans un mode 64-bits ou avec CPL = 3. Le registre SS est charg avec un slecteur de segment RPL et le descripteur de segment DPL n'est pas gale au CPL. Le registre SS est charg et le pointeur de segment n'est pas dans un segment de donnes crivable. Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code nonconforme, mais le RPL ou
465
CPL est suprieur au DPL. X X X Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code en lecture. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 642 646.
466
Syntaxe
LIDT mmoire
Algorithme
SI taille de l'oprande = 16 bits ALORS IDTR(Limit) mmoire(0..15) IDTR(Base) mmoire(16..47) 00FFFFFFh SINON IDTR(Limit) mmoire(0..15) IDTR(Base) mmoire(16..47) FIN SI
Mnmonique
Instruction LIDT mem Opcode 0Fh 01h /3 Description Cette instruction permet de charger un descripteur de tables d'interruption.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 654 656.
468
Syntaxe
LLDT mmoire
Algorithme
SI mmoire(Offset) > limite de descripteur de table ALORS EXCEPTION #GP(Slecteur de segment) FIN SI Lecture du descripteur de segment SI type de segment de descriptor n'est pas gale LDT ALORS EXCEPTION #GP(Slecteur de segment) FIN SI SI descripteur de segment n'est pas prsent ALORS EXCEPTION #NP(Slecteur de segment) FIN SI LDTR(Slecteur de segment) mmoire LDTR(Descripteur de segment) Descripteur de segment GDT
Mnmonique
Instruction LLDT r/m16 Opcode 0Fh 00h /2 Description Cette instruction permet de charger un descripteur de tables local.
469
Voir Instruction Instruction Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 657 659.
470
Syntaxe
LMSW oprande
Description Cette instruction permet de copier 4 des bits d'une oprande vers les 4 bits de registre de contrle CR0.
Algorithme
CR0(0..3) oprande(0..3)
Mnmonique
Instruction LMSW r/m16 Opcode 0Fh 01h /6 Description Cette instruction permet de copier 4 des bits d'une oprande vers les 4 bits de registre de contrle CR0.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 660 661.
471
Assembleur 80x86
INTEL 80286 ou 80386 seulement
Syntaxe LOADALL
LOADALL
Load All
Description Cette instruction permet d'effectuer le chargement de tous les registres de descripteur de cache.
Algorithme SI INTEL 80286 ALORS (00800h)(6) 0 (00806h)(2) MSW (00808h)(14) 0 (00816h)(2) TR (00818h)(2) Registre de drapeaux 16 bits (0081Ah)(2) IP (0081Ch)(2) LDTR (0081Eh)(2) DS (00820h)(2) SS (00822h)(2) CS (00824h)(2) ES (00826h)(2) DI (00828h)(2) SI (0082Ah)(2) BP (0082Ch)(2) SP (0082Eh)(2) BX (00830h)(2) DX (00832h)(2) CX (00834h)(2) AX (00836h)(6) Descripteur de segment ES (0083Ch)(6) Descripteur de segment CS (00842h)(6) Descripteur de segment SS (00848h)(6) Descripteur de segment DS (0084Eh)(6) GDT
472
(00854h)(6) LDT (0085Ah)(6) IDT (00860h)(6) TSS cFIN SI SI INTEL 80386 ALORS (ES:EDI+0000h)(4) CR0 (ES:EDI+0004h)(4) EFLAGS (ES:EDI+0008h)(4) EIP (ES:EDI+000Ch)(4) EDI (ES:EDI+0010h)(4) ESI (ES:EDI+0014h)(4) EBP (ES:EDI+0018h)(4) ESP (ES:EDI+001Ch)(4) EBX (ES:EDI+0020h)(4) EDX (ES:EDI+0024h)(4) ESX (ES:EDI+0028h)(4) EAX (ES:EDI+002Ch)(4) DR6 (ES:EDI+0030h)(4) DR7 (ES:EDI+0034h)(4) TR (16 bits complt par des 0) (ES:EDI+0038h)(4) LDT (ES:EDI+003Ch)(4) GS (16 bits complt par des 0) (ES:EDI+0040h)(4) FS (16 bits complt par des 0) (ES:EDI+0044h)(4) DS (16 bits complt par des 0) (ES:EDI+0048h)(4) SS (16 bits complt par des 0) (ES:EDI+004Ch)(4) CS (16 bits complt par des 0) (ES:EDI+0050h)(4) ES (16 bits complt par des 0) (ES:EDI+0054h)(4) Attribut de TSS (ES:EDI+0058h)(4) Base de TSS (ES:EDI+005Ch)(4) Limite de TSS (ES:EDI+0060h)(4) 0s (ES:EDI+0064h)(4) Base de IDT (ES:EDI+0068h)(4) Limite de IDT (ES:EDI+006Ch)(4) 0s (ES:EDI+0070h)(4) Base de GDT (ES:EDI+0074h)(4) Limite de GDT (ES:EDI+0078h)(4) Attribut de LDT (ES:EDI+007Ch)(4) Base de LDT (ES:EDI+0080h)(4) Limite de LDT (ES:EDI+0084h)(4) Attribut de GS (ES:EDI+0088h)(4) Base de GS (ES:EDI+008Ch)(4) Limite de GS (ES:EDI+0090h)(4) Attribut de FS (ES:EDI+0094h)(4) Base de FS (ES:EDI+0098h)(4) Limite de FS (ES:EDI+009Ch)(4) Attribut de DS (ES:EDI+00A0h)(4) Base de DS
473
(ES:EDI+00A4h)(4) Limite de DS (ES:EDI+00A8h)(4) Attribut de SS (ES:EDI+00ACh)(4) Base de SS (ES:EDI+00B0h)(4) Limite de SS (ES:EDI+00B4h)(4) Attribut de CS (ES:EDI+00B8h)(4) Base de CS (ES:EDI+00BCh)(4) Limite de CS (ES:EDI+00C0h)(4) Attribut de ES (ES:EDI+00C4h)(4) Base de ES (ES:EDI+00C8h)(4) Limite de ES (ES:EDI+00CCh)(4) Longueur de la table (ES:EDI+00D0h)(30h) Non utilis (ES:EDI+0100h)(4) Registre temporaire IST (ES:EDI+0104h)(4) Registre temporaire I (ES:EDI+0108h)(4) Registre temporaire H (ES:EDI+010Ch)(4) Registre temporaire G (ES:EDI+0110h)(4) Registre temporaire F (ES:EDI+0114h)(4) Registre temporaire E (ES:EDI+0118h)(4) Registre temporaire D (ES:EDI+011Ch)(4) Registre temporaire C (ES:EDI+0120h)(4) Registre temporaire B (ES:EDI+0124h)(4) Registre temporaire A FIN SI
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la lecture des donnes l'adresse 00800 de 00866 contenu dans les registres de segment Cette instruction permet d'effectuer la lecture des donnes l'adresse ES:EDI. Prrequis
LOADALL
0Fh 05h
80286
LOADALL
0Fh 07h
80386
474
LOCK
Syntaxe
LOCK
Description Cette instruction est utilis comme prfixe avec d'autres instructions pour amener le microprocesseur mettre un signal de vrouillage (Lock) sur le bus lors du traitement de l'instruction suivante.
Mnmonique
Instruction Opcode Description Cette instruction est utilis comme prfixe avec d'autres instructions pour amener le microprocesseur mettre un signal de vrouillage (Lock) sur le bus lors du traitement de l'instruction suivante.
LOCK
F0h
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 818 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 662 663.
475
Syntaxe
LODS chainesource
Description Cette instruction permet de copier un lment de l'adresse DS:SI dans le registre accumulateur et incrmente/dcrmente le registre SI en fonction de la taille de l'oprande source et de l'tat du drapeau de direction.
Algorithme
SI (charge un octet) ALORS AL chainesource SI DF = 0 ALORS (E)SI (E)SI + 1 SINON (E)SI (E)SI - 1 FIN SI SINON SI (charge un mot) ALORS AX chainesource SI DF = 0 ALORS (E)SI (E)SI + 2 SINON (E)SI (E)SI - 2 FIN SI SINON SI (charge un double mot) ALORS EAX chainesource SI DF = 0 ALORS (E)SI (E)SI + 4 SINON (E)SI (E)SI - 4 FIN SI
476
SINON RAX chainesource SI DF = 0 ALORS (E)SI (E)SI + 8 SINON (E)SI (E)SI - 8 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Charge l'octet de DS:(R)SI dans AL et incrmente ou dcrement (R)SI. Charge le mot de DS:(R)SI dans AX et incrmente ou dcrement (R)SI. Charge le double mot de DS:(R)SI dans EAX et incrmente ou dcrement (R)SI. Charge le quadruple mot de DS:(R)SI dans RAX et incrmente ou dcrement (R)SI.
LODS mem8
ACh
LODS mem16
ADh
LODS mem32
ADh
LODS mem64
ADh
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est
#SS(Pile)
477
pas canonique #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 818 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 149. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 664 667.
479
Syntaxe
LODSB
Description Cette instruction permet de copier un lment de l'adresse DS:SI dans le registre accumulateur et incrmente/dcrmente le registre SI en fonction de la taille de l'oprande source et de l'tat du drapeau de direction.
Algorithme
AL chainesource SI DF = 0 ALORS (E)SI (E)SI + 1 SINON (E)SI (E)SI - 1 FIN SI
Mnmonique
Instruction Opcode Description Charge l'octet de DS:(R)SI dans AL et incrmente ou dcrement (R)SI.
LODSB
ACh
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
480
#SS(Pile)
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
481
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 818 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 410 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 149. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 664 667.
482
Syntaxe
LODSD
Description Cette instruction permet de copier un lment de l'adresse DS:SI dans le registre accumulateur et incrmente/dcrmente le registre SI de 4 en fonction de l'tat du drapeau de direction.
Algorithme
EAX chainesource SI DF = 0 ALORS (E)SI (E)SI + 4 SINON (E)SI (E)SI - 4 FIN SI
Mnmonique
Instruction Opcode Description Charge le double mot de DS:(R)SI dans EAX et incrmente ou dcrement (R)SI.
LODSD
ADh
Exceptions
483
Message
Mode rel
Virtuel 8086
Mode protg
Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
484
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 818 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 149. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 664 667.
485
Assembleur 80x86
x86-64+
LODSQ
Load String Quadword
Syntaxe
LODSQ
Description Cette instruction permet de copier un lment de l'adresse DS:(R)SI dans le registre accumulateur et incrmente/dcrmente le registre (R)SI de 8 en fonction de l'tat du drapeau de direction.
Algorithme
RAX chainesource SI DF = 0 ALORS (E)SI (E)SI + 8 SINON (E)SI (E)SI - 8 FIN SI
Mnmonique
Instruction Opcode Description Charge le quadruple mot de DS:(R)SI dans RAX et incrmente ou dcrement (R)SI.
LODSQ
ADh
Exceptions
486
Message
Mode rel
Virtuel 8086
Mode protg
Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
487
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 664 667.
488
Syntaxe
LODSW
Description Cette instruction permet de copier un lment de l'adresse DS:SI dans le registre accumulateur et incrmente/dcrmente le registre SI de 2 en fonction de l'tat du drapeau de direction.
Algorithme
AX chainesource SI DF = 0 ALORS (E)SI (E)SI + 2 SINON (E)SI (E)SI - 2 FIN SI
Mnmonique
Instruction Opcode Description Charge le mot de DS:(R)SI dans AX et incrmente ou dcrement (R)SI.
LODSW
ADh
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
489
#SS(Pile)
Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
490
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 819 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 410 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 149. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 664 667.
491
LOOP
Syntaxe
LOOP tiquette
Description Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre CX ne vaut pas 0.
Algorithme
CX CX - 1 SI CX <> 0 ALORS IP IP + Offset FIN SI
Mnmonique
Instruction Opcode Description Dcrmente (R)CX, si (R)CX ne vaut pas 0 alors effectuer un saut court.
LOOP rel8off
E2h cb
Exceptions
Message #GP(Protection Mode rel X Virtuel 8086 X Mode protg X Description Une
492
gnral)
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 819 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 410 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 151. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 668 669.
493
Assembleur 80x86
INTEL 80386+
Syntaxe LOOPD etiquette
LOOPD
Loop Double
Description Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre ECX ne vaut pas 0.
494
Syntaxe
LOOPE tiquette
Description Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 1.
Algorithme
CX CX - 1 SI CX <> 0 ET ZF = 1 ALORS IP IP + Offset FIN SI
Mnmonique
Instruction Opcode Description Dcrmente (R)CX, si (R)CX ne vaut pas 0 et ZF vaut 1 alors effectuer un saut court.
LOOPE rel8off
E1h cb
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
495
#GP(Protection gnral)
Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 819 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 410 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 151. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 668 669.
496
Assembleur 80x86
INTEL 80386+
Syntaxe LOOPED etiquette
LOOPED
Loop Equal Double
Description Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 1.
497
Syntaxe
LOOPNE tiquette
Description Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 0.
Algorithme
CX CX - 1 SI CX <> 0 ET ZF = 0 ALORS IP IP + Offset FIN SI
Mnmonique
Instruction Opcode Description Dcrmente (R)CX, si (R)CX ne vaut pas 0 et que ZF vaut 0 alors effectuer un saut court.
LOOPNE rel8off
E0h cb
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
498
#GP(Protection gnral)
Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 820 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 411 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 151. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 668 669.
499
Assembleur 80x86
INTEL 80386+
Syntaxe LOOPNED etiquette
LOOPNED
Loop Not Equal Double
Description Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 0.
500
Syntaxe
LOOPNZ tiquette
Description Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 0.
Algorithme
CX CX - 1 SI CX <> 0 ET ZF = 0 ALORS IP IP + Offset FIN SI
Mnmonique
Instruction Opcode Description Dcrmente (R)CX, si (R)CX ne vaut pas 0 et ZF ne vaut pas 0 alors effectuer un saut court.
LOOPNZ rel8off
E0h cb
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
501
#GP(Protection gnral)
Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 820 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 411 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 151.
502
Assembleur 80x86
INTEL 80386+
Syntaxe LOOPNZD etiquette
LOOPNZD
Loop Not Zero Double
Description Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 0.
503
Syntaxe
LOOPZ tiquette
Description Cette instruction de boucle permet de dcrmenter le registre CX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre CX ne vaut pas 0 et si le drapeau ZF vaut 1.
Algorithme
CX CX - 1 SI CX <> 0 ET ZF = 1 ALORS IP IP + Offset FIN SI
Mnmonique
Instruction Opcode Description Dcrmente (R)CX, si (R)CX ne vaut pas 0 et que ZF vaut 1 alors effectuer un saut court.
LOOPZ rel8off
E1h cb
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
504
#GP(Protection gnral)
Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 820 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 411 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 151.
505
Assembleur 80x86
INTEL 80386+
Syntaxe LOOPZD etiquette
LOOPZD
Loop Double Zero
Description Cette instruction de boucle permet de dcrmenter le registre ECX (compteur de boucle) de 1 et par la suite de donner le contrle une tiquette destinataire tant que le registre ECX ne vaut pas 0 et si le drapeau ZF vaut 1.
506
Assembleur 80x86
INTEL 80286+
LSL
Load Segment Limit
Syntaxe
LSL operande1,operande2
Description Cette instruction permet de charger la limite de segment d'un descripteur de segment spcifi avec l'oprande source dans l'oprande de destination et fixe le drapeau ZF du regsistre EFLAGS.
Algorithme
SI SRC(Offset) > limite du descripteur de table ALORS ZF 0 FIN SI Lecture du descripteur de segment SI type de descripteur de segment est conforme au code segment ET (CPL > DPL) OU (RPL > DPL) OU type de segment n'est pas valide pour l'instruction ALORS ZF 0 SINON temp limite de segment de SRC SI G = 1 ALORS temp DcalageDesBitsVersLaGauche(12, temp) U 00000FFFh FIN SI SI taille de l'oprande = 32 bits ALORS DEST temp SINON DEST temp FFFFh FIN SI FIN SI
507
Mnmonique
Instruction Opcode Description Cette instruction permet de charger la limite de segment d'un descripteur de segment spcifi avec l'oprande source 16 bits dans l'oprande de destination de 16 bits et fixe le drapeau ZF du regsistre EFLAGS. Cette instruction permet de charger la limite de segment d'un descripteur de segment spcifi avec l'oprande source 16 bits dans l'oprande de destination de 32 bits et fixe le drapeau ZF du regsistre EFLAGS. Cette instruction permet de charger la limite de segment d'un descripteur de segment spcifi avec l'oprande source 16 bits dans l'oprande de destination de 64 bits et fixe le drapeau ZF du regsistre EFLAGS.
0Fh 03h /r
0Fh 03h /r
0Fh 03h /r
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 670 674.
508
Assembleur 80x86
INTEL 80386+
LSS
Load Stack Segment
Syntaxe
LSS operande_cible,operande_source
Description Cette instruction permet de copier une adresse de mmoire contenu sur 32 bits dans la paire de registre de segment SS (Segment de pile) et dans un registre d'offset spcifi.
Algorithme
Registre d'offset Source Registre de segment SS Source + 2
Mnmonique
Instruction Opcode Description Charge le SS:reg16 avec un pointeur long dans la mmoire. Invalide en mode 64 bits. Charge le SS:reg32 avec un pointeur long dans la mmoire. Invalide en mode 64 bits.
0Fh B2h /r
0Fh B2h /r
Exceptions
509
Message
Mode rel
Virtuel 8086 X
Mode protg X
Description L'oprande source est un registre. Cette instruction est excut en mode 64-bits. Le registre DS, ES, FS ou GS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non prsent. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Le registre SS est charg avec un slecteur de segment nonnulle et le segment est marqu comme non
#UD(Opcode invalide) X
#NP(Slecteur)
#SS(Pile)
#SS(Slecteur)
510
prsent. #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Un registre de segment est charg, mais le descripteur de segment dpasse la limite du descripteur de la table. Un registre de segment est charg et le bit TI de slecteur de segment est fix, mais le slecteur LDT est un slecteur nulle.
#GP(Slecteur)
511
Le registre SS est charg avec un slecteur de segment nulle dans un mode 64-bits ou avec CPL = 3. Le registre SS est charg avec un slecteur de segment RPL et le descripteur de segment DPL n'est pas gale au CPL. Le registre SS est charg et le pointeur de segment n'est pas dans un segment de donnes crivable. Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code nonconforme, mais le RPL ou
512
CPL est suprieur au DPL. X X X Le registre DS, ES, FS ou GS n'est pas charg et le segment pointe sur des donnes ou un segment de code en lecture. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 642 646.
513
Assembleur 80x86
INTEL 80286+
LTR
Load Task Register
Syntaxe
LTR operande
Description Cette instruction permet de charger l'oprande source dans le champ du slecteur de segment du registre de tche.
Algorithme
SI SRC(Offset) > limite du descripteur de table OU operande(type) <> global ALORS EXCEPTION #GP(Slecteur de segment) FIN SI Lecture du descripteur de segment SI descripteur de segment n'est pas disponible dans TSS ALORS EXCEPTION #GP(Slecteur de segment) FIN SI SI descripteur de segment n'est pas prsent ALORS EXCEPTION #NP(Slecteur de segment) FIN SI Descripteur de segment TSS(occup) 1 Registre de tche(Slecteur de segment) operande Registre de tche(Descripteur de segment) Descripteur de segment TSS
Mnmonique
Instruction Opcode Description
514
LTR reg/mem16
0Fh 00h /3
Cette instruction permet de charger le slecteur de segment dans le registre de tche et charge le descripteur TSS dans le GDT.
Voir Instruction Instruction Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 675 677.
515
Assembleur 80x86
AMD K10 (SSE4a)+
LZCNT
Count Leading Zeros
Syntaxe
LZCNT regdest, source
Description Cette instruction permet de compter le nombre de bits 0 dans un registre 16, 32 ou 64 bits contenu dans l'oprande source.
Mnmonique
Instruction Opcode Description Compte le nombre de bit 0 dans reg/mem16. Compte le nombre de bit 0 dans reg/mem32. Compte le nombre de bit 0 dans reg/mem64.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la
#SS(Pile)
516
limite du segment de pile ou n'est pas canonique #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir
517
galement
Instruction assembleur 80x86 Instruction assembleur 80x86 Instruction assembleur 80x86 - Instruction POPCNT
Instruction Instruction
BSF BSR
518
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MASKMOVDQU
Mask Move of Double Quadword Unaligned
Syntaxe
MASKMOVDQU dest, source
Description Cette instruction permet d'entreposer les octets slectionns par l'oprande source dans une emplacement mmoire de 128 bits.
Fonction
SI MASK(7) = 1 ALORS dest((E)DI) source(7..0) FIN SI IF MASK(15) = 1 ALORS dest((E)DI+1) source(15..8) FIN SI SI MASK(127) = 1 ALORS dest(DI/EDI+15) source(127..120) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de slectionner les octets crire du xmm1 l'emplacement mmoire utilis par le masque d'octet du
519
xmm2.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment CS, DS, ES, FS ou GS ou n'est pas canonique Si le bit TS du registre CR0 est fix 1. Si le bit EM du registre CR0 est fix 1. Si le
#SS(Pile)
#GP(0)
#NM()
#UD(Opcode invalide)
520
OXFXSR dans CR4 vaut 0. Si le drapeau de fourniture SSE2 du CPUID vaut 0. Une faute de page rsultat de l'excution de l'instruction
#PF(Faute de page)
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 678 679.
521
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MASKMOVQ
Mask Move of Quadword
Syntaxe
MASKMOVQ source,masque
Description Cette instruction permet d'entreposer les octets slectionner de l'oprande source dans un emplacement mmoire de 64 bits.
Algorithme
MODULE moveByte(checkBit,moveBits) SI masque(checkBit) = 1 ALORS mem64(EDI)(moveBits) source(moveBits) SINON mem64(EDI)(moveBits) 0 FIN SI FIN MODULE moveByte(7 , 7..0) moveByte(15, 15..8) moveByte(23, 23..16) moveByte(31, 31..24) moveByte(39, 39..32) moveByte(47, 47..40) moveByte(55, 55..48) moveByte(63, 63..56)
Mnmonique
522
Instruction
Opcode
Description Cette instruction permet d'entreposer les octets slectionner de l'oprande source dans un emplacement mmoire de 64 bits.
MASKMOVQ mm1,mm2
0Fh F7h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 680 683.
523
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MAXPD
Maximum Packed Double-Precision FloatingPoint Values
Syntaxe
MAXPD dest,source
Description Cette instruction permet de retourner la valeur maximal de chacune des paires de valeur entre l'oprande source et l'oprande de destination de nombre rel de double prcision.
Algorithme
SI ((dest(0..63) = 0,0 source(0..63) = 0,0) U IsSNaN(dest(0..63)) U IsSNaN(source(0..63)) U dest(0..63) <= source(0..63)) ALORS dest(0..63) source(0..63) FIN SI SI ((dest(64..127) = 0,0 source(64..127) = 0.0) U IsSNaN(dest(64..127)) U IsSNaN(source(64..127)) U dest(64..127) <= source(64..127)) ALORS dest(64..127) source(64..127) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de retourner la valeur maximal de chacune des paires de valeur entre l'oprande source et l'oprande de destination de nombre rel de double
524
prcision.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 684 686.
525
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MAXPS
Maximum Packed Double-Precision FloatingPoint Values
Syntaxe
MAXPS dest,source
Description Cette instruction permet de retourner la valeur maximal de chacune des paires de valeur entre l'oprande source et l'oprande de destination.
Algorithme
BOUCLE POUR i 0 JUSQU'A 3 FAIRE SI dest(octet i) n'est pas indfinit ALORS dest(octet i) dest(octet i) FIN SI SI source(octet i) n'est pas indfini ALORS dest(octet i) source(octet i) FIN SI SI source(i) >= dest(i) ALORS dest(octet i) source(octet i) FIN SI FIN BOUCLE POUR
Mnmonique
Instruction Opcode Description
526
MAXPS xmm1,xmm2/m128
0Fh 5Fh /r
Cette instruction permet de retourner la valeur maximal de chacune des paires de valeur entre l'oprande source et l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 687 689.
527
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MAXSD
Maximum Scalar Double-Precision FloatingPoint Value
Syntaxe
MAXSD dest,source
Description Cette instruction permet de retourner la valeur maximal entre l'oprande source et destination de nombre rel de simple prcision.
Algorithme
SI dest(0..63) = 0,0 source(0..63) = 0,0) U IsSNaN(dest[0..63]) U IsSNaN(source(0..63)) U dest[0..63] <= source(0..63)) ALORS dest(0..63) source(0..63) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de retourner la valeur maximal entre l'oprande source et destination de nombre rel de simple prcision.
Rfrences
528
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 690 692.
529
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MAXSS
Maximum Scalar Single-Precision Floating-Point Value
Syntaxe
MAXSS dest,source
Description Cette instruction permet de retourner la valeur maximal entre l'oprande source et destination.
Algorithme
SI dest n'est pas indfinit ALORS dest dest FIN SI SI source n'est pas indfini ALORS dest source FIN SI SI source(i) >= dest(i) ALORS dest source FIN SI
Mnmonique
Instruction MAXSS xmm1,xmm2/m32 Opcode F3h 0Fh 5Fh /r Description Cette instruction permet de retourner la valeur maximal entre
530
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 693 694.
531
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MFENCE
Memory Fence
Syntaxe
MFENCE
Description Cette instruction permet d'agir comme une barrire pour forcer une priorit en mmoire (srialisation) entre les instructions prcdant le MFENCE et les instructions de chargement et d'entreposage prcdent le MFENCE.
Mnmonique
Instruction Opcode Description Force l'ordre de srialisation dans l'opration de chargement et d'entreposage
MFENCE
Exceptions
Message #UD(Opcode invalide) Mode rel Virtuel 8086 Mode protg X Description Cette instruction n'est pas support comme l'indique le bit 26 du registre EDX
532
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 695 696.
533
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MINPD
Minimum Packed Double-Precision FloatingPoint Values
Syntaxe
MINPD dest,source
Description Cette instruction permet de retourner la valeur minimal de chacune des paires de valeur entre l'oprande source et l'oprande de destination de nombre rel de double prcision.
Algorithme
SI ((dest(0..63) = 0,0 source(0..63) = 0,0) U IsSNaN(dest(0..63)) U IsSNaN(source(0..63)) U dest(0..63) >= source(0..63)) ALORS dest(0..63) source(0..63) FIN SI SI ((dest(64..127) = 0,0 source(64..127) = 0,0) U IsSNaN(dest(64..127)) U IsSNaN(source(64..127)) U dest(64..127) >= source(64..127)) ALORS dest(64..127) source(64..127) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de retourner la valeur minimal de chacune des paires de valeur entre l'oprande source et l'oprande de destination de nombre rel de double
534
prcision.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 697 700.
535
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MINPS
Minimum Packed Double-Precision FloatingPoint Values
Syntaxe
MINPS dest,source
Description Cette instruction permet de retourner la valeur minimal de chacune des paires de valeur entre l'oprande source et l'oprande de destination.
Algorithme
BOUCLE POUR i 0 JUSQU'A 3 FAIRE SI dest(octet i) n'est pas indfinit ALORS dest(octet i) dest(octet i) FIN SI SI source(octet i) n'est pas indfini ALORS dest(octet i) source(octet i) FIN SI SI source(i) < dest(i) ALORS dest(octet i) source(octet i) FIN SI FIN BOUCLE POUR
Mnmonique
Instruction Opcode Description
536
MINPS xmm1,xmm2/m128
0Fh 5Dh /r
Cette instruction permet de retourner la valeur minimal de chacune des paires de valeur entre l'oprande source et l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 701 703.
537
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MINSD
Minimum Scalar Double-Precision FloatingPoint Value
Syntaxe
MINSD dest,source
Description Cette instruction permet de retourner la valeur minimal entre l'oprande source et destination de nombre rel de simple prcision.
Algorithme
SI ((dest(0..63) = 0,0 source(0..63) = 0,0) U IsSNaN(dest(0..63)) U IsSNaN(source(0..63)) U dest(0..63) >= source(0..63)) ALORS dest(0..63) source(0..63) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de retourner la valeur minimal entre l'oprande source et destination de nombre rel de simple prcision.
Rfrences
538
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 704 706.
539
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MINSS
Minimum Scalar Single-Precision Floating-Point Value
Syntaxe
MINSS dest,source
Description Cette instruction permet de retourner la valeur minimal entre l'oprande source et destination.
Algorithme
SI dest n'est pas indfinit ALORS dest dest FIN SI SI source n'est pas indfini ALORS dest source FIN SI SI source(i) < dest(i) ALORS dest source FIN SI
Mnmonique
Instruction MINSS xmm1,xmm2/m32 Opcode F3h 0Fh 5Dh /r Description Cette instruction permet de retourner la valeur minimal entre
540
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 707 709.
541
Assembleur 80x86
INTEL Pentium 4+
MONITOR
Monitor
Syntaxe
MONITOR MONITOR EAX, ECX, EDX
Description Cette instruction permet d'indiquer au microprocesseur quel rang d'adresse est surveiller par l'instruction STORE. Normalement, cette instruction est reli avec l'instruction MWAIT.
Mnmonique
Instruction Opcode Description Cette instruction permet d'indiquer au microprocesseur quel rang d'adresse est surveiller par l'instruction STORE.
MONITOR
galement MWAIT
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 710 712.
542
MOV MOVe
Syntaxe
MOV oprandecible,oprandesource
Description Cette instruction permet de copier oprande source dans une oprande destinataire.
Algorithme
oprandecible oprandesource
Mnmonique
Instruction Opcode Description Copie le contenu du registre 8 bits dans l'oprande de registre ou mmoire 8 bits. Copie le contenu du registre 16 bits dans l'oprande de registre ou mmoire 16 bits. Copie le contenu du registre 32 bits dans l'oprande de registre ou mmoire 32 bits. Copie le contenu du registre 64 bits dans l'oprande de registre ou
88h /r
89h /r
89h /r
89h /r
543
mmoire 64 bits. Copie le contenu de l'oprande de registre ou mmoire 8 bits dans le registre 8 bits. Copie le contenu de l'oprande de registre ou mmoire 16 bits dans le registre 16 bits. Copie le contenu de l'oprande de registre ou mmoire 32 bits dans le registre 32 bits. Copie le contenu de l'oprande de registre ou mmoire 64 bits dans le registre 64 bits. Copie le contenu du registre de segment dans l'oprande de registre ou mmoire 16, 32 ou 64 bits. Copie le contenu de l'oprande de registre ou mmoire 16 bits dans le registre de segment. Copie le contenu de l'oprande de l'adresse mmoire 8 bits dans le registre AL. Copie le contenu de l'oprande de l'adresse mmoire 16 bits dans le registre AX. Copie le contenu de l'oprande de l'adresse mmoire 32 bits dans le registre EAX.
8Ah /r
8Bh /r
8Bh /r
8Bh /r
8Eh /r
MOV AL,[yyxxh]
A1h dw
544
A1h dw
Copie le contenu de l'oprande de l'adresse mmoire 64 bits dans le registre RAX. Copie le registre AL dans l'oprande de l'adresse mmoire 8 bits. Copie le registre AX dans l'oprande de l'adresse mmoire 16 bits. Copie le registre EAX dans l'oprande de l'adresse mmoire 32 bits. Copie le registre RAX dans l'oprande de l'adresse mmoire 64 bits. Copie une valeur immdiate de 8 bits dans un registre 8 bits. Copie une valeur immdiate de 16 bits dans un registre 16 bits. Copie une valeur immdiate de 32 bits dans un registre 32 bits. Copie une valeur immdiate de 64 bits dans un registre 64 bits. Copie une valeur immdiate 8 bits dans une oprande de registre ou mmoire 8 bits. Copie une valeur immdiate 16 bits dans une oprande de registre ou mmoire 16 bits.
MOV moffset8, AL
A2h dw
MOV moffset16, AX
A3h dw
A3h dw
A3h dw
(B0h+rb) ib
(B8h+rw) iw
(B8h+rd) id
(B8h+rq) iq
C6h /0 ib
C7h /0 iw
545
C7h /0 id
Copie une valeur immdiate 32 bits dans une oprande de registre ou mmoire 32 bits. Copie une valeur immdiate 32 bits dans une oprande de registre ou mmoire 64 bits. Copie un registre 32 bits dans un registre CRn. Copie un registre 64 bits dans un registre CRn. Copie un registre CRn dans un registre 32 bits. Copie un registre CRn dans un registre 64 bits. Copie un registre 32 bits dans le registre CR8. Copie un registre 64 bits dans le registre CR8. Copie un registre CR8 dans le registre 32 bits. Copie un registre CR8 dans le registre 64 bits. Copie un registre DRn dans le registre 32 bits. Copie un registre DRn dans le registre 64 bits. Copie un registre 32 bits dans le
C7h /0 id
0Fh 22h /r
0Fh 22h /r
0Fh 20h /r
0Fh 20h /r
0Fh 21h /r
0Fh 21h /r
0Fh 23h /r
546
0Fh 23h /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ Un registre de dboguage est rfrenc quand une dtection gnrale du bit GD du registre DR7 est fix. Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique
#AC(Vrifie l'alignement)
#DB(Dboguage)
#GP(Protection gnral)
547
L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Le CPL ne vaut pas 0. La valeur 1 est crite dans n'importe quel des 32 bits haut du registre DR6 ou DR7 en mode 64 bits. Une tentative de fixer le CR0.PG = 1 et le CR0.PE = 0. Une tentative de fixer le CR0.CD = 0 et le CR0.NW = 1. Bits rserv 1 dans le pointeur de la table de page
548
de rpertoire (utilise le mode legacy d'adresse physique tendue) et l'instruction modifie le registre CR0, CR3 ou CR4. X X Une tentative d'crire 1 dans n'importe quel bit rserv du registre CR0, CR3, CR4 ou CR8. Une tentative de fix le CR0.PG en mode long est activ (EFER.LME = 1), mais l'adresse d'extensions de page est dsactiv (CR4.PAE = 0). Une tentative d'effacer le CR4.PAE en mode long est activ (EFER.LMA =
549
1). #GP(Slecteur) X Un registre de segment est charg, mais le descripteur de segment dpasse la limite de la table du descripteur. Un registre de segment est charg et le bit TI de slecteur de segment est fix, mais le slecteur LDT est un slecteur nulle. Le registre SS est charg avec un slecteur de segment nulle dans un mode non 64 bits ou avec CPL = 3. Le registre SS est charg et le slecteur de segment RPL et le descripteur de segment DPL
550
n'est pas gale au CPL. X Le registre SS est charg et le segment pointe dans un segment de donnes non crivable. Le registre DS, ES, FS ou GS est charg et le segment pointe sur des donnes ou un segment de code nonconforme, mais le RPL ou CPL est suprieur au DPL. Le registre DS, ES, FS ou GS est charg et le segment ne pointe pas sur un segment de donnes ou un segment de code en lecture. Le registre DS, ES, FS ou GS n'est pas
#NP(Slecteur)
551
charg avec une valeur non-nulle. Une faute de page rsultat de l'excution de l'instruction Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Le registre SS est charg avec un slecteur nonnulle et le segment est marqu non prsent. Une tentative de chargement dans le registre CS. Le registre DR4 ou DR5 est rfrenc quand le bit d'extensions de dboguage (DE) du
#PF(Faute de page)
#SS(Pile)
#SS(Slecteur)
#UD(Opcode invalide)
552
registre CR4 est fix. Un registre de dboguage illgale (DR8 DR15) est rfrenc. Un registre de contrle illgale est rfrenc (CR1, CR6 CR7, CR8 CR15). L'utilisation d'un prfixe de verroue LOCK en lecture du registre CR8 n'est pas support, comme indiqu par le bit 4 du registre ECX de la fonction 8000_0001h de l'instruction CPUID.
#UD(Instruction invalide)
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86
553
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 820 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 411 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 156. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 713 724.
554
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVAPD
Move Aligned Packed Double-Precision Floating-Point Values
Syntaxe
MOVAPD destination, source
Description Cette instruction permet de copier le contenu de 2 paquets aligns de valeurs rel de double prcision.
Algorithme
destination source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu de 2 paquets aligns de valeurs rel de double prcision. Cette instruction permet de copier le contenu de 2 paquets aligns de valeurs rel de double prcision.
Rfrences
555
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 725 728.
556
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVAPS
Move Aligned Four Packed Single
Syntaxe
MOVAPS dest,source
Description Cette instruction permet de copier le contenu de 4 paquets aligns de valeurs rel de simple prcision (4 x 32 bits).
Algorithme
dest source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu de 4 paquets aligns de valeurs rel de simple prcision (4 x 32 bits). Cette instruction permet de copier le contenu de 4 paquets aligns de valeurs rel de simple prcision (4 x 32 bits).
MOVAPS xmm1,xmm2/m128
0Fh 28h /r
MOVAPS xmm2/m128,xmm1
0Fh 29h /r
557
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 729 731.
558
Assembleur 80x86
SSE4.2+
MOVBE
Move Data After Swapping Bytes
Syntaxe
MOVBE dest,source
Description Cette instruction permet d'effectuer l'change des octets lors de l'opration de copiage de l'oprande source dans l'oprande de destination.
Algorithme
SI taille de l'oprande = 16 bits ALORS dest(7..0) source(15..8) dest(15..8) source(7..0) SINON SI taille de l'oprande = 32 bits ALORS dest(7..0) source(31..24) dest(15..8) source(23..16) dest(23..16) source(15..8) dest(31..23) source(7..0) SINON SI taille de l'oprande = 64 bits ALORS dest(7..0) source(63..56) dest(15..8) source(55..48) dest(23..16) source(47..40) dest(31..24) source(39..32) dest(39..32) source(31..24) dest(47..40) source(23..16) dest(55..48) source(15..8) dest(63..56) source(7..0) FIN SI
559
Mnmonique
Instruction Opcode Description Cette instruction permet d'inverser l'ordre des octets d'un emplacement mmoire 16 bits lors de son copiage dans un registre 16 bits. Cette instruction permet d'inverser l'ordre des octets d'un emplacement mmoire 32 bits lors de son copiage dans un registre 32 bits.
Cette instruction permet d'inverser l'ordre des octets d'un emplacement (REX.W) 0Fh 38h F0h /r mmoire 64 bits lors de son copiage dans un registre 64 bits. Cette instruction permet d'inverser l'ordre des octets d'un registre 16 bits lors de son copiage dans un emplacement mmoire 16 bits. Cette instruction permet d'inverser l'ordre des octets d'un registre 32 bits lors de son copiage dans un emplacement mmoire 32 bits.
Cette instruction permet d'inverser l'ordre des octets d'un registre 64 bits (REX.W) 0Fh 38h F1h /r lors de son copiage dans un emplacement mmoire 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
560
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 732 734.
561
Assembleur 80x86
INTEL Pentium MMX+
MOVD
Move Doubleword or Quadword
Syntaxe
MOVD dest, source
Description Cette instruction permet de copier l'oprande dans un registre XMM ou vice-vera.
Algorithme
SI l'oprande de destination est un registre MMX ALORS dest(31..0) source dest(63..32) 00000000h SINON dest(31..0) source dest(127..32) 000000000000000000000000h FIN SI SI l'oprande source est un registre MMX ou XXM ALORS dest source(31..0) FIN SI
Mnmonique
Instruction Opcode Description Copie une valeur 32 bits de l'emplacement mmoire ou registre 32 bits dans un registre XMM.
562
Copie une valeur 64 bits de l'emplacement mmoire ou registre 64 bits dans un registre XMM. Copie une valeur 32 bits du registre XMM dans l'emplacement mmoire ou registre 32 bits. Copie une valeur 64 bits du registre XMM dans l'emplacement mmoire ou registre 64 bits. Copie une valeur 32 bits de l'emplacement mmoire ou registre 32 bits dans le registre MMX Copie une valeur 64 bits de l'emplacement mmoire ou registre 64 bits dans le registre MMX Copie une valeur 32 bits du registre MMX dans l'emplacement mmoire ou registre 32 bits Copie une valeur 64 bits du registre MMX dans l'emplacement mmoire ou registre 64 bits
0Fh 6Eh /r
0Fh 6Eh /r
0Fh 7Eh /r
0Fh 7Eh /r
Exceptions
Message #UD(Opcode invalide) Mode rel X Virtuel 8086 X Mode protg X Description Cette instruction n'est pas support, comme indiqu par le
563
bit 23 du registre EDX de la fonction 0000_00001h de l'instruction CPUID. X X X Les ensembles d'instructions SSE2 ne sont pas support, comme indiqu par le bit 26 du registre EDX de la fonction 0000_0001h de l'instruction CPUID. Le bit d'mulation (EM) du registre CR0 est fix 1. L'instruction utilise les registres XMM avec le registre CR4.OSFXSR=0. Le bit d'changeur de tche (TS) du registre CR0 est fix 1. Une adresse
#SS(Pile)
564
mmoire dpasse la limite du segment de pile ou n'est pas canonique #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Une faute de page rsultat de l'excution de l'instruction Un exception de nombre rel x87 s'est produite et l'instruction rfrence un registre MMX. Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
565
Voir Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 735 737.
566
Assembleur 80x86
INTEL Pentium 4 (SSE3)+
MOVDDUP
Move One Double-FP and Duplicate
Syntaxe
MOVDDUP destination, source
Description Cette instruction permet de copier les 64 bits d'une oprande dans la partie basse et haute d'une oprande de 128 bits.
Algorithme
destination(0..63) source(0..63) destination(64..127) source(0..63)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier les 64 bits d'une oprande dans la partie basse et haute d'une oprande de 128 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 738 741.
567
568
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVDQ2Q
Move Quadword from XMM to MMX Technology Register
Syntaxe
MOVDQ2Q destination, source
Description Cette instruction permet de copier la partie basse d'un quadruple mots d'un oprande source vers un oprande de destination.
Algorithme
destination source(0..63)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier la partie basse d'un quadruple mots d'un oprande source vers un oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 748 749.
569
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVDQA
Move Aligned Double Quadword
Syntaxe
MOVDQA destination, source
Description Cette instruction permet de copier un double quadruple mots d'un oprande source vers un oprande de destination.
Algorithme
destination source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un double quadruple mots d'un oprande source vers un oprande de destination. Cette instruction permet de copier un double quadruple mots d'un oprande source vers un oprande de destination.
Rfrences
570
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 742 744.
571
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVDQU
Move Unaligned Double Quadword
Syntaxe
MOVDQU destination, source
Description Cette instruction permet de copier un double quadruple mots dsalign d'un oprande source vers un oprande de destination.
Algorithme
destination source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un double quadruple mots dsalign d'un oprande source vers un oprande de destination. Cette instruction permet de copier un double quadruple mots dsalign d'un oprande source vers un oprande de destination.
Rfrences
572
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 745 747.
573
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVHLPS
Move High to Low Packed Single
Syntaxe
MOVHLPS dest,source
Description Cette instruction permet de copier le contenu du haut d'un paquet de valeurs rel de simple prcision dans sa partie basse.
Algorithme
dest(63..32) source(127..96) dest(31..0) source(95..64)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu du haut d'un paquet de valeurs rel de simple prcision dans sa partie basse.
MOVHLPS xmm1,xmm2
0Fh 12h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
574
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 750 751.
575
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVHPD
Move High Packed Double-Precision FloatingPoint Value
Syntaxe
MOVHPD destination, source
Description Cette instruction permet de copier le contenu du haut de deux paquets de valeurs rel de double prcision dans une oprande de destination.
Algorithme
destination(64..127) source destination source(64..127)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu du haut de deux paquets de valeurs rel de double prcision dans une oprande de destination. Cette instruction permet de copier le contenu du haut de deux paquets de valeurs rel de double prcision dans une oprande de destination.
66 0F 16 /r
576
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 752 753.
577
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVHPS
Move High Packed Single-Precision FloatingPoint Values
Syntaxe
MOVHPS dest,source
Description Cette instruction permet de copier le contenu du haut de deux paquets de valeurs rel de simple prcision dans une oprande de destination.
Algorithme
SI dest est mmoire 64 bits ALORS dest(63..32) source(127..96) dest(31..0) source(95..64) FIN SI SI source est mmoire 64 bits ALORS dest(127..96) source(63..32) dest(95..64) source(31..0) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu du haut de deux paquets de valeurs rel de simple prcision dans
MOVHPS xmm,m64
0Fh 16h /r
578
une oprande de destination. Cette instruction permet de copier le contenu du haut de deux paquets de valeurs rel de simple prcision dans une oprande de destination.
MOVHPS m64,xmm
0Fh 17h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 754 757.
579
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVLHPS
Move Low to High Packed Single
Syntaxe
MOVLHPS dest,source
Description Cette instruction permet de copier le contenu du bas d'un paquet de valeurs rel de simple prcision dans sa partie haute.
Algorithme
dest(127..96) source(63..32) dest(95..64) source(31..0)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu du bas d'un paquet de valeurs rel de simple prcision dans sa partie haute.
MOVLHPS xmm1,xmm2
0Fh 16h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
580
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 758 759.
581
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVLPD
Move Low Packed Double-Precision FloatingPoint Value
Syntaxe
MOVLPD destination, source
Description Cette instruction permet de copier le contenu du bas de deux paquets de valeurs rel de double prcision dans un oprande de destination.
Algorithme
SI IsXMM(Destination) ALORS destination(0..63) source SINON destination source(0..63) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu du bas de deux paquets de valeurs rel de double prcision dans un oprande de destination. Cette instruction permet de copier le contenu du bas de deux paquets de valeurs rel de double prcision dans
582
un oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 760 762.
583
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVLPS
Move Low Packed Single-Precision FloatingPoint Values
Syntaxe
MOVLPS dest,source
Description Cette instruction permet de copier le contenu du bas de deux paquets de valeurs rel de simple prcision dans une oprande de destination.
Algorithme
dest(63..32) source(63..32) dest(31..0) source(31..0)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu du bas de deux paquets de valeurs rel de simple prcision dans une oprande de destination. Cette instruction permet de copier le contenu du bas de deux paquets de valeurs rel de simple prcision dans une oprande de destination.
MOVLPS xmm,m64
0Fh 12h /r
MOVLPS m64,xmm
0Fh 13h /r
584
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 763 765.
585
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVMSKPD
Extract Packed Double-Precision Floating-Point Sign Mask
Syntaxe
MOVMSKPD registres32, registrexmm
Description Cette instruction permet de copier les bits de signes de deux paquets de valeurs rels de double prcision d'un registre XMM dans les 2 bits les plus bas d'un registre 32 bits. Les autres bits du registres 32 bits sont fixs 0.
Algorithme
registres32(0) registrexmm(63) registres32(1) registrexmm(127) registres32(3..2) 00b registres32(31..4) 0000000h
Mnmonique
Instruction Opcode Description Copie les bits de signe 127 et 63 d'un registre XMM dans un registre 32 bits spcifi.
Exceptions
586
Mode rel X
Virtuel 8086 X
Mode protg X
Description Les ensembles d'instructions SSE2 ne sont pas support, comme indiqu par le bit 26 du registre EDX de la fonction 0000_0001h de l'instruction CPUID. Le bit de support du systme d'exploitation FXSAVE et FXRSTOR (OSFXSR) du registre CR4 sont effacs 0. Le bit d'mulation (EM) du registre CR0 est fix 1. Le bit d'changeur de tche (TS) du registre CR0 est fix 1.
587
galement MOVMSKPS
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 766 767.
588
Assembleur 80x86
INTEL Pentium 3 (SSE)+
MOVMSKPS
Extract Packed Single-Precision Floating-Point Sign Mask
Syntaxe
MOVMSKPS registres32, registrexmm
Description Cette instruction permet de copier les bits de signes de quatre paquets de valeurs rels de simple prcision d'un registre XMM dans les 4 bits les plus bas d'un registre 32 bits. Les autres bits du registres 32 bits sont fixs 0.
Algorithme
registres32(0) registrexmm(31) registres32(1) registrexmm(63) registres32(1) registrexmm(95) registres32(1) registrexmm(127) registres32(31..4) 000000h
Mnmonique
Instruction Opcode Description Copie les bits de signe 127, 95, 63 et 31 du registre XMM au registre 32 bits spcifi.
0Fh 50h /r
Exceptions
589
Mode rel X
Virtuel 8086 X
Mode protg X
Description Les ensembles d'instructions SSE2 ne sont pas support, comme indiqu par le bit 26 du registre EDX de la fonction 0000_0001h de l'instruction CPUID. Le bit de support du systme d'exploitation FXSAVE et FXRSTOR (OSFXSR) du registre CR4 sont effacs 0. Le bit d'mulation (EM) du registre CR0 est fix 1. Le bit d'changeur de tche (TS) du registre CR0 est fix 1.
590
galement MOVMSKPD
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 768 768.
591
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVNTI
Move Non-Temporal Doubleword or Quadword
Syntaxe
MOVNTI memoire, registre
Description Cette instruction permet de copier une valeur 32 ou 64 bits dans un emplacement mmoire afin de minimiser la pollution du cache dans un processus lger.
Algorithme
memoire registre
Mnmonique
Instruction Opcode Description Entrepose une valeur de registre 32 bits spcifi dans un emplacement mmoire en minimisant la pollution du systme de cache. Entrepose une valeur de registre 64 bits spcifi dans un emplacement mmoire en minimisant la pollution du systme de cache.
0Fh C3h /r
0Fh C3h /r
Exceptions
592
Message
Mode rel
Virtuel 8086 X
Mode protg X
Description Les ensembles d'instructions SSE2 ne sont pas support, comme indiqu par le bit 26 du registre EDX de la fonction 0000_0001h de l'instruction CPUID. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment
#UD(Opcode invalide) X
#SS(Pile)
#GP(Protection gnral)
593
de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 776 778.
594
Assembleur 80x86
SSE4.1+
MOVNTDQ
Store Double Quadword Using Non-Temporal Hint
Syntaxe
MOVNTDQ destination, source
Description Cette instruction permet de copier le contenu de double quadruple mots d'un oprande source vers un oprande de destination sans utiliser la mthode temporel pour minimiser la pollution du cache.
Algorithme
destination source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu de double quadruple mots d'un oprande source vers un oprande de destination sans utiliser la mthode temporel pour minimiser la pollution du cache.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
595
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 773 775.
596
Assembleur 80x86
SSE4.1+
MOVNTDQA
Load Double Quadword Non-Temporal Aligned Hint
Syntaxe
MOVNTDQA dest,source
Description Cette instruction permet de copier le contenu align de double quadruple mots d'un oprande source vers un oprande de destination sans utiliser la mthode temporel pour minimiser la pollution du cache.
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu align de double quadruple mots d'un oprande source vers un oprande de destination sans utiliser la mthode temporel pour minimiser la pollution du cache.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 770 772.
597
Assembleur 80x86
SSE4.1+
MOVNTPD
Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint
Syntaxe
MOVNTPD destination, source
Description Cette instruction permet de copier le contenu de valeur rel de double prcision d'un oprande source vers un oprande de destination sans utiliser la mthode temporel pour minimiser la pollution du cache.
Algorithme
destination source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu de valeur rel de double prcision d'un oprande source vers un oprande de destination sans utiliser la mthode temporel pour minimiser la pollution du cache.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
598
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 778 780.
599
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVNTPS
Move Aligned Four Packed Single-FP Non Temporal
Syntaxe
MOVNTPS dest,source
Description Cette instruction permet de copier le contenu de 4 paquets aligns de valeurs rel de simple prcision sans utiliser la mthode temporel pour minimiser la pollution du cache.
Algorithme
dest source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu de 4 paquets aligns de valeurs rel de simple prcision sans utiliser la mthode temporel pour minimiser la pollution du cache.
MOVNTPS m128,xmm
0Fh 2Bh /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
600
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 781 783.
601
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVNTQ
Move Quadword Non-Temporal
Syntaxe
MOVNTQ dest,source
Description Cette instruction permet de copier une valeur 64 bits sans utiliser la mthode temporel pour minimiser la pollution du cache.
Algorithme
dest source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier une valeur 64 bits sans utiliser la mthode temporel pour minimiser la pollution du cache.
MOVNTQ m64,mm
0Fh E7h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 741 786.
602
Assembleur 80x86
INTEL Pentium MMX+
MOVQ
Move Quadword
Syntaxe
MOVQ destination, source
Description Cette instruction permet de copier un quadruple mot d'une oprande source vers une oprande destination dans le cas des registres XMM.
Algorithme
destination source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un quadruple mot d'une oprande source vers une oprande destination dans le cas des registres XMM. Cette instruction permet de copier un quadruple mot d'une oprande source vers une oprande destination dans le cas des registres XMM. Cette instruction permet de copier un quadruple mot d'une oprande
0Fh 6Fh /r
MOVQ mm/m64, mm
0Fh 7Fh /r
603
source vers une oprande destination dans le cas des registres XMM. Cette instruction permet de copier un quadruple mot d'une oprande source vers une oprande destination dans le cas des registres XMM.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 735 737.
604
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVQ2DQ
Move Quadword from MMX Technology to XMM Register
Syntaxe
MOVQ2DQ destination, source
Description Cette instruction permet de copier un quadruple mot d'un oprande source vers la partie basse d'un oprande destination dans le cas des registres XMM.
Algorithme
destination(0..63) source(0..63) destination(64..127) 0
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un quadruple mot d'un oprande source vers la partie basse d'un oprande destination dans le cas des registres XMM.
MOVQ2DQ xmm, mm
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
605
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 789 791.
606
Syntaxe
MOVS oprandecible,oprandesource
Description Cette instruction permet de copier un lment de l'adresse DS:SI dans l'adresse ES:DI et incrmente/dcrmente les registres DI et SI en fonction de la taille de l'oprande source et de l'tat du drapeau de direction.
Algorithme
oprandecible oprandesource SI oprande est un octet ALORS SI DF = 0 ALORS (E)SI (E)SI + 1 (E)DI (E)DI + 1 SINON (E)SI (E)SI - 1 (E)DI (E)DI - 1 FIN SI SINON SI oprande est un mot ALORS SI DF = 0 ALORS (E)SI (E)SI + 2 (E)DI (E)DI + 2 SINON (E)SI (E)SI - 2 (E)DI (E)DI - 2 FIN SI SINON SI oprande est un double mot ALORS SI DF = 0 ALORS (E)SI (E)SI + 4 (E)DI (E)DI + 4
607
SINON (E)SI (E)SI - 4 (E)DI (E)DI - 4 FIN SI SINON SI DF = 0 ALORS (E)SI (E)SI + 8 (E)DI (E)DI + 8 SINON (E)SI (E)SI - 8 (E)DI (E)DI - 8 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Copie l'octet de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI. Copie le mot de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI. Copie le double mot de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI. Copie le double mot de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI.
A4h
A5h
A5h
A5h
Exceptions
608
Message
Mode rel
Virtuel 8086
Mode protg
Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie
609
l'alignement)
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 821 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 411 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 168. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 792 796.
610
Syntaxe
MOVSB
Description Cette instruction permet de copier un octet de l'adresse DS:SI dans l'adresse ES:DI et incrmente/dcrmente les registres DI et SI de 1 en fonction de l'tat du drapeau de direction.
Algorithme
oprandecible oprandesource SI DF = 0 ALORS (E)SI (E)SI + 1 (E)DI (E)DI + 1 SINON (E)SI (E)SI - 1 (E)DI (E)DI - 1 FIN SI
Mnmonique
Instruction Opcode Description Copie l'octet de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI.
MOVSB
A4h
Exceptions
611
Message
Mode rel
Virtuel 8086
Mode protg
Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie
612
l'alignement)
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 821 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 168. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 792 796.
613
Syntaxe
MOVSD
Description Cette instruction permet de copier un double mot de l'adresse DS:SI dans l'adresse ES:DI et incrmente/dcrmente les registres DI et SI de 4 en fonction de l'tat du drapeau de direction.
Algorithme
oprandecible oprandesource SI DF = 0 ALORS (E)SI (E)SI + 4 (E)DI (E)DI + 4 SINON (E)SI (E)SI - 4 (E)DI (E)DI - 4 FIN SI
Mnmonique
Instruction Opcode Description Copie le double mot de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI.
MOVSD
A5h
Exceptions
614
Message
Mode rel
Virtuel 8086
Mode protg
Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie
615
l'alignement)
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 822 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 168. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 792 796.
616
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVSD
Move Scalar Double-Precision Floating-Point Value
Syntaxe
MOVSD dest,source
Description Cette instruction permet de copier un scalaire de valeur de double prcision d'un oprande source vers un oprande destination.
Algorithme
dest(63..0) source(63..0)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un scalaire de valeur de double prcision d'un oprande source vers un oprande destination. Cette instruction permet de copier un scalaire de valeur de double prcision d'un oprande source vers un oprande destination.
MOVSD xmm1,xmm2/m64
MOVSD xmm2/m64,xmm1
Rfrences
617
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 797 799.
618
Assembleur 80x86
SSE4.1+
MOVSHDUP
Move Packed Single-Float Point High and Duplicate
Syntaxe
MOVSHDUP destination, source
Description Cette instruction permet de copier la partie du haut de 32 bits d'une valeur 64 bits dans sa partie basse et haute d'une valeur rel de simple prcision de 64 bits contenu dans un paquet de 128 bits.
Algorithme
destination(0..31) source(32..63) destination(32..63) source(32..63) destination(64..95) source(96..127) destination(96..127) source(96..127)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier la partie du haut de 32 bits d'une valeur 64 bits dans sa partie basse et haute d'une valeur rel de simple prcision de 64 bits contenu dans un paquet de 128 bits.
619
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 800 802.
620
Assembleur 80x86
SSE4.1+
MOVSLDUP
Move Packed Single-Float Point Low and Duplicate
Syntaxe
MOVSLDUP destination, source
Description Cette instruction permet de copier la partie du basse de 32 bits d'une valeur 64 bits dans sa partie basse et haute d'une valeur rel de simple prcision de 64 bits contenu dans un paquet de 128 bits.
Algorithme
destination(0..31) source(0..31) destination(32..63) source(0..31) destination(64..95) source(64..95) destination(96..127) source(64..95)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier la partie du basse de 32 bits d'une valeur 64 bits dans sa partie basse et haute d'une valeur rel de simple prcision de 64 bits contenu dans un paquet de 128 bits.
621
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 803 805.
622
Assembleur 80x86
x86-64+
MOVSQ
Move String Quadword
Syntaxe
MOVSQ
Description Cette instruction permet de copier un quadruple mot de l'adresse DS:(R)SI dans l'adresse ES:(R)DI et incrmente/dcrmente les registres (R)DI et (R)SI de 8 en fonction de l'tat du drapeau de direction.
Algorithme
oprandecible oprandesource SI DF = 0 ALORS (E)SI (E)SI + 8 (E)DI (E)DI + 8 SINON (E)SI (E)SI - 8 (E)DI (E)DI - 8 FIN SI
Mnmonique
Instruction Opcode Description Copie le double mot de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI.
MOVSQ
A5h
623
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
624
#AC(Vrifie l'alignement)
Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 792 796.
625
Assembleur 80x86
INTEL Pentium MMX+
MOVSS
Move Scalar Single-Precision Floating-Point Values
Syntaxe
MOVSS destination, source
Description Cette instruction permet de copier une valeur rel de simple prcision d'une oprande source vers une oprande de destination.
Algorithme
destination(31..0) source(31..0)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier une valeur rel de simple prcision d'une oprande source vers une oprande de destination. Cette instruction permet de copier une valeur rel de simple prcision d'une oprande source vers une oprande de destination.
MOVSS xmm1,xmm2/m32
MOVSS xmm2/m32,xmm1
Rfrences
626
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 806 808.
627
Syntaxe
MOVSW
Description Cette instruction permet de copier un mot de l'adresse DS:SI dans l'adresse ES:DI et incrmente/dcrmente les registres DI et SI de 2 en fonction de l'tat du drapeau de direction.
Algorithme
oprandecible oprandesource SI DF = 0 ALORS (E)SI (E)SI + 2 (E)DI (E)DI + 2 SINON (E)SI (E)SI - 2 (E)DI (E)DI - 2 FIN SI
Mnmonique
Instruction Opcode Description Copie le mot de DS:(R)SI ES:(R)DI, et alors incrmente ou dcrment le registre (R)SI et (R)DI.
MOVSW
A5h
Exceptions
628
Message
Mode rel
Virtuel 8086
Mode protg
Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie
629
l'alignement)
de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 822 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 168. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 792 796.
630
Assembleur 80x86
INTEL 80386+
MOVSX
Move with Sign-Extension
Syntaxe
MOVSX operandedestination, operandesource
Description Cette instruction permet de copier un registre de taille infrieur dans un registre de plus grande taille en remplissant les bits supplmentaires par des 1.
Algorithme
SI taille de l'oprande source = 8 bits ALORS SI taille de l'oprande destinataire = 16 bits ALORS operandedestination(15..8) FFh operandedestination(7..0) operandesource SINON operandedestination(31..8) FFFFFFh operandedestination(7..0) operandesource FIN SI SINON operandedestination(31..16) FFFFh operandedestination(15..0) operandesource FIN SI
Mnmonique
Instruction MOVSX reg16, reg/mem8 Opcode 0Fh BEh /r Description Copie le contenu du registre ou d'un emplacement mmoire 8 bits dans un 631
registre 16 bits avec un extension des signes. Copie le contenu du registre ou d'un emplacement mmoire 8 bits dans un registre 32 bits avec un extension des signes. Copie le contenu du registre ou d'un emplacement mmoire 8 bits dans un registre 64 bits avec un extension des signes. Copie le contenu du registre ou d'un emplacement mmoire 16 bits dans un registre 32 bits avec un extension des signes. Copie le contenu du registre ou d'un emplacement mmoire 16 bits dans un registre 64 bits avec un extension des signes.
0Fh BEh /r
0Fh BEh /r
0Fh BFh /r
0Fh BFh /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la
#SS(Pile)
#GP(Protection gnral)
632
limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Rfrences assembleur assembleur 80x86 80x86 Instruction Instruction
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 809 811.
633
Assembleur 80x86
x86-64+
MOVSXD
Move with Sign-Extend Doubleword
Syntaxe
MOVSXD registres64, source
Description Cette instruction permet de copier un registre de taille infrieur dans un registre 64 bits en remplissant les bits supplmentaires par des 1.
Algorithme
SI taille de l'oprande source = 8 bits ALORS operandedestination(63..8) FFFFFFFFFFFFFFh operandedestination(7..0) operandesource SINON SI taille de l'oprande source = 16 bits ALORS operandedestination(63..16) FFFFFFFFFFFFh operandedestination(15..0) operandesource SINON SI taille de l'oprande source = 32 bits ALORS operandedestination(63..32) FFFFFFFFh operandedestination(31..0) operandesource FIN SI
Mnmonique
Instruction Opcode Description Copie le contenu du registre ou d'un emplacement mmoire 32 bits dans un registre 64 bits avec un extension
63h /r
634
des signes.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
635
Voir Instruction Instruction Rfrences assembleur assembleur 80x86 80x86 Instruction Instruction
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 809 811.
636
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MOVUPD
Move Unaligned Packed Double-Precision Floating-Point Values
Syntaxe
MOVUPD destination, source
Description Cette instruction permet de copier le contenu de 2 paquets dsaligns de valeurs rel de double prcision.
Algorithme
destination source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu de 2 paquets dsaligns de valeurs rel de double prcision. Cette instruction permet de copier le contenu de 2 paquets dsaligns de valeurs rel de double prcision.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
637
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 812 814.
638
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MOVUPS
Move Unaligned Packed Double-Precision Floating-Point Values
Syntaxe
MOVUPS dest,source
Description Cette instruction permet de copier le contenu de 4 paquets dsaligns de valeurs rel de simple prcision (4 x 32 bits).
Algorithme
dest source
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le contenu de 4 paquets dsaligns de valeurs rel de simple prcision (4 x 32 bits). Cette instruction permet de copier le contenu de 4 paquets dsaligns de valeurs rel de simple prcision (4 x 32 bits).
MOVUPS xmm1,xmm2/m128
0Fh 10h /r
MOVUPS xmm2/m128,xmm1
0Fh 11h /r
639
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 815 817.
640
Assembleur 80x86
INTEL 80386+
MOVZX
Move with Zero-Extend
Syntaxe
MOVZX operandedestination, operandesource
Description Cette instruction permet de copier un registre de taille infrieur dans un registre de plus grande taille en remplissant les bits supplmentaires par des 0.
Algorithme
SI taille de l'oprande source = 8 bits ALORS SI taille de l'oprande destinataire = 16 bits ALORS operandedestination(15..8) 00h operandedestination(7..0) operandesource SINON operandedestination(31..8) 000000h operandedestination(7..0) operandesource FIN SI SINON operandedestination(31..16) 0000h operandedestination(15..0) operandesource FIN SI
Mnmonique
Instruction MOVZX reg16, reg/mem8 Opcode 0Fh B6h /r Description Copie le contenu d'une oprande de registre ou d'un emplacement 641
mmoire 8 bits dans un registre 16 bits avec un extension des zros. Copie le contenu d'une oprande de registre ou d'un emplacement mmoire 8 bits dans un registre 32 bits avec un extension des zros. Copie le contenu d'une oprande de registre ou d'un emplacement mmoire 8 bits dans un registre 64 bits avec un extension des zros. Copie le contenu d'une oprande de registre ou d'un emplacement mmoire 16 bits dans un registre 32 bits avec un extension des zros. Copie le contenu d'une oprande de registre ou d'un emplacement mmoire 16 bits dans un registre 64 bits avec un extension des zros.
0Fh B6h /r
0Fh B6h /r
0Fh B7h /r
0Fh B7h /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la
#SS(Pile noncanonique)
#GP(Protection gnral)
642
limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Rfrences assembleur assembleur 80x86 80x86 Instruction Instruction
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 818 819.
643
Assembleur 80x86
SSE4.1
MPSADBW
Compute Multiple Packed Sums of Absolute Difference
Syntaxe
MPSADBW dest,source,immediat
Description Cette instruction permet d'effectuer le calcul de la somme de la diffrence absolue (SAD) d'une paire d'octets d'un groupe de 4 octets paires et produit 8 rsultats SAD entrepos dans 8 entier contenu dans l'oprande de destination.
Algorithme
SRC_OFFSET immediat(1..0) x 32 DEST_OFFSET immediat(2) x 32 DEST_BYTE0 dest[DEST_OFFSET+7..DEST_OFFSET] DEST_BYTE1 dest[DEST_OFFSET+15..DEST_OFFSET+8] DEST_BYTE2 dest[DEST_OFFSET+23..DEST_OFFSET+16] DEST_BYTE3 dest[DEST_OFFSET+31..DEST_OFFSET+24] DEST_BYTE4 dest[DEST_OFFSET+39..DEST_OFFSET+32] DEST_BYTE5 dest[DEST_OFFSET+47..DEST_OFFSET+40] DEST_BYTE6 dest[DEST_OFFSET+55..DEST_OFFSET+48] DEST_BYTE7 dest[DEST_OFFSET+63..DEST_OFFSET+56] DEST_BYTE8 dest[DEST_OFFSET+71..DEST_OFFSET+64] DEST_BYTE9 dest[DEST_OFFSET+79..DEST_OFFSET+72] DEST_BYTE10 dest[DEST_OFFSET+87..DEST_OFFSET+80] SRC_BYTE0 source[SRC_OFFSET+7..SRC_OFFSET] SRC_BYTE1 source[SRC_OFFSET+15..SRC_OFFSET+8] SRC_BYTE2 source[SRC_OFFSET+23..SRC_OFFSET+16] SRC_BYTE3 source[SRC_OFFSET+31..SRC_OFFSET+24] TEMP0 | DEST_BYTE0 - SRC_BYTE0 |
644
TEMP1 | DEST_BYTE1 - SRC_BYTE1 | TEMP2 | DEST_BYTE2 - SRC_BYTE2 | TEMP3 | DEST_BYTE3 - SRC_BYTE3 | dest(15..0) TEMP0 + TEMP1 + TEMP2 + TEMP3 TEMP0 | DEST_BYTE1 - SRC_BYTE0 | TEMP1 | DEST_BYTE2 - SRC_BYTE1 | TEMP2 | DEST_BYTE3 - SRC_BYTE2 | TEMP3 | DEST_BYTE4 - SRC_BYTE3 | dest(31..16) TEMP0 + TEMP1 + TEMP2 + TEMP3 TEMP0 | DEST_BYTE2 - SRC_BYTE0 | TEMP1 | DEST_BYTE3 - SRC_BYTE1 | TEMP2 | DEST_BYTE4 - SRC_BYTE2 | TEMP3 | DEST_BYTE5 - SRC_BYTE3 | dest(47..32) TEMP0 + TEMP1 + TEMP2 + TEMP3 TEMP0 | DEST_BYTE3 - SRC_BYTE0 | TEMP1 | DEST_BYTE4 - SRC_BYTE1 | TEMP2 | DEST_BYTE5 - SRC_BYTE2 | TEMP3 | DEST_BYTE6 - SRC_BYTE3 | dest(63..48) TEMP0 + TEMP1 + TEMP2 + TEMP3 TEMP0 | DEST_BYTE4 - SRC_BYTE0 | TEMP1 | DEST_BYTE5 - SRC_BYTE1 | TEMP2 | DEST_BYTE6 - SRC_BYTE2 | TEMP3 | DEST_BYTE7 - SRC_BYTE3 | dest(79..64) TEMP0 + TEMP1 + TEMP2 + TEMP3 TEMP0 | DEST_BYTE5 - SRC_BYTE0 | TEMP1 | DEST_BYTE6 - SRC_BYTE1 | TEMP2 | DEST_BYTE7 - SRC_BYTE2 | TEMP3 | DEST_BYTE8 - SRC_BYTE3 | dest(95..80) TEMP0 + TEMP1 + TEMP2 + TEMP3 TEMP0 | DEST_BYTE6 - SRC_BYTE0 | TEMP1 | DEST_BYTE7 - SRC_BYTE1 | TEMP2 | DEST_BYTE8 - SRC_BYTE2 | TEMP3 | DEST_BYTE9 - SRC_BYTE3 | dest(111..96) TEMP0 + TEMP1 + TEMP2 + TEMP3 TEMP0 | DEST_BYTE7 - SRC_BYTE0 | TEMP1 | DEST_BYTE8 - SRC_BYTE1 | TEMP2 | DEST_BYTE9 - SRC_BYTE2 | TEMP3 | DEST_BYTE10 - SRC_BYTE3 | dest(127..112) TEMP0 + TEMP1 + TEMP2 + TEMP3
645
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le calcul de la somme de la diffrence absolue (SAD) d'une paire d'octets d'un groupe de 4 octets paires et produit 8 rsultats SAD entrepos dans 8 entier contenu dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 820 823.
646
MUL Multiplication
Syntaxe
MUL Oprande
Description Cette instruction permet d'effectuer une multiplication non-signe (nombre naturel). Le multiplicateur est implicite; il est ajuster en fonction de la taille de la base. Le produit est toujours plus grand que le multiplicateur. Le type de multiplication dtermine quel registre l'instruction utilisera:
Taille Octet Mot Base Multiplicateur Rsultat AL AX Oprande Oprande Oprande AX DX:AX EDX:EAX
Algorithme
SI Nombre d'oprande = 1 ALORS SI Taille de l'oprande en bits = 8 ALORS AX AL x Oprande SI (AH = 00h) OU (AH = FFh) ALORS CF 0 OF 0 SINON CF 1 OF 1 FIN SI SINON SI Taille de l'oprande en bits = 16 ALORS 647
DX:AX AX x Oprande SI (DX = 0000h) OU (DX = FFFFh) ALORS CF 0 OF 0 SINON CF 1 OF 1 FIN SI SINON EDX:EAX EAX x Oprande SI ((EDX = 00000000h) OU (EDX = FFFFFFFFh)) ALORS CF 0 OF 0 SINON CF 1 OF 1 FIN SI FIN SI SINON SI Nombre d'oprande = 2 ALORS temp dest x src dest dest x src SI temp = dest ALORS CF 1 OF 1 SINON CF 0 OF 0 FIN SI SINON temp dest x src dest dest x src SI temp = dest ALORS CF 1 OF 1 SINON CF 0 OF 0 FIN SI FIN SI FIN SI
648
Mnmonique
Instruction Opcode Description Multiple l'oprande mmoire ou registre 8 bits par le contenu du registre AL et entrepose le rsultat dans le registre AX. Multiple l'oprande mmoire ou registre 16 bits par le contenu du registre AX et entrepose le rsultat dans le registre DX:AX. Multiple l'oprande mmoire ou registre 32 bits par le contenu du registre EAX et entrepose le rsultat dans le registre EDX:EAX. Multiple l'oprande mmoire ou registre 64 bits par le contenu du registre RAX et entrepose le rsultat dans le registre RDX:RAX.
MUL reg/mem8
F6h /4
MUL reg/mem16
F7h /4
MUL reg/mem32
F7h /4
MUL reg/mem64
F7h /4
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire
#SS(Pile noncanonique)
#GP(Protection
649
gnral)
dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir
galement
Instruction assembleur 80x86 Instruction DIV Instruction assembleur 80x86 Instruction IMUL Langage de programmation - Assembleur et Pascal - Opration Mathmatique
Rfrences
650
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 822 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 411 412 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 173. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 824 826.
651
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MULPD
Multiply Packed Double-Precision FloatingPoint Values
Syntaxe
MULPD destination, source
Description Cette instruction permet d'effectuer la multiplication de chacune des paires de valeur de double prcision de l'oprande source et l'oprande de destination.
Algorithme
destination(0..63) destination(0..63) x source(0..63) destination(64..127) destination(64..127) x source(64..127)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la multiplication de chacune des paires de valeur de double prcision de l'oprande source et l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
652
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 827 829.
653
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MULPS
Packed Single-Precision Floating-Point Multiply
Syntaxe
MULPS dest,source
Description Cette instruction permet d'effectuer la multiplication de chacune des paires de valeur de l'oprande source et l'oprande de destination.
Algorithme
dest(31..0) dest(31..0) x source(31..0) dest(63..32) dest(63..32) x source(63..32) dest(95..64) dest(95..64) x source(95..64) dest(127..96) dest(127..96) x source(127..96)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la multiplication de chacune des paires de valeur de l'oprande source et l'oprande de destination.
MULPS xmm1,xmm2/m128
0Fh 59h /r
Rfrences
654
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 830 832.
655
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
MULSD
Multiply Scalar Double-Precision Floating-Point Values
Syntaxe
MULSD destination, source
Description Cette instruction permet d'effectuer la multiplication scalaire de valeurs rel de double prcision de l'oprande source et l'oprande de destination.
Algorithme
destination(0..63) destination(0..63) x source(0..63)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la multiplication scalaire de valeurs rel de double prcision de l'oprande source et l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 833 835.
656
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
MULSS
Scalar Single-FP Multiply
Syntaxe
MULSS dest,source
Description Cette instruction permet d'effectuer la multiplication scalaire de l'oprande source et l'oprande de destination.
Algorithme
dest(31..0) dest(31..0) x source(31..0)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la multiplication scalaire de l'oprande source et l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 836 838.
657
Assembleur 80x86
INTEL Pentium 4+
MWAIT
Monitor Wait
Syntaxe
MWAIT MWAIT EAX, ECX
Description 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 activits dans le noyau en le faisant.
Mnmonique
Instruction Opcode Description 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 activits dans le noyau en le faisant.
MWAIT
galement MONITOR
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A: Instruction
658
Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 839 842.
659
NEG Negation
Syntaxe
NEG registre NEG mmoire
Algorithme
SI DEST = 0 ALORS CF 0 SINON CF 1 FIN SI DEST - (DEST)
Mnmonique
Instruction Opcode Description Effectue une ngation de complments de 2 dans une oprande de registre ou mmoire 8 bits. Effectue une ngation de complments de 2 dans une oprande de registre ou mmoire 16 660
NEG reg/mem8
F6h /3
NEG reg/mem16
F7h /3
bits. Effectue une ngation de complments de 2 dans une oprande de registre ou mmoire 32 bits. Effectue une ngation de complments de 2 dans une oprande de registre ou mmoire 64 bits.
NEG reg/mem32
F7h /3
NEG reg/mem64
F7h /3
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable
#SS(Pile)
#GP(Protection gnral)
661
Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 823 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 412 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 175. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
662
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 10 12.
663
NOP No OPeration
Syntaxe
NOP
Description Cette instruction ne fait rien. Elle est utilis lors de dboguage ou pour crer des dlais d'attente artificielle sans affectation des registres du processeurs.
Mnmonique
Instruction NOP Opcode 90h Description Efface aucune opration
Exception Aucune
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 823 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 412 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 177. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 13 14.
664
NOT
Syntaxe
NOT registre NOT mmoire
Description Cette instruction permet d'inverser la valeur de chacun des bits d'une oprande.
Algorithme
dest ( dest)
Mnmonique
Instruction Opcode Description Complments les bits d'une oprande de registre ou mmoire 8 bits. Complments les bits d'une oprande de registre ou mmoire 16 bits. Complments les bits d'une oprande de registre ou mmoire 32 bits. Complments les bits d'une oprande de registre ou mmoire 64 bits.
NOT reg/mem8
F6h /2
NOT reg/mem16
F7h /2
NOT reg/mem32
F7h /2
NOT reg/mem64
F7h /2
665
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
666
#AC(Vrifie l'alignement)
Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 823 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 412 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 178. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 15 15.
667
Assembleur 80x86
Cyrix Cx6x86/AMD Am5k86
Syntaxe OIO
OIO
Official Undefined Opcode
Mnmonique Instruction OIO Opcode 0Fh FFh Description Cette instruction permet de provoquer l'excution d'un code indfinie.
668
Assembleur 80x86
INTEL 8088+
OR
Or bitwise
Syntaxe
OR Oprande Cible, Oprande Source
Description L'instruction OR effectue un OU BINAIRE sur les 2 oprandes spcifis, le calcul est plac dans la premire oprande, c'est--dire l'Oprande Cible. Rappelons qu'un OU BINAIRE donne le rsultat 1 si au moins une des 2 oprandes vaut 1 et donne 0 si les deux bits valent 0.
Algorithme
Oprande Cible Oprande Cible U Oprande Source drapeau CF 0 drapeau OF 0
Mnmonique
Instruction Opcode Description Effectue un Ou binaire du contenu du registre AL avec une valeur immdiate de 8 bits. Effectue un Ou binaire du contenu du registre AX avec une valeur immdiate de 16 bits.
OR AL, imm8
0Ch ib
OR AX, imm16
0Dh iw
669
OR EAX, imm32
0Dh id
Effectue un Ou binaire du contenu du registre EAX avec une valeur immdiate de 32 bits. Effectue un Ou binaire du contenu du registre RAX avec une valeur immdiate de 32 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 8 bits avec une valeur immdiate de 8 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 16 bits avec une valeur immdiate de 16 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 32 bits avec une valeur immdiate de 32 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 64 bits avec une valeur immdiate entire de 32 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 16 bits avec une valeur immdiate entire de 8 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 32 bits avec une valeur immdiate entire de 8 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 670
OR RAX, imm32
0Dh id
OR reg/mem8, imm8
80h /1 ib
OR reg/mem16, imm16
81h /1 iw
OR reg/mem32, imm32
81h /1 id
OR reg/mem64, imm32
81h /1 id
OR reg/mem16, imm8
83h /1 ib
OR reg/mem32, imm8
83h /1 ib
OR reg/mem64, imm8
83h /1 ib
64 bits avec une valeur immdiate entire de 8 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 8 bits avec le contenu d'un registre de 8 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 16 bits avec le contenu d'un registre de 16 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 32 bits avec le contenu d'un registre de 32 bits. Effectue un Ou binaire du contenu d'une oprande mmoire ou registre 64 bits avec le contenu d'un registre de 64 bits. Effectue un Ou binaire du contenu d'un registre de 8 bits avec le contenu d'une oprande mmoire ou registre 8 bits. Effectue un Ou binaire du contenu d'un registre de 16 bits avec le contenu d'une oprande mmoire ou registre 16 bits. Effectue un Ou binaire du contenu d'un registre de 32 bits avec le contenu d'une oprande mmoire ou registre 32 bits. Effectue un Ou binaire du contenu d'un registre de 64 bits avec le 671
OR reg/mem8, reg8
08h /r
OR reg/mem16, reg16
09h /r
OR reg/mem32, reg32
09h /r
OR reg/mem64, reg64
09h /r
OR reg8, reg/mem8
0Ah /r
OR reg16, reg/mem16
0Bh /r
OR reg32, reg/mem32
0Bh /r
OR reg64, reg/mem64
0Bh /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de
#SS(Pile)
#GP(Protection gnral)
#PF(Faute de page)
672
page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#AC(Vrifie l'alignement)
Exemple Cet exemple permet de vrifier si AX vaut 0. Cette technique de programmation l'apparence un peu trange, est pourtant trs commune chez les professionnels de l'assembleur, car il consomme moins d'octets en mmoire, que l'utilisation de l'instruction CMP AX,0 :
1. OR AX,AX 2. JE @axvautzero 3. ; AX ne vaut pas 0 4. ; ... 5. @axvautzero 6. ; AX vaut 0 7. ; ...
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction
Rfrences
673
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 823 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 412 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 179. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 16 19.
674
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
ORPD
Bitwise Logical OR of Double-Precision FloatingPoint Values
Syntaxe
ORPD destination, source
Description Cette instruction permet d'effectuer un OU BINAIRE de 128 bits sur les 2 oprandes rels de double prcisions spcifis.
Algorithme
destination(0..127) destination(0..127) U source(0..127)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer un OU BINAIRE de 128 bits sur les 2 oprandes rels de double prcisions spcifis.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 20 21.
675
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
ORPS
Bitwise Logical OR of Double-Precision FloatingPoint Values
Syntaxe
ORPS dest,source
Description Cette instruction permet d'effectuer un OU BINAIRE de 128 bits sur les 2 oprandes spcifis.
Algorithme
dest(127..0) dest(127..0) U source(127..0)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer un OU BINAIRE de 128 bits sur les 2 oprandes spcifis.
ORPS xmm1,xmm2/m128
0Fh 56h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 22 23.
676
OUT Output
Syntaxe
OUT adresse,accumulateur
Paramtres
Nom Description Ce paramtre permet d'indiquer l'adresse du port d'entre/sortie. Il peut s'agir d'une valeur entre 0 et FFFFh. Voir Rfrence des ports d'entre/sortie 80x86 pour plus de dtails. Ce paramtre permet d'indiquer la valeur envoyer dans le port d'entre/sortie. Il peut s'agir d'un des 3 registres AL, AX ou EAX. Mme avec les microprocesseurs 64 bits, il n'est pas possible d'envoyer une valeur plus grande que 32 bits.
adresse
accumulateur
Description Cette instruction permet d'envoyer un octet, un mot ou un double mot sur le port d'entre/sortie.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON Port(adresse) accumulateur 677
Mnmonique
Instruction Opcode Description Met un octet contenu dans le registre AL dans le port spcifi par la valeur immdiate de 8 bits. Met un mot contenu dans le registre AX dans le port spcifi par la valeur immdiate de 8 bits. Met un double mot contenu dans le registre EAX dans le port spcifi par la valeur immdiate de 8 bits. Met un octet contenu dans le registre AL dans le port spcifi par le registre DX. Met un mot contenu dans le registre AX dans le port spcifi par le registre DX. Met un double mot contenu dans le registre EAX dans le port spcifi par le registre DX.
OUT imm8, AL
E6h ib
OUT imm8, AX
E7h ib
E7h ib
OUT DX, AL
EEh
OUT DX, AX
EFh
EFh
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
678
#GP(Protection gnral)
Un ou plusieurs bits de permission d'entre/sortie sont fixer par le TSS pour un accs au port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port. Une faute de page rsultat de l'excution de l'instruction
#PF(Faute de page)
Exemple Cette exemple permet d'effectuer une commande de fin d'interruption (Port 0020h):
MOV AL,20h OUT 20h,AL
Voir Rfrence Instruction Instruction Instruction des assembleur assembleur assembleur ports 80x86 80x86 80x86 d'entre/sortie Instruction Instruction Instruction
Rfrences
679
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 824 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 181. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 24 26.
680
Syntaxe
OUTS oprandesource
Description Cette instruction permet d'envoyer un octet, un mot ou un double mot contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le registre SI en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON Port(adresse) accumulateur FIN SI SINON Port(adresse) accumulateur FIN SI SI (taille de l'oprande_cible = octet) ALORS SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI SINON SI (taille de l'oprande_cible = mot) ALORS SI DF = 0 ALORS (E)DI (E)DI + 2 SINON (E)DI (E)DI - 2
681
FIN SI SINON SI DF = 0 ALORS (E)DI (E)DI + 4 SINON (E)DI (E)DI - 4 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Envoi un octet de l'adresse DS:(R)SI au port spcifi par DX et ensuite, incrmente ou dcrmente le registre (R)SI. Envoi un mot de l'adresse DS:(R)SI au port spcifi par DX et ensuite, incrmente ou dcrmente le registre (R)SI. Envoi un double mot de l'adresse DS:(R)SI au port spcifi par DX et ensuite, incrmente ou dcrmente le registre (R)SI.
6Eh
6Fh
6Fh
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de
#SS(Pile)
682
pile ou n'est pas canonique #GP(Slecteur) X X X Un registre de segment est charg, mais le descripteur de segment dpasse la limite de la table du descripteur. Un segment de donnes nulle est utilis comme rfrence mmoire Un ou plusieurs bits de permission d'entre/sortie sont fixer par le TSS pour un accs au port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port. Une faute de page rsultat de l'excution
#PF(Faute de page)
683
de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#AC(Vrifie l'alignement)
Voir Rfrence Instruction Instruction Instruction des assembleur assembleur assembleur ports 80x86 80x86 80x86 d'entre/sortie Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 824 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 182. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 27 31.
684
Syntaxe
OUTSB
Description Cette instruction permet d'envoyer un octet contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le registre SI de 1 en fonction de l'tat du drapeau de direction.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON Port(adresse) accumulateur FIN SI SINON Port(adresse) accumulateur FIN SI SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI
Mnmonique
Instruction Opcode Description
685
OUTSB
6Eh
Envoi un octet de l'adresse DS:(R)SI au port spcifi par DX et ensuite, incrmente ou dcrmente le registre (R)SI.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Un registre de segment est charg, mais le descripteur de segment dpasse la limite de la table du descripteur. Un segment de donnes nulle est utilis comme rfrence mmoire Un ou plusieurs bits de permission d'entre/sortie sont fixer par 686
#SS(Pile)
#GP(Slecteur)
le TSS pour un accs au port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Rfrence Instruction Instruction Instruction des assembleur assembleur assembleur ports 80x86 80x86 80x86 d'entre/sortie Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 825 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 182.
687
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 27 31.
688
Syntaxe
OUTSD
Description Cette instruction permet d'envoyer un double mot contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le registre SI de 4 en fonction de l'tat du drapeau de direction.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON Port(adresse) accumulateur FIN SI SINON Port(adresse) accumulateur FIN SI SI DF = 0 ALORS (E)DI (E)DI + 4 SINON (E)DI (E)DI - 4 FIN SI
Mnmonique
Instruction Opcode Description
689
OUTSD
6Fh
Envoi un double mot de l'adresse DS:(R)SI au port spcifi par DX et ensuite, incrmente ou dcrmente le registre (R)SI.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Un registre de segment est charg, mais le descripteur de segment dpasse la limite de la table du descripteur. Un segment de donnes nulle est utilis comme rfrence mmoire Un ou plusieurs bits de permission d'entre/sortie sont fixer par 690
#SS(Pile)
#GP(Slecteur)
le TSS pour un accs au port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Rfrence Instruction Instruction Instruction des assembleur assembleur assembleur ports 80x86 80x86 80x86 d'entre/sortie Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 825 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 182.
691
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 27 31.
692
Syntaxe
OUTSW
Description Cette instruction permet d'envoyer un mot contenu dans l'adresse DS:[SI] du port d'entre/sortie et incrmente/dcrmente le registre SI de 2 en fonction de l'tat du drapeau de direction.
Algorithme
SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protg avec CPL > IOPL ou mode virtual 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S un accs = 1) ALORS EXCEPTION #GP(0) SINON Port(adresse) accumulateur FIN SI SINON Port(adresse) accumulateur FIN SI SI DF = 0 ALORS (E)DI (E)DI + 2 SINON (E)DI (E)DI - 2 FIN SI
Mnmonique
Instruction Opcode Description
693
OUTSW
6Fh
Envoi un mot de l'adresse DS:(R)SI au port spcifi par DX et ensuite, incrmente ou dcrmente le registre (R)SI.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Un registre de segment est charg, mais le descripteur de segment dpasse la limite de la table du descripteur. Un segment de donnes nulle est utilis comme rfrence mmoire Un ou plusieurs bits de permission d'entre/sortie sont fixer par 694
#SS(Pile)
#GP(Slecteur)
le TSS pour un accs au port. Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accs au port. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Rfrence Instruction Instruction Instruction des assembleur assembleur assembleur ports 80x86 80x86 80x86 d'entre/sortie Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 825 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 182.
695
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 27 31.
696
Assembleur 80x86
SSSE3+
PABSB
Packed Absolute Byte
Syntaxe
PABSB dest,source
Description Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des octets d'un oprande source et entrepose le rsultat dans un oprande destination.
Algorithme
SI taille de l'oprande = 64 bits ALORS dest(7..0) | source(7..0) | dest(15..8) | source(15..8) | dest(23..16) | source(23..16) | dest(31..24) | source(31..24) | dest(39..32) | source(39..32) | dest(47..40) | source(47..40) | dest(55..48) | source(55..48) | dest(63..56) | source(63..56) | SINON dest(7..0) | source(7..0) | dest(15..8) | source(15..8) | dest(23..16) | source(23..16) | dest(31..24) | source(31..24) | dest(39..32) | source(39..32) | dest(47..40) | source(47..40) | dest(55..48) | source(55..48) | dest(63..56) | source(63..56) | dest(71..64) | source(71..64) | dest(79..72) | source(79..72) | dest(87..80) | source(87..80) | 697
dest(95..88) | source(95..88) | dest(103..96) | source(103..96) | dest(111..104) | source(111..104) | dest(119..112) | source(119..112) | dest(127..120) | source(127..120) | FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des octets d'un oprande source et entrepose le rsultat dans un oprande destination. Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des octets d'un oprande source et entrepose le rsultat dans un oprande destination.
PABSB mm1,mm2/m64
PABSB xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 33 36.
698
Assembleur 80x86
SSSE3+
PABSD
Packed Absolute Doubleword
Syntaxe
PABSD dest,source
Description Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des doubles mots d'un oprande source et entrepose le rsultat dans un oprande destination.
Algorithme
SI taille de l'oprande = 64 bits ALORS dest(31..0) | source(31.0) | dest(63..32) | source(63..32) | SINON dest(31..0) | source(31..0) | dest(63..32) | source(63..32) | dest(95..64) | source(95..64) | dest(127..96) | source(127..96) | FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des doubles mots d'un oprande source et entrepose le rsultat dans un oprande
PABSD mm1,mm2/m64
699
destination. Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des doubles mots d'un oprande source et entrepose le rsultat dans un oprande destination.
PABSD xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 33 36.
700
Assembleur 80x86
SSSE3+
PABSW
Packed Absolute Word
Syntaxe
PABSW dest,source
Description Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des mots d'un oprande source et entrepose le rsultat dans un oprande destination.
Algorithme
SI taille de l'oprande = 64 bits ALORS dest(15..0) | source(15..0) | dest(31..16) | source(31..16) | dest(47..32) | source(47..32) | dest(63..48) | source(63..48) | SINON dest(15..0) | source(15..0) | dest(31..16) | source(31..16) | dest(47..32) | source(47..32) | dest(63..48) | source(63..48) | dest(79..64) | source(79..64) | dest(95..80) | source(95..80) | dest(111..96) | source(111..96) | dest(127..112) | source(127..112) | FIN SI
Mnmonique
701
Instruction
Opcode
Description Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des mots d'un oprande source et entrepose le rsultat dans un oprande destination. Cette instruction permet d'effectuer le calcul de la valeur absolue de chacun des mots d'un oprande source et entrepose le rsultat dans un oprande destination.
PABSW mm1,mm2/m64
0F 38 1D /r
PABSW xmm1,xmm2/m128
66 0F 38 1D /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 33 36.
702
Assembleur 80x86
INTEL Pentium Pro+
PACKSSDW
Pack with Signed Saturation dword to word
Syntaxe
PACKSSDW dest,source
Algorithme
dest(7..0) SaturateSignedWordToSignedByte dest(15..0) dest(15..8) SaturateSignedWordToSignedByte dest(31..16) dest(23..16) SaturateSignedWordToSignedByte dest(47..32) dest(31..24) SaturateSignedWordToSignedByte dest(63..48) dest(39..32) SaturateSignedWordToSignedByte source(15..0) dest(47..40) SaturateSignedWordToSignedByte source(31..16) dest(55..48) SaturateSignedWordToSignedByte source(47..32) dest(63..56) SaturateSignedWordToSignedByte source(63..48)
Mnmonique
Instruction Opcode Description Cette instruction permet de compact 8 paquets de double mots en mots. Cette instruction permet de compact 8 paquets de double mots
PACKSSDW mm1,mm2/m64
0Fh 6Bh /r
703
en mots.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 37 41.
704
Assembleur 80x86
INTEL Pentium Pro+
PACKSSWB
Pack with Signed Saturation word to Byte
Syntaxe
PACKSSWB dest,source
Algorithme
dest(7..0) SaturateSignedWordToSignedByte dest(15..0) dest(15..8) SaturateSignedWordToSignedByte dest(31..16) dest(23..16) SaturateSignedWordToSignedByte dest(47..32) dest(31..24) SaturateSignedWordToSignedByte dest(63..48) dest(39..32) SaturateSignedWordToSignedByte source(15..0) dest(47..40) SaturateSignedWordToSignedByte source(31..16) dest(55..48) SaturateSignedWordToSignedByte source(47..32) dest(63..56) SaturateSignedWordToSignedByte source(63..48)
Mnmonique
Instruction Opcode Description Cette instruction permet de compact 8 paquets d'entier en octets. Cette instruction permet de compact 8 paquets d'entier en
0Fh 63h /r
705
octets.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 37 41.
706
Assembleur 80x86
SSSE3+
PACKUSDW
Pack with Unsigned Saturation
Syntaxe
PACKUSDW dest,source
Description Cette instruction permet de compact 8 paquets de double mots naturel en mots naturel.
Algorithme
SI dest(31..0) < 0 ALORS TMP(15..0) 0 SINON TMP(15..0) dest(15..0) FIN SI SI dest(31..0) > FFFFh ALORS dest(15..0) FFFFh SINON dest(15..0) TMP(15..0) FIN SI SI dest(63..32) < 0 ALORS TMP(31..16) 0 SINON TMP(31..16) dest(47..32) FIN SI SI dest(63..32) > FFFFh ALORS dest(31..16) FFFFh SINON dest(31..16) TMP(31..16) FIN SI SI dest(95..64) < 0 ALORS
707
TMP(47..32) 0 SINON TMP(47..32) dest(79..64) FIN SI SI dest(95..64) > FFFFh ALORS dest(47..32) FFFFh SINON dest(47..32) TMP(47..32) FIN SI SI dest(127..96) < 0 ALORS TMP(63..48) 0 SINON dest(111..96) FIN SI SI dest(127..96) > FFFFh ALORS dest(63..48) FFFFh SINON dest(63..48) TMP(63..48) FIN SI SI dest(127..96) < 0 ALORS TMP(63..48) 0 SINON dest(111..96) FIN SI SI dest(127..96) > FFFFh ALORS dest(63..48) FFFFh SINON dest(63..48) TMP(63..48) FIN SI SI source(31..0) < 0 ALORS TMP(79..64) 0 SINON TMP(79..64) source(15..0) FIN SI SI source(31..0) > FFFFh ALORS dest(63..48) FFFFH SINON dest(63..48) TMP(79..64) FIN SI SI source(63..32) < 0 ALORS TMP(95..80) 0 708
SINON source(47..32) FIN SI SI source(63..32) > FFFFh ALORS dest(95..80) FFFFh SINON dest(95..80) TMP(95..80) FIN SI SI source(95..64) < 0 ALORS TMP(111..96) 0 SINON TMP(111..96) source(79..64) FIN SI SI source(95..64) > FFFFh ALORS dest(111..96) FFFFh SINON dest(111..96) TMP(111..96) FIN SI SI source(127..96) < 0 ALORS TMP(127..112) 0 SINON TMP(127..112) source(111..96) FIN SI SI source(127..96) > FFFFh ALORS dest(128..112) FFFFh SINON dest(128..112) TMP(127..112) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de compact 8 paquets de double mots naturel en mots naturel.
Rfrences
709
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 42 44.
710
Assembleur 80x86
INTEL Pentium Pro+
PACKUSWB
Pack with Unsigned Saturation
Syntaxe
PACKUSWB dest,source
Algorithme
dest(7..0) SaturateSignedWordToUnsignedByte dest(15..0) dest(15..8) SaturateSignedWordToUnsignedByte dest(31..16) dest(23..16) SaturateSignedWordToUnsignedByte dest(47..32) dest(31..24) SaturateSignedWordToUnsignedByte dest(63..48) dest(39..32) SaturateSignedWordToUnsignedByte source(15..0) dest(47..40) SaturateSignedWordToUnsignedByte source(31..16) dest(55..48) SaturateSignedWordToUnsignedByte source(47..32) dest(63..56) SaturateSignedWordToUnsignedByte source(63..48)
Mnmonique
Instruction Opcode Description Cette instruction permet de compact 8 paquets de mots en octets. Cette instruction permet de compact 8 paquets de mots en
0Fh 67h /r
711
octets.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 45 48.
712
Assembleur 80x86
INTEL Pentium Pro+
PADDB
Packed Add Bytes
Syntaxe
PADDB dest,source
Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de 8 octets.
Algorithme
dest(7..0) dest(7..0) + source(7..0) dest(15..8) dest(15..8) + source(15..8) dest(23..16) dest(23..16) + source(23..16) dest(31..24) dest(31..24) + source(31..24) dest(39..32) dest(39..32) + source(39..32) dest(47..40) dest(47..40) + source(47..40) dest(55..48) dest(55..48) + source(55..48) dest(63..56) dest(63..56) + source(63..56)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de 8 octets. Cette instruction permet d'effectuer une addition scalaire sur un paquet
0Fh FCh /r
PADDB xmm1,xmm2/m128
713
de 8 octets.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 49 52.
714
Assembleur 80x86
INTEL Pentium Pro+
PADDD
Packed Add Dwords
Syntaxe
PADDD dest,source
Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de 2 double mots.
Algorithme
dest(31..0) dest(31..0) + source(31..0) dest(63..32) dest(63..32) + source(63..32)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de 2 double mots. Cette instruction permet d'effectuer une addition scalaire sur un paquet de 2 double mots.
0Fh FEh /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
715
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 49 52.
716
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PADDQ
Add Packed Quadword Integers
Syntaxe
PADDQ destination, source
Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de quadruple mots.
Algorithme
SI taille de l'oprande = 64 bits ALORS Destination(0..63) Destination(0..63) + Source(0..63) SINON Destination(0..63) Destination(0..63) + Source(0..63) Destination(64..127) Destination(64..127) + Source(64..127) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de quadruple mots. Cette instruction permet d'effectuer une addition scalaire sur un paquet
PADDQ mm1,mm2/m64
0Fh D4h /r
PADDQ xmm1,xmm2/m128
717
de quadruple mots.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 53 55.
718
Assembleur 80x86
INTEL Pentium Pro+
PADDSB
Packed Add with Saturation Bytes
Syntaxe
PADDSB dest,source
Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 8 octets signs.
Algorithme
dest(7..0) SaturateToSignedByte(dest(7..0) + source(7..0)) dest(15..8) SaturateToSignedByte(dest(15..8) + source(15..8)) dest(23..16) SaturateToSignedByte(dest(23..16) + source(23..16)) dest(31..24) SaturateToSignedByte(dest(31..24) + source(31..24)) dest(39..32) SaturateToSignedByte(dest(39..32) + source(39..32)) dest(47..40) SaturateToSignedByte(dest(47..40) + source(47..40)) dest(55..48) SaturateToSignedByte(dest(55..48) + source(55..48)) dest(63..56) SaturateToSignedByte(dest(63..56) + source(63..56))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 8 octets signs. Cette instruction permet d'effectuer
0Fh ECh /r
PADDSB xmm1,xmm2/m128
719
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 56 58.
720
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PADDSIW destination, source
PADDSIW
Packed Add with Saturation
Description Cette instruction permet d'effectuer l'addition du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit le rsultat dans le registre MMX.
Algorithme destination(15..0) SaturateToSignedWord(destination(15..0) + source(15..0) destination(31..16) SaturateToSignedWord(destination(31..16) + source(31..16) destination(47..32) SaturateToSignedWord(destination(47..32) + source(47..32) destination(63..48) SaturateToSignedWord(destination(63..48) + source(63..48)
Mnmonique Instruction PADDSIW mm,mm/m64 Opcode 0Fh 51h PostByte Description Cette instruction permet d'effectuer l'addition du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit le rsultat dans le registre MMX.
721
Assembleur 80x86
INTEL Pentium Pro+
PADDSW
Packed Add with Saturation Words
Syntaxe
PADDSW dest,source
Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 entiers.
Algorithme
dest(15..0) SaturateToSignedWord(dest(15..0) + source(15..0)) dest(31..16) SaturateToSignedWord(dest(31..16) + source(31..16)) dest(47..32) SaturateToSignedWord(dest(47..32) + source(47..32)) dest(63..48) SaturateToSignedWord(dest(63..48) + source(63..48))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 entiers. Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 entiers.
0Fh EDh /r
722
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 56 58.
723
Assembleur 80x86
INTEL Pentium Pro+
PADDUSB
Packed Add Unsigned with Saturation Bytes
Syntaxe
PADDUSB dest,source
Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 8 octets.
Algorithme
dest(7..0) SaturateToUnsignedByte(dest(7..0) + source(7..0)) dest(15..8) SaturateToUnsignedByte(dest(15..8) + source(15..8)) dest(23..16) SaturateToUnsignedByte(dest(23..16) + source(23..16)) dest(31..24) SaturateToUnsignedByte(dest(31..24) + source(31..24)) dest(39..32) SaturateToUnsignedByte(dest(39..32) + source(39..32)) dest(47..40) SaturateToUnsignedByte(dest(47..40) + source(47..40)) dest(55..48) SaturateToUnsignedByte(dest(55..48) + source(55..48)) dest(63..56) SaturateToUnsignedByte(dest(63..56) + source(63..56))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 8 octets. Cette instruction permet d'effectuer
0Fh DCh /r
724
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 59 63.
725
Assembleur 80x86
INTEL Pentium Pro+
PADDUSW
Packed Add Unsigned with Saturation Words
Syntaxe
PADDUSW dest,source
Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 mots.
Algorithme
dest(15..0) SaturateToUnsignedWord(dest(15..0) + source(15..0)) dest(31..16) SaturateToUnsignedWord(dest(31..16) + source(31..16)) dest(47..32) SaturateToUnsignedWord(dest(47..32) + source(47..32)) dest(63..48) SaturateToUnsignedWord(dest(63..48) + source(63..48))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 mots. Cette instruction permet d'effectuer une addition scalaire avec saturation sur un paquet de 4 mots.
0Fh DDh /r
726
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 59 63.
727
Assembleur 80x86
INTEL Pentium Pro+
PADDW
Packed Add Words
Syntaxe
PADDW dest,source
Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de 4 mots.
Algorithme
dest(15..0) dest(15..0) + source(15..0) dest(31..16) dest(31..16) + source(31..16) dest(47..32) dest(47..32) + source(47..32) dest(63..48) dest(63..48) + source(63..48)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une addition scalaire sur un paquet de 4 mots. Cette instruction permet d'effectuer une addition scalaire sur un paquet de 4 mots.
0Fh FDh /r
Rfrences
728
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 49 52.
729
Assembleur 80x86
SSSE3+
PALIGNR
Packed Align Right
Syntaxe
PALIGNR dest,source,immediat
Description Cette instruction permet d'effectuer la concatnation de l'oprande de destination et de l'oprande source et effectue un dcalage d'une constante immdiate de la composante de granulit d'octets, et enfin extrait le rsultat align dans l'oprande de destination.
Algorithme
SI taille de l'oprande = 64 bits ALORS temp1(127..0) CONCATENATE(dest,source) >> (immediat x 8) dest(63..0) temp1(63..0) FIN SI SI taille de l'oprande = 128 bits ALORS temp1(255..0) CONCATENATE(dest,source)>>(immediat x 8) dest(127..0) temp1(127..0) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la concatnation de l'oprande de destination et de l'oprande source et effectue un dcalage d'une constante
730
immdiate de la composante de granulit d'octets, et enfin extrait le rsultat align dans l'oprande de destination. Cette instruction permet d'effectuer la concatnation de l'oprande de destination et de l'oprande source et effectue un dcalage d'une constante immdiate de la composante de granulit d'octets, et enfin extrait le rsultat align dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 63 65.
731
Assembleur 80x86
INTEL Pentium MMX+
PAND
Bitwise Logical AND
Syntaxe
PAND destination, source
Description Cette instruction permet d'effectuer un ET BINAIRE d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM.
Algorithme
destination destination source
Mnmonique
Instruction PAND mm, mm/m64 Opcode 0Fh DBh /r Description Cette instruction permet d'effectuer un ET BINAIRE d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM. Cette instruction permet d'effectuer un ET BINAIRE d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM.
732
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 67 69.
733
Assembleur 80x86
INTEL Pentium Pro+
PANDN
Bitwise Logical And Not
Syntaxe
PANDN destination,source
Description Cette instruction permet d'effectuer un ET BINAIRE et une NEGATION de chacun des bits d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM.
Algorithme
destination ( destination) source
Mnmonique
Instruction PANDN mm, mm/m64 Opcode 0Fh DFh /r Description Cette instruction permet d'effectuer un ET BINAIRE et une NEGATION de chacun des bits d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM. Cette instruction permet d'effectuer un ET BINAIRE et une NEGATION de chacun des bits d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des
734
registres XMM.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 70 72.
735
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PAUSE
Pause
Syntaxe
PAUSE
Description Cette instruction permet d'amliorer les performances des boucles de SPIN, en fournissant une indication pour le microprocesseur que le code courant est dans une boucle en SPIN.
Mnmonique
Instruction Opcode Description Fournit un dlai de performance l'excution.
PAUSE
F3h 90h
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 73 74.
736
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PAVEB destination, source
PAVEB
Packed Average Bits
Description Cette instruction permet d'effectuer le calcul de la moyenne des paquets spcifis.
Algorithme destination(7..0) (destination(7..0) + source(7..0)) >> 1 destination(15..8) (destination(15..8) + source(15..8)) >> 1 destination(23..16) (destination(23..16) + source(23..16)) >> 1 destination(31..24) (destination(31..24) + source(31..24)) >> 1 destination(39..32) (destination(39..32) + source(39..32)) >> 1 destination(47..40) (destination(47..40) + source(47..40)) >> 1 destination(55..48) (destination(55..48) + source(55..48)) >> 1 destination(63..56) (destination(63..56) + source(63..56)) >> 1
Mnmonique Instruction PAVEB mm,mm/m64 Opcode 0Fh 50h PostByte Description Cette instruction permet d'effectuer le calcul de la moyenne des paquets spcifis.
737
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PAVGB
Packed Average Byte
Syntaxe
PAVGB destination, source
Description Cette instruction permet d'effectuer le calcul de la moyenne des paquets d'octets spcifis.
Algorithme
SI taille de l'oprande = 64 bits ALORS source(0..7) (source(0..7) + destination(0..7) + 1) >> 1 source(8..15) (source(8..15) + destination(8..15) + 1) >> 1 source(16..23) (source(16..23) + destination(16..23) + 1) >> 1 source(24..31) (source(24..31) + destination(24..31) + 1) >> 1 source(32..39) (source(32..39) + destination(32..39) + 1) >> 1 source(40..47) (source(40..47) + destination(40..47) + 1) >> 1 source(48..55) (source(48..55) + destination(48..55) + 1) >> 1 source(56..63) (source(56..63) + destination(56..63) + 1) >> 1 SINON source(0..7) (source(0..7) + destination(0..7) + 1) >> 1 source(8..15) (source(8..15) + destination(8..15) + 1) >> 1 source(16..23) (source(16..23) + destination(16..23) + 1) >> 1 source(24..31) (source(24..31) + destination(24..31) + 1) >> 1 source(32..39) (source(32..39) + destination(32..39) + 1) >> 1 source(40..47) (source(40..47) + destination(40..47) + 1) >> 1 source(48..55) (source(48..55) + destination(48..55) + 1) >> 1 source(56..63) (source(56..63) + destination(56..63) + 1) >> 1 source(64..71) (source(64..71) + destination(64..71) + 1) >> 1 source(72..79) (source(72..79) + destination(72..79) + 1) >> 1 source(80..87) (source(80..87) + destination(80..87) + 1) >> 1
738
source(88..95) (source(88..95) + destination(88..95) + 1) >> 1 source(96..103) (source(96..103) + destination(96..103) + 1) >> 1 source(104..111) (source(104..111) + destination(104..111) + 1) >> 1 source(112..119) (source(112..119) + destination(112..119) + 1) >> 1 source(120..127) (source(120..127) + destination(120..127) + 1) >> 1 FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le calcul de la moyenne des paquets d'octets spcifis. Cette instruction permet d'effectuer le calcul de la moyenne des paquets d'octets spcifis.
0Fh E0h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 75 77.
739
Assembleur 80x86
AMD 3DNow!
Syntaxe PAVGUSB dest,source
PAVGUSB
Avarage of Unsigned packed 8
Description Cette instruction permet d'effectuer le calcul de la moyenne de paquets de 8 octets spcifis.
Algorithme dest(7..0) (dest(7..0) + source(7..0)) / 2 dest(15..8) (dest(15..8) + source(15..8)) / 2 dest(23..16) (dest(23..16) + source(23..16)) / 2 dest(31..24) (dest(31..24) + source(31..24)) / 2 dest(39..32) (dest(39..32) + source(39..32)) / 2 dest(47..40) (dest(47..40) + source(47..40)) / 2 dest(55..48) (dest(55..48) + source(55..48)) / 2 dest(63..56) (dest(63..56) + source(63..56)) / 2
PAVGUSB mm,mm/m64
Cette instruction permet d'effectuer le calcul de la 0Fh 0Fh BFh Postbyte moyenne de paquets de 8 octets spcifis.
740
Assembleur 80x86
Intel Pentium III (SSE)+
PAVGW
Packed Average Word
Syntaxe
PAVGW destination, source
Description Cette instruction permet d'effectuer le calcul de la moyenne des paquets des mots spcifis.
Algorithme
SI taille de l'oprande = 64 bits ALORS source(0..15) (source(0..15) + destination(0..15) + 1) >> 1 source(16..31) (source(16..31) + destination(16..31) + 1) >> 1 source(32..47) (source(32..47) + destination(32..47) + 1) >> 1 source(48..63) (source(48..63) + destination(48..63) + 1) >> 1 SINON source(0..15) (source(0..15) + destination(0..15) + 1) >> 1 source(16..31) (source(16..31) + destination(16..31) + 1) >> 1 source(32..47) (source(32..47) + destination(32..47) + 1) >> 1 source(48..63) (source(48..63) + destination(48..63) + 1) >> 1 source(64..79) (source(64..79) + destination(64..79) + 1) >> 1 source(80..95) (source(80..95) + destination(80..95) + 1) >> 1 source(96..111) (source(96..111) + destination(96..111) + 1) >> 1 source(112..127) (source(112..127) + destination(112..127) + 1) >> 1 FIN SI
Mnmonique
741
Instruction
Opcode
Description Cette instruction permet d'effectuer le calcul de la moyenne des paquets des mots spcifis. Cette instruction permet d'effectuer le calcul de la moyenne des paquets des mots spcifis.
0Fh E3h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 75 77.
742
Assembleur 80x86
SSE4.1+
PBLENDVB
Variable Blend Packed Bytes
Syntaxe
PBLENDVB dest,source,masque
Description Cette instruction permet d'effectuer une copie conditionnel d'un lment d'octets d'un oprande source vers un oprande de destination en fonction des bits de masque dfinit dans un troisime oprande.
Algorithme
SI masque(7) = 1 ALORS dest(7..0) source(7..0) SINON dest(7..0) dest(7..0) FIN SI SI masque(15) = 1 ALORS dest(15..8) source(15..8) SINON dest(15..8) dest(15..8) FIN SI SI masque(23) = 1 ALORS dest(23..16) source(23..16) SINON dest(23..16) dest(23..16) FIN SI SI masque(31) = 1 ALORS dest(31..24) source(31..24) SINON dest(31..24) dest(31..24) FIN SI 743
SI masque(39) = 1 ALORS dest(39..32) source(39..32) SINON dest(39..32) dest(39..32) FIN SI SI masque(47) = 1 ALORS dest(47..40) source(47..40) SINON dest(47..40) dest(47..40) FIN SI SI masque(55) = 1 ALORS dest(55..48) source(55..48) SINON dest(55..48) dest(55..48) FIN SI SI masque(63) = 1 ALORS dest(63..56) source(63..56) SINON dest(63..56) dest(63..56) FIN SI SI masque(71) = 1 ALORS dest(71..64) source(71..64) SINON dest(71..64) dest(71..64) FIN SI SI masque(79) = 1 ALORS dest(79..72) source(79..72) SINON dest(79..72) dest(79..72) FIN SI SI masque(87) = 1 ALORS dest(87..80) source(87..80) SINON dest(87..80) dest(87..80) FIN SI SI masque(95) = 1 ALORS dest(95..88) source(95..88) SINON dest(95..88) dest(95..88) FIN SI SI masque(103) = 1 ALORS 744
dest(103..96) source(103..96) SINON dest(103..96) dest(103..96) FIN SI SI masque(111) = 1 ALORS dest(111..104) source(111..104) SINON dest(111..104) dest(111..104) FIN SI SI masque(119) = 1 ALORS dest(119..112) source(119..112) SINON dest(119..112) dest(119..112) FIN SI SI masque(127) = 1 ALORS dest(127..120) source(127..120) SINON dest(127..120) dest(127..120) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une copie conditionnel d'un lment d'octets d'un oprande source vers un oprande de destination en fonction des bits de masque dfinit dans un troisime oprande.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 78 82.
745
Assembleur 80x86
SSE4.1+
PBLENDW
Blend Packed Words
Syntaxe
PBLENDW dest,source,immediat
Description Cette instruction permet d'effectuer une copie conditionnel d'un lment d'octets d'un oprande source vers un oprande de destination en fonction des bits de masque dfinit dans un troisime oprande.
Algorithme
SI immediat(0) = 1 ALORS dest(15..0) source(15..0) SINON dest(15..0) dest(15..0) FIN SI SI immediat(1) = 1 ALORS dest(31..16) source(31..16) SINON dest(31..16) dest(31..16) FIN SI SI immediat[2] = 1 ALORS dest(47..32) source(47..32) SINON dest(47..32) dest(47..32) FIN SI SI immediat(3) = 1 ALORS dest(63..48) source(63..48) SINON dest(63..48) dest(63..48) FIN SI 746
SI immediat(4) = 1 ALORS dest(79..64) source(79..64) SINON dest(79..64) dest(79..64) FIN SI SI immediat(5) = 1 ALORS dest(95..80) source(95..80) SINON dest(95..80) dest(95..80) FIN SI SI immediat(6) = 1 ALORS dest(111..96) source(111..96) SINON dest(111..96) dest(111..96) FIN SI SI immediat(7) = 1 ALORS dest(127..112) source(127..112) SINON dest(127..112) dest(127..112) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une copie conditionnel d'un lment d'octets d'un oprande source vers un oprande de destination en fonction des bits de masque dfinit dans un troisime oprande.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
747
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 83 85.
748
Assembleur 80x86
INTEL AES+
PCLMULQDQ
Carry-Less Multiplication Quadword
Syntaxe
PCLMULQDQ dest,source,immediat
Description Cette instruction permet d'effectuer une multiplication de quadruple mots avec une retenue en slectionnant l'oprande destination et source et une valeur immdiate pour slectionner les critres.
Algorithme
SI immediat[0] = 0 ALORS TEMP1 dest(63..0) SINON TEMP1 dest(127..64) FIN SI SI immediat(4) = 0 ALORS TEMP2 source (63..0) SINON TEMP2 source (127..64) FIN SI BOUCLE POUR i 0 JUSQU'A 63 SAUT 1 TmpB(i) (TEMP1(0) TEMP2(i)) BOUCLE POUR j 1 JUSQU'A i SAUT 1 TmpB(i) TmpB(i) XOR (TEMP1(j) TEMP2(i - j)) FIN BOUCLE POUR dest(i) TmpB(i) FIN BOUCLE POUR BOUCLE POUR i 64 JUSQU'A 126 SAUT 1 TmpB(i) 0; BOUCLE POUR j i - 63 JUSQU'A 63 SAUT 1 749
TmpB(i) TmpB(i) XOR (TEMP1(j) TEMP2(i - j)) FIN BOUCLE POUR dest(i) TmpB(i) FIN BOUCLE POUR dest(127) 0
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une multiplication de quadruple mots avec une retenue en slectionnant l'oprande destination et source et une valeur immdiate pour slectionner les critres.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 86 89.
750
Assembleur 80x86
INTEL Pentium Pro+
PCMPEQB
Packed Compare for Equal Bytes
Syntaxe
PCMPEQB dest,source
Description Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux FFh s'il sont gale sinon 00h.
Algorithme
SI dest(7..0) = source(7..0) ALORS dest(7..0) FFh SINON dest(7..0) 00h FIN SI SI dest(15..8) = source(15..8) ALORS dest(15..8) FFh SINON dest(15..8) 00h FIN SI SI dest(23..16) = source(23..16) ALORS dest(23..16) FFh SINON dest(23..16) 00h FIN SI SI dest(31..24) = source(31..24) ALORS dest(31..24) FFh SINON dest(31..24) 00h FIN SI SI dest(39..32) = source(39..32) ALORS 751
dest(39..32) FFh SINON dest(39..32) 00h FIN SI SI dest(47..40) = source(47..40) ALORS dest(47..40) FFh SINON dest(47..40) 00h FIN SI SI dest(55..48) = source(55..48) ALORS dest*55..48+ FFh SINON dest*55..48+ 00h FIN SI SI dest[63..56] = source(63..56) ALORS dest(63..56) FFh SINON dest(63..56) 00h FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux FFh s'il sont gale sinon 00h.
PCMPEQB mm,mm/m64
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 90 93.
752
Assembleur 80x86
INTEL Pentium Pro+
PCMPEQD
Packed Compare for Equal Dwords
Syntaxe
PCMPEQD dest,source
Description Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de chacun d'eux FFFFFFFFh s'il sont gale sinon 00000000h.
Algorithme
SI dest(31..0) = source(31..0) ALORS dest(31..0) FFFFFFFFh SINON dest(31..0) 00000000h FIN SI SI dest[63..32] = source(63..32) ALORS dest(63..32) FFFFFFFFh SINON dest(63..32) 00000000h FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de chacun d'eux FFFFFFFFh s'il sont 753
PCMPEQD mm,mm/m64
0Fh 76h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 90 93.
754
Assembleur 80x86
SSE4.1+
PCMPEQQ
Compare Packed Qword Data for Equal
Syntaxe
PCMPEQQ dest,source
Description Cette instruction permet d'effectuer une comparaison d'galit SIMD d'un paquet de quadruple mots de l'oprande destination et de l'oprande source.
Algorithme
SI dest(63..0) = source(63..0) ALORS dest(63..0) FFFFFFFFFFFFFFFFh SINON dest(63..0) 0 FIN SI SI dest(127..64) = source(127..64) ALORS dest(127..64) FFFFFFFFFFFFFFFFh SINON dest(127..64) 0 FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison d'galit SIMD d'un paquet de quadruple mots de l'oprande destination et de
PCMPEQQ xmm1,xmm2/m128
755
l'oprande source.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 94 95.
756
Assembleur 80x86
INTEL Pentium Pro+
PCMPEQW
Packed Compare for Equal Words
Syntaxe
PCMPEQW dest,source
Description Cette instruction permet d'effectuer une comparaison sur un paquet de mots et fixe la valeur de chacun d'eux FFFFh s'il sont gale sinon 0000h.
Algorithme
SI dest(15..0) = source(15..0) ALORS dest(15..0) FFFFh SINON dest(15..0) 0000h FIN SI SI dest(31..16) = source(31..16) ALORS dest(31..16) FFFFh SINON dest(31..16) 0000h FIN SI SI dest(47..32) = source(47..32) ALORS dest(47..32) FFFFh SINON dest(47..32) 0000h FIN SI SI dest(63..48) = source(63..48) ALORS dest(63..48) FFFFh SINON dest(63..48) 0000h FIN SI
757
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison sur un paquet de mots et fixe la valeur de chacun d'eux FFFFh s'il sont gale sinon 0000h.
PCMPEQW mm,mm/m64
07h 75h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 90 93.
758
Assembleur 80x86
Nehalem (SSE4.2)+
PCMPESTRI
Packed Compare Explicit Length Strings, Return Index
Syntaxe
PCMPESTRI dest,source,immediat
Description Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaine de caractres bas sur une valeur d'encodage indiquer par un oprande immdiate et gnre un index entrepos dans le registre ECX.
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaine de PCMPESTRI xmm1,xmm2/m128,imm8 66h 0Fh 3Ah 61h /r imm8 caractres bas sur une valeur d'encodage indiquer par un oprande immdiate et gnre un index entrepos dans le registre ECX.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 96 98.
759
Assembleur 80x86
Nehalem (SSE4.2)+
PCMPESTRM
Packed Compare Explicit Length Strings, Return Mask
Syntaxe
PCMPESTRM dest,source,immediat
Description Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaine de caractres bas sur une valeur d'encodage indiquer par un oprande immdiate et gnre un masque entrepos dans le registre XMM0.
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaine de caractres PCMPESTRM xmm1,xmm2/m128,imm8 66h 0Fh 3Ah 60h /r imm8 bas sur une valeur d'encodage indiquer par un oprande immdiate et gnre un masque entrepos dans le registre XMM0.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
760
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 99 101.
761
Assembleur 80x86
INTEL Pentium Pro+
PCMPGTB
Packed Compare for Greater Than Bytes
Syntaxe
PCMPGTB dest,source
Description Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux FFh si l'oprande destinataire est suprieur l'oprande source sinon 00h.
Algorithme
SI dest(7..0) > source(7..0) ALORS dest(7..0) FFh SINON dest(7..0) 00h FIN SI SI dest(15..8) > source(15..8) ALORS dest(15..8) FFh SINON dest(15..8) 00h FIN SI SI dest(23..16) > source(23..16) ALORS dest(23..16) FFh SINON dest(23..16) 00h FIN SI SI dest(31..24) > source(31..24) ALORS dest(31..24) FFh SINON dest(31..24) 00h FIN SI 762
SI dest(39..32) > source(39..32) ALORS dest(39..32) FFh SINON dest(39..32) 00h FIN SI SI dest(47..40) > source(47..40) ALORS dest(47..40) FFh SINON dest(47..40) 00h FIN SI SI dest(55..48) > source(55..48) ALORS dest(55..48) FFh SINON dest(55..48) 00h FIN SI SI dest(63..56) > source(63..56) ALORS dest(63..56) FFh SINON dest(63..56) 00h FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux FFh si l'oprande destinataire est suprieur l'oprande source sinon 00h. Cette instruction permet d'effectuer une comparaison sur un paquet d'octets et fixe la valeur de chacun d'eux FFh si l'oprande destinataire est suprieur l'oprande source sinon 00h.
PCMPGTB mm,mm/m64
0Fh 64h /r
763
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 102 106.
764
Assembleur 80x86
INTEL Pentium Pro+
PCMPGTD
Packed Compare for Greater Than Dwords
Syntaxe
PCMPGTD dest,source
Description Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de chacun d'eux FFFFFFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 00000000h.
Algorithme
SI dest(31..0) > source(31..0) ALORS dest(31..0) FFFFFFFFh SINON dest(31..0) 00000000h FIN SI SI dest(63..32) > source(63..32) ALORS dest(63..32) FFFFFFFFh SINON dest(63..32) 00000000h FIN SI
Mnmonique
Instruction PCMPGTD mm,mm/m64 Opcode 0Fh 66h /r Description Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de 765
chacun d'eux FFFFFFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 00000000h. PCMPGTD xmm1, xmm2/m128 66h 0Fh 66h /r Cette instruction permet d'effectuer une comparaison sur un paquet de double mots et fixe la valeur de chacun d'eux FFFFFFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 00000000h.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 102 106.
766
Assembleur 80x86
Nehalem (SSE4.2)+
PCMPGTQ
Compare Packed Data for Greater Than
Syntaxe
PCMPGTQ dest,source
Description Cette instruction permet d'effectuer une comparaison sur un paquet de quadruple mots et fixe la valeur de chacun d'eux FFFFFFFFFFFFFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 0000000000000000h.
Algorithme
SI dest(63..0) > source(63..0) ALORS dest(63..0) FFFFFFFFFFFFFFFFh SINON dest(63..0) 0 FIN SI SI dest(127..64) > source(127..64) ALORS dest(127..64) FFFFFFFFFFFFFFFFh SINON dest(127..64) 0 FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison sur un paquet de quadruple mots et fixe la valeur de
PCMPGTQ xmm1,xmm2/m128
767
chacun d'eux FFFFFFFFFFFFFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 0000000000000000h.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 107 109.
768
Assembleur 80x86
INTEL Pentium Pro+
PCMPGTW
Packed Compare for Greater Than Words
Syntaxe
PCMPGTW dest,source
Description Cette instruction permet d'effectuer une comparaison sur un paquet de mots et fixe la valeur de chacun d'eux FFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 0000h.
Algorithme
SI dest(15..0) > source(15..0) ALORS dest(15..0) FFFFh SINON dest(15..0) 0000h SI dest(31..16) > source(31..16) ALORS FIN SI dest(31..16) FFFFh SINON dest(31..16) 0000h FIN SI SI dest(47..32) > source(47..32) ALORS dest(47..32) FFFFh SINON dest(47..32) 0000h FIN SI SI dest(63..48) > source(63..48) ALORS dest(63..48) FFFFh SINON dest(63..48) 0000h
769
FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison sur un paquet de mots et fixe la valeur de chacun d'eux FFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 0000h. Cette instruction permet d'effectuer une comparaison sur un paquet de mots et fixe la valeur de chacun d'eux FFFFFh si l'oprande destinataire est suprieur l'oprande source sinon 0000h.
0Fh 65h /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 102 106.
770
Assembleur 80x86
Nehalem (SSE4.2)+
PCMPISTRI
Packed Compare Implicit Length Strings, Return Index
Syntaxe
PCMPISTRI dest,source,immediat
Description Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaines de caractres bas sur une valeur d'encodage implicite indiquer par un oprande immdiate et gnre un index entrepos dans le registre ECX.
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaines de caractres bas sur une PCMPISTRI xmm1,xmm2/m128,imm8 66h 0Fh 3Ah 63h /r imm8 valeur d'encodage implicite indiquer par un oprande immdiate et gnre un index entrepos dans le registre ECX.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 110 111.
771
Assembleur 80x86
Nehalem (SSE4.2)+
PCMPISTRM
Packed Compare Implicit Length Strings, Return Mask
Syntaxe
PCMPISTRM dest,source,immediat
Description Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaine de caractres bas sur une valeur d'encodage implicite indiquer par un oprande immdiate et gnre un masque entrepos dans le registre XMM0.
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer une comparaison ainsi qu'un processus de fragments de deux chaine de caractres PCMPISTRM xmm1,xmm2/m128,imm8 66h 0Fh 3Ah 62h /r imm8 bas sur une valeur d'encodage implicite indiquer par un oprande immdiate et gnre un masque entrepos dans le registre XMM0.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
772
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 113 115.
773
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PDISTIB destination, source
PDISTIB
Packed Distribution
Description Cette instruction permet d'effectuer le calcul de la distance entre des octets de deux oprandes, le rsultat de l'addition d'octet de l'oprande de destination et la saturation du rsultat.
Algorithme destination(7..0) SaturateToUnsignedByte(destination(7..0) + ABS(destination(7..0) source(7..0))) destination(15..8) SaturateToUnsignedByte(destination(15..8) + ABS(destination(15..8) - source(15..8))) destination(23..16) SaturateToUnsignedByte(destination(23..16) + ABS(destination(23..16) - source(23..16))) destination(31..24) SaturateToUnsignedByte(destination(31..24) + ABS(destination(31..24) - source(31..24))) destination(39..32) SaturateToUnsignedByte(destination(39..32) + ABS(destination(39..32) - source(39..32))) destination(47..40) SaturateToUnsignedByte(destination(47..40) + ABS(destination(47..40) - source(47..40))) destination(55..48) SaturateToUnsignedByte(destination(55..48) + ABS(destination(55..48) - source(55..48))) destination(63..56) SaturateToUnsignedByte(destination(63..56) + ABS(destination(63..56) - source(63..56)))
Mnmonique Instruction PDISTIB mm,m64 Opcode 0Fh 54h /r Description Cette instruction permet d'effectuer le calcul de la distance entre des octets de deux oprandes,
774
775
Assembleur 80x86
SSE4.1+
PEXTRB
Paquet Extract Byte
Syntaxe
PEXTRB dest,source,count
Description Cette instruction permet de copier l'octet de l'oprande source spcifi par un compteur d'oprande dans l'oprande de destination.
Algorithme
SEL count(3..0) TEMP (source >> SEL x 8) FFh SI dest = Mem8 ALORS Mem8 TEMP(7..0) SINON SI mode 64 bits et registre 64 bits selectionn ALORS R64(7..0) TEMP(7..0) r64(63..8) 00000000000000h SINON R32(7..0) TEMP(7..0) r32(31..8) 000000h FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de copier l'octet de l'oprande source spcifi par un compteur d'oprande dans
776
l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 116 118.
777
Assembleur 80x86
SSE4.1+
PEXTRD
Paquet Extract Doubleword
Syntaxe
PEXTRD dest,source,count
Description Cette instruction permet de copier le double mot de l'oprande source spcifi par un compteur d'oprande dans l'oprande de destination.
Algorithme
SEL count(1..0) TEMP (source >> SEL x 32) FFFFFFFFh dest TEMP
Mnmonique
Instruction Opcode Description Cette instruction permet de copier le double mot de l'oprande source spcifi par un compteur d'oprande dans l'oprande de destination.
PEXTRD r/m32,xmm2,imm8
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 116 118.
778
Assembleur 80x86
SSE4.1+
PEXTRQ
Paquet Extract Quadword
Syntaxe
PEXTRQ dest,source,count
Description Cette instruction permet de copier le quadruple mot de l'oprande source spcifi par un compteur d'oprande dans l'oprande de destination.
Algorithme
SEL count(0) TEMP (source >> SEL x 64) dest TEMP
Mnmonique
Instruction Opcode Description
PEXTRQ r/m64,xmm2,imm8
Cette instruction permet de copier le quadruple mot de 66h (REX.W) 0Fh 3Ah 16h /r ib l'oprande source spcifi par un compteur d'oprande dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
779
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 116 118.
780
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
PEXTRW
Extract Word
Syntaxe
PEXTRW dest,source,count
Description Cette instruction permet de copier le mot de l'oprande source spcifi par un compteur d'oprande dans l'oprande de destination.
Algorithme
SI oprande source est 64 bits ALORS SEL count 3h TEMP (source >> (SEL x 16)) FFFFh dest(15..0) TEMP(15..0) dest(31..16) 0000h SINON SI oprande source est 128 bits ALORS SEL count 7h TEMP (source >> (SEL x 16)) FFFFh dest(15..0) TEMP(15..0) dest(31..16) 0000h FIN SI
Mnmonique
Instruction Opcode Description
781
PEXTRW reg32,mmreg,imm8
Cette instruction permet de copier le mot de l'oprande source spcifi par un compteur d'oprande dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 118 121.
782
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
Syntaxe PF2ID dest,source
PF2ID
Convert Packed Float Point to 32 bits
Description Cette instruction permet de convertir un double mots d'un format rel un format d'entier 32 bits.
Algorithme SI source(31..0) > 231 ALORS dest(31..0) 7FFFFFFFh FIN SI SI source(31..0) <= -231 ALORS dest(31..0) 80000000h FIN SI dest(31..0) truncate(source(31..0)) SI source(63..32) > 231 ALORS dest(63..32) 7FFFFFFFh FIN SI SI source(63..32) <= -231 ALORS dest(63..32) 80000000h FIN SI dest(63..32) truncate(source(63..32))
Mnmonique Instruction PF2ID mm,mm/m64 Opcode 0Fh 0Fh 1Dh /r Description Cette instruction permet de convertir un double mots d'un format rel un format d'entier 32
783
bits.
784
Assembleur 80x86
AMD 3DNow!+
PF2IW
Packed Float Point to Integer Word conversion with sign extend
Syntaxe
PF2IW dest,source
Description Cette instruction permet de convertir un double mots d'un format rel un format d'entier 16 bits.
Algorithme
SI source(31..0) >= 215 ALORS dest(31..0) 00007FFFh SINON SI source(31..0) <= -215 ALORS dest(31..0) FFFF8000h SINON dest(31..0) * source(31..0) ] FIN SI SI source(63..32) >= 215 ALORS dest(63..32) 00007FFFh SINON SI source(63..32) <= -215 ALORS dest(63..32) FFFF8000h SINON dest(63..32) * source(63..32) ] FIN SI
Mnmonique
Instruction Opcode Description
785
PF2IW mm,mm/m64
Cette instruction permet de convertir un double mots d'un format rel un format d'entier 16 bits.
Rfrences AMD Extensions to the 3DNow! and MMX Instruction Sets Manual, Edition Advanced Micro Devices, March 2000, Publication No. 22466D, page 12.
786
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFACC dest,source
PFACC
Float Point Accumulate
Mnmonique Instruction PFACC mm,mm/m64 Opcode 0Fh 0Fh AEh /r Description Cette instruction permet d'effectuer l'accumulation de double mots.
787
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFADD dest,source
PFADD
Float Point Addition
Mnmonique Instruction PFADD mm,mm/m64 Opcode 0Fh 0Fh 9Eh /r Description Cette instruction permet d'effectuer l'addition de double mots.
788
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFCMPEQ dest,source
PFCMPEQ
Float Point Compare Equal
Description Cette instruction permet d'effectuer la comparaison d'galit d'un paquet de double mots contenu dans des oprandes de 64 bits.
Algorithme SI dest(31..0) = source(31..0) ALORS dest(31..0) FFFFFFFFh SINON dest(31..0) 00000000h FIN SI SI dest(63..32) = source(63..32) ALORS dest(63..32) FFFFFFFFh SINON dest(63..32) 00000000h FIN SI
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la comparaison d'galit d'un paquet de double mots contenu dans des oprandes de 64 bits.
PFCMPEQ mm,mm/m64
789
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFCMPGE dest,source
PFCMPGE
Float Point Greater or Equal to
Description Cette instruction permet d'effectuer la comparaison d'galit ou de supriorit d'un paquet de double mots contenu dans des oprandes de 64 bits.
Algorithme SI dest(31..0) >= source(31..0) ALORS dest(31..0) FFFFFFFFh SINON dest(31..0) 00000000h FIN SI SI dest(63..32) >= source(63..32) ALORS dest(63..32) FFFFFFFFh SINON dest(63..32) 00000000h FIN SI
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la comparaison d'galit ou de supriorit d'un paquet de double mots contenu dans des oprandes de 64 bits.
PFCMPGE mm,mm/m64
790
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFCMPGT dest,source
PFCMPGT
Float Point Greater
Description Cette instruction permet d'effectuer la comparaison de supriorit d'un paquet de double mots contenu dans des oprandes de 64 bits.
Algorithme SI dest(31..0) > source(31..0) ALORS dest(31..0) FFFFFFFFh SINON dest(31..0) 00000000h FIN SI SI dest(63..32) > source(63..32) ALORS dest(63..32) FFFFFFFFh SINON dest(63..32) 00000000h FIN SI
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la comparaison de supriorit d'un paquet de double mots contenu dans des oprandes de 64 bits.
PFCMPGT mm,mm/m64
791
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFMAX dest,source
PFMAX
Float Point Maximum
Description Cette instruction permet de retourner la valeur maximal de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Algorithme SI source(31..0) > dest(31..0) ALORS dest(31..0) source(31..0) FIN SI SI source(63..32) > dest(63..32) ALORS dest(63..32) source(63..32) FIN SI
Mnmonique Instruction Opcode Description Cette instruction permet de retourner la valeur maximal de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFMAX mm,mm/m64
792
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFMIN dest,source
PFMIN
Float Point Minimum
Description Cette instruction permet de retourner la valeur minimal de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Algorithme SI source(31..0) < dest(31..0) ALORS dest(31..0) source(31..0) FIN SI SI source(63..32) < dest(63..32) ALORS dest(63..32) source(63..32) FIN SI
Mnmonique Instruction Opcode Description Cette instruction permet de retourner la valeur minimal de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFMIN mm,mm/m64
793
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFMUL dest,source
PFMUL
Float Point Multiplication
Description Cette instruction permet d'effectuer la multiplication de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la multiplication de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFMUL mm,mm/m64
794
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFNACC dest,source
PFNACC
Float Point Negative Accumulate
Mnmonique Instruction PFNACC mm,mm/m64 Opcode 0Fh 0Fh 8Ah /r Description Cette instruction permet d'effectuer l'accumulation ngative de double mots.
795
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFPNACC dest,source
PFPNACC
Packed Floating Point Mixed Positive
Description Cette instruction permet d'effectuer un mixe d'accumulation positive et ngative de double mots.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer un mixe d'accumulation positive et ngative de double mots.
PFPNACC mm,mm/m64
796
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFRCP dest,source
PFRCP
Float Point Reciprocal Approximation
Description Cette instruction permet d'effectuer la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFRCP mm,mm/m64
797
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFRCIT1 dest,source
PFRCPIT1
Float Point Reciprocal, First iteration Step
Description Cette instruction permet d'effectuer la premire tape d'itration de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la premire tape d'itration de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFRCIT1 mm,mm/m64
798
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFRCPIT2 dest,source
PFRCPIT2
Float Point Reciprocal, Second iteration Step
Description Cette instruction permet d'effectuer la deuxime tape d'itration de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la deuxime tape d'itration de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFRCPIT2 mm,mm/m64
799
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFRSQIT1 dest,source
PFRSQIT1
Float Point Reciprocal Square Root, First iteration step
Description Cette instruction permet d'effectuer la premire tape d'itration de la racine carr de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction PFRSQIT1 mm,mm/m64 Opcode 0Fh 0Fh A7h /r Description Cette instruction permet d'effectuer la premire tape d'itration de la racine carr de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
800
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFRSQRT dest,source
PFRSQRT
Float Point Reciprocal Square Root Approximation
Description Cette instruction permet d'effectuer la racine carr approximative de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la racine carr approximative de la rciproque de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFRSQRT mm,mm/m64
801
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFSUB dest,source
PFSUB
Float Point Subtraction
Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFSUB mm,mm/m64
802
Assembleur 80x86
AMD 3DNow!+
Syntaxe PFSUBR dest,source
PFSUBR
Float Point Reverse Subtraction
Description Cette instruction permet d'effectuer la soustraction invers de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Mnmonique Instruction Opcode Description Cette instruction permet d'effectuer la soustraction invers de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
PFSUBR mm,mm/m64
803
Assembleur 80x86
SSSE3+
PHADDD
Packed Horizontal Add Doubleword
Syntaxe
PHADDD dest,source
Description Cette instruction permet d'effectuer l'addition de double mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
Algorithme
SI taille d'oprande = 64 bits ALORS dest(31..0) dest(63..32) + dest(31..0) dest(63..32) source(63..32) + source(31..0) SINON SI taille d'oprande = 128 bits ALORS dest(31..0) dest(63..32) + dest(31..0) dest(63..32) dest(127..96) + dest(95..64) dest(95..64) source(63..32) + source(31..0) dest(127..96) source(127..96) + source(95..64) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer l'addition de double mot entier horizontallement adjacent d'un oprande source et oprande
PHADDD mm1,mm2/m64
804
destination et met le rsultat dans l'oprande destination. Cette instruction permet d'effectuer l'addition de double mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
PHADDD xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 123 125.
805
Assembleur 80x86
SSSE3+
PHADDSW
Packed Horizontal Add and Saturate Word
Syntaxe
PHADDSW dest,source
Description Cette instruction permet d'effectuer l'addition de mot entier horizontallement adjacent avec saturation d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
Algorithme
SI taille d'oprande = 64 bits ALORS dest(15..0) SaturateToSignedWord((dest(31..16) + dest(15..0)) dest(31..16) SaturateToSignedWord(dest(63..48) + dest(47..32)) dest(47..32) SaturateToSignedWord(source(31..16) + source(15..0)) dest(63..48) SaturateToSignedWord(source(63..48) + source(47..32)) SINON SI taille d'oprande = 128 bits ALORS dest(15..0) SaturateToSignedWord(dest(31..16) + dest(15..0)) dest(31..16) SaturateToSignedWord(dest(63..48) + dest(47..32)) dest(47..32) SaturateToSignedWord(dest(95..80) + dest(79..64)) dest(63..48) SaturateToSignedWord(dest(127..112) + dest(111..96)) dest(79..64) SaturateToSignedWord(source(31..16) + source(15..0)) dest(95..80) SaturateToSignedWord(source(63..48) + source(47..32)) dest(111..96) SaturateToSignedWord(source(95..80) + source(79..64)) dest(127..112) SaturateToSignedWord(source(127..112) + source(111..96)) FIN SI
Mnmonique
806
Instruction
Opcode
Description Cette instruction permet d'effectuer l'addition de mot entier horizontallement adjacent avec saturation d'un oprande source et oprande destination et met le rsultat dans l'oprande destination. Cette instruction permet d'effectuer l'addition de mot entier horizontallement adjacent avec saturation d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
PHADDSW mm1,mm2/m64
PHADDSW xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 126 128.
807
Assembleur 80x86
SSSE3+
PHADDW
Packed Horizontal Add Word
Syntaxe
PHADDW dest,source
Description Cette instruction permet d'effectuer l'addition de mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
Algorithme
SI taille d'oprande = 64 bits ALORS dest(15..0) dest(31..16) + dest(15..0) dest(31..16) dest(63..48) + dest(47..32) dest(47..32) source(31..16) + source(15..0) dest(63..48) source(63..48) + source(47..32) SINON SI taille d'oprande = 128 bits ALORS dest(15..0) dest(31..16) + dest(15..0) dest(31..16) dest(63..48) + dest(47..32) dest(47..32) dest(95..80) + dest(79..64) dest(63..48) dest(127..112) + dest(111..96) dest(79..64) source(31..16) + source(15..0) dest(95..80) source(63..48) + source(47..32) dest(111..96) source(95..80) + source(79..64) dest(127..112) source(127..112) + source(111..96) FIN SI
Mnmonique
808
Instruction
Opcode
Description Cette instruction permet d'effectuer l'addition de mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination. Cette instruction permet d'effectuer l'addition de mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
PHADDW mm1,mm2/m64
PHADDW xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 123 125.
809
Assembleur 80x86
SSE4.1+
PHMINPOSUW
Packed Horizontal Word Minimum
Syntaxe
PHMINPOSUW dest,source
Description Cette instruction permet de demander le minimum des valeurs de mot de l'oprande source et place dans la partie basse de l'oprande le mot.
Algorithme
INDEX 0 MIN source(15..0) SI source(31..16) < MIN ALORS INDEX 1 MIN SRC(31..16) FIN SI SI source(47..32) < MIN ALORS INDEX 2 MIN source(47..32) FIN SI SI source(63..48) < MIN ALORS INDEX 3 MIN source(63..48) FIN SI SI source(79..64) < MIN ALORS INDEX 4 MIN source(79..64) FIN SI SI source(95..80) < MIN ALORS INDEX 5 MIN source(95..80) 810
FIN SI SI source(111..96) < MIN ALORS INDEX 6 MIN source(111..96) FIN SI SI source(127..112) < MIN ALORS INDEX 7 MIN source(127..112) FIN SI dest(15..0) MIN dest(18..16) INDEX dest(127..19) 0000000000000000000000000000h
Mnmonique
Instruction Opcode Description Cette instruction permet de demander le minimum des valeurs de mot de l'oprande source et place dans la partie basse de l'oprande le mot.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 129 131.
811
Assembleur 80x86
SSSE3+
PHSUBD
Packed Horizontal Subtract Doubleword
Syntaxe
PHSUBD dest,source
Description Cette instruction permet d'effectuer la soustraction de double mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
Algorithme
SI taille d'oprande = 64 bits ALORS dest(31..0) dest(31..0) - dest(63..32) dest(63..32) source(31..0) - source(63..32) SINON SI taille d'oprande = 128 bits ALORS dest(31..0) dest(31..0) - dest(63..32) dest(63..32) dest(95..64) - dest(127..96) dest(95..64) source(31..0) - source(63..32) dest(127..96) source(95..64) - source(127..96) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la soustraction de double mot entier horizontallement adjacent d'un oprande source et oprande
PHSUBD mm1,mm2/m64
812
destination et met le rsultat dans l'oprande destination. Cette instruction permet d'effectuer la soustraction de double mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
PHSUBD xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 132 135.
813
Assembleur 80x86
SSSE3+
PHSUBSW
Packed Horizontal Subtract and Saturate
Syntaxe
PHSUBSW dest,source
Description Cette instruction permet d'effectuer la soustraction de mot entier horizontallement adjacent avec saturation d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
Algorithme
SI taille d'oprande = 64 bits ALORS dest(15..0) SaturateToSignedWord(dest(15..0) - dest(31..16)) dest(31..16) SaturateToSignedWord(dest(47..32) - dest(63..48)) dest(47..32) SaturateToSignedWord(source(15..0) - source(31..16)) dest(63..48) SaturateToSignedWord(source(47..32) - source(63..48)) SINON SI taille d'oprande = 128 bits ALORS dest(15..0) SaturateToSignedWord(dest(15..0) - dest(31..16)) dest(31..16) SaturateToSignedWord(dest(47..32) - dest(63..48)) dest(47..32) SaturateToSignedWord(dest(79..64) - dest(95..80)) dest(63..48) SaturateToSignedWord(dest(111..96) - dest(127..112)) dest(79..64) SaturateToSignedWord(source(15..0) - source(31..16)) dest(95..80) SaturateToSignedWord(source(47..32) - source(63..48)) dest(111..96) SaturateToSignedWord(source(79..64) - source(95..80)) dest(127..112) SaturateToSignedWord(source(111..96) - source(127..112)) FIN SI
Mnmonique
814
Instruction
Opcode
Description Cette instruction permet d'effectuer la soustraction de mot entier horizontallement adjacent avec saturation d'un oprande source et oprande destination et met le rsultat dans l'oprande destination. Cette instruction permet d'effectuer la soustraction de mot entier horizontallement adjacent avec saturation d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
PHSUBSW mm1,mm2/m64
PHSUBSW xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 136 138.
815
Assembleur 80x86
SSSE3+
PHSUBW
Packed Horizontal Subtract Word
Syntaxe
PHSUBW dest,source
Description Cette instruction permet d'effectuer la soustraction de mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
Algorithme
SI taille d'oprande = 64 bits ALORS dest(15..0) dest(15..0) - dest(31..16) dest(31..16) dest(47..32) - dest(63..48) dest(47..32) source(15..0) - source(31..16) dest(63..48) source(47..32) - source(63..48) SINON SI taille d'oprande = 128 bits ALORS dest(15..0) dest(15..0) - dest(31..16) dest(31..16) dest(47..32) - dest(63..48) dest(47..32) dest(79..64) - dest(95..80) dest(63..48) dest(111..96) - dest(127..112) dest(79..64) source(15..0) - source(31..16) dest(95..80) source(47..32) - source(63..48) dest(111..96) source(79..64) - source(95..80) dest(127..112) source(111..96) - source(127..112) FIN SI
Mnmonique
816
Instruction
Opcode
Description Cette instruction permet d'effectuer la soustraction de mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination. Cette instruction permet d'effectuer la soustraction de mot entier horizontallement adjacent d'un oprande source et oprande destination et met le rsultat dans l'oprande destination.
PHSUBW mm1,mm2/m64
PHSUBW xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 132 135.
817
Assembleur 80x86
AMD 3DNow!+
Syntaxe PI2FD dest,source
PI2FD
Integer To Float Point
Description Cette instruction permet de convertir un paquet de format d'entier 32 bits double mots d'un format rel.
Mnmonique Instruction Opcode Description Cette instruction permet de convertir un paquet de format d'entier 32 bits double mots d'un format rel.
PI2FD mm,mm/m64
818
Assembleur 80x86
AMD 3DNow!+
Syntaxe PI2FW dest,source
PI2FW
Integer To Float Point Word
Description Cette instruction permet de convertir un paquet de format d'entier 16 bits double mots d'un format rel.
Mnmonique Instruction Opcode Description Cette instruction permet de convertir un paquet de format d'entier 16 bits double mots d'un format rel.
PI2FW mm,mm/m64
819
Assembleur 80x86
SSE4.1+
PINSRB
Insert Byte
Syntaxe
PINSRW dest,source,compteur
Description Cette instruction permet d'effectuer une copie d'un octet d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
Algorithme
SEL compteur(3..0) MASK (0FFh << (SEL x 8)) TEMP (((source(7..0) << (SEL x 8)) MASK) dest ((dest MASK) U TEMP)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une copie d'un octet d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
Rfrences
820
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 139 141.
821
Assembleur 80x86
SSE4.1+
PINSRD
Insert Doubleword
Syntaxe
PINSRD dest,source,compteur
Description Cette instruction permet d'effectuer une copie d'un double mot d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
Algorithme
SEL compteur (1..0) MASK (0FFFFFFFFh << (SEL x 32)) TEMP (((source << (SEL x 32)) AND MASK) dest ((dest MASK) U TEMP)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une copie d'un double mot d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
822
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 139 141.
823
Assembleur 80x86
SSE4.1+
PINSRQ
Insert Quadword
Syntaxe
PINSRQ dest,source,compteur
Description Cette instruction permet d'effectuer une copie d'un quadruple mot d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
Algorithme
SEL compteur(0) MASK (0FFFFFFFFFFFFFFFFh << (SEL x 64)) TEMP (((source << (SEL x 64)) MASK) dest ((dest MASK) U TEMP)
Mnmonique
Instruction Opcode Description
Cette instruction permet d'effectuer une copie d'un quadruple mot d'un oprande 66h REX.W 0Fh 3Ah 22h /r ib source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
824
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 139 141.
825
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
PINSRW
Insert Word
Syntaxe
PINSRW dest,source,compteur
Description Cette instruction permet d'effectuer une copie d'un mot d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
Algorithme
SI oprande dest est 128 bits ALORS compteur compteur 07h EVALUER CAS compteur CAS 0: masque 0000000000000000000000000000FFFFh CAS 1: masque 000000000000000000000000FFFF0000h CAS 2: masque 00000000000000000000FFFF00000000h CAS 3: masque 0000000000000000FFFF000000000000h CAS 4: masque 000000000000FFFF0000000000000000h CAS 5: masque 00000000FFFF00000000000000000000h CAS 6: masque 0000FFFF000000000000000000000000h CAS 7: masque FFFF0000000000000000000000000000h FIN EVALUE CAS SINON compteur compteur 03h EVALUER CAS compteur CAS 0: masque 000000000000FFFFh CAS 1: masque 00000000FFFF0000h CAS 2: masque 0000FFFF00000000h 826
CAS 3: masque FFFF000000000000h FIN EVALUE CAS FIN SI dest (dest (masque)) U ((source << (compteur x 16)) masque)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une copie d'un mot d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande. Cette instruction permet d'effectuer une copie d'un mot d'un oprande source et de l'insrer dans l'oprande de destination de l'emplacement spcifi par un compteur d'oprande.
0Fh C4h /r ib
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 142 144.
827
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMACHRIW destination, source
PMACHRIW
Packed Multiply and Accumulate with Rounding
Description Cette instruction permet d'effectuer une multiplication de 2 oprandes sources en utilisant la mthode dcrite par PMULHRW et accumule le rsultat avec la valeur dans un registre de destination en utilisant un arrondissement arithmtique.
Algorithme destination(15..0) destination(15..0) + (destination(15..0) x source(15..0) + 00004000h)(30..15) destination(31..16) destination(31..16) + (destination(31..16) x source(31..16) + 00004000h)(30..15) destination(47..32) destination(47..32) + (destination(47..32) x source(47..32) + 00004000h)(30..15) destination(63..48) destination(63..48) + (destination(63..48) x source(63..48) + 00004000h)(30..15)
Mnmonique Instruction PMACHRIW mm,m64 Opcode 0Fh 5Eh /r Description Cette instruction permet d'effectuer une multiplication de 2 oprandes sources en utilisant la mthode dcrite par PMULHRW et accumule le rsultat avec la valeur dans un registre de destination en utilisant un arrondissement arithmtique.
828
829
Assembleur 80x86
SSSE3+
PMADDUBSW
Multiply and Add Packed Signed and Unsigned Bytes
Syntaxe
PMADDUBSW dest,source
Description Cette instruction permet d'effectuer une multiplication vertical de chacun des octets d'un oprande de destination avec les octets (entier) d'un oprande source et produit des entiers 16 bits intermdiaire.
Algorithme
SI oprande dest est 128 bits ALORS dest(15..0) SaturateToSignedWord(source(15..8) x dest(15..8) + source(7..0) x dest(7..0)) dest(127..112) SaturateToSignedWord(source(127..120) x dest(127..120) + source(119..112) x dest(119..112)) SINON dest(15..0) SaturateToSignedWord(source(15..8) x dest(15..8) + source(7..0) x dest(7..0)) dest(31..16) SaturateToSignedWord(source(31..24) x dest(31..24) + source(23..16) x dest(23..16)) dest(47..32) SaturateToSignedWord(source(47..40) x dest(47..40) + source(39..32) x dest(39..32)) dest(63..48) SaturateToSignedWord(source(63..56) x dest(63..56) + source(55..48) x dest(55..48)) FIN SI dest (dest (masque)) U ((source << (compteur x 16)) masque)
Mnmonique
Instruction Opcode Description
830
Cette instruction permet d'effectuer une multiplication vertical de chacun des octets d'un oprande de destination avec les octets (entier) d'un oprande source et produit des entiers 16 bits intermdiaire. Cette instruction permet d'effectuer une multiplication vertical de chacun des octets d'un oprande de destination avec les octets (entier) d'un oprande source et produit des entiers 16 bits intermdiaire.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 145 147.
831
Assembleur 80x86
INTEL Pentium Pro+
PMADDWD
Packed Multiply and Add Dwords
Syntaxe
PMADDWD destination, source
Description Cette instruction permet d'effectuer une multiplication de 2 registres MMX contenant dans un paquet de mots d'un emplacement/mmoire.
Algorithme
destination(31..0) destination(15..0) x source(15..0) + destination(31..16) x source(31..16) destination(63..32) destination(47..32) x source(47..32) + destination(63..48) x source(63..48)
Mnmonique
Instruction PMADDWD mm,mm/m64 Opcode 0Fh F5h /r Description Cette instruction permet d'effectuer une multiplication de 2 registres MMX contenant dans un paquet de mots d'un emplacement/mmoire.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 148 151.
832
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMAGW destination, source
PMAGW
Packed Magnitude
Description Cette instruction permet d'effectuer la comparaison de la valeur absolue d'un paquet de mots de l'oprande source et de l'ensemble des mots de destination et fixe l'oprande de destination avec la valeur de la plus large magntude.
Algorithme SI ABS(source(15..0)) > ABS(source(15..0)) ALORS destination(15..0) source(15..0) FIN SI SI ABS(source(31..16)) > ABS(source(31..16)) ALORS destination(31..16) source(31..16) FIN SI SI ABS(source(47..32)) > ABS(source(47..32)) ALORS destination(47..32) source(47..32) FIN SI SI ABS(source(63..56)) > ABS(source(63..56)) ALORS destination(63..56) source(63..56) FIN SI
Mnmonique Instruction PMAGW mm,mm/m64 Opcode 0Fh 52h /r Description Cette instruction permet d'effectuer la comparaison de la valeur absolue d'un paquet de mots de l'oprande source et de l'ensemble des mots de destination et fixe l'oprande de destination avec la valeur de la plus large
833
magntude.
834
Assembleur 80x86
SSE4.1+
PMAXSB
Maximum of Packed Signed Byte Integers
Syntaxe
PMAXSB destination, source
Description Cette instruction permet de retourner la valeur maximal de chacun des octets (entier) des paquets contenu dans deux oprandes.
Algorithme
SI destination(7..0) > source(7..0) ALORS destination(7..0) destination(7..0) SINON destination(7..0) source(7..0) FIN SI SI destination(15..8) > source(15..8) ALORS destination(15..8) destination(15..8) SINON destination(15..8) source(15..8) FIN SI SI destination(23..16) > source(23..16) ALORS destination(23..16) destination(23..16) SINON destination(23..16) SRC(23..16) FIN SI SI destination(31..24) > source(31..24) ALORS destination(31..24) destination(31..24) SINON destination(31..24) SRC(31..24) FIN SI SI destination(39..32) > source(39..32) ALORS 835
destination(39..32) destination(39..32) SINON destination(39..32) source(39..32) FIN SI SI destination(47..40) > source(47..40) ALORS destination(47..40) destination(47..40) SINON destination(47..40) source(47..40) FIN SI SI destination(55..48) > source(55..48) ALORS destination(55..48) destination(55..48) SINON destination(55..48) source(55..48) FIN SI SI destination(63..56) > source(63..56) ALORS destination(63..56) destination(63..56) SINON destination(63..56) source(63..56) FIN SI SI destination(71..64) > source(71..64) ALORS destination(71..64) destination(71..64) SINON destination(71..64) source(71..64) FIN SI SI destination(79..72) > source(79..72) ALORS destination(79..72) destination(79..72) SINON destination(79..72) source(79..72) FIN SI SI destination(87..80) > source(87..80) ALORS destination(87..80) destination(87..80) SINON destination(87..80) source(87..80) FIN SI SI destination(95..88) > source(95..88) ALORS destination(95..88) destination(95..88) SINON destination(95..88) source(95..88) FIN SI SI destination(103..96) > source(103..96) ALORS destination(103..96) destination(103..96) 836
SINON destination(103..96) source(103..96) FIN SI SI destination(111..104) > source(111..104) ALORS destination(111..104) destination(111..104) SINON destination(111..104) source(111..104) FIN SI SI destination(119..112) > source(119..112) ALORS destination(119..112) destination(119..112) SINON destination(119..112) source(119..112) FIN SI SI destination(127..120) > source(127..120) ALORS destination(127..120) destination(127..120) SINON destination(127..120) source(127..120) FIN SI
Mnmonique
Instruction PMAXSB xmm1,xmm2/m128 Opcode 66h 0Fh 38h 3Ch /r Description Cette instruction permet de retourner la valeur maximal de chacun des octets (entier) des paquets contenu dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 152 154.
837
Assembleur 80x86
SSE4.1+
PMAXSD
Maximum of Packed Signed Dword Integers
Syntaxe
PMAXSD destination, source
Description Cette instruction permet de retourner la valeur maximal de chacun des doubles mots des paquets contenu dans deux oprandes.
Algorithme
SI destination(31..0) > source(31..0) ALORS destination(31..0) destination(31..0) SINON destination(31..0) source(31..0) FIN SI SI destination(63..32) > source(63..32) ALORS destination(63..32) destination(63..32) SINON destination(63..32) source(63..32) FIN SI SI destination(95..64) > SRC(95..64) ALORS destination(95..64) destination(95..64) SINON destination(95..64) source(95..64) FIN SI SI destination(127..96) > SRC(127..96) ALORS destination(127..96) destination(127..96) SINON destination(127..96) source(127..96) FIN SI
838
Mnmonique
Instruction PMAXSD xmm1,xmm2/m128 Opcode 66h 0Fh 38h 3Dh /r Description Cette instruction permet de retourner la valeur maximal de chacun des doubles mots des paquets contenu dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 155 157.
839
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
PMAXSW
Packed Signed Integer Word Maximum
Syntaxe
PMAXSW destination, source
Description Cette instruction permet de retourner la valeur maximal de chacun des mots (entier) des paquets contenu dans deux oprandes.
Algorithme
SI taille de l'oprande = 64 bits ALORS SI destination(0..15) <= source(0..15) ALORS destination(0..15) source(0..15) FIN SI SI destination(16..31) <= source[16..31]) ALORS destination(16..31) source(16..31) FIN SI SI destination(32..47) <= source(32..47) ALORS destination(32..47) source(32..47) FIN SI SI destination(48..63) <= source(48..63) ALORS destination(48..63) source(48..63) FIN SI SINON SI destination(0..15) <= source(0..15) ALORS destination(0..15) source(0..15) FIN SI SI destination(16..31) <= source(16..31) ALORS destination(16..31) source(16..31) 840
FIN SI SI destination(32..47) <= source(32..47) ALORS destination(32..47) source(32..47) FIN SI SI destination(48..63) <= source(48..63) ALORS destination(48..63) source(48..63) FIN SI SI destination(64..79) <= source(64..79) ALORS destination(64..79) source(64..79) FIN SI SI destination(80..95) <= source(80..95) ALORS destination(80..95) source(80..95) FIN SI SI destination(96..111) <= source(96..111) ALORS destination(96..111) source(96..111) FIN SI SI destination(112..127) <= source(112..127) ALORS destination(112..127) source(112..127) FIN SI FIN SI
Mnmonique
Instruction PMAXSW mm1,mm2/m64 Opcode 0Fh EEh /r Description Cette instruction permet de retourner la valeur maximal de chacun des mots (entier) des paquets contenu dans deux oprandes. Cette instruction permet de retourner la valeur maximal de chacun des mots (entier) des paquets contenu dans deux oprandes.
PMAXSW xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
841
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 158 160.
842
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
PMAXUB
Packed Unsigned Integer Byte Maximum
Syntaxe
PMAXUB destination, source
Description Cette instruction permet de retourner la valeur maximal de chacun des octets des paquets contenu dans deux oprandes.
Algorithme
SI taille de l'oprande = 64 bits ALORS SI destination(7..0) <= source(7..0) ALORS destination(7..0) source(7..0) FIN SI SI destination(8..15) <= source(8..15) ALORS destination(8..15) source(8..15) FIN SI SI destination(16..23) <= source(16..23) ALORS destination(16..23) source(16..23) FIN SI SI destination(24..31) <= source(24..31) ALORS Destination(24..31) Source(24..31) FIN SI SI destination(32..39) <= source(32..39) ALORS Destination(32..39) Source(32..39) FIN SI SI destination(40..47) <= source(40..47) ALORS Destination(40..47) Source(40..47) 843
FIN SI SI destination(48..55) <= source(48..55) ALORS Destination(48..55) Source(48..55) FIN SI SI destination(63..56) <= source(63..56) ALORS destination(63..56) source(63..56) FIN SI SINON SI destination(7..0) <= source(7..0) ALORS destination(7..0) source(7..0) FIN SI SI destination(8..15) <= source(8..15) ALORS destination(8..15) source(8..15) FIN SI SI destination(16..23) <= source(16..23) ALORS destination(16..23) source(16..23) FIN SI SI destination(24..31) <= source(24..31) ALORS destination(24..31) source(24..31) FIN SI SI destination(32..39) <= source(32..39) ALORS destination(32..39) source(32..39) FIN SI SI destination(40..47) <= source(40..47) ALORS destination(40..47) source(40..47) FIN SI SI destination(48..55) <= source(48..55) ALORS destination(48..55) source(48..55) FIN SI SI destination(56..63) <= source(56..63) ALORS destination(56..63) source(56..63) FIN SI SI destination(64..71) <= source(64..71) ALORS destination(64..71) source(64..71) FIN SI SI destination(72..79) <= source(72..79) ALORS destination(72..79) source(72..79) FIN SI SI destination(80..87) <= source(80..87) ALORS destination(80..87) source(80..87) FIN SI 844
SI destination(88..95) <= source(88..95) ALORS destination(88..95) source(88..95) FIN SI SI destination(96..103) <= source(96..103) ALORS destination(96..103) source(96..103) FIN SI SI destination(104..111) <= source(104..111) ALORS destination(104..111) source(104..111) FIN SI SI destination(112..119) <= source(112..119) ALORS destination(112..119) source(112..119) FIN SI SI destination(127..120) <= source(127..120) ALORS (destination(127..120) source(127..120) FIN SI FIN SI
Mnmonique
Instruction PMAXUB mm1,mm2/m64 Opcode 0Fh DEh /r Description Cette instruction permet de retourner la valeur maximal de chacun des octets des paquets contenu dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 161 163.
845
Assembleur 80x86
SSE4.1+
PMAXUD
Maximum of Packed Unsigned Dword Integers
Syntaxe
PMAXUD destination, source
Description Cette instruction permet de retourner la valeur maximal de chacun des doubles mots (naturel) des paquets contenu dans deux oprandes.
Algorithme
SI destination(31..0) > source(31..0) ALORS destination(31..0) destination(31..0) SINON destination(31..0) source(31..0) FIN SI SI destination(63..32) > source(63..32) ALORS destination(63..32) destination(63..32) SINON destination(63..32) source(63..32) FIN SI SI destination(95..64) > source(95..64) ALORS destination(95..64) destination(95..64) SINON destination(95..64) source(95..64) FIN SI SI destination(127..96) > source(127..96) ALORS destination(127..96) destination(127..96) SINON destination(127..96) source(127..96) FIN SI
846
Mnmonique
Instruction PMAXUD xmm1,xmm2/m128 Opcode 66h 0Fh 38h 3Fh /r Description Cette instruction permet de retourner la valeur maximal de chacun des doubles mots (naturel) des paquets contenu dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 164 166.
847
Assembleur 80x86
SSE4.1+
PMAXUW
Maximum of Packed Unsigned Word
Syntaxe
PMAXUW destination, source
Description Cette instruction permet de retourner la valeur maximal de chacun des mots (naturel) des paquets contenu dans deux oprandes.
Algorithme
SI destination(15..0) > source(15..0) ALORS destination(15..0) destination(15..0) SINON destination(15..0) source(15..0) FIN SI SI destination(31..16) > source(31..16) ALORS destination(31..16) destination(31..16) SINON destination(31..16) source(31..16) FIN SI SI destination(47..32) > source(47..32) ALORS destination(47..32) destination(47..32) SINON destination(47..32) source(47..32) FIN SI SI destination(63..48) > source(63..48) ALORS destination(63..48) destination(63..48) SINON destination(63..48) source(63..48) FIN SI SI destination(79..64) > source(79..64) ALORS 848
destination(79..64) destination(79..64) SINON destination(79..64) source(79..64) FIN SI SI destination(95..80) > source(95..80) ALORS destination(95..80) destination(95..80) SINON destination(95..80) source(95..80) FIN SI SI destination(111..96) > source(111..96) ALORS destination(111..96) destination(111..96) SINON destination(111..96) source(111..96) FIN SI SI destination(127..112) > source(127..112) ALORS destination(127..112) destination(127..112) SINON destination(127..112) source(127..112) FIN SI
Mnmonique
Instruction PMAXUW xmm1,xmm2/m128 Opcode 66h 0Fh 38h 3Eh /r Description Cette instruction permet de retourner la valeur maximal de chacun des mots (naturel) des paquets contenus dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 167 169.
849
Assembleur 80x86
SSE4.1+
PMINSB
Minimum of Packed Signed Byte Integers
Syntaxe
PMINSB destination, source
Description Cette instruction permet de retourner la valeur minimal de chacun des octets (entier) des paquets contenu dans deux oprandes.
Algorithme
SI destination(7..0) < source(7..0) ALORS destination(7..0) destination(7..0) SINON destination(7..0) source(7..0) FIN SI SI destination(15..8) < source(15..8) ALORS destination(15..8) destination(15..8) SINON destination(15..8) source(15..8) FIN SI SI destination(23..16) < source(23..16) ALORS destination(23..16) destination(23..16) SINON destination(23..16) source(23..16) FIN SI SI destination(31..24) < source(31..24) ALORS destination(31..24) destination(31..24) SINON destination(31..24) source(31..24) FIN SI SI destination(39..32) < source(39..32) ALORS 850
destination(39..32) destination(39..32) SINON destination(39..32) source(39..32) FIN SI SI destination(47..40) < source(47..40) ALORS destination(47..40) destination(47..40) SINON destination(47..40) source(47..40) FIN SI SI destination(55..48) < source(55..48) ALORS destination(55..48) destination(55..48) SINON destination(55..48) source(55..48) FIN SI SI destination(63..56) < source(63..56) ALORS destination(63..56) destination(63..56) SINON destination(63..56) source(63..56) FIN SI SI destination(71..64) < source(71..64) ALORS destination(71..64) destination(71..64) SINON destination(71..64) source(71..64) FIN SI SI destination(79..72) < source(79..72) ALORS destination(79..72) destination(79..72) SINON destination(79..72) source(79..72) FIN SI SI destination(87..80) < source(87..80) ALORS destination(87..80) destination(87..80) SINON destination(87..80) source(87..80) FIN SI SI destination(95..88) < source(95..88) ALORS destination(95..88) destination(95..88) SINON destination(95..88) source(95..88) FIN SI SI destination(103..96) < source(103..96) ALORS destination(103..96) destination(103..96) 851
SINON destination(103..96) source(103..96) FIN SI SI destination(111..104) < source(111..104) ALORS destination(111..104) destination(111..104) SINON destination(111..104) source(111..104) FIN SI SI destination(119..112) < source(119..112) ALORS destination(119..112) destination(119..112) SINON destination(119..112) source(119..112) FIN SI SI destination(127..120) < source(127..120) ALORS destination(127..120) destination(127..120) SINON destination(127..120) source(127..120) FIN SI
Mnmonique
Instruction PMINSB xmm1,xmm2/m128 Opcode 66h 0Fh 38h 38h /r Description Cette instruction permet de retourner la valeur minimal de chacun des octets (entier) des paquets contenu dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 170 172.
852
Assembleur 80x86
SSE4.1+
PMINSD
Minimum of Packed Signed Double word
Syntaxe
PMINSD destination, source
Description Cette instruction permet de retourner la valeur minimal de chacun des doubles mots des paquets contenu dans deux oprandes.
Algorithme
SI destination(31..0) < source(31..0) ALORS destination(31..0) destination(31..0) SINON destination(31..0) source(31..0) FIN SI SI destination(63..32) < source(63..32) ALORS destination(63..32) destination(63..32) SINON destination(63..32) source(63..32) FIN SI SI destination(95..64) < source(95..64) ALORS destination(95..64) destination(95..64) SINON destination(95..64) source(95..64) FIN SI SI destination(127..96) < source(127..96) ALORS destination(127..96) destination(127..96) SINON destination(127..96) source(127..96) FIN SI
853
Mnmonique
Instruction PMINSD xmm1,xmm2/m128 Opcode 66h 0Fh 38h 39h /r Description Cette instruction permet de retourner la valeur minimal de chacun des doubles mots des paquets contenu dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 173 175.
854
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
PMINSW
Packed Signed Integer Word Minimum
Syntaxe
PMINSW destination, source
Description Cette instruction permet de retourner la valeur minimal de chacun des mots des paquets contenu dans deux oprandes.
Algorithme
SI taille de l'oprande = 64 bits ALORS SI destination(0..15) >= source(0..15) ALORS destination(0..15) source(0..15) FIN SI SI destination(16..31) >= source[16..31]) ALORS destination(16..31) source(16..31) FIN SI SI destination(32..47) >= source(32..47) ALORS destination(32..47) source(32..47) FIN SI SI destination(48..63) >= source(48..63) ALORS destination(48..63) source(48..63) FIN SI SINON SI destination(0..15) >= source(0..15) ALORS destination(0..15) source(0..15) FIN SI SI destination(16..31) >= source(16..31) ALORS destination(16..31) source(16..31) 855
FIN SI SI destination(32..47) >= source(32..47) ALORS destination(32..47) source(32..47) FIN SI SI destination(48..63) >= source(48..63) ALORS destination(48..63) source(48..63) FIN SI SI destination(64..79) >= source(64..79) ALORS destination(64..79) source(64..79) FIN SI SI destination(80..95) >= source(80..95) ALORS destination(80..95) source(80..95) FIN SI SI destination(96..111) >= source(96..111) ALORS destination(96..111) source(96..111) FIN SI SI destination(112..127) >= source(112..127) ALORS destination(112..127) source(112..127) FIN SI
Mnmonique
Instruction PMINSW mm1,mm2/m64 Opcode 0Fh EAh /r Description Cette instruction permet de retourner la valeur minimal de chacun des mots des paquets contenu dans deux oprandes. Cette instruction permet de retourner la valeur minimal de chacun des mots des paquets contenu dans deux oprandes.
PMINSW xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
856
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 176 178.
857
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
PMINUB
Packed Unsigned Integer Byte Minimum
Syntaxe
PMINUB destination, source
Description Cette instruction permet de retourner la valeur minimal de chacun des octets des paquets contenu dans deux oprandes.
Algorithme
SI taille de l'oprande = 64 bits ALORS SI destination(7..0) >= source(7..0) ALORS destination(7..0) source(7..0) FIN SI SI destination(8..15) >= source(8..15) ALORS destination(8..15) source(8..15) FIN SI SI destination(16..23) >= source(16..23) ALORS destination(16..23) source(16..23) FIN SI SI destination(24..31) >= source(24..31) ALORS Destination(24..31) Source(24..31) FIN SI SI destination(32..39) >= source(32..39) ALORS Destination(32..39) Source(32..39) FIN SI SI destination(40..47) >= source(40..47) ALORS Destination(40..47) Source(40..47) 858
FIN SI SI destination(48..55) >= source(48..55) ALORS Destination(48..55) Source(48..55) FIN SI SI destination(63..56) >= source(63..56) ALORS destination(63..56) source(63..56) FIN SI SINON SI destination(7..0) >= source(7..0) ALORS destination(7..0) source(7..0) FIN SI SI destination(8..15) >= source(8..15) ALORS destination(8..15) Source(8..15) FIN SI SI destination(16..23) >= source(16..23) ALORS destination(16..23) source(16..23) FIN SI SI destination(24..31) >= source(24..31) ALORS destination(24..31) source(24..31) FIN SI SI destination(32..39) >= source(32..39) ALORS destination(32..39) source(32..39) FIN SI SI destination(40..47) >= source(40..47) ALORS destination(40..47) source(40..47) FIN SI SI destination(48..55) >= source(48..55) ALORS destination(48..55) source(48..55) FIN SI SI destination(56..63) >= source(56..63) ALORS destination(56..63) source(56..63) FIN SI SI destination(64..71) >= source(64..71) ALORS destination(64..71) source(64..71) FIN SI SI destination(72..79) >= source(72..79) ALORS destination(72..79) source(72..79) FIN SI SI destination(80..87) >= source(80..87) ALORS destination(80..87) source(80..87) FIN SI 859
SI destination(88..95) >= source(88..95) ALORS destination(88..95) source(88..95) FIN SI SI destination(96..103) >= source(96..103) ALORS destination(96..103) source(96..103) FIN SI SI destination(104..111) >= source(104..111) ALORS destination(104..111) source(104..111) FIN SI SI destination(112..119) >= source(112..119) ALORS destination(112..119) source(112..119) FIN SI SI destination(127..120) >= source(127..120) ALORS (destination(127..120) source(127..120) FIN SI FIN SI
Mnmonique
Instruction PMINUB mm1,mm2/m64 Opcode 0Fh DAh /r Description Cette instruction permet de retourner la valeur minimal de chacun des octets des paquets contenu dans deux oprandes. Cette instruction permet de retourner la valeur minimal de chacun des octets des paquets contenu dans deux oprandes.
PMINUB xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 179 181.
860
Assembleur 80x86
SSE4.1+
PMINUD
Minimum of Packed Unsigned Doubleword
Syntaxe
PMINUD destination, source
Description Cette instruction permet de retourner la valeur minimal de chacun des doubles mots (naturel) des paquets contenu dans deux oprandes.
Algorithme
SI destination(31..0) < source(31..0) ALORS destination(31..0) destination(31..0) SINON destination(31..0) source(31..0) FIN SI SI destination(63..32) < source(63..32) ALORS destination(63..32) destination(63..32) SINON destination(63..32) source(63..32) FIN SI SI destination(95..64) < source(95..64) ALORS destination(95..64) destination(95..64) SINON destination(95..64) source(95..64) FIN SI SI destination(127..96) < source(127..96) ALORS destination(127..96) destination(127..96) SINON destination(127..96) source(127..96) FIN SI
861
Mnmonique
Instruction PMINUD xmm1,xmm2/m128 Opcode 66h 0Fh 38h 3Bh /r Description Cette instruction permet de retourner la valeur minimal de chacun des doubles mots (naturel) des paquets contenu dans deux oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 182 184.
862
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
PMOVMSKB
Move Byte Mask
Syntaxe
PMOVMSKB destination, source
Description Cette instruction permet de copis les masques de chacun des octets d'un paquet contenu dans une oprande.
Algorithme
SI taille de l'oprande = 64 bits ALORS destination(0) source(7) destination(1) source(15) destination(2) source(23) destination(3) source(31) destination(4) source(39) destination(5) source(47) destination(6) source(55) destination(7) source(63) destination(8..31) 0 SINON destination(0) source(7) destination(1) source(15) destination(2) source(23) destination(3) source(31) destination(4) source(39) destination(5) source(47) destination(6) source(55) destination(7) source(63) 863
destination(8) source(71) destination(9) source(79) destination(10) source(87) destination(11) source(95) destination(12) source(103) destination(13) source(111) destination(14) source(119) destination(15) source(127) destination(16..31) 0 FIN SI
Mnmonique
Instruction PMOVMSKB r32,mm Opcode 0Fh D7h /r Description Cette instruction permet de copis les masques de chacun des octets d'un paquet contenu dans une oprande. Cette instruction permet de copis les masques de chacun des octets d'un paquet contenu dans une oprande. Cette instruction permet de copis les masques de chacun des octets d'un paquet contenu dans une oprande.
PMOVMSKB r64,mm
PMOVMSKB reg,xmm
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 188 190.
864
Assembleur 80x86
SSE4.1+
PMOVSXBD
Packed Move with Sign Extend
Syntaxe
PMOVSXBD destination, source
Description Cette instruction permet d'tendre les signes du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
Algorithme
destination(31..0) SignExtend(source(7..0)) destination(63..32) SignExtend(source(15..8)) destination(95..64) SignExtend(source(23..16)) destination(127..96) SignExtend(source(31..24))
Mnmonique
Instruction PMOVSXBD xmm1,xmm2/m32 Opcode 66h 0Fh 38h 21h /r Description Cette instruction permet d'tendre les signes du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
Rfrences
865
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 191 194.
866
Assembleur 80x86
SSE4.1+
PMOVSXBQ
Packed Move with Sign Extend
Syntaxe
PMOVSXBQ destination, source
Description Cette instruction permet d'tendre les signes du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Algorithme
destination(63..0) SignExtend(source(7..0)) destination(127..64) SignExtend(source(15..8))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les signes du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 191 194.
867
Assembleur 80x86
SSE4.1+
PMOVSXBW
Packed Move with Sign Extend
Syntaxe
PMOVSXBW destination, source
Description Cette instruction permet d'tendre les signes du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 16 bits dans l'oprande de destination.
Algorithme
destination(15..0) SignExtend(source(7..0)) destination(31..16) SignExtend(source(15..8)) destination(47..32) SignExtend(source(23..16)) destination(63..48) SignExtend(source(31..24)) destination(79..64) SignExtend(source(39..32)) destination(95..80) SignExtend(source(47..40)) destination(111..96) SignExtend(source(55..48)) destination(127..112) SignExtend(source(63..56))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les signes du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 16 bits dans l'oprande de destination.
868
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 191 194.
869
Assembleur 80x86
SSE4.1+
PMOVSXDQ
Packed Move with Sign Extend
Syntaxe
PMOVSXDQ destination, source
Description Cette instruction permet d'tendre les signes du paquet des entiers de 32 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Algorithme
DEST(63..0) SignExtend(SRC(31..0)) DEST(127..64) SignExtend(SRC(63..32))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les signes du paquet des entiers de 32 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 148 151.
870
Assembleur 80x86
SSE4.1+
PMOVSXWD
Packed Move with Sign Extend
Syntaxe
PMOVSXWD destination, source
Description Cette instruction permet d'tendre les signes du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
Algorithme
destination(31..0) SignExtend(source(15..0)) destination(63..32) SignExtend(source(31..16)) destination(95..64) SignExtend(source(47..32)) destination(127..96) SignExtend(source(63..48))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les signes du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
PMOVSXWD xmm1,xmm2/m64 66 0f 38 23 /r
Rfrences
871
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 191 194.
872
Assembleur 80x86
SSE4.1+
PMOVSXWQ
Packed Move with Sign Extend
Syntaxe
PMOVSXWQ destination, source
Description Cette instruction permet d'tendre les signes du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Algorithme
destination(63..0) SignExtend(source(15..0)) destination(127..64) SignExtend(source(31..16))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les signes du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 191 194.
873
Assembleur 80x86
SSE4.1+
PMOVZXBD
Packed Move with Zero Extend
Syntaxe
PMOVZXBD destination, source
Description Cette instruction permet d'tendre les zros du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
Algorithme
destination(31..0) ZeroExtend(source(7..0)) destination(63..32) ZeroExtend(source(15..8)) destination(95..64) ZeroExtend(source(23..16)) destination(127..96) ZeroExtend(source(31..24))
Mnmonique
Instruction PMOVZXBD xmm1,xmm2/m32 Opcode 66h 0Fh 38h 31h /r Description Cette instruction permet d'tendre les zros du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
Rfrences
874
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 195 197.
875
Assembleur 80x86
SSE4.1+
PMOVZXBQ
Packed Move with Zero Extend
Syntaxe
PMOVZXBQ destination, source
Description Cette instruction permet d'tendre les zros du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Algorithme
destination(63..0) ZeroExtend(source(7..0)) destination(127..64) ZeroExtend(source(15..8))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les zros du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 195 197.
876
Assembleur 80x86
SSE4.1+
PMOVZXBW
Packed Move with Zero Extend
Syntaxe
PMOVZXBW destination, source
Description Cette instruction permet d'tendre les zros du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 16 bits dans l'oprande de destination.
Algorithme
destination(15..0) ZeroExtend(source(7..0)) destination(31..16) ZeroExtend(source(15..8)) destination(47..32) ZeroExtend(source(23..16)) destination(63..48) ZeroExtend(source(31..24)) destination(79..64) ZeroExtend(source(39..32)) destination(95..80) ZeroExtend(source(47..40)) destination(111..96) ZeroExtend(source(55..48)) destination(127..112) ZeroExtend(source(63..56))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les zros du paquet des entiers de 8 bits de la partie basse de l'oprande source en entiers 16 bits dans l'oprande de destination.
877
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 195 197.
878
Assembleur 80x86
SSE4.1+
PMOVZXDQ
Packed Move with Zero Extend
Syntaxe
PMOVZXDQ destination, source
Description Cette instruction permet d'tendre les zros du paquet des entiers de 32 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Algorithme
destination(63..0) ZeroExtend(source(31..0)) destination(127..64) ZeroExtend(source(63..32))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les zros du paquet des entiers de 32 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 195 197.
879
Assembleur 80x86
SSE4.1+
PMOVZXWD
Packed Move with Zero Extend
Syntaxe
PMOVZXWD destination, source
Description Cette instruction permet d'tendre les zros du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
Algorithme
destination(31..0) ZeroExtend(source(15..0)) destination(63..32) ZeroExtend(source(31..16)) destination(95..64) ZeroExtend(source(47..32)) destination(127..96) ZeroExtend(source(63..48))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les zros du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 32 bits dans l'oprande de destination.
Rfrences
880
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 195 197.
881
Assembleur 80x86
SSE4.1+
PMOVZXWQ
Packed Move with Zero Extend
Syntaxe
PMOVZXWQ destination, source
Description Cette instruction permet d'tendre les zros du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Algorithme
destination(63..0) ZeroExtend(source(15..0)) destination(127..64) ZeroExtend(source(31..16))
Mnmonique
Instruction Opcode Description Cette instruction permet d'tendre les zros du paquet des entiers de 16 bits de la partie basse de l'oprande source en entiers 64 bits dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 195 197.
882
Assembleur 80x86
SSE4.1+
PMULDQ
Multiply Packed Signed Dword Integers
Syntaxe
PMULDQ destination, source
Description Cette instruction permet d'effectuer la multiplication de deux valeurs signs de deux paires de double mots entier et entrepose les rsultats dans un oprande en paquet de 64 bits.
Algorithme
destination(63..0) destination(31..0) x source(31..0) destination(127..64) destination(95..64) x source(95..64)
Mnmonique
Instruction PMULDQ xmm1,xmm2/m128 Opcode 66h 0Fh 38h 28h /r Description Cette instruction permet d'effectuer la multiplication de deux valeurs signs de deux paires de double mots entier et entrepose les rsultats dans un oprande en paquet de 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
883
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 199 201.
884
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMULHRIW mmi, source
PMULHRIW
Packed Multiply High with Rounding, result to Implied Register
Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet.
Algorithme mmi(15..0) (mmi(15..0) x source(15..0) + 00004000h)(30..15) mmi(31..16) (mmi(31..16) x source(31..16) + 00004000h)(30..15) mmi(47..32) (mmi(47..32) x source(47..32) + 00004000h)(30..15) mmi(63..48) (mmi(63..48) x source(63..48) + 00004000h)(30..15)
Mnmonique Instruction PMULHRIW mm,mm/m64 Opcode 0Fh 5Dh /r Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet.
885
Assembleur 80x86
SSSE3+
PMULHRSW
Packed Multiply High with Round and Scale
Syntaxe
PMULHRSW destination, source
Description Cette instruction permet d'effectuer multiplication vertical de chaque entier de 16 bits de l'oprande de destination avec l'oprande source et produit un rsultat d'entiers de 32 bits dans l'oprande de destination.
Algorithme
SI taille de l'oprande = 64 bits ALORS temp0(31..0) INT32 ((destination(15..0) x source(15..0)) >> 14) + 1 temp1(31..0) INT32 ((destination(31..16) x source(31..16)) >> 14) + 1 temp2(31..0) INT32 ((destination(47..32) x source(47..32)) >> 14) + 1 temp3(31..0) INT32 ((destination(63..48) x source(63..48)) >> 14) + 1 destination(15..0) temp0(16..1) destination(31..16) temp1(16..1) destination(47..32) temp2(16..1) destination(63..48) temp3(16..1) SINON SI taille de l'oprande = 128 bits ALORS temp0(31..0) INT32 ((destination(15..0) x source(15..0)) >> 14) + 1 temp1(31..0) INT32 ((destination(31..16) x source(31..16)) >> 14) + 1 temp2(31..0) INT32 ((destination(47..32) x source(47..32)) >> 14) + 1 temp3(31..0) INT32 ((destination(63..48) x source(63..48)) >> 14) + 1 temp4(31..0) INT32 ((destination(79..64) x source(79..64)) >> 14) + 1 temp5(31..0) INT32 ((destination(95..80) x source(95..80)) >> 14) + 1 temp6(31..0) INT32 ((destination(111..96) x source(111..96)) >> 14) + 1 temp7(31..0) INT32 ((destination(127..112) x source(127..112)) >> 14) + 1 destination(15..0) temp0(16..1) destination(31..16) temp1(16..1) 886
destination(47..32) temp2(16..1) destination(63..48) temp3(16..1) destination(79..64) temp4(16..1) destination(95..80) temp5(16..1) destination(111..96) temp6(16..1) destination(127..112) temp7(16..1) FIN SI
Mnmonique
Instruction PMULHRSW mm1,mm2/m64 Opcode 0Fh 38h 0Bh /r Description Cette instruction permet d'effectuer multiplication vertical de chaque entier de 16 bits de l'oprande de destination avec l'oprande source et produit un rsultat d'entiers de 32 bits dans l'oprande de destination. Cette instruction permet d'effectuer multiplication vertical de chaque entier de 16 bits de l'oprande de destination avec l'oprande source et produit un rsultat d'entiers de 32 bits dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 201 203.
887
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMULHRW destination, source
PMULHRW
Packed Multiply High with Rounding
Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet.
Algorithme destination(15..0) (destination(15..0) x source(15..0) + 00004000h)(30..15) destination(31..16) (destination(31..16) x source(31..16) + 00004000h)(30..15) destination(47..32) (destination(47..32) x source(47..32) + 00004000h)(30..15) destination(63..48) (destination(63..48) x source(63..48) + 00004000h)(30..15)
Mnmonique Instruction PMULHRW mm,mm/m64 Opcode 0Fh 59h /r Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet.
888
Assembleur 80x86
Pentium III (KNI/MMX2)+
PMULHUW
Packed Multiply high unsigned word
Syntaxe
PMULHUW destination, source
Description Cette instruction permet d'effectuer la multiplication de la partie haute de chacun des entiers des 2 paquets d'oprandes.
Algorithme
temp1 destination(15..0) x source(15..0) temp2 destination(31..16) x source(31..16) temp3 destination(47..32) x source(47..32) temp4 destination(63..48) x source(63..48) destination(15..0) temp1(31..16) destination(31..16) temp2(31..16) destination(47..32) temp3(31..16) destination(63..48) temp4(31..16)
Mnmonique
Instruction PMULHUW mm,m64 Opcode 0Fh E4h /r Description Cette instruction permet d'effectuer la multiplication de la partie haute de chacun des entiers des 2 paquets d'oprandes.
889
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 204 207.
890
Assembleur 80x86
INTEL Pentium Pro+
PMULHW
Packed Multiply High by Words
Syntaxe
PMULHW destination, source
Description Cette instruction permet d'effectuer la multiplication de la partie haute de chacun des mots des 2 paquets d'oprandes.
Algorithme
destination(15..0) (destination(15..0) x source(15..0)) (31..16) destination(31..16) (destination(31..16) x source(31..16)) (31..16) destination(47..32) (destination(47..32) x source(47..32)) (31..16) destination(63..48) (destination(63..48) x source(63..48)) (31..16)
Mnmonique
Instruction PMULHW mm,m64 Opcode 0Fh E5h /r Description Cette instruction permet d'effectuer la multiplication de la partie haute de chacun des mots des 2 paquets d'oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
891
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 208 211.
892
Assembleur 80x86
SSE4.1+
PMULLD
Multiply Packed Signed Dword Integers and Store Low
Syntaxe
PMULLD destination, source
Description Cette instruction permet d'effectuer la multiplication de la partie basse de chacun des double mots des 2 paquets d'oprandes.
Algorithme
Temp0(63..0) destination(31..0) x source(31..0) Temp1(63..0) destination(63..32) x source(63..32) Temp2(63..0) destination(95..64) x source(95..64) Temp3(63..0) destination(127..96) x source(127..96) destination(31..0) Temp0(31..0) destination(63..32) Temp1(31..0) destination(95..64) Temp2(31..0) destination(127..96) Temp3(31..0)
Mnmonique
Instruction PMULLD xmm1,xmm2/m128 Opcode 66h 0Fh 38h 40h /r Description Cette instruction permet d'effectuer la multiplication de la partie basse de chacun des double mots des 2 paquets d'oprandes.
893
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 212 214.
894
Assembleur 80x86
INTEL Pentium Pro+
PMULLW
Packed Multiply Low by Words
Syntaxe
PMULLW destination, source
Description Cette instruction permet d'effectuer la multiplication de la partie basse de chacun des mots des 2 paquets d'oprandes.
Algorithme
destination(15..0) (destination(15..0) x source(15..0)) (15..0) destination(31..16) (destination(31..16) x source(31..16)) (15..0) destination(47..32) (destination(47..32) x source(47..32)) (15..0) destination(63..48) (destination(63..48) x source(63..48)) (15..0)
Mnmonique
Instruction PMULLW mm,m64 Opcode 0Fh D5h /r Description Cette instruction permet d'effectuer la multiplication de la partie basse de chacun des mots des 2 paquets d'oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
895
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 215 218.
896
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PMULUDQ
Multiply Packed Unsigned Doubleword Integers
Syntaxe
PMULUDQ destination, source
Description Cette instruction permet d'effectuer la multiplication de paquets d'oprandes de double mots.
Algorithme
SI taille de l'oprande = 64 bits ALORS destination(0..63) destination(0..31) x source(0..31) SINON destination(0..63) destination(0..31) x source(0..31) destination(64..127) destination(64..95) x source(64..95) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la multiplication de paquets d'oprandes de double mots. Cette instruction permet d'effectuer la multiplication de paquets d'oprandes de double mots.
0Fh F4h /r
897
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 219 221.
898
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMVGEZB destination, source
PMVGEZB
Packed Conditional Move Great Zero Byte
Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination est suprieur 0 et effectue se traitement pour chacun des 8 octets du paquet.
Algorithme SI destination(7..0) >= 0 ALORS destination(7..0) source(7..0) FIN SI SI destination(15..8) >= 0 ALORS destination(15..8) source(15..8) FIN SI SI destination(23..16) >= 0 ALORS destination(23..16) source(23..16) FIN SI SI destination(31..24) >= 0 ALORS destination(31..24) source(31..24) FIN SI SI destination(39..32) >= 0 ALORS destination(39..32) source(39..32) FIN SI SI destination(47..40) >= 0 ALORS destination(47..40) source(47..40) FIN SI SI destination(55..48) >= 0 ALORS destination(55..48) source(55..48) FIN SI SI destination(63..56) >= 0 ALORS destination(63..56) source(63..56) FIN SI
899
Mnmonique Instruction PMVGEZB mm,m64 Opcode 0Fh 5Ch /r Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination est suprieur 0 et effectue se traitement pour chacun des 8 octets du paquet.
900
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMVLZB destination, source
PMVLZB
Packed Conditional Move Less Zero Byte
Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination est infrieur 0 et effectue se traitement pour chacun des 8 octets du paquet.
Algorithme SI destination(7..0) < 0 ALORS destination(7..0) source(7..0) FIN SI SI destination(15..8) < 0 ALORS destination(15..8) source(15..8) FIN SI SI destination(23..16) < 0 ALORS destination(23..16) source(23..16) FIN SI SI destination(31..24) < 0 ALORS destination(31..24) source(31..24) FIN SI SI destination(39..32) < 0 ALORS destination(39..32) source(39..32) FIN SI SI destination(47..40) < 0 ALORS destination(47..40) source(47..40) FIN SI SI destination(55..48) < 0 ALORS destination(55..48) source(55..48) FIN SI SI destination(63..56) < 0 ALORS destination(63..56) source(63..56) FIN SI
901
Mnmonique Instruction PMVLZB mm,m64 Opcode 0Fh 5Bh /r Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination est infrieur 0 et effectue se traitement pour chacun des 8 octets du paquet.
902
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMVNZB destination, source
PMVNZB
Packed Conditional Move Not Zero Byte
Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprnade source dans l'oprande de destination si l'octet de l'oprande destination ne vaut pas 0 et effectue se traitement pour chacun des 8 octets du paquet.
Algorithme SI destination(7..0) <> 0 ALORS destination(7..0) source(7..0) FIN SI SI destination(15..8) <> 0 ALORS destination(15..8) source(15..8) FIN SI SI destination(23..16) <> 0 ALORS destination(23..16) source(23..16) FIN SI SI destination(31..24) <> 0 ALORS destination(31..24) source(31..24) FIN SI SI destination(39..32) <> 0 ALORS destination(39..32) source(39..32) FIN SI SI destination(47..40) <> 0 ALORS destination(47..40) source(47..40) FIN SI SI destination(55..48) <> 0 ALORS destination(55..48) source(55..48) FIN SI SI destination(63..56) <> 0 ALORS destination(63..56) source(63..56) FIN SI
903
Mnmonique Instruction PMVNZB mm,mm/m64 Opcode 0Fh 5Ah /r Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprnade source dans l'oprande de destination si l'octet de l'oprande destination ne vaut pas 0 et effectue se traitement pour chacun des 8 octets du paquet.
904
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PMVZB mmi, source
PMVZB
Packed Conditional Move Zero Byte
Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet.
Algorithme SI mmi(7..0) = 0 ALORS mmi(7..0) source(7..0) FIN SI SI mmi(15..8) = 0 ALORS mmi(15..8) source(15..8) FIN SI SI mmi(23..16) = 0 ALORS mmi(23..16) source(23..16) FIN SI SI mmi(31..24) = 0 ALORS mmi(31..24) source(31..24) FIN SI SI mmi(39..32) = 0 ALORS mmi(39..32) source(39..32) FIN SI SI mmi(47..40) = 0 ALORS mmi(47..40) source(47..40) FIN SI SI mmi(55..48) = 0 ALORS mmi[55..48] source(55..48) FIN SI SI mmi(63..56) = 0 ALORS mmi(63..56) source(63..56) FIN SI
905
Mnmonique Instruction PMVZB mm,m64 Opcode 0Fh 58h /r Description Cette instruction permet de copier l'octet de paquet correspondant de l'oprande source dans l'oprande de destination si l'octet de l'oprande destination vaut 0 et effectue se traitement pour chacun des 8 octets du paquet.
906
Syntaxe
POP oprande
Description Cette instruction permet de dsempiler de la pile une mot ou un double mot et la met dans une oprande.
Algorithme
SI taille de l'adresse de pile = 32 bits ALORS SI taille de oprande = 32 bits ALORS oprande SS:ESP ESP ESP + 4 SINON oprande SS:ESP ESP ESP + 2 FIN SI SINON SI taille de l'oprande = 16 bits ALORS oprande SS:SP SP SP + 2 SINON oprande SS:SP SP SP + 4 FIN SI FIN SI
Mnmonique
907
Instruction
Opcode
Description Dsempile du sommet de la pile une valeur et la met dans un emplacement mmoire ou registre 16 bits. Dsempile du sommet de la pile une valeur et la met dans un emplacement mmoire ou registre 32 bits. Il n'y a pas de prfix en mode 64 bits. Dsempile du sommet de la pile une valeur et la met dans un emplacement mmoire ou registre 64 bits. Dsempile du sommet de la pile une valeur et la met dans le registre 16 bits. Dsempile du sommet de la pile une valeur et la met dans un registre 32 bits. Il n'y a pas de prfix en mode 64 bits. Dsempile du sommet de la pile une valeur et la met dans un registre 64 bits. Dsempile du sommet de la pile une valeur et la met dans le registre DS. Invalide en mode 64 bits. Dsempile du sommet de la pile une valeur et la met dans le registre ES. Invalide en mode 64 bits.
POP reg/mem16
8Fh /0
POP reg/mem32
8Fh /0
POP reg/mem64
8Fh /0
POP reg16
58h +rw
POP reg32
58h +rd
POP reg64
58h +rq
POP DS
1Fh
POP ES
07h
908
POP SS
17h
Dsempile du sommet de la pile une valeur et la met dans le registre SS. Invalide en mode 64 bits. Dsempile du sommet de la pile une valeur et la met dans le registre FS. Dsempile du sommet de la pile une valeur et la met dans le registre GS.
POP FS
0Fh A1h
POP GS
0Fh A9h
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Les instructions POP DS, POP ES ou POP SS sont excuts en mode 64 bits. Les registres DS, ES, FS ou GS sont chargs dans un slecteur de segment non-nulle et le segment est marqu non prsent. Une adresse mmoire dpasse la limite du segment de
#UD(Opcode invalide)
#NP(Slecteur)
#SS(Pile)
909
pile ou n'est pas canonique Le registre SS est charg avec un slecteur nonnulle et le segment est marqu non prsent. Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Un registre de segment est charg, mais le descripteur de segment dpasse la
#SS(Slecteur)
#GP(Protection gnral)
#GP(Slecteur)
910
limite de la table du descripteur. X Un registre de segment est charg et le bit TI de slecteur de segment est fix, mais le slecteur LDT est un slecteur nulle. Le registre SS est charg avec un slecteur de segment nulle dans un mode non 64 bits ou avec CPL = 3. Le registre SS est charg et le slecteur de segment RPL et le descripteur de segment DPL n'est pas gale au CPL. Le registre SS est charg et le segment pointe dans un segment
911
de donnes non crivable. X Le registre DS, ES, FS ou GS est charg et le segment pointe sur des donnes ou un segment de code nonconforme, mais le RPL ou CPL est suprieur au DPL. Le registre DS, ES, FS ou GS est charg et le segment ne pointe pas sur un segment de donnes ou un segment de code en lecture. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est
#PF(Faute de page)
#AC(Vrifie l'alignement)
912
galement PUSH
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 825 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 412 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 222 228. AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 185 186.
913
Syntaxe
POPA
Description Cette instruction permet de dsempiler de la pile respectivement les registres DI, SI, BP, SP, BX, DX, CX et AX.
Algorithme
DI SS:SP SP SP + 2 SI SS:SP SP SP + 2 BP SS:SP SP SP + 2 * Ne depile jamais le SP SP SP + 2 BX SS:SP SP SP + 2 DX SS:SP SP SP + 2 CX SS:SP SP SP + 2 AX SS:SP SP SP + 2
Mnmonique
Instruction Opcode Description
914
POPA
61h
Dsempile les registres DI, SI, BP, SP, BX, DX, CX et AX. Invalide en mode 64 bits.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instructions est excut en mode 64 bits. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#UD(Opcode invalide)
#SS(Pile)
#PF(Faute de page)
#AC(Vrifie l'alignement)
915
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 826 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 229 231. AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 187.
916
Syntaxe
POPAD
Description Cette instruction permet de dsempiler de la pile respectivement les registres EDI, ESI, EBP, ESP, EBX, EDX, ECX et EAX.
Algorithme
EDI SS:(E)SP (E)SP (E)SP + 2 ESI SS:(E)SP (E)SP (E)SP + 2 EBP SS:(E)SP (E)SP (E)SP + 2 * Ne depile jamais le ESP (E)SP (E)SP + 2 EBX SS:(E)SP (E)SP (E)SP + 2 EDX SS:(E)SP (E)SP (E)SP + 2 ECX SS:(E)SP (E)SP (E)SP + 2 EAX SS:(E)SP (E)SP (E)SP + 2
Mnmonique
Instruction Opcode Description
917
POPAD
61h
Dsempile les registres EDI, ESI, EBP, ESP, EBX, EDX, ECX et EAX. Invalide en mode 64 bits.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instructions est excut en mode 64 bits. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#UD(Opcode invalide)
#SS(Pile)
#PF(Faute de page)
#AC(Vrifie l'alignement)
918
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 826 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 229 231. AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 187.
919
Assembleur 80x86
AMD K10 (SSE4a)+
POPCNT
Bit Population Count
Syntaxe
POPCNT regdest, source
Description Cette instruction permet de compter le nombre de bits 1 que possde une oprande source et place le rsultat dans un registre destinataire.
Algorithme
Count 0 BOUCLE POUR i 0 JUSQU'A taille de l'oprande SAUT 1 SI source(i) = 1 ALORS Count Count + 1 FIN SI FIN BOUCLE DEST Count
Mnmonique
Instruction Opcode Description Compte les 1 dans les registres ou mmoire 16 bits. Compte les 1 dans les registres ou mmoire 32 bits.
920
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description Cette instruction n'est pas support, comme indiqu par le bit 23 du registre ECX de la fonction 0000_00001h de l'instruction CPUID. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique
#UD(Opcode invalide) X
#SS(Pile)
#GP(Protection gnral)
921
Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 232 232.
922
Syntaxe
POPF
Description Cette instruction permet de dsempiler de la pile le registre 16 bits de drapeau contenant les indicateurs d'tat.
Algorithme
Registre de drapeaux SS:(E)SP (E)SP (E)SP + 2
Mnmonique
Instruction Opcode Description Dsempile le mot de la pile et la met dans le registres des drapeaux (FLAGS).
POPF
9Dh
Exceptions
Message #SS(Pile noncanonique) Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la
923
limite du segment de pile ou n'est pas canonique #GP(Protection gnral) X Le niveau de prvilge d'entre/sortie est infrieur 3 et CR4.VME vaut 0. Le niveau de prvilge d'entre/sortie est infrieur 3 et une oprande est de taille de 32 bits. Le niveau de prvilge d'entre/sortie est infrieur 3 et les bits EFLAGS.VIP et le nouveau EFLAGS.IF valent 1. Le niveau de prvilge d'entre/sortie est infrieur 3 et le nouveau EFLAGS.TF vaut 1.
924
#PF(Faute de page)
Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 826 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 412 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 234 237. AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 190.
925
Syntaxe
POPFD
Description Cette instruction permet de dsempiler de la pile le registre 32 bits de drapeau contenant les indicateurs d'tat.
Algorithme
Registre de drapeaux SS:(E)SP (E)SP (E)SP + 4
Mnmonique
Instruction Opcode Description Dsempile le double mot de la pile et la met dans le registres 32 bits des drapeaux (EFLAGS). Il n'y a pas de prfix en mode 64 bits.
POPFD
9Dh
Exceptions
Message Mode rel X Virtuel 8086 X Mode protg X Description Une adresse mmoire
#SS(Pile non-
926
canonique)
dpasse la limite du segment de pile ou n'est pas canonique X Le niveau de prvilge d'entre/sortie est infrieur 3 et CR4.VME vaut 0. Le niveau de prvilge d'entre/sortie est infrieur 3 et une oprande est de taille de 32 bits. Le niveau de prvilge d'entre/sortie est infrieur 3 et les bits EFLAGS.VIP et le nouveau EFLAGS.IF valent 1. Le niveau de prvilge d'entre/sortie est infrieur 3 et le nouveau EFLAGS.TF vaut 1.
#GP(Protection gnral)
927
#PF(Faute de page)
Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 234 237.
928
Assembleur 80x86
x86-64+
POPFQ
POP to rFLAGS Quadword
Syntaxe
POPFQ
Description Cette instruction permet de dsempiler de la pile le registre 64 bits de drapeau (RFLAGS) contenant les indicateurs d'tat.
Algorithme
Registre de drapeaux SS:(E)SP (E)SP (E)SP + 8
Mnmonique
Instruction Opcode Description Dsempile le quadruple mot de la pile et la met dans le registres 64 bits des drapeaux (RFLAGS).
POPFQ
9Dh
Exceptions
Message Mode rel X Virtuel 8086 X Mode protg X Description Une adresse mmoire
#SS(Pile non-
929
canonique)
dpasse la limite du segment de pile ou n'est pas canonique X Le niveau de prvilge d'entre/sortie est infrieur 3 et CR4.VME vaut 0. Le niveau de prvilge d'entre/sortie est infrieur 3 et une oprande est de taille de 32 bits. Le niveau de prvilge d'entre/sortie est infrieur 3 et les bits EFLAGS.VIP et le nouveau EFLAGS.IF valent 1. Le niveau de prvilge d'entre/sortie est infrieur 3 et le nouveau EFLAGS.TF vaut 1.
#GP(Protection gnral)
930
#PF(Faute de page)
Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 234 237.
931
Assembleur 80x86
INTEL Pentium MMX+
POR
Bitwise Logical OR
Syntaxe
POR destination, source
Description Cette instruction permet d'effectuer un OU BINAIRE d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM.
Algorithme
destination destination U source
Mnmonique
Instruction POR mm,m64 Opcode 0Fh EBh /r Description Cette instruction permet d'effectuer un OU BINAIRE d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 238 240.
932
Assembleur 80x86
AMD K6-2+
PREFETCH
Prefetch L1 Data-Cache Line
Syntaxe
PREFETCH mem8
Description Cette instruction permet d'effectuer le chargement de l'entre d'une squence d'alignement de mmoire de 64 bits de l'adresse mmoire spcifi dans le cache de donnes L1 du microprocesseur.
Mnmonique
Instruction Opcode Description Charge la ligne de cache dans les donnes de cache de la ligne L1
PREFETCH mem8
0Fh 0Dh /0
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description Cette instruction n'est pas support, comme indiqu par le bit 8 du registre ECX de la fonction
#UD(Opcode invalide) X
933
8000_00001h de l'instruction CPUID. X X X Le mode long n'est pas support, comme indiqu par le bit 29 du registre EDX de la fonction 8000_00001h de l'instruction CPUID. Les instructions 3DNow! ne sont pas supports, comme indiqu par le bit 31 du registre EDX de la fonction 8000_00001h de l'instruction CPUID. L'oprande est un registre.
Voir
galement
934
Instruction assembleur 80x86 Instruction Instruction assembleur 80x86 Instruction Instruction assembleur 80x86 - Instruction PREFETCH2
PREFETCH0 PREFETCH1
935
Assembleur 80x86
INTEL Pentium III (SSE)+
PREFETCH0
Prefetch Data to Cache Level T0
Syntaxe
PREFETCH0 mem8
Description Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T0 du microprocesseur. Alias de PREFETCHT0.
Mnmonique
Instruction Opcode Description Copie les donnes du processeur en utilisant la rfrence T0.
PREFETCH0 mem8
0Fh 18h /1
Exception Aucune
Voir Instruction assembleur 80x86 Instruction Instruction assembleur 80x86 - Instruction PREFETCHW
galement PREFETCH
936
Assembleur 80x86
INTEL Pentium III (SSE)+
PREFETCH1
Prefetch Data to Cache Level T1
Syntaxe
PREFETCH1 mem8
Description Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T1 du microprocesseur. Alias de PREFETCHT1.
Mnmonique
Instruction Opcode Description Copie les donnes du processeur en utilisant la rfrence T1.
PREFETCH1 mem8
0Fh 18h /2
Exception Aucune
937
Assembleur 80x86
INTEL Pentium III (SSE)+
PREFETCH2
Prefetch Data to Cache Level T2
Syntaxe
PREFETCH2 mem8
Description Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T2 du microprocesseur. Alias de PREFETCHT2.
Mnmonique
Instruction Opcode Description Copie les donnes du processeur en utilisant la rfrence T2.
PREFETCH2 mem8
0Fh 18h /3
Exception Aucune
Voir Instruction assembleur 80x86 Instruction Instruction assembleur 80x86 - Instruction PREFETCHW
galement PREFETCH
938
Assembleur 80x86
INTEL Pentium III (SSE)+
PREFETCHNTA
Prefetch Data to Cache Level NTA
Syntaxe
PREFETCHNTA mem8
Description Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes NTA du microprocesseur.
Mnmonique
Instruction Opcode Description Copie les donnes du processeur en utilisant la rfrence NTA.
PREFETCHNTA mem8
0Fh 18h /0
Exception Aucune
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 241 243.
939
Assembleur 80x86
INTEL Pentium III (SSE)+
PREFETCHT0
Prefetch Data to Cache Level T0
Syntaxe
PREFETCHT0 mem8
Description Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T0 du microprocesseur. Alias de PREFETCH0.
Mnmonique
Instruction Opcode Description Copie les donnes du processeur en utilisant la rfrence T0.
PREFETCHT0 mem8
0Fh 18h /1
Exception Aucune
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
940
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 241 243.
941
Assembleur 80x86
INTEL Pentium III (SSE)+
PREFETCHT1
Prefetch Data to Cache Level T1
Syntaxe
PREFETCHT1 mem8
Description Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T1 du microprocesseur. Alias de PREFETCH1.
Mnmonique
Instruction Opcode Description Copie les donnes du processeur en utilisant la rfrence T1.
PREFETCHT1 mem8
0Fh 18h 2
Exception Aucune
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
942
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 241 243.
943
Assembleur 80x86
INTEL Pentium III (SSE)+
PREFETCHT2
Prefetch Data to Cache Level T2
Syntaxe
PREFETCHT2 mem8
Description Cette instruction permet d'effectuer le chargement de la ligne de cache de l'adresse mmoire spcifi dans le cache de donnes T2 du microprocesseur. Alias de PREFETCH2.
Mnmonique
Instruction Opcode Description Copie les donnes du processeur en utilisant la rfrence T2.
PREFETCHT2 mem8
0Fh 18h /3
Exception Aucune
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
944
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 241 243.
945
Assembleur 80x86
AMD K6-2+
PREFETCHW
Prefetch L1 Data-Cache Line Write
Syntaxe
PREFETCHW mem8
Description Cette instruction permet d'effectuer le chargement de l'entre d'une squence d'alignement de mmoire de 64 bits de l'adresse mmoire spcifi dans le cache de donnes L1 du microprocesseur dans un tat de modification.
Mnmonique
Instruction Opcode Description Charge la ligne de cache dans les donnes de cache de la ligne L1 et marque qu'il est modifi.
PREFETCHW mem8
0Fh 0Dh /1
Exceptions
Message Mode rel Virtuel 8086 X Mode protg X Description Cette instruction n'est pas support, comme indiqu par le bit 8 du registre ECX
#UD(Opcode invalide) X
946
de la fonction 8000_00001h de l'instruction CPUID. X X X Le mode long n'est pas support, comme indiqu par le bit 29 du registre EDX de la fonction 8000_00001h de l'instruction CPUID. Les instructions 3DNow! ne sont pas supports, comme indiqu par le bit 31 du registre EDX de la fonction 8000_00001h de l'instruction CPUID. L'oprande est un registre.
Voir
947
galement
Instruction assembleur 80x86 Instruction Instruction assembleur 80x86 Instruction Instruction assembleur 80x86 - Instruction PREFETCH2
PREFETCH0 PREFETCH1
948
Assembleur 80x86
INTEL Pentium III (SSE)+
PSADBW
Compute Sum of Absolute Differences
Syntaxe
PSADBW destination, source
Description Cette instruction permet d'effectuer le calcul la valeur de absolue de la diffrence des octets de paquet contenu dans une oprande source et destination.
Algorithme
SI taille de l'oprande = 64 bits ALORS Temporaire0 | destination(0..7) - source(0..7) | Temporaire1 | destination(8..15) - source(8..15) | Temporaire2 | destination(16..23) - source(16..23) | Temporaire3 | destination(24..31) - source(24..31) | Temporaire4 | destination(32..39) - source(32..39) | Temporaire5 | destination(40..47) - source(40..47) | Temporaire6 | destination(48..55) - source(48..55) | Temporaire7 | destination(56..63) - source(56..63) | destination(0..15) SOMME(Temporaire0..Temporaire7) destination(16..63) 0 SINON Temporaire0 | destination(0..7) - source(0..7) | Temporaire1 | destination(8..15) - source(8..15) | Temporaire2 | destination(16..23) - source(16..23) | Temporaire3 | destination(24..31) - source(24..31) | Temporaire4 | destination(32..39) - source(32..39) | Temporaire5 | destination(40..47) - source(40..47) | Temporaire6 | destination(48..55) - source(48..55) | Temporaire7 | destination(56..63) - source(56..63) | Temporaire8 | destination(64..71) - source(64..71) | 949
Temporaire9 | destination(72..79) - source(72..79) | Temporaire10 | destination(80..87) - source(80..87) | Temporaire11 | destination(88..95) - source(88..95) | Temporaire12 | destination(96..103) - source(96..103) | Temporaire13 | destination(104..111) - source(104..111) | Temporaire14 | destination(112..119) - source(112..119) | Temporaire15 | destination(120..127) - source(120..127) | Destination(0..15) SOMME(Temporaire0...Temporaire7) Destination(16..63) 0 Destination(64..79) SOMME(Temporaire8...Temporaire15) Destination(80..127) 0 FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le calcul la valeur de absolue de la diffrence des octets de paquet contenu dans une oprande source et destination. Cette instruction permet d'effectuer le calcul la valeur de absolue de la diffrence des octets de paquet contenu dans une oprande source et destination.
0F F6 /r
66 0F F6 /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 244 247.
950
Assembleur 80x86
SSSE3+
PSHUFB
Packed Shuffle Bytes
Syntaxe
PSHUFB destination, source
Description Cette instruction permet d'effectuer un mlange des octets en place dans l'oprande de destination avec un masque de contrle dans l'oprande source.
Algorithme
SI taille de l'oprande = 64 bits ALORS POUR POUR i 0 JUSQU'A 7 SI source((i x 8) + 7) = 1 ALORS destination((i x 8) + 7 ..(i x 8) + 0) 0 SINON index(2..0) source((i x 8) + 2 .. (i x 8) + 0) destination((i x 8) + 7 ..(i x 8) + 0) destination((index x 8 + 7)..(index x 8 + 0)) FIN SI FIN BOUCLE POUR SINON SI taille de l'oprande = 128 bits ALORS BOUCLE POUR i 0 JUSQU'A 15 SI source((i x 8) + 7) = 1 ALORS destination((i x 8) + 7 .. (i x 8) + 0) 0 SINON index(3..0) source((i x 8) + 3 .. (i x 8) + 0) destination((i x 8) + 7 .. (i x 8) + 0) destination((index x 8 + 7)..(index x 8 + 0)) FIN SI FIN BOUCLE POUR FIN SI
951
Mnmonique
Instruction PSHUFB mm1,mm2/m64 Opcode 0Fh 38h 00h /r Description Cette instruction permet d'effectuer un mlange des octets en place dans l'oprande de destination avec un masque de contrle dans l'oprande source. Cette instruction permet d'effectuer un mlange des octets en place dans l'oprande de destination avec un masque de contrle dans l'oprande source.
PSHUFB xmm1,xmm2/m128
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 247 251.
952
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PSHUFD
Shuffle Packed Doublewords
Syntaxe
PSHUFD destination, source, ordre
Description Cette instruction permet de copier un double mots d'un oprande source avec emplacement spcifi par un oprande immdiate dans un oprande de destination.
Algorithme
destination(0..31) (source >> (ordre(0..1) x 32))(0..31) destination(32..63) (source >> (ordre(2..3) x 32))(0..31) destination(64..95) (source >> (ordre(4..5) x 32))(0..31) destination(96..127) (source >> (ordre(6..7) x 32))(0..31)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un double mots d'un oprande source avec emplacement spcifi par un oprande immdiate dans un oprande de destination.
Rfrences
953
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 252 254.
954
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PSHUFHW
Shuffle Packed High Words
Syntaxe
PSHUFHW destination, source, ordre
Description Cette instruction permet de copier un mot d'une oprande source avec emplacement spcifi par un oprande immdiate dans la partie haute d'un oprande de destination.
Algorithme
destination(0..63) source(0..63) destination(64..79) (source >> (ordre(0..1) x 16))(64..79) destination(80..95) (source >> (ordre(2..3) x 16))(64..79) destination(96..111) (source >> (ordre(4..5) x 16))(64..79) destination(112..127) (source >> (ordre(6..7) x 16))(64..79)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un mot d'une oprande source avec emplacement spcifi par un oprande immdiate dans la partie haute d'un oprande de destination.
955
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 255 257.
956
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PSHUFLW
Shuffle Packed Low Words
Syntaxe
PSHUFLW destination, source, ordre
Description Cette instruction permet de copier un mot d'une oprande source avec emplacement spcifi par un oprande immdiate dans la partie basse d'un oprande de destination.
Algorithme
destination(0..15) (source >> (ordre(0..1) x 16))(0..15) destination(16..31) (source >> (ordre(2..3) x 16))(0..15) destination(32..47) (source >> (ordre(4..5) x 16))(0..15) destination(48..63) (source >> (ordre(6..7) x 16))(0..15) destination(64..127) source(64..127)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier un mot d'une oprande source avec emplacement spcifi par un oprande immdiate dans la partie basse d'un oprande de destination.
957
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 258 260.
958
Assembleur 80x86
INTEL Pentium III (SSE)+
PSHUFW
Shuffle Packed Words
Syntaxe
PSHUFW destination, source, ordre
Description Cette instruction permet de copier une double mots d'un oprande source avec emplacement spcifi par un oprande immdiate dans un oprande de destination.
Algorithme
destination(0..15) (source >> (ordre(0..1) x 16))(0..15) destination(16..31) (source >> (ordre(2..3) x 16))(0..15) destination(32..47) (source >> (ordre(4..5) x 16))(0..15) destination(48..63) (source >> (ordre(6..7) x 16))(0..15)
Mnmonique
Instruction Opcode Description Cette instruction permet de copier une double mots d'un oprande source avec emplacement spcifi par un oprande immdiate dans un oprande de destination.
0Fh 70h /r ib
Rfrences
959
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 261 263.
960
Assembleur 80x86
SSSE3+
PSIGNB
Packed Sign Byte
Syntaxe
PSIGNB destination, source
Description Cette instruction permet d'effectuer la ngation de chaque octets de l'oprande de destination si la valeur du signe de l'entier des octets correspondant l'oprande source est infrieur 0.
Algorithme
SI taille de l'oprande = 64 bits ALORS SI source(7..0) < 0 ALORS destination(7..0) Neg(destination(7..0)) SINON SI source(7..0) = 0 ALORS DEST(7..0) 0 SINON SI source(7..0) > 0 ALORS destination(7..0) destination(7..0) FIN SI SI source(15..8) < 0 ALORS destination(15..8) Neg(destination(15..8)) SINON SI source(15..8) = 0 ALORS destination(15..8) 0 SINON SI source(15..8) > 0 ALORS destination(15..8) destination(15..8) FIN SI SI source(23..16) < 0 ALORS destination(23..16) Neg(destination(23..16)) SINON SI source(23..16) = 0 ALORS 961
destination(23..16) 0 SINON SI source(23..16) > 0 ALORS destination(23..16) destination(23..16) FIN SI SI source(31..24) < 0 ALORS destination(31..24) Neg(destination(31..24)) SINON SI source(31..24) = 0 ALORS destination(31..24) 0 SINON SI source(31..24) > 0 ALORS destination(31..24) destination(31..24) FIN SI SI source(39..32) < 0 ALORS destination(39..32) Neg(destination(39..32)) SINON SI source(39..32) = 0 ALORS destination(39..32) 0 SINON SI source(39..32) > 0 ALORS destination(39..32) destination(39..32) FIN SI SI source(47..40) < 0 ALORS destination(47..40) Neg(destination(47..40)) SINON SI source(47..40) = 0 ALORS destination(47..40) 0 SINON SI source(47..40) > 0 ALORS destination(47..40) destination(47..40) FIN SI SI source(55..48) < 0 ALORS destination(55..48) Neg(destination(55..48)) SINON SI source(55..48) = 0 ALORS destination(55..48) 0 SINON SI source(55..48) > 0 ALORS destination(55..48) destination(55..48) FIN SI SI source(63..56) < 0 ALORS destination(63..56) Neg(destination(63..56)) SINON SI source(63..56) = 0 ALORS destination(63..56) 0 SINON SI source(63..56) > 0 ALORS destination(63..56) destination(63..56) FIN SI SINON SI taille de l'oprande = 128 bits ALORS SI source(7..0) < 0 ALORS 962
destination(7..0) Neg(destination(7..0)) SINON SI source(7..0) = 0 ALORS destination(7..0) 0 SINON SI source(7..0) > 0 ALORS destination(7..0) destination(7..0) FIN SI SI source(15..8) < 0 ALORS destination(15..8) Neg(destination(15..8)) SINON SI source(15..8) = 0 ALORS destination(15..8) 0 SINON SI source(15..8) > 0 ALORS destination(15..8) destination(15..8) FIN SI SI source(23..16) < 0 ALORS destination(23..16) Neg(destination(23..16)) SINON SI source(23..16) = 0 ALORS destination(23..16) 0 SINON SI source(23..16) > 0 ALORS destination(23..16) destination(23..16) FIN SI SI source(31..24) < 0 ALORS destination(31..24) Neg(destination(31..24)) SINON SI source(31..24) = 0 ALORS destination(31..24) 0 SINON SI source(31..24) > 0 ALORS destination(31..24) destination(31..24) FIN SI SI source(39..32) < 0 ALORS destination(39..32) Neg(destination(39..32)) SINON SI source(39..32) = 0 ALORS destination(39..32) 0 SINON SI source(39..32) > 0 ALORS destination(39..32) destination(39..32) FIN SI SI source(47..40) < 0 ALORS destination(47..40) Neg(destination(47..40)) SINON SI source(47..40) = 0 ALORS destination(47..40) 0 SINON SI source(47..40) > 0 ALORS destination(47..40) destination(47..40) FIN SI 963
SI source(55..48) < 0 ALORS destination(55..48) Neg(destination(55..48)) SINON SI source(55..48) = 0 ALORS destination(55..48) 0 SINON SI source(55..48) > 0 ALORS destination(55..48) destination(55..48) FIN SI SI source(63..56) < 0 ALORS destination(63..56) Neg(destination(63..56)) SINON SI source(63..56) = 0 ALORS destination(63..56) 0 SINON SI source(63..56) > 0 ALORS destination(63..56) destination(63..56) FIN SI SI source(71..64) < 0 ALORS destination(71..64) Neg(destination(71..64)) SINON SI source(71..64) = 0 ALORS destination(71..64) 0 SINON SI source(71..64) > 0 ALORS destination(71..64) destination(71..64) FIN SI SI source(79..72) < 0 ALORS destination(79..72) Neg(destination(79..72)) SINON SI source(79..72) = 0 ALORS destination(79..72) 0 SINON SI source(79..72) > 0 ALORS destination(79..72) destination(79..72) FIN SI SI source(87..80) < 0 ALORS destination(87..80) Neg(destination(87..80)) SINON SI source(87..80) = 0 ALORS destination(87..80) 0 SINON SI source(87..80) > 0 ALORS destination(87..80) destination(87..80) FIN SI SI source(95..88) < 0 ALORS destination(95..88) Neg(destination(95..88)) SINON SI source(95..88) = 0 ALORS destination(95..88) 0 SINON SI source(95..88) > 0 ALORS destination(95..88) destination(95..88) 964
FIN SI SI source(103..96) < 0 ALORS destination(103..96) Neg(destination(103..96)) SINON SI source(103..96) = 0 ALORS destination(103..96) 0 SINON SI source(103..96) > 0 ALORS destination(103..96) destination(103..96) FIN SI SI source(111..104) < 0 ALORS destination(111..104) Neg(destination(111..104)) SINON SI source(111..104) = 0 ALORS destination(111..104) 0 SINON SI source(111..104) > 0 ALORS destination(111..104) destination(111..104) FIN SI SI source(119..112) < 0 ALORS destination(119..112) Neg(destination(119..112)) SINON SI source(119..112) = 0 ALORS destination(119..112) 0 SINON SI source(119..112) > 0 ALORS destination(119..112) destination(119..112) FIN SI SI source(127..120) < 0 ALORS destination(127..120) Neg(destination(127..120)) SINON SI source(127..120) = 0 ALORS destination(127..120) 0 SINON SI SRC(127..120) > 0 ALORS destination(127..120) destination(127..120) FIN SI FIN SI
Mnmonique
Instruction PSIGNB mm1,mm2/m64 Opcode 0Fh 38h 08h /r Description Cette instruction permet d'effectuer la ngation de chaque octets de l'oprande de destination si la valeur du signe de l'entier des octets
965
correspondant l'oprande source est infrieur 0. PSIGNB xmm1,xmm2/m128 66h 0Fh 38h 08h /r Cette instruction permet d'effectuer la ngation de chaque octets de l'oprande de destination si la valeur du signe de l'entier des octets correspondant l'oprande source est infrieur 0.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 264 269.
966
Assembleur 80x86
SSSE3+
PSIGND
Packed Sign Doubleword
Syntaxe
PSIGND destination, source
Description Cette instruction permet d'effectuer la ngation de chaque double mots de l'oprande de destination si la valeur du signe de l'entier des double mots correspondant l'oprande source est infrieur 0.
Algorithme
SI taille de l'oprande = 64 bits ALORS SI source(31..0) < 0 ALORS destination(31..0) Neg(destination(31..0)) SINON SI source(31..0) = 0 ALORS destination(31..0) 0 SINON SI source(31..0) > 0 ALORS destination(31..0) destination(31..0) FIN SI SI source(63..32) < 0 ALORS destination(63..32) Neg(destination(63..32)) SINON SI source(63..32) = 0 ALORS destination(63..32) 0 SINON SI source(63..32) > 0 ALORS destination(63..32) destination(63..32) FIN SI SINON SI taille de l'oprande = 128 bits ALORS SI source(31..0) < 0 ALORS destination(31..0) Neg(destination(31..0)) SINON SI source(31..0) = 0 ALORS destination(31..0) 0 967
SINON SI source(31..0) > 0 ALORS destination(31..0) destination(31..0) FIN SI SI source(63..32) < 0 ALORS destination(63..32) Neg(destination(63..32)) SINON SI source(63..32) = 0 ALORS destination(63..32) 0 SINON SI source(63..32) > 0 ALORS destination(63..32) destination(63..32) FIN SI SI source(95..64) < 0 ALORS destination(95..64) Neg(destination(95..64)) SINON SI source(95..64) = 0 ALORS destination(95..64) 0 SINON SI source(95..64) > 0 ALORS destination(95..64) destination(95..64) FIN SI SI source(127..96) < 0 ALORS destination(127..96) Neg(destination(127..96)) SINON SI source(127..96) = 0 ALORS destination(127..96) 0 SINON SI source(127..96) > 0 ALORS destination(127..96) destination(127..96) FIN SI FIN SI
Mnmonique
Instruction PSIGND mm1,mm2/m64 Opcode 0Fh 38h 0Ah /r Description Cette instruction permet d'effectuer la ngation de chaque double mots de l'oprande de destination si la valeur du signe de l'entier des double mots correspondant l'oprande source est infrieur 0. Cette instruction permet d'effectuer la ngation de chaque double mots
PSIGND xmm1,xmm2/m128
968
de l'oprande de destination si la valeur du signe de l'entier des double mots correspondant l'oprande source est infrieur 0.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 264 269.
969
Assembleur 80x86
SSSE3+
PSIGNW
Packed Sign Word
Syntaxe
PSIGNW destination, source
Description Cette instruction permet d'effectuer la ngation de chaque mots de l'oprande de destination si la valeur du signe de l'entier des mots correspondant l'oprande source est infrieur 0.
Algorithme
SI taille de l'oprande = 64 bits ALORS SI source(15..0) < 0 ALORS destination(15..0) Neg(destination(15..0)) SINON SI source(15..0) = 0 ALORS destination(15..0) 0 SINON SI source(15..0) > 0 ALORS destination(15..0) destination(15..0) FIN SI SI source(31..16) < 0 ALORS destination(31..16) Neg(destination(31..16)) SINON SI source(31..16) = 0 ALORS destination(31..16) 0 SINON SI source(31..16) > 0 ALORS destination(31..16) destination(31..16) FIN SI SI source(47..32) < 0 ALORS destination(47..32) Neg(destination(47..32)) SINON SI source(47..32) = 0 ALORS destination(47..32) 0 SINON SI source(47..32) > 0 ALORS destination(47..32) destination(47..32) FIN SI SI source(63..48) < 0 ALORS 970
destination(63..48) Neg(destination(63..48)) SINON SI source(63..48) = 0 ALORS destination(63..48) 0 SINON SI source(63..48) > 0 ALORS destination(63..48) destination(63..48) FIN SI SINON SI taille de l'oprande = 128 bits ALORS SI source(15..0) < 0 ALORS destination(15..0) Neg(destination(15..0)) SINON SI source(15..0) = 0 ALORS destination(15..0) 0 SINON SI source(15..0) > 0 ALORS destination(15..0) destination(15..0) FIN SI SI source(31..16) < 0 ALORS destination(31..16) Neg(destination(31..16)) SINON SI source(31..16) = 0 ALORS destination(31..16) 0 SINON SI source(31..16) > 0 ALORS destination(31..16) destination(31..16) FIN SI SI source(47..32) < 0 ALORS destination(47..32) Neg(destination(47..32)) SINON SI source(47..32) = 0 ALORS destination(47..32) 0 SINON SI source(47..32) > 0 ALORS destination(47..32) destination(47..32) FIN SI SI source(63..48) < 0 ALORS destination(63..48) Neg(destination(63..48)) SINON SI source(63..48) = 0 ALORS destination(63..48) 0 SINON SI source(63..48) > 0 ALORS destination(63..48) destination(63..48) FIN SI SI source(79..64) < 0 ALORS destination(79..64) Neg(destination(79..64)) SINON SI source(79..64) = 0 ALORS destination(79..64) 0 SINON SI source(79..64) > 0 ALORS destination(79..64) destination(79..64) FIN SI 971
SI source(95..80) < 0 ALORS destination(95..80) Neg(destination(95..80)) SINON SI source(95..80) = 0 ALORS destination(95..80) 0 SINON SI source(95..80) > 0 ALORS destination(95..80) destination(95..80) FIN SI SI source(111..96) < 0 ALORS destination(111..96) Neg(destination(111..96)) SINON SI source(111..96) = 0 ALORS destination(111..96) 0 SINON SI source(111..96) > 0 ALORS destination(111..96) destination(15..0) FIN SI SI source(127..112) < 0 ALORS destination(127..112) Neg(destination(127..112)) SINON SI source(127..112) = 0 ALORS destination(127..112) 0 SINON SI source(127..112) > 0 ALORS destination(127..112) destination(127..112) FIN SI FIN SI
Mnmonique
Instruction PSIGNW mm1,mm2/m64 Opcode 0Fh 38h 09h /r Description Cette instruction permet d'effectuer la ngation de chaque mots de l'oprande de destination si la valeur du signe de l'entier des mots correspondant l'oprande source est infrieur 0. Cette instruction permet d'effectuer la ngation de chaque mots de l'oprande de destination si la valeur du signe de l'entier des mots correspondant l'oprande source
PSIGNW xmm1,xmm2/m128
972
est infrieur 0.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 264 269.
973
Assembleur 80x86
INTEL Pentium Pro+
PSLLD
Packed Shift Left Logical Dwords
Syntaxe
PSLLD destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de double mots.
Algorithme
destination(31..0) destination(31..0) << source destination(63..32) destination(63..32) << source
Mnmonique
Instruction PSLLD mm,mm/m64 Opcode 0Fh F2h /r Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de double mots. Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de double mots.
PSLLD mm,Imm8
Rfrences
974
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 272 277.
975
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PSLLDQ
Packed Shift Double Quadword Left Logical
Syntaxe
PSLLDQ destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de double quadruple mots.
Algorithme
Temporaire source SI Temporaire > 15 ALORS Temporaire 16 FIN SI destination destination << (Temporaire x 8)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de double quadruple mots.
Rfrences
976
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 270 271.
977
Assembleur 80x86
INTEL Pentium Pro+
PSLLQ
Packed Shift Left Logical Qwords
Syntaxe
PSLLQ destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un quadruple mot.
Algorithme
destination(63..0) destination(63..0) << source
Mnmonique
Instruction PSLLQ mm,mm/m64 Opcode 0Fh F3h /r Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un quadruple mot. Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un quadruple mot.
PSLLQ mm,Imm8
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
978
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 270 271.
979
Assembleur 80x86
INTEL Pentium Pro+
PSLLW
Packed Shift Left Logical Words
Syntaxe
PSLLW destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de mots.
Algorithme
destination(15..0) destination(15..0) << source destination(31..16) destination(31..16) << source destination(47..32) destination(47..32) << source destination(63..48) destination(63..48) << source
Mnmonique
Instruction PSLLW mm,mm/m64 Opcode 0Fh F1h /r Description Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de mots. Cette instruction permet d'effectuer le dcalage de bits vers la gauche d'un paquet de mots.
PSLLW mm,Imm8
980
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 270 271.
981
Assembleur 80x86
INTEL Pentium Pro+
PSRAD
Packed Shift Right Arithmetic Dwords
Syntaxe
PSRAD destination, source
Description Cette instruction permet d'effectuer le dcalage arithmtique de bits vers la droite d'un paquet de double mots.
Algorithme
destination(31..0) SignExtend(destination(31..0)) >> source destination(63..32) SignExtend(destination(63..32)) >> source
Mnmonique
Instruction PSRAD mm,mm/m64 Opcode 0Fh E2h /r Description Cette instruction permet d'effectuer le dcalage arithmtique de bits vers la droite d'un paquet de double mots. Cette instruction permet d'effectuer le dcalage arithmtique de bits vers la droite d'un paquet de double mots.
PSRAD mm,Imm8
Rfrences
982
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 278 282.
983
Assembleur 80x86
INTEL Pentium Pro+
PSRAW
Packed Shift Right Arithmetic Words
Syntaxe
PSRAW destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de mots.
Algorithme
destination(15..0) SignExtend(destination(15..0)) >> source destination(31..16) SignExtend(destination(31..16)) >> source destination(47..32) SignExtend(destination(47..32)) >> source destination(63..48) SignExtend(destination(63..48)) >> source
Mnmonique
Instruction PSRAW mm,mm/m64 Opcode 0Fh E1h /r Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de mots. Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de mots.
PSRAW mm,Imm8
Rfrences
984
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 278 282.
985
Assembleur 80x86
INTEL Pentium Pro+
PSRLD
Packed Shift Right Logical Dwords
Syntaxe
PSRLD destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de double mots.
Algorithme
destination(31..0) destination(31..0) >> source destination(63..32) destination(63..32) >> source
Mnmonique
Instruction PSRLD mm,mm/m64 Opcode 0Fh D2h /r Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de double mots./td> Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de double mots.
PSRLD mm,Imm8
Rfrences
986
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 285 289.
987
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PSRLDQ
Shift Double Quadword Right Logical
Syntaxe
PSRLDQ destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de double quadruple mots.
Algorithme
Temporaire source SI Temporaire > 15 ALORS Temporaire 16 FIN SI destination = destination >> (Temporaire x 8)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de double quadruple mots.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
988
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 283 284.
989
Assembleur 80x86
INTEL Pentium Pro+
PSRLQ
Packed Shift Right Logical Qwords
Syntaxe
PSRLQ destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un quadruple mot.
Algorithme
destination(63..0) destination(63..0) >> source
Mnmonique
Instruction PSRLQ mm,mm/m64 Opcode 0Fh D3h /r Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un quadruple mot. Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un quadruple mot.
PSRLQ mm,Imm8
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
990
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 285 289.
991
Assembleur 80x86
INTEL Pentium Pro+
PSRLW
Packed Shift Right Logical Words
Syntaxe
PSRLW destination, source
Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de mots.
Algorithme
destination(15..0) destination(15..0) >> source destination(31..16) destination(31..16) >> source destination(47..32) destination(47..32) >> source destination(63..48) destination(63..48) >> source
Mnmonique
Instruction PSRLW mm,mm/m64 Opcode 0Fh D1h /r Description Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de mots. Cette instruction permet d'effectuer le dcalage de bits vers la droite d'un paquet de mots.
PSRLW mm,Imm8
Rfrences
992
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 285 289.
993
Assembleur 80x86
INTEL Pentium Pro+
PSUBB
Packed Subtract Bytes
Syntaxe
PSUBB destination, source
Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des octets d'un paquet contenu dans des oprandes de 64 bits.
Algorithme
destination(7..0) destination(7..0) - source(7..0) destination(15..8) destination(15..8) - source(15..8) destination(23..16) destination(23..16) - source(23..16) destination(31..24) destination(31..24) - source(31..24) destination(39..32) destination(39..32) - source(39..32) destination(47..40) destination(47..40) - source(47..40) destination(55..48) destination(55..48) - source(55..48) destination(63..56) destination(63..56) - source(63..56)
Mnmonique
Instruction PSUBB mm,mm/m64 Opcode 0Fh F8h /r Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des octets d'un paquet contenu dans des oprandes de 64 bits.
994
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 290 293.
995
Assembleur 80x86
INTEL Pentium Pro+
PSUBD
Packed Subtract Dwords
Syntaxe
PSUBD destination, source
Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Algorithme
destination(31..0) destination(31..0) - source(31..0) destination(63..32) destination(63..48) - source(63..32)
Mnmonique
Instruction PSUBD mm,mm/m64 Opcode 0Fh FAh /r Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des doubles mots d'un paquet contenu dans des oprandes de 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 290 293.
996
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PSUBQ
Subtract Packed Quadword
Syntaxe
PSUBQ destination, source
Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des quadruples mots d'un paquet contenu dans des oprandes.
Algorithme
SI taille de l'oprande = 64 bits ALORS destination(0..63) destination(0..63) - source(0..63) SINON destination(0..63) destination(0..63) - source(0..63) destination(64..127) destination(64..127) - source(64..127) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des quadruples mots d'un paquet contenu dans des oprandes. Cette instruction permet d'effectuer la soustraction de la valeur de chacun
0Fh FBh /r
997
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 294 296.
998
Assembleur 80x86
INTEL Pentium Pro+
PSUBSB
Packed Subtract with Saturation Bytes
Syntaxe
PSUBSB destination, source
Description Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets signs d'un paquet contenu dans des oprandes de 64 bits.
Algorithme
destination(7..0) SaturateToSignedByte(destination(7..0) - source(7..0)) destination(15..8) SaturateToSignedByte(destination(15..8) - source(15..8)) destination(23..16) SaturateToSignedByte(destination(23..16) - source(23..16)) destination(31..24) SaturateToSignedByte(destination(31..24) - source(31..24)) destination(39..32) SaturateToSignedByte(destination(39..32) - source(39..32)) destination(47..40) SaturateToSignedByte(destination(47..40) - source(47..40)) destination(55..48) SaturateToSignedByte(destination(55..48) - source(55..48)) destination(63..56) SaturateToSignedByte(destination(63..56) - source(63..56))
Mnmonique
Instruction PSUBSB mm,mm/m64 Opcode 0Fh E8h /r Description Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets signs d'un paquet contenu dans des oprandes de 64 bits.
999
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 297 300.
1000
Assembleur 80x86
Cyrix 6x86MX (EMMX)+
Syntaxe PSUBSIW dest, source
PSUBSIW
Packed Subtract with Saturation, using Implied Destination
Description Cette instruction permet d'effectuer la soustraction du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit le rsultat dans le registre MMX.
Algorithme mmi(15..0) SaturateToSignedWord(dest(15..0) - source(15..0)) mmi(31..16) SaturateToSignedWord(dest(31..16) - source(31..16)) mmi(47..32) SaturateToSignedWord(dest(47..32) - source(47..32)) mmi(63..48) SaturateToSignedWord(dest(63..48) - source(63..48))
Mnmonique Instruction PSUBSIW mm,mm/m64 Opcode 0Fh 55h /r Description Cette instruction permet d'effectuer la soustraction du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit le rsultat dans le registre MMX.
1001
Assembleur 80x86
INTEL Pentium Pro+
PSUBSW
Packed Subtract with Saturation
Syntaxe
PSUBSW dest, source
Description Cette instruction permet d'effectuer la soustraction du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit le rsultat dans l'oprande destinataire.
Algorithme
dest(15..0) SaturateToSignedWord(dest(15..0) - source(15..0)) dest(31..16) SaturateToSignedWord(dest(31..16) - source(31..16)) dest(47..32) SaturateToSignedWord(dest(47..32) - source(47..32)) dest(63..48) SaturateToSignedWord(dest(63..48) - source(63..48))
Mnmonique
Instruction PSUBSW mm,mm/m64 Opcode 0Fh E9h /r Description Cette instruction permet d'effectuer la soustraction du mot de format entier de l'oprande source au mot de format entier de l'oprande de destination et crit le rsultat dans l'oprande destinataire.
1002
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 297 300.
1003
Assembleur 80x86
INTEL Pentium Pro+
PSUBUSB
Packed Subtract Unsigned with Saturation Bytes
Syntaxe
PSUBUSB destination, source
Description Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets d'un paquet contenu dans des oprandes de 64 bits.
Algorithme
destination(7..0) SaturateToUnsignedByte(destination(7..0) - source(7..0)) destination(15..8) SaturateToUnsignedByte(destination(15..8) - source(15..8)) destination(23..16) SaturateToUnsignedByte(destination(23..16) - source(23..16)) destination(31..24) SaturateToUnsignedByte(destination(31..24) - source(31..24)) destination(39..32) SaturateToUnsignedByte(destination(39..32) - source(39..32)) destination(47..40) SaturateToUnsignedByte(destination(47..40) - source(47..40)) destination(55..48) SaturateToUnsignedByte(destination(55..48) - source(55..48)) destination(63..56) SaturateToUnsignedByte(destination(63..56) - source(63..56))
Mnmonique
Instruction PSUBUSB mm,mm/m64 Opcode 0Fh D8h /r Description Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des octets d'un paquet contenu dans des oprandes de 64 bits.
1004
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 301 305.
1005
Assembleur 80x86
INTEL Pentium Pro+
PSUBUSW
Packed Subtract Unsigned with Saturation Word
Syntaxe
PSUBUSW dest, source
Description Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des mots d'un paquet contenu dans des oprandes de destinations.
Algorithme
dest(15..0) SaturateToUnsignedWord(dest(15..0) - source(15..0)) dest(31..16) SaturateToUnsignedWord(dest(31..16) - source(31..16)) dest(47..32) SaturateToUnsignedWord(dest(47..32) - source(47..32)) dest(63..48) SaturateToUnsignedWord(dest(63..48) - source(63..48))
Mnmonique
Instruction PSUBUSW mm,mm/m64 Opcode 0Fh D9h /r Description Cette instruction permet d'effectuer la soustraction avec saturation de la valeur de chacun des mots d'un paquet contenu dans des oprandes de destinations.
Rfrences
1006
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 301 305.
1007
Assembleur 80x86
INTEL Pentium Pro+
PSUBW
Packed Subtract Words
Syntaxe
PSUBW dest, source
Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des mots d'un paquet contenu dans des oprandes de 64 bits.
Algorithme
dest(15..0) dest(15..0) - source(15..0) dest(31..16) dest(31..16) - source(31..16) dest(47..32) dest(47..32) - source(47..32) dest(63..48) dest(63..48) - source(63..48)
Mnmonique
Instruction PSUBW mm,mm/m64 Opcode 0Fh F9h /r Description Cette instruction permet d'effectuer la soustraction de la valeur de chacun des mots d'un paquet contenu dans des oprandes de 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
1008
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 290 293.
1009
Assembleur 80x86
3DNow!
Syntaxe PSWAPD destination, source
PSWAPD
Packed Swap Doubleword
Description Cette instruction permet d'effectuer l'change de la partie basse de 32 bits avec la partie haute de 32 bits dans des oprandes source de 64 bits et met le rsultat dans une oprande 64 bits destinataire.
Mnmonique Instruction PSWAPD mm,mm/m64 Opcode 0Fh 0Fh BBh /r Description Cette instruction permet d'effectuer l'change de la partie basse de 32 bits avec la partie haute de 32 bits dans des oprandes source de 64 bits et met le rsultat dans une oprande 64 bits destinataire.
1010
Assembleur 80x86
SSE4.1+
PTEST
Packed Test
Syntaxe
PTEST destination, source
Description Cette instruction permet d'effectuer une comparaison de paquet avec un Et binaire sans modifier les oprandes.
Algorithme
SI source(127..0) destination(127..0) = 0 ALORS ZF 1 SINON ZF 0 FIN SI SI source(127..0) destination(127..0) = 0 ALORS CF 1 SINON CF 0 FIN SI AF 0 OF 0 PF 0 SF 0
Mnmonique
Instruction Opcode Description
1011
PTEST xmm1,xmm2/m128
Cette instruction permet d'effectuer une comparaison de paquet avec un Et binaire sans modifier les oprandes.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 306 308.
1012
Assembleur 80x86
INTEL Pentium Pro+
PUNPCKHBW
Unpack High Bytes to Words
Syntaxe
PUNPCKHBW destination, source
Description Cette instruction permet de dcompacter des octets en mots dans le haut d'un paquets de 64 bits.
Algorithme
destination(63..56) source(63..56) destination(55..48) destination(63..56) destination(47..40) source(55..48) destination(39..32) destination(55..48) destination(31..24) source(47..40) destination(23..16) destination(47..40) destination(15..8) source(39..32) destination7..0) destination(39..32)
Mnmonique
Instruction PUNPCKHBW mm,mm/m64 Opcode 0Fh 68h /r Description Cette instruction permet de dcompacter des octets en mots dans le haut d'un paquets de 64 bits.
1013
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 309 314.
1014
Assembleur 80x86
INTEL Pentium Pro+
PUNPCKHDQ
Unpack High Dwords to Qwords
Syntaxe
PUNPCKHDQ destination, source
Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le haut d'un paquets de 64 bits.
Algorithme
destination(63..32) source(63..32) destination(31..0) destination(63..32)
Mnmonique
Instruction PUNPCKHDQ mm,mm/m64 Opcode 0Fh 6Ah /r Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le haut d'un paquets de 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 309 314.
1015
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PUNPCKHQDQ
Unpack High Data Quadword
Syntaxe
PUNPCKHQDQ destination, source
Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le haut d'un paquets de 128 bits.
Algorithme
destination(0..63) destination(64..127) destination(64..127) source(64..127)
Mnmonique
Instruction Opcode Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le haut d'un paquets de 128 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 309 314.
1016
Assembleur 80x86
INTEL Pentium Pro+
PUNPCKHWD
Unpack High Words to Dwords
Syntaxe
PUNPCKHWD destination, source
Description Cette instruction permet de dcompacter des mots en double mots dans le haut d'un paquets de 64 bits.
Algorithme
destination(63..56) source(63..48) destination(47..32) destination(63..48) destination(31..16) source(47..32) destination(15..0) destination(47..32)
Mnmonique
Instruction PUNPCKHWD mm,mm/m64 Opcode 0Fh 69h /r Description Cette instruction permet de dcompacter des mots en double mots dans le haut d'un paquet de 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
1017
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 309 314.
1018
Assembleur 80x86
INTEL Pentium Pro+
PUNPCKLBW
Unpack Low Bytes to Words
Syntaxe
PUNPCKLBW destination, source
Description Cette instruction permet de dcompacter des octets en mots dans le bas d'un paquets de 64 bits.
Algorithme
destination(63..56) source(31..24) destination(55..48) destination(31..24) destination(47..40) source(23..16) destination(39..32) destination(23..16) destination(31..24) source(15..8) destination(23..16) destination(15..8) destination(15..8) source(7..0) destination(7..0) destination(7..0)
Mnmonique
Instruction PUNPCKLBW mm,mm/m32 Opcode 0Fh 60h /r Description Cette instruction permet de dcompacter des octets en mots dans le bas d'un paquets de 64 bits.
1019
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 315 320.
1020
Assembleur 80x86
INTEL Pentium Pro+
PUNPCKLDQ
Unpack Low Dwords to Qwords
Syntaxe
PUNPCKLDQ destination, source
Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le bas d'un paquets de 64 bits.
Algorithme
destination(63..32) source(31..0) destination(31..0) destination(31..0)
Mnmonique
Instruction PUNPCKLDQ mm,mm/m32 Opcode 0Fh 62h /r Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le bas d'un paquets de 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 315 320.
1021
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
PUNPCKLQDQ
Unpack Low Data Quadword
Syntaxe
PUNPCKLQDQ destination, source
Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le bas d'un paquets de 128 bits.
Algorithme
destination(0..63) destination(0..63) destination(64..127) source(0..63)
Mnmonique
Instruction Opcode Description Cette instruction permet de dcompacter des doubles mots en quadruples mots dans le bas d'un paquets de 128 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 315 320.
1022
Assembleur 80x86
INTEL Pentium Pro+
PUNPCKLWD
Unpack Low Words to Dwords
Syntaxe
PUNPCKLWD destination, source
Description Cette instruction permet de dcompacter des mots en double mots dans le bas d'un paquets de 64 bits.
Algorithme
destination(63..48) source(31..16) destination(47..32) destination(31..16) destination(31..16) source(15..0) destination(15..0) destination(15..0)
Mnmonique
Instruction PUNPCKLWD mm,mm/m32 Opcode 0Fh 61h /r Description Cette instruction permet de dcompacter des mots en double mots dans le bas d'un paquets de 64 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction
1023
Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 315 320.
1024
Syntaxe
PUSH oprande
Description Cette instruction permet d'empiler une mot ou un double mot dans la pile.
Algorithme
SI taille de l'adresse = 32 bits ALORS SI taille de l'oprande = 32 bits ALORS ESP ESP - 4 SS:ESP oprande SINON ESP ESP - 2 SS:ESP oprande FIN SI SINON SI taille de l'oprande = 16 bits ALORS SP SP - 2 SS:SP oprande SINON SP SP - 4 SS:SP oprande FIN SI FIN SI
Mnmonique
1025
Instruction
Opcode
Description Empile le contenu d'une oprande registre ou mmoire 16 bits dans la pile. Empile le contenu d'une oprande registre ou mmoire 32 bits dans la pile. Il n'y a pas de prfixe en mode 64 bits. Empile le contenu d'une oprande registre ou mmoire 64 bits dans la pile. Empile le contenu d'un registre 16 bits dans la pile. Empile le contenu d'un registre 32 bits dans la pile. Il n'y a pas de prfixe en mode 64 bits. Empile le contenu d'un registre 64 bits dans la pile. Empile le contenu d'une valeur immdiate 8 bits dans la pile. Empile le contenu d'une valeur immdiate 16 bits dans la pile. Empile le contenu d'une valeur immdiate 32 bits dans la pile. Il n'y a pas de prfixe en mode 64 bits. Empile le contenu d'une valeur immdiate 32 bits dans la pile. Il n'y a pas de prfixe en mode 64 bits.
PUSH reg/mem16
FFh /6
PUSH reg/mem32
FFh /6
PUSH reg/mem64
FFh /6
PUSH reg16
50h +rw
PUSH reg32
50h +rd
PUSH reg64
50h +rq
PUSH imm8
6Ah ib
PUSH imm16
68h iw
PUSH imm32
68h id
PUSH imm64
68h id
1026
PUSH CS
0Eh
Empile le contenu du registre CS dans la pile. Invalide en mode 64 bits. Empile le contenu du registre DS dans la pile. Invalide en mode 64 bits. Empile le contenu du registre ES dans la pile. Invalide en mode 64 bits. Empile le contenu du registre FS dans la pile. Empile le contenu du registre GS dans la pile. Empile le contenu du registre SS dans la pile. Invalide en mode 64 bits.
PUSH DS
1Eh
PUSH ES
06h
PUSH FS
0Fh A0h
PUSH GS
0Fh A8h
PUSH SS
16h
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Les instructions PUSH CS, PUSH DS, PUSH ES ou PUSH SS sont excuts en mode 64 bits. Une adresse mmoire dpasse la limite du segment de pile ou n'est
#UD(Opcode invalide)
#SS(Pile)
1027
pas canonique #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
galement POP
1028
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 826 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 413 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 197. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 321 325.
1029
Syntaxe
PUSHA
Description Cette instruction permet d'empiler respectivement les registres DI, SI, BP, SP, BX, DX, CX et AX dans la pile.
Algorithme temp ESP (E)SP (E)SP - 2 SS:(E)SP AX (E)SP (E)SP - 2 SS:(E)SP CX (E)SP (E)SP - 2 SS:(E)SP DX (E)SP (E)SP - 2 SS:(E)SP BX (E)SP (E)SP - 2 SS:(E)SP temp (E)SP (E)SP - 2 SS:(E)SP BP (E)SP (E)SP - 2 SS:(E)SP SI (E)SP (E)SP - 2 SS:(E)SP DI
Mnmonique
1030
Instruction
Opcode
Description Empile le contenu des registres AX, CX, DX, BX, SP avant l'appel de cette instruction, BP, SI et DI dans la pile. Invalide en mode 64 bits.
PUSHA
60h
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excut en mode 64 bits. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification
#UD(Opcode invalide)
#SS(Pile)
#PF(Faute de page)
#AC(Vrifie l'alignement)
1031
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 827 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 199. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 326 327.
1032
Syntaxe
PUSHAD
Description Cette instruction permet d'empiler respectivement les registres EDI, ESI, EBP, ESP, EBX, EDX, ECX et EAX dans la pile.
Algorithme temp ESP (E)SP (E)SP - 2 SS:(E)SP EAX (E)SP (E)SP - 2 SS:(E)SP ECX (E)SP (E)SP - 2 SS:(E)SP EDX (E)SP (E)SP - 2 SS:(E)SP EBX (E)SP (E)SP - 2 SS:(E)SP temp (E)SP (E)SP - 2 SS:(E)SP EBP (E)SP (E)SP - 2 SS:(E)SP ESI (E)SP (E)SP - 2 SS:(E)SP EDI
Mnmonique
1033
Instruction
Opcode
Description Empile le contenu des registres EAX, ECX, EDX, EBX, ESP avant l'appel de cette instruction, EBP, ESI et EDI dans la pile. Invalide en mode 64 bits.
PUSHAD
60h
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Cette instruction est excut en mode 64 bits. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification
#UD(Opcode invalide)
#SS(Pile)
#PF(Faute de page)
#AC(Vrifie l'alignement)
1034
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 827 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 199. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 326 327.
1035
Syntaxe
PUSHF
Description Cette instruction permet d'empiler respectivement le registre 16 bits de drapeau des indicateurs d'tat dans la pile.
Algorithme
(E)SP (E)SP - 2 SS:(E)SP Registre de drapeaux (FLAGS)
Mnmonique
Instruction Opcode Description Empile le mot du registre de drapeaux 16 bits (FLAGS) dans la pile.
PUSHF
9Ch
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du
#SS(Pile)
1036
segment de pile ou n'est pas canonique Le niveau de prvilge d'entre/sortie est infrieur 3 et le VME n'est pas actif ou la taille de l'oprande n'est pas 16 bits. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#GP(Protection gnrale)
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 827
1037
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 413 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 200. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 328 330.
1038
Syntaxe
PUSHFD
Description Cette instruction permet d'empiler respectivement le registre 32 bits de drapeau des indicateurs d'tat dans la pile.
Algorithme
(E)SP (E)SP - 4 SS:(E)SP Registre de drapeaux (EFLAGS)
Mnmonique
Instruction Opcode Description Empile le double mot du registre de drapeaux 32 bits (EFLAGS) dans la pile.
PUSHFD
9Ch
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la
#SS(Pile)
1039
limite du segment de pile ou n'est pas canonique Le niveau de prvilge d'entre/sortie est infrieur 3 et le VME n'est pas actif ou la taille de l'oprande n'est pas 16 bits. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#GP(Protection gnrale)
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences
1040
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 328 330.
1041
Assembleur 80x86
x86-64+
PUSHFQ
Push rFLAGS onto Stack
Syntaxe
PUSHFQ
Description Cette instruction permet d'empiler respectivement le registre 64 bits de drapeau (RFLAGS) des indicateurs d'tat dans la pile.
Algorithme
(E)SP (E)SP - 8 SS:(E)SP Registre de drapeaux (EFLAGS)
Mnmonique
Instruction Opcode Description Empile le quadruple mot du registre de drapeaux 64 bits (RFLAGS) dans la pile.
PUSHFQ
9Ch
Exceptions
Message #SS(Pile) Mode rel X Virtuel 8086 X Mode protg X Description Une adresse mmoire
1042
dpasse la limite du segment de pile ou n'est pas canonique Le niveau de prvilge d'entre/sortie est infrieur 3 et le VME n'est pas actif ou la taille de l'oprande n'est pas 16 bits. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#GP(Protection gnrale)
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction assembleur 80x86 Instruction assembleur 80x86 Instruction assembleur 80x86 - Instruction POPFQ Instruction Instruction
1043
Assembleur 80x86
INTEL Pentium MMX+
PXOR
Bitwise Logical Exclusive OR
Syntaxe
PXOR destination, source
Description Cette instruction permet d'effectuer un ou exclusif binaire d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM.
Algorithme
destination destination XOR source
Mnmonique
Instruction PXOR mm,mm/m64 Opcode 0Fh EFh /r Description Cette instruction permet d'effectuer un ou exclusif binaire d'un quadruple mot d'une oprande source avec une oprande destination dans le cas des registres XMM.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 331 333.
1044
Syntaxe
RCL oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la gauche en rinsrant le bit dans l'indicateur de retenue (CF) ainsi que dans le bit le plus droite libr.
Algorithme
temp max (nombredebits, 31) SI temp = 1 ALORS OF highbit(oprandecible) <> CF SINON OF ? FIN SI Valeur concatnation ( CF, oprandecible ) FAIRE TANT QUE temp <> 0 X highbit ( valeur ) valeur ( valeur dcalage gauche 1 ) + X temp temp - 1 FIN DE FAIRE CF highbit ( valeur ) oprandecible valeur
Mnmonique
Instruction Opcode Description
1045
RCL reg/mem8,1
D0h /2
Cette instruction effectue une rotation de 9 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 8 bits) d'un seul bit vers la gauche. Cette instruction effectue une rotation de 9 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 8 bits) avec le nombre de bits spcifi par le registre CL vers la gauche. Cette instruction effectue une rotation de 9 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 8 bits) avec le nombre de bits spcifi par la valeur immdiate vers la gauche. Cette instruction effectue une rotation de 17 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 16 bits) d'un seul bit vers la gauche. Cette instruction effectue une rotation de 17 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 16 bits) avec le nombre de bits spcifi par le registre CL vers la gauche. Cette instruction effectue une rotation de 17 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 16 bits) avec le nombre de bits spcifi par la valeur immdiate vers la gauche.
RCL reg/mem8, CL
D2h /2
C0h /2 ib
RCL reg/mem16, 1
D1h /2
RCL reg/mem16, CL
D3h /2
C1h /2 ib
1046
RCL reg/mem32, 1
D1h /2
Cette instruction effectue une rotation de 33 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 32 bits) d'un seul bit vers la gauche. Cette instruction effectue une rotation de 33 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 32 bits) avec le nombre de bits spcifi par le registre CL vers la gauche. Cette instruction effectue une rotation de 33 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 32 bits) avec le nombre de bits spcifi par la valeur immdiate vers la gauche. Cette instruction effectue une rotation de 65 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 64 bits) d'un seul bit vers la gauche. Cette instruction effectue une rotation de 65 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 64 bits) avec le nombre de bits spcifi par le registre CL vers la gauche. Cette instruction effectue une rotation de 65 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 64 bits) avec le nombre de bits spcifi par la valeur immdiate vers la gauche.
RCL reg/mem32, CL
D3h /2
C1h /2 ib
RCL reg/mem64, 1
D1h /2
RCL reg/mem64, CL
D3h /2
C1h /2 ib
1047
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
1048
#AC(Vrifie l'alignement)
Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 827 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 413 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 202. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 334 341.
1049
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
RCPPS
Reciprocals of Packed Single-Precision
Syntaxe
RCPPS destination, source
Description Cette instruction permet d'effectuer le calcul de la rciproque d'un paquet de valeurs de rel de simple prcision.
Algorithme
destination(31..0) APPROX(1.0 / source(31..0)) destination(63..32) APPROX(1.0 / source(63..32)) destination(95..64) APPROX(1.0 / source(95..64)) destination(127..96) APPROX(1.0 / source(127..96))
Mnmonique
Instruction RCPPS xmm1,xmm2/m128 Opcode 0Fh 53h /r Description Cette instruction permet d'effectuer le calcul de la rciproque d'un paquet de valeurs de rel de simple prcision.
1050
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 342 345.
1051
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
RCPSS
Reciprocals of Packed Scalar Single-Precision
Syntaxe
RCPSS destination, source
Description Cette instruction permet d'effectuer le calcul de la rciproque d'une valeur de rel de simple prcision.
Algorithme
destination(31..0) APPROX(1.0 / source(31..0))
Mnmonique
Instruction RCPSS xmm1,xmm2/m32 Opcode F3h 0Fh 53h /r Description Cette instruction permet d'effectuer le calcul de la rciproque d'une valeur de rel de simple prcision.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 346 348.
1052
Syntaxe
RCR oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la droite en rinsrant le bit dans l'indicateur de retenue (CF) ainsi que dans le bit le plus gauche libr.
Algorithme
temp max (nombredebits, 31) SI temp = 1 ALORS OF highbit ( oprandecible ) <> highbit ( oprandecible ) dcalage droite ) ) SINON OF ? FIN SI Valeur concatnation ( oprandecible, CF ) FAIRE TANT QUE temp <> 0 X valeur 1 valeur valeur dcalage droite de 1 highbit ( valeur ) x temp temp - 1 FIN DE FAIRE CF highbit ( valeur ) oprandecible valeur
Mnmonique
Instruction Opcode Description
1053
RCR reg/mem8, 1
D0h /3
Cette instruction effectue une rotation de 9 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 8 bits) d'un seul bit vers la droite. Cette instruction effectue une rotation de 9 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 8 bits) avec le nombre de bits spcifi par le registre CL vers la droite. Cette instruction effectue une rotation de 9 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 8 bits) avec le nombre de bits spcifi par la valeur immdiate vers la droite. Cette instruction effectue une rotation de 17 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 16 bits) d'un seul bit vers la droite. Cette instruction effectue une rotation de 17 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 16 bits) avec le nombre de bits spcifi par le registre CL vers la droite. Cette instruction effectue une rotation de 17 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 16 bits) avec le nombre de bits spcifi par la valeur immdiate vers la droite.
RCR reg/mem8,CL
D2h /3
RCR reg/mem8,imm8
C0h /3 ib
RCR reg/mem16,1
D1h /3
RCR reg/mem16,CL
D3h /3
C1h /3 ib
1054
RCR reg/mem32,1
D1h /3
Cette instruction effectue une rotation de 33 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 32 bits) d'un seul bit vers la droite. Cette instruction effectue une rotation de 33 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 32 bits) avec le nombre de bits spcifi par le registre CL vers la droite. Cette instruction effectue une rotation de 33 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 32 bits) avec le nombre de bits spcifi par la valeur immdiate vers la droite. Cette instruction effectue une rotation de 65 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 64 bits) d'un seul bit vers la droite. Cette instruction effectue une rotation de 65 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 64 bits) d'un seul bit vers la droite. Cette instruction effectue une rotation de 65 bits (drapeau de retenue 1 bit + emplacement registre ou mmoire 64 bits) avec le nombre de bits spcifi par la valeur immdiate vers la droite.
RCR reg/mem32,CL
D3h /3
C1h /3 ib
RCR reg/mem64,1
D1h /3
RCR reg/mem64,CL
D3h /3
C1h /3 ib
1055
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction
#SS(Pile noncanonique)
#GP(Protection gnral)
#PF(Faute de page)
1056
#AC(Vrifie l'alignement)
Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 828 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 413 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 204. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 334 341.
1057
Assembleur 80x86
INTEL Pentium+
RDMSR
Read from Model Specific Register
Syntaxe
RDMSR
Description Cette instruction permet de charger le contenu du modle de registre 64-bits (MSR) indiquer par le registre ECX dans le couple de registre EDX:EAX.
Algorithme
EDX:EAX MSR(ECX)
Mnmonique
Instruction RDMSR Opcode 0Fh 32h Description Cette instruction permet de charger le contenu du modle de registre 64bits (MSR) indiquer par le registre ECX dans le couple de registre EDX:EAX.
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
1058
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 349 350.
1059
Assembleur 80x86
INTEL Pentium Pro+
RDPMC
Read Performance-Monitoring Counters
Syntaxe
RDPMC
Algorithme
SI (ECX = 0 OU ECX = 1) ET ((CR4.PCE = 1) OU ((CR4.PCE = 0) ET (CPL = 0))) ALORS EDX:EAX PMC(ECX) FIN SI
Mnmonique
Instruction RDPMC Opcode 0Fh 33h Description Cette instruction permet d'effectuer la lecture du compteur du moniteur de performance.
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 351 356.
1061
Assembleur 80x86
Cyrix CX6x86MX+
Syntaxe RDSHR destination
RDSHR
Read SMM Header Pointer Register
Description Cette instruction permet d'effectuer la lecture du registre de pointeur vers l'entte SMM.
Mnmonique Instruction RDMSR Opcode 0Fh 36h /r Description Cette instruction permet d'effectuer la lecture du registre de pointeur vers l'entte SMM.
1062
Assembleur 80x86
INTEL Pentium+
RDTSC
Read Time-Stamp Counter
Syntaxe
RDTSC
Description Cette instruction permet de charger la valeur courante du compteur de temps du microprocesseur dans le couple de registres EDX:EAX.
Algorithme
SI ((CR4.TSD = 0) OU (CR4.TDS = 1)) ET (CPL = 0) ALORS EDX:EAX Compteur de temps SINON EXCEPTION #GP(0) Compteur de temps FIN SI
Mnmonique
Instruction RDTSC Opcode 0Fh 31h Description Cette instruction permet de charger la valeur courante du compteur de temps du microprocesseur dans le couple de registres EDX:EAX.
Voir
galement
1063
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 357 358.
1064
Assembleur 80x86
x86-64+
RDTSCP
Read Time-Stamp Counter and Processor ID
Syntaxe
RDTSCP
Description 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.
Mnmonique
Instruction Opcode Description 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.
RDTSCP
galement RDTSC
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 359 360.
1065
Syntaxe
REP chaine_d'instruction_paramtre
Description Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions tant que CX ne vaut pas 0.
Algorithme
SI OpCode est [ INS, INSB, INSD, INSW, LODS, LODSB, LODSD, LODSQ, LODSW, MOVS, MOVSB, MOVSD, MOVSQ, MOVSW, OUTS, OUTSB, OUTSD, OUTSW, STOS, STOSB, STOSD, STOSQ, STOSW ] ALORS FAIRE TANT QUE CX <> 0 Excute instruction_paramtre CX CX - 1 FIN DE FAIRE FIN SI SI OpCode est [ CMPS, CMPSB, CMPSD, CMPSQ, CMPSW, SCAS, SCASB, SCASD, SCASW ] ALORS FAIRE TANT QUE CX <> 0 Excute instruction_paramtre CX CX - 1 SI ZF = 0 ALORS Fin de boucle FIN DE FAIRE FIN SI
Mnmonique
Instruction Opcode Description
1066
REP autreinstruction
F3h autreinstruction
Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions tant que CX ne vaut pas 0.
Rfrences Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 413 Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 828 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 361 365.
1067
REPE
Syntaxe
REPE chaine_d'instruction_paramtre
Description Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 0.
Algorithme
SI OpCode est [ INS, INSB, INSD, INSW, LODS, LODSB, LODSD, LODSQ, LODSW, MOVS, MOVSB, MOVSD, MOVSQ, MOVSW, OUTS, OUTSB, OUTSD, OUTSW, STOS, STOSB, STOSD, STOSQ, STOSW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 0 Excute instruction_paramtre CX CX - 1 FIN DE FAIRE FIN SI SI OpCode est [ CMPS, CMPSB, CMPSD, CMPSQ, CMPSW, SCAS, SCASB, SCASD, SCASW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 0 Excute instruction_paramtre CX CX - 1 SI ZF = 0 ALORS Fin de boucle FIN DE FAIRE FIN SI
Mnmonique
Instruction Opcode Description
1068
REPE autreinstruction
F3h autreinstruction
Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 0.
Rfrences Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 414 Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 828 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 361 365.
1069
REPNE
Syntaxe
REPNE chaine_d'instruction_paramtre
Description Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 1.
Algorithme
SI OpCode est [ INS, INSB, INSD, INSW, LODS, LODSB, LODSD, LODSQ, LODSW, MOVS, MOVSB, MOVSD, MOVSQ, MOVSW, OUTS, OUTSB, OUTSD, OUTSW, STOS, STOSB, STOSD, STOSQ, STOSW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 1 Excute instruction_paramtre CX CX - 1 FIN DE FAIRE FIN SI SI OpCode est [ CMPS, CMPSB, CMPSD, CMPSQ, CMPSW, SCAS, SCASB, SCASD, SCASW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 1 Excute instruction_paramtre CX CX - 1 SI ZF = 0 ALORS Fin de boucle FIN DE FAIRE FIN SI
Mnmonique
Instruction Opcode Description
1070
REPNE autreinstruction
F2h autreinstruction
Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 1.
Rfrences Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 414 Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 829 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 361 365.
1071
REPNZ
Syntaxe
REPNZ chaine_d'instruction_paramtre
Description Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 1.
Algorithme
SI OpCode est [ INS, INSB, INSD, INSW, LODS, LODSB, LODSD, LODSQ, LODSW, MOVS, MOVSB, MOVSD, MOVSQ, MOVSW, OUTS, OUTSB, OUTSD, OUTSW, STOS, STOSB, STOSD, STOSQ, STOSW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 1 Excute instruction_paramtre CX CX - 1 FIN DE FAIRE FIN SI SI OpCode est [ CMPS, CMPSB, CMPSD, CMPSQ, CMPSW, SCAS, SCASB, SCASD, SCASW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 1 Excute instruction_paramtre CX CX - 1 SI ZF = 0 ALORS Fin de boucle FIN DE FAIRE FIN SI
Mnmonique
Instruction Opcode Description
1072
REPNZ autreinstruction
F2h autreinstruction
Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 1.
Rfrences Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 414 Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 829 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 361 365.
1073
REPZ
Syntaxe
REPZ chaine_d'instruction_paramtre
Description Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 0.
Algorithme
SI OpCode est [ INS, INSB, INSD, INSW, LODS, LODSB, LODSD, LODSQ, LODSW, MOVS, MOVSB, MOVSD, MOVSQ, MOVSW, OUTS, OUTSB, OUTSD, OUTSW, STOS, STOSB, STOSD, STOSQ, STOSW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 0 Excute instruction_paramtre CX CX - 1 FIN DE FAIRE FIN SI SI OpCode est [ CMPS, CMPSB, CMPSD, CMPSQ, CMPSW, SCAS, SCASB, SCASD, SCASW ] ALORS FAIRE TANT QUE CX <> 0 OU ZF <> 0 Excute instruction_paramtre CX CX - 1 SI ZF = 0 ALORS Fin de boucle FIN DE FAIRE FIN SI
Mnmonique
Instruction Opcode Description
1074
REPZ autreinstruction
F3h autreinstruction
Cette instruction est utilis comme prfixe avec d'autres instructions pour effectuer des rptitions d'instructions jusqu' ce que CX = 0 ou tant que l'indicateur ZF = 0.
Rfrences Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 414 Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 829 Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 361 365.
1075
Assembleur 80x86
AMD Am386SXLV, Am386DXLV
Syntaxe RES3
RES3
Restore All CPU Registers 386
Description Cette instruction permet d'effectuer le chargement de tous les registres de descripteur de cache.
Algorithme (ES:EDI+0000h)(4) CR0 (ES:EDI+0004h)(4) EFLAGS (ES:EDI+0008h)(4) EIP (ES:EDI+000Ch)(4) EDI (ES:EDI+0010h)(4) ESI (ES:EDI+0014h)(4) EBP (ES:EDI+0018h)(4) ESP (ES:EDI+001Ch)(4) EBX (ES:EDI+0020h)(4) EDX (ES:EDI+0024h)(4) ESX (ES:EDI+0028h)(4) EAX (ES:EDI+002Ch)(4) DR6 (ES:EDI+0030h)(4) DR7 (ES:EDI+0034h)(4) TR (16 bits complt par des 0) (ES:EDI+0038h)(4) LDT (ES:EDI+003Ch)(4) GS (16 bits complt par des 0) (ES:EDI+0040h)(4) FS (16 bits complt par des 0) (ES:EDI+0044h)(4) DS (16 bits complt par des 0) (ES:EDI+0048h)(4) SS (16 bits complt par des 0) (ES:EDI+004Ch)(4) CS (16 bits complt par des 0) (ES:EDI+0050h)(4) ES (16 bits complt par des 0) (ES:EDI+0054h)(4) Attribut de TSS (ES:EDI+0058h)(4) Base de TSS (ES:EDI+005Ch)(4) Limite de TSS (ES:EDI+0060h)(4) 0s
1076
(ES:EDI+0064h)(4) Base de IDT (ES:EDI+0068h)(4) Limite de IDT (ES:EDI+006Ch)(4) 0s (ES:EDI+0070h)(4) Base de GDT (ES:EDI+0074h)(4) Limite de GDT (ES:EDI+0078h)(4) Attribut de LDT (ES:EDI+007Ch)(4) Base de LDT (ES:EDI+0080h)(4) Limite de LDT (ES:EDI+0084h)(4) Attribut de GS (ES:EDI+0088h)(4) Base de GS (ES:EDI+008Ch)(4) Limite de GS (ES:EDI+0090h)(4) Attribut de FS (ES:EDI+0094h)(4) Base de FS (ES:EDI+0098h)(4) Limite de FS (ES:EDI+009Ch)(4) Attribut de DS (ES:EDI+00A0h)(4) Base de DS (ES:EDI+00A4h)(4) Limite de DS (ES:EDI+00A8h)(4) Attribut de SS (ES:EDI+00ACh)(4) Base de SS (ES:EDI+00B0h)(4) Limite de SS (ES:EDI+00B4h)(4) Attribut de CS (ES:EDI+00B8h)(4) Base de CS (ES:EDI+00BCh)(4) Limite de CS (ES:EDI+00C0h)(4) Attribut de ES (ES:EDI+00C4h)(4) Base de ES (ES:EDI+00C8h)(4) Limite de ES (ES:EDI+00CCh)(34h) Non utilis (ES:EDI+0100h)(4) Registre temporaire (ES:EDI+0104h)(4) Registre temporaire (ES:EDI+0108h)(4) Registre temporaire (ES:EDI+010Ch)(4) Registre temporaire (ES:EDI+0110h)(4) Registre temporaire (ES:EDI+0114h)(4) Registre temporaire (ES:EDI+0118h)(4) Registre temporaire (ES:EDI+011Ch)(4) Registre temporaire (ES:EDI+0120h)(4) Registre temporaire (ES:EDI+0124h)(4) Dernier instruction EIP pour le redmarrage
Mnmonique Instruction RES3 Opcode 0Fh 07h Description Cette instruction permet d'effectuer la lecture des donnes l'adresse ES:EDI.
1077
Assembleur 80x86
AMD Am386SXLV, Am386DXLV
Syntaxe RES4
RES4
Restore All CPU Registers 486
Description Cette instruction permet d'effectuer le chargement de tous les registres de descripteur de cache.
Algorithme (ES:EDI+0000h)(4) CR0 (ES:EDI+0004h)(4) EFLAGS (ES:EDI+0008h)(4) EIP (ES:EDI+000Ch)(4) EDI (ES:EDI+0010h)(4) ESI (ES:EDI+0014h)(4) EBP (ES:EDI+0018h)(4) ESP (ES:EDI+001Ch)(4) EBX (ES:EDI+0020h)(4) EDX (ES:EDI+0024h)(4) ESX (ES:EDI+0028h)(4) EAX (ES:EDI+002Ch)(4) DR6 (ES:EDI+0030h)(4) DR7 (ES:EDI+0034h)(4) TR (16 bits complt par des 0) (ES:EDI+0038h)(4) LDT (ES:EDI+003Ch)(4) GS (16 bits complt par des 0) (ES:EDI+0040h)(4) FS (16 bits complt par des 0) (ES:EDI+0044h)(4) DS (16 bits complt par des 0) (ES:EDI+0048h)(4) SS (16 bits complt par des 0) (ES:EDI+004Ch)(4) CS (16 bits complt par des 0) (ES:EDI+0050h)(4) ES (16 bits complt par des 0) (ES:EDI+0054h)(4) Attribut de TSS (ES:EDI+0058h)(4) Base de TSS (ES:EDI+005Ch)(4) Limite de TSS (ES:EDI+0060h)(4) 0s
1078
(ES:EDI+0064h)(4) Base de IDT (ES:EDI+0068h)(4) Limite de IDT (ES:EDI+006Ch)(4) 0s (ES:EDI+0070h)(4) Base de GDT (ES:EDI+0074h)(4) Limite de GDT (ES:EDI+0078h)(4) Attribut de LDT (ES:EDI+007Ch)(4) Base de LDT (ES:EDI+0080h)(4) Limite de LDT (ES:EDI+0084h)(4) Attribut de GS (ES:EDI+0088h)(4) Base de GS (ES:EDI+008Ch)(4) Limite de GS (ES:EDI+0090h)(4) Attribut de FS (ES:EDI+0094h)(4) Base de FS (ES:EDI+0098h)(4) Limite de FS (ES:EDI+009Ch)(4) Attribut de DS (ES:EDI+00A0h)(4) Base de DS (ES:EDI+00A4h)(4) Limite de DS (ES:EDI+00A8h)(4) Attribut de SS (ES:EDI+00ACh)(4) Base de SS (ES:EDI+00B0h)(4) Limite de SS (ES:EDI+00B4h)(4) Attribut de CS (ES:EDI+00B8h)(4) Base de CS (ES:EDI+00BCh)(4) Limite de CS (ES:EDI+00C0h)(4) Attribut de ES (ES:EDI+00C4h)(4) Base de ES (ES:EDI+00C8h)(4) Limite de ES (ES:EDI+00CCh)(34h) Non utilis (ES:EDI+0100h)(4) Registre temporaire (ES:EDI+0104h)(4) Registre temporaire (ES:EDI+0108h)(4) Registre temporaire (ES:EDI+010Ch)(4) Registre temporaire (ES:EDI+0110h)(4) Registre temporaire (ES:EDI+0114h)(4) Registre temporaire (ES:EDI+0118h)(4) Registre temporaire (ES:EDI+011Ch)(4) Registre temporaire (ES:EDI+0120h)(4) Registre temporaire (ES:EDI+0124h)(4) Dernier instruction EIP pour le redmarrage (ES:EDI+0128h)(4) PEIP: Pointeur d'instruction sur l'espace SRAM prcdent (ES:EDI+012Eh)(36) Non utilis (ES:EDI+0150h)(4) Registres de pointeur interne de nombre rel (virgule flottante)
Description
RES4
0Fh 07h
1080
RET Return
Syntaxe
RET RET immdiat
Description Cette instruction permet de quitter une procdure. Ainsi, elle indique au microprocesseur qu'il doit dsempiler la valeur du pointeur d'instructions contenu dans la pile et la copier dans les registres CS:IP pour une procdure de type FAR ou dans le registre IP pour une procdure de type NEAR. Ensuite, l'excution du code se poursuit l'instruction suivant l'instruction CALL.
Algorithme
SI instruction = RETN ALORS SI oprande de taille = 32 bits ALORS SI les 12 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI EIP Pop() SINON SI les 6 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI tempEIP Pop() tempEIP tempEIP 0000FFFFh SI tempEIP n'est pas dans limite du segment de code ALORS EXCEPTION #GP(0) FIN SI EIP tempEIP FIN SI
1081
SI instruction a une oprande immdiate ALORS SI taille de l'adresse de la pile = 32 bits ALORS ESP ESP + SRC SINON SP SP + SRC FIN SI FIN SI FIN SI SI ((PE = 0) OU (PE = 1 ET VM = 1)) ET instruction RETF ALORS SI taille de l'oprande = 32 bits ALORS SI les 12 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI EIP Pop() CS Pop() SINON SI les 6 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI tempEIP Pop() tempEIP tempEIP 0000FFFFh SI tempEIP n'est pas dans limite du segment de code ALORS EXCEPTION #GP(0) FIN SI EIP tempEIP CS Pop() FIN SI SI instruction a une oprande immdiate ALORS SP SP + (SRC FFFFh) FIN SI FIN SI SI (PE = 1 ET VM = 0) ET instruction RETF ALORS SI taille de l'oprande = 32 bits ALORS SI le deuxime double mot de la pile est en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI FIN SI SI slecteur de code de retour est nulle ALORS EXCEPTION GP(0) 1082
FIN SI SI adresse du slecteur de retour de code segment est en dehors des limites de la table de descripteur ALORS EXCEPTION GP(selecteur) FIN SI Demande le descripteur avec le point du slecteur de segment de code de retour du descripteur de table SI descripteur de retour de code segment n'est pas un code segment ALORS EXCEPTION #GP(selecteur) FIN SI SI selecteur de retour de segment de code RPL < CPL ALORS EXCEPTION #GP(Slecteur) FIN SI SI descripteur retour de code de segment retour est conforme ET retour de segment de code DPL > slecteur de retour de segment de code RPL ALORS EXCEPTION #GP(Slecteur) FIN SI SI descripteur de retour segment de code n'est pas prsent ALORS EXCEPTION #NP(Slecteur) FIN SI SI slecteur de retour de segment de code RPL > CPL ALORS ALLER A RETURN-OUTER-PRIVILEGE-LEVEL SINON ALLER A RETURN-TO-SAME-PRIVILEGE-LEVEL FIN SI FIN SI RETURN-SAME-PRIVILEGE-LEVEL: SI l'instruction de pointeur n'est pas l'intrieur de la limite de segment de code ALORS EXCEPTION #GP(0) FIN SI SI taille de l'oprande = 32 bits ALORS EIP Pop() CS Pop() ESP ESP + SRC SINON EIP Pop() EIP EIP 0000FFFFh CS Pop() ESP ESP + SRC FIN SI 1083
RETURN-OUTER-PRIVILEGE-LEVEL: SI (16 + SRC) octets du haut de la pile sont en dehors de la limite de la pile ET taille de l'oprande = 32 bits OU (8 + SRC) octets du haut de la pile sont en dehors de la limite de la pile ET taille de l'oprande = 16 ALORS EXCEPTION #SS(0) FIN SI Lecture du slecteur de retour de segment SI slecteur de segment de pile n'est pas nulle ALORS EXCEPTION #GP(0) FIN SI SI index de retour du slecteur de segment n'est pas dans les limites du descripteur de table ALORS EXCEPTION #GP(selector) FIN SI Lecture du descripteur de segment pointant sur le retour de slecteur de segment SI slecteur de segment de pile RPL <> RPL du retour de slecteur de segment de code OU segment de pile n'est pas dans une segment de donnes crivable OU descripteur de segment de pile DPL <> RPL de retour de slecteur de segment de code ALORS EXCEPTION #GP(Selecteur) FIN SI SI segment de pile n'est pas prsent ALORS EXCEPTION #SS(Slecteur de segment de pile) FIN SI SI pointeur de retourn d'instruction n'est pas dans la limite de segment de code ALORS EXCEPTION #GP(0) FIN SI CPL Retour du slecteur de segment de code du RPL SI taille de l'oprande = 32 bits ALORS EIP Pop() CS Pop() CS(RPL) CPL ESP ESP + SRC tempESP Pop() tempSS Pop() ESP tempESP SS tempSS SINON EIP Pop() EIP EIP 0000FFFFh CS Pop() 1084
CS(RPL) CPL ESP ESP + SRC tempESP Pop() tempSS Pop() ESP tempESP SS tempSS FIN SI BOUCLE POUR chaque registre de segment (ES, FS, GS et DS) FAIRE SI registre de segment pointe sur des donnes ou segment de code est non-conforme ET CPL > descripteur de segment DPL ALORS Slecteur de segment 0 FIN SI FIN BOUCLE POUR BOUCLE POUR chaque registre de segment ES, FS, GS et DS FAIRE SI index de slecteur de segment est en dehors de la limite du descripteur de table OU descripteur de segment indique que le segment n'est pas dans des donnes OU lecteur de segment de code si le segment de donnes OU segment de code non-conforme ET descripteur de segment DPL < CPL OU RPL du slecteur de segment de code ALORS Slecteur de egistre de segment Slecteur nulle FIN SI FIN BOUCLE POUR ESP ESP + SRC
Mnmonique
Instruction Opcode Description Retour d'un appel de procdure court. Retour d'un appel de procdure court et spcifie le nombre d'octets retirer de la pile. Retour d'un appel de procdure long. Retour d'un appel de procdure long et spcifie le nombre d'octets
RET
C3h
RET imm16
C2h iw
CBh CAh iw
1085
retirer de la pile.
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique Le retour de segment de code est marqu non prsent. Le registre SS est charg avec un slecteur nonnulle et le segment est marqu non prsent.
#SS(Pile)
#GP(Protection gnral)
#NP(Slecteur)
#SS(Slecteur)
1086
#GP(Slecteur)
Le slecteur de code de retour est un slecteur nulle. Le slecteur de retour de pile et de mode de retour n'est pas un mode 64 bits ou CPL vaut 3. Le code de retour ou le descripteur de pile dpasse la limite du descripteur de table. Le code de retour ou le bit TI du slecteur de pile est fix mais le slecteur LDT n'est pas un slecteur nulle. Le descripteur de segment pour le code retour n'est pas un segment de
1087
code. X Le RPL du slecteur du retour de segment de code est infrieur au CPL. Le retour du segment de code n'est pas conforme et le slecteur de segment DPL n'est pas gale au RPL du slecteur de segment de code. Le retour du segment de code est conforme et le slecteur de segment DPL est suprieur au RPL du slecteur de segment de code. Le descripteur de segment pour le retour de pile n'est pas dans segment de
1088
donnes crivable. X Le descripteur de segment de pile DPL n'est pas gale au RPL du slecteur de retour de segment de code. Le slecteur de segment de pile RPL n'est pas gale au RPL du retour de slecteur de segment de code. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
1089
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 830 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 414 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 207. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 366 376.
1090
Syntaxe
RETF RETF immdiat
Description Cette instruction permet de quitter une procdure ayant lieu avec un appel long (FAR CALL). Ainsi, elle indique au microprocesseur qu'il doit dsempiler la valeur du pointeur d'instructions contenu dans la pile et la copier dans les registres CS:IP. Ensuite, l'excution du code se poursuit l'instruction suivant l'instruction CALL.
Algorithme
SI ((PE = 0) OU (PE = 1 ET VM = 1)) ALORS SI taille de l'oprande = 32 bits ALORS SI les 12 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI EIP Pop() CS Pop() SINON SI les 6 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI tempEIP Pop() tempEIP tempEIP 0000FFFFh SI tempEIP n'est pas dans limite du segment de code ALORS EXCEPTION #GP(0) FIN SI EIP tempEIP CS Pop() 1091
FIN SI SI instruction a une oprande immdiate ALORS SP SP + (SRC FFFFh) FIN SI FIN SI SI (PE = 1 ET VM = 0) ALORS SI taille de l'oprande = 32 bits ALORS SI le deuxime double mot de la pile est en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI FIN SI SI slecteur de code de retour est nulle ALORS EXCEPTION GP(0) FIN SI SI adresse du slecteur de retour de code segment est en dehors des limites de la table de descripteur ALORS EXCEPTION GP(selecteur) FIN SI Demande le descripteur avec le point du slecteur de segment de code de retour du descripteur de table SI descripteur de retour de code segment n'est pas un code segment ALORS EXCEPTION #GP(selecteur) FIN SI SI selecteur de retour de segment de code RPL < CPL ALORS EXCEPTION #GP(Slecteur) FIN SI SI descripteur retour de code de segment retour est conforme ET retour de segment de code DPL > slecteur de retour de segment de code RPL ALORS EXCEPTION #GP(Slecteur) FIN SI SI descripteur de retour segment de code n'est pas prsent ALORS EXCEPTION #NP(Slecteur) FIN SI SI slecteur de retour de segment de code RPL > CPL ALORS ALLER A RETURN-OUTER-PRIVILEGE-LEVEL SINON ALLER A RETURN-TO-SAME-PRIVILEGE-LEVEL FIN SI FIN SI
1092
RETURN-SAME-PRIVILEGE-LEVEL: SI l'instruction de pointeur n'est pas l'intrieur de la limite de segment de code ALORS EXCEPTION #GP(0) FIN SI SI taille de l'oprande = 32 bits ALORS EIP Pop() CS Pop() ESP ESP + SRC SINON EIP Pop() EIP EIP 0000FFFFh CS Pop() ESP ESP + SRC FIN SI RETURN-OUTER-PRIVILEGE-LEVEL: SI (16 + SRC) octets du haut de la pile sont en dehors de la limite de la pile ET taille de l'oprande = 32 bits OU (8 + SRC) octets du haut de la pile sont en dehors de la limite de la pile ET taille de l'oprande = 16 ALORS EXCEPTION #SS(0) FIN SI Lecture du slecteur de retour de segment SI slecteur de segment de pile n'est pas nulle ALORS EXCEPTION #GP(0) FIN SI SI index de retour du slecteur de segment n'est pas dans les limites du descripteur de table ALORS EXCEPTION #GP(selector) FIN SI Lecture du descripteur de segment pointant sur le retour de slecteur de segment SI slecteur de segment de pile RPL <> RPL du retour de slecteur de segment de code OU segment de pile n'est pas dans une segment de donnes crivable OU descripteur de segment de pile DPL <> RPL de retour de slecteur de segment de code ALORS EXCEPTION #GP(Selecteur) FIN SI SI segment de pile n'est pas prsent ALORS EXCEPTION #SS(Slecteur de segment de pile) FIN SI SI pointeur de retourn d'instruction n'est pas dans la limite de segment de code ALORS EXCEPTION #GP(0) FIN SI 1093
CPL Retour du slecteur de segment de code du RPL SI taille de l'oprande = 32 bits ALORS EIP Pop() CS Pop() CS(RPL) CPL ESP ESP + SRC tempESP Pop() tempSS Pop() ESP tempESP SS tempSS SINON EIP Pop() EIP EIP 0000FFFFh CS Pop() CS(RPL) CPL ESP ESP + SRC tempESP Pop() tempSS Pop() ESP tempESP SS tempSS FIN SI BOUCLE POUR chaque registre de segment (ES, FS, GS et DS) FAIRE SI registre de segment pointe sur des donnes ou segment de code est non-conforme ET CPL > descripteur de segment DPL ALORS Slecteur de segment 0 FIN SI FIN BOUCLE POUR BOUCLE POUR chaque registre de segment ES, FS, GS et DS FAIRE SI index de slecteur de segment est en dehors de la limite du descripteur de table OU descripteur de segment indique que le segment n'est pas dans des donnes OU lecteur de segment de code si le segment de donnes OU segment de code non-conforme ET descripteur de segment DPL < CPL OU RPL du slecteur de segment de code ALORS Slecteur de egistre de segment Slecteur nulle FIN SI FIN BOUCLE POUR ESP ESP + SRC
Mnmonique
1094
Instruction RETF
Opcode CBh
Description Retour d'un appel de procdure long. Retour d'un appel de procdure long et spcifie le nombre d'octets retirer de la pile.
RETF imm16
CAh iw
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Le retour de segment de code est marqu non prsent. Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Le registre SS est charg avec un slecteur nonnulle et le segment est marqu non prsent. Une adresse mmoire dpasse la
#NP(Slecteur)
#SS(Pile)
#SS(Slecteur)
#GP(Protection gnral)
1095
limite du segment de donnes ou n'est pas canonique #GP(Slecteur) X Le slecteur de code de retour est un slecteur nulle. Le slecteur de retour de pile et de mode de retour n'est pas un mode 64 bits ou CPL vaut 3. Le code de retour ou le descripteur de pile dpasse la limite du descripteur de table. Le code de retour ou le bit TI du slecteur de pile est fix mais le slecteur LDT n'est pas un slecteur nulle.
1096
Le descripteur de segment pour le code retour n'est pas un segment de code. Le RPL du slecteur du retour de segment de code est infrieur au CPL. Le retour du segment de code n'est pas conforme et le slecteur de segment DPL n'est pas gale au RPL du slecteur de segment de code. Le retour du segment de code est conforme et le slecteur de segment DPL est suprieur au RPL du slecteur de segment de code.
1097
Le descripteur de segment pour le retour de pile n'est pas dans segment de donnes crivable. Le descripteur de segment de pile DPL n'est pas gale au RPL du slecteur de retour de segment de code. Le slecteur de segment de pile RPL n'est pas gale au RPL du retour de slecteur de segment de code. Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est
#PF(Faute de page)
#AC(Vrifie l'alignement)
1098
Voir Instruction assembleur 80x86 Instruction assembleur 80x86 - Instruction RET Instruction
galement CALL
1099
Syntaxe
RETN RETN immdiat
Description Cette instruction permet de quitter une procdure. Ainsi, elle indique au microprocesseur qu'il doit dsempiler la valeur du pointeur d'instructions contenu dans la pile et la copie dans le registre IP. Ensuite, l'excution du code se poursuit l'instruction suivant l'instruction CALL.
Algorithme
SI oprande de taille = 32 bits ALORS SI les 12 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI EIP Pop() SINON SI les 6 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI tempEIP Pop() tempEIP tempEIP 0000FFFFh SI tempEIP n'est pas dans limite du segment de code ALORS EXCEPTION #GP(0) FIN SI EIP tempEIP FIN SI SI instruction a une oprande immdiate ALORS SI taille de l'adresse de la pile = 32 bits ALORS 1100
Mnmonique
Instruction Opcode Description Retour d'un appel de procdure court. Retour d'un appel de procdure court et spcifie le nombre d'octets retirer de la pile.
RETN
C3h
RETN imm16
C2h iw
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas
#SS(Pile)
#GP(Protection gnral)
1101
canonique Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction assembleur 80x86 Instruction assembleur 80x86 - Instruction RET Instruction
galement CALL
1102
Syntaxe
ROL oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la gauche en rinsrant le bit dans le bit le plus droite libr.
Algorithme
temp max ( compteur, 31) SI temp = 1 ALORS OF highbit ( destination ) <> CF SINON OF ? FIN SI BOUCLE FAIRE TANT QUE temp <> 0 X highbit ( destination ) destination (destination dcalage gauche de 1 ) + x temp temp - 1 FIN BOUCLE DE TANT QUE CF highbit ( destination )
Mnmonique
Instruction Opcode Description Cette instruction effectue une rotation de 8 bits d'un oprande registre ou mmoire 8 bits d'un seul 1103
ROL reg/mem8, 1
D0h /0
bit vers la gauche. Cette instruction effectue une rotation de 8 bits d'un oprande registre ou mmoire 8 bits avec le nombre de bits spcifi par le registre CL vers la gauche. Cette instruction effectue une rotation de 8 bits d'un oprande registre ou mmoire 8 bits avec le nombre de bits spcifi par la valeur immdiate vers la gauche. Cette instruction effectue une rotation de 16 bits d'un oprande registre ou mmoire 16 bits d'un seul bit vers la gauche. Cette instruction effectue une rotation de 16 bits d'un oprande registre ou mmoire 16 bits avec le nombre de bits spcifi par le registre CL vers la gauche. Cette instruction effectue une rotation de 16 bits d'un oprande registre ou mmoire 16 bits avec le nombre de bits spcifi par la valeur immdiate vers la gauche. Cette instruction effectue une rotation de 32 bits d'un oprande registre ou mmoire 32 bits d'un seul bit vers la gauche. Cette instruction effectue une rotation de 32 bits d'un oprande registre ou mmoire 32 bits avec le nombre de bits spcifi par le registre 1104
ROL reg/mem8, CL
D2h /0
C0h /0 ib
ROL reg/mem16, 1
D1h /0
ROL reg/mem16, CL
D3h /0
C1h /0 ib
ROL reg/mem32, 1
D1h /0
ROL reg/mem32, CL
D3h /0
CL vers la gauche. Cette instruction effectue une rotation de 32 bits d'un oprande registre ou mmoire 32 bits avec le nombre de bits spcifi par la valeur immdiate vers la gauche. Cette instruction effectue une rotation de 64 bits d'un oprande registre ou mmoire 64 bits d'un seul bit vers la gauche. Cette instruction effectue une rotation de 64 bits d'un oprande registre ou mmoire 64 bits avec le nombre de bits spcifi par le registre CL vers la gauche. Cette instruction effectue une rotation de 64 bits d'un oprande registre ou mmoire 64 bits avec le nombre de bits spcifi par la valeur immdiate vers la gauche.
C1h /0 ib
ROL reg/mem64, 1
D1h /0
ROL reg/mem64, CL
D3h /0
C1h /0 ib
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse
#SS(Pile noncanonique)
#GP(Protection
1105
gnral)
mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir
1106
galement
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 830 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 415 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 211. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 334 341.
1107
Syntaxe
ROR oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la droite en rinsrant le bit dans le bit le plus gauche libr.
Algorithme
temp max ( compteur, 31 ) SI temp = 1 ALORS OF highbit ( destination ) <> highbit ( destination dcalage droite ) SINON OF ? FIN SI BOUCLE FAIRE TANT QUE temp <> 0 x valeur 1 valeur valeur dcalage droite de 1 highbit ( valeur ) x temp temp - 1 BOUCLE FIN DE TANT QUE CF highbit ( valeur ) destination valeur
Mnmonique
Instruction Opcode Description
1108
ROR reg/mem8, 1
D0h /1
Cette instruction effectue une rotation de 8 bits d'un oprande registre ou mmoire 8 bits d'un seul bit vers la droite. Cette instruction effectue une rotation de 8 bits d'un oprande registre ou mmoire 8 bits avec le nombre de bits spcifi par le registre CL vers la droite. Cette instruction effectue une rotation de 8 bits d'un oprande registre ou mmoire 8 bits avec le nombre de bits spcifi par la valeur immdiate vers la droite. Cette instruction effectue une rotation de 16 bits d'un oprande registre ou mmoire 16 bits d'un seul bit vers la droite. Cette instruction effectue une rotation de 16 bits d'un oprande registre ou mmoire 16 bits avec le nombre de bits spcifi par le registre CL vers la droite. Cette instruction effectue une rotation de 16 bits d'un oprande registre ou mmoire 16 bits avec le nombre de bits spcifi par la valeur immdiate vers la droite. Cette instruction effectue une rotation de 32 bits d'un oprande registre ou mmoire 32 bits d'un seul bit vers la droite.
ROR reg/mem8, CL
D2h /1
C0h /1 ib
ROR reg/mem16, 1
D1h /1
ROR reg/mem16, CL
D3h /1
C1h /1 ib
ROR reg/mem32, 1
D1h /1
1109
ROR reg/mem32, CL
D3h /1
Cette instruction effectue une rotation de 32 bits d'un oprande registre ou mmoire 32 bits avec le nombre de bits spcifi par le registre CL vers la droite. Cette instruction effectue une rotation de 32 bits d'un oprande registre ou mmoire 32 bits avec le nombre de bits spcifi par la valeur immdiate vers la droite. Cette instruction effectue une rotation de 64 bits d'un oprande registre ou mmoire 64 bits d'un seul bit vers la droite. Cette instruction effectue une rotation de 64 bits d'un oprande registre ou mmoire 64 bits avec le nombre de bits spcifi par le registre CL vers la droite. Cette instruction effectue une rotation de 64 bits d'un oprande registre ou mmoire 64 bits avec le nombre de bits spcifi par la valeur immdiate vers la droite.
C1h /1 ib
ROR reg/mem64, 1
D1h /1
ROR reg/mem64, CL
D3h /1
C1h /1 ib
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de
#SS(Pile noncanonique)
1110
pile ou n'est pas canonique #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement
#PF(Faute de page)
#AC(Vrifie l'alignement)
1111
est activ
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 830 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 415 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 213. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 334 341.
1112
Assembleur 80x86
SSE4.1+
ROUNDPD
Round Packed Double Precision Floating-Point Values
Syntaxe
ROUNDPD destination, source, immediate
Description Cette instruction permet d'effectuer l'arrondissement de 2 valeurs rel de double prcision dans l'oprande source en utilisant le mode spcifi par l'oprande immdiate et place le rsultat dans l'oprande de destination.
Algorithme
SI immediate(2) = 1 ALORS destination(63..0) ConvertDPFPToInteger_M(source(63..0)) destination(127..64) ConvertDPFPToInteger_M(source(127..64)) SINON destination(63..0) ConvertDPFPToInteger_Imm(source(63..0)) destination(127..64) ConvertDPFPToInteger_Imm(source(127..64)) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer l'arrondissement de 2 valeurs rel de double prcision dans l'oprande source en utilisant le mode
1113
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 378 381.
1114
Assembleur 80x86
SSE4.1+
ROUNDPS
Round Packed Single Precision Floating-Point Values
Syntaxe
ROUNDPS destination, source, immediate
Description Cette instruction permet d'effectuer l'arrondissement de 4 valeurs rel de simple prcision dans l'oprande source en utilisant le mode spcifi par l'oprande immdiate et place le rsultat dans l'oprande de destination.
Algorithme
SI immediate(2) = 1 ALORS destination(31..0) ConvertSPFPToInteger_M(source(31..0)) destination(63..32) ConvertSPFPToInteger_M(source(63..32)) destination(95..64) ConvertSPFPToInteger_M(source(95..64)) destination(127..96) ConvertSPFPToInteger_M(source(127..96)) SINON destination(31..0) ConvertSPFPToInteger_Imm(source(31..0)) destination(63..32) ConvertSPFPToInteger_Imm(source(63..32)) destination(95..64) ConvertSPFPToInteger_Imm(source(95..64)) destination(127..96) ConvertSPFPToInteger_Imm(source(127..96)) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet
1115
d'effectuer l'arrondissement de 4 valeurs rel de simple prcision dans l'oprande source en utilisant le mode spcifi par l'oprande immdiate et place le rsultat dans l'oprande de destination.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 382 384.
1116
Assembleur 80x86
SSE4.1+
ROUNDSD
Round Scalar Double Precision Floating-Point Values
Syntaxe
ROUNDSD destination, source, immediate
Description Cette instruction permet d'effectuer l'arrondissement scalaire de valeurs rel de double prcision, dans sa partie basse du quadruple mot, dans l'oprande source en utilisant le mode spcifi par l'oprande immdiate et place le rsultat dans l'oprande de destination.
Algorithme
SI immediate(2) = 1 ALORS destination(63..0) ConvertDPFPToInteger_M(source(63..0)) SINON destination(63..0) ConvertDPFPToInteger_Imm(source(63..0)) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer l'arrondissement scalaire de valeurs rel de double prcision, dans sa partie basse du quadruple mot, dans l'oprande source en utilisant le mode spcifi par l'oprande
1117
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 385 386.
1118
Assembleur 80x86
SSE4.1+
ROUNDSS
Round Scalar Single Precision Floating-Point Values
Syntaxe
ROUNDSS destination, source, immediate
Description Cette instruction permet d'effectuer l'arrondissement scalaire de valeurs rel de simple prcision, dans sa partie basse du quadruple mot, dans l'oprande source en utilisant le mode spcifi par l'oprande immdiate et place le rsultat dans l'oprande de destination.
Algorithme
SI immediate(2) = 1 ALORS destination(31..0) ConvertSPFPToInteger_M(source(31..0)) SINON destination(31..0) ConvertSPFPToInteger_Imm(source(31..0)) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer l'arrondissement scalaire de valeurs rel de simple prcision, dans sa partie basse du quadruple mot, dans l'oprande source en utilisant le mode spcifi par l'oprande immdiate
1119
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 387 389.
1120
Assembleur 80x86
Cyrix Cx486S/S2/D/D2/DX/DX2/DX4, IBM BL486DX/DX2, TI 486SLC/DLC/e, TI 486SXL/SXL2/SXLC, TI Potomac
Syntaxe RSDC destination, source
RSDC
Restore Register and Descriptor
Description Cette instruction permet d'effectuer le restauration de la structure des registres et des descripteurs.
0Fh 79h (mm 000b mmm) Cette instruction permet d'effectuer le restauration de la structure des registres et des descripteurs partir du registre de segment ES. 0Fh 79h (mm 001b mmm) Cette instruction permet d'effectuer le restauration de la structure des registres et des descripteurs partir du registre de segment CS.
1121
RSDC CS,mem80
RSDC SS,mem80
0Fh 79h (mm 010b mmm) Cette instruction permet d'effectuer le restauration de la structure des registres et des descripteurs partir du registre de segment SS. 0Fh 79h (mm 011b mmm) Cette instruction permet d'effectuer le restauration de la structure des registres et des descripteurs partir du registre de segment DS. 0Fh 79h (mm 100b mmm) Cette instruction permet d'effectuer le restauration de la structure des registres et des descripteurs partir du registre de segment FS. 0Fh 79h (mm 101b mmm) Cette instruction permet d'effectuer le restauration de la structure des registres et des descripteurs partir du registre de segment GS.
RSDC DS,mem80
RSDC FS,mem80
RSDC GS,mem80
1122
Assembleur 80x86
Cyrix Cx486S/S2/D/D2/DX/DX2/DX4, IBM BL486DX/DX2, TI 486SLC/DLC/e, TI 486SXL/SXL2/SXLC, TI Potomac
Syntaxe RSLDT source
RSLDT
Restore LDTR and Descriptor
Description Cette instruction permet d'effectuer la restauration des LDTR et des descripteurs.
0Fh 7Bh (mm 000b mmm) Cette instruction permet d'effectuer la restauration des LDTR et des descripteurs.
1123
Assembleur 80x86
INTEL 80486+
RSM
Resume from System Management
Syntaxe
RSM
Description Cette instruction permet de retourner le contrle du programme du mode de gestion systme (SMM) pour le programme d'application ou la procdure du systme d'exploitation ayant t interrompu lorsque le microprocesseur recu un signal SSM.
Algorithme
Retourne du SSM ProcessorState Restaure le SSMDump
Mnmonique
Instruction Opcode Description Cette instruction permet de retourner le contrle du programme du mode de gestion systme (SMM) pour le programme d'application ou la procdure du systme d'exploitation ayant t interrompu lorsque le microprocesseur recu un signal SSM.
RSM
0Fh AAh
1124
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 390 391.
1125
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
RSQRTPS
Packed Single-Precision FP Square Root Reciprocal
Syntaxe
RSQRTPS destination, source
Description Cette instruction permet de calculer la rciproque approximative de la racine carr d'un paquet de simple prcision.
Algorithme
destination(31..0) APPROX(1.0 / SQRT(source(31..0))) destination(63..32) APPROX(1.0 / SQRT(source(63..32))) destination(95..64) APPROX(1.0 / SQRT(source(95..64))) destination(127..96) APPROX(1.0 / SQRT(source(127..96)))
Mnmonique
Instruction RSQRTPS xmm1,xmm2/m128 Opcode 0Fh 52h /r Description Cette instruction permet de calculer la rciproque approximative de la racine carr d'un paquet de simple prcision.
Rfrences
1126
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 392 394.
1127
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
RSQRTSS
Scalar Single-Precision FP Square Root Reciprocal
Syntaxe
RSQRTSS destination, source
Description Cette instruction permet de calculer la rciproque approximative de la racine carr d'un scalaire de simple prcision.
Algorithme
destination(31..0) APPROX(1.0 / SQRT(source(31..0)))
Mnmonique
Instruction RSQRTSS xmm1,xmm2/m128 Opcode F3h 0Fh 52h /r Description Cette instruction permet de calculer la rciproque approximative de la racine carr d'un scalaire de simple prcision.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 395 397.
1128
Assembleur 80x86
Cyrix Cx486S/S2/D/D2/DX/DX2/DX4, IBM BL486DX/DX2, TI 486SLC/DLC/e, TI 486SXL/SXL2/SXLC, TI Potomac
Syntaxe RSTS source
RSTS
Restore TR and Descriptor
0Fh 7Dh (mm 000b mmm) Cette instruction permet d'effectuer le restauration des TR et des descripteurs.
1129
Syntaxe
SAHF
Description 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).
Algorithme
Registre de drapeaux Registre de drapeaux 0D5h + ( AH D5h )
Mnmonique
Instruction Opcode Description Copie le drapeau de signe, de zro, auxiliaire, de parit et de retenue dans le registre AH.
SAHF
9Eh
Exceptions
Message #UD(Opcode invalide) Mode rel Virtuel 8086 Mode protg X Description Cette instruction n'est pas support en
1130
mode 64 bits, comme indiqu par le bit 0 du registre ECX de la fonction 8000_00001h de l'instruction CPUID.
galement LAHF
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 831 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 416 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 215. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 398 399.
1131
Syntaxe
SAL oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la gauche en rinsrant le bit dans l'indicateur de retenue (CF).
Algorithme
temp compteur 001Fh BOUCLE FAIRE TANT QUE temp1 = 0 CF highorder ( destination ) destination destination dcalage gauche de 1 temp temp - 1 BOUCLE FIN DE FAIRE SI count = 1 ALORS OF highorder ( destination ) <> CF SINON OF ? FIN SI
Mnmonique
Instruction Opcode Description Cette instruction effectue un dclage d'un seul bit vers la gauche d'un oprande registre ou mmoire 8 bits.
SAL reg/mem8, 1
D0h /4
1132
SAL reg/mem8, CL
D2h /4
Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche d'un oprande registre ou mmoire 8 bits. Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 8 bits. Cette instruction effectue un dclage d'un seul bit vers la gauche d'un oprande registre ou mmoire 16 bits. Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche d'un oprande registre ou mmoire 16 bits. Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue un dclage d'un seul bit vers la gauche d'un oprande registre ou mmoire 32 bits. Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche d'un oprande registre ou mmoire 32 bits.
C0h /4 ib
SAL reg/mem16, 1
D1h /4
SAL reg/mem16, CL
D3h /4
C1h /4 ib
SAL reg/mem32, 1
D1h /4
SAL reg/mem32, CL
D3h /4
1133
C1h /4 ib
Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 32 bits. Cette instruction effectue un dclage d'un seul bit vers la gauche d'un oprande registre ou mmoire 64 bits. Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche de 64 bits d'un oprande registre ou mmoire 64 bits. Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 64 bits.
SAL reg/mem64, 1
D1h /4
SAL reg/mem64, CL
D3h /4
C1h /4 ib
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la
#SS(Pile noncanonique)
#GP(Protection gnral)
1134
limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 831 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 415 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 216. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 400 408.
1136
Syntaxe
SAR oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la droite en rinsrant le bit dans l'indicateur de retenue (CF).
Algorithme
temp compteur 001Fh BOUCLE FAIRE TANT temp <> 0 x highorder ( destination ) CF destination 1 destination destination dcalage droite de 1 highorder ( destination ) x temp temp - 1 BOUCLE FIN DE FAIRE SI compteur = 1 ALORS OF 0 SINON OF ? FIN SI
Mnmonique
Instruction SAR reg/mem8, 1 Opcode D0h /7 Description Cette instruction effectue une dclage d'un seul bit vers la droite de 1137
8 bits d'un oprande registre ou mmoire 8 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la droite de 8 bits d'un oprande registre ou mmoire 8 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la droite de 8 bits d'un oprande registre ou mmoire 8 bits. Cette instruction effectue une dclage d'un seul bit vers la droite de 16 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la droite de 16 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la droite de 16 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue une dclage d'un seul bit vers la droite de 32 bits d'un oprande registre ou mmoire 32 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la droite de 32 1138
SAR reg/mem8, CL
D2h /7
C0h /7 ib
SAR reg/mem16, 1
D1h /7
SAR reg/mem16, CL
D3h /7
C1h /7 ib
SAR reg/mem32, 1
D1h /7
SAR reg/mem32, CL
D3h /7
bits d'un oprande registre ou mmoire 32 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la droite de 32 bits d'un oprande registre ou mmoire 32 bits. Cette instruction effectue une dclage d'un seul bit vers la droite de 64 bits d'un oprande registre ou mmoire 64 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la droite de 64 bits d'un oprande registre ou mmoire 64 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la droite de 64 bits d'un oprande registre ou mmoire 64 bits.
C1h /7 ib
SAR reg/mem64, 1
D1h /7
SAR reg/mem64, CL
D3h /7
C1h /7 ib
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique
#SS(Pile noncanonique)
1139
#GP(Protection gnral)
Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
1140
Voir Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 831 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 416 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 219. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 400 408.
1141
Syntaxe
SBB oprandecible,oprandesource
Description Cette instruction permet de soustraire avec l'indicateur de retenue (CF) une valeur une oprande.
Algorithme
oprandecible oprandecible - (oprandesource + CF)
Mnmonique
Instruction Opcode Description Soustrait une valeur immdiate de 8 bits du registre AL avec la retenue. Soustrait une valeur immdiate de 16 bits du registre AX avec la retenue. Soustrait une valeur immdiate de 32 bits du registre EAX avec la retenue. Soustrait une valeur entire immdiate de 32 bits du registre RAX avec la retenue.
1Ch ib
1Dh iw
1Dh id
1Dh id
1142
80h /3 ib
Soustrait une valeur immdiate de 8 bits d'un emplacement registre ou mmoire de 8 bits avec la retenue. Soustrait une valeur immdiate de 16 bits d'un emplacement registre ou mmoire de 16 bits avec la retenue. Soustrait une valeur immdiate de 32 bits d'un emplacement registre ou mmoire de 32 bits avec la retenue. Soustrait une valeur immdiate de 32 bits d'un emplacement registre ou mmoire de 64 bits avec la retenue. Soustrait une valeur immdiate de 8 bits d'un emplacement registre ou mmoire de 16 bits avec la retenue. Soustrait une valeur entire immdiate de 8 bits d'un emplacement registre ou mmoire de 32 bits avec la retenue. Soustrait une valeur entire immdiate de 8 bits d'un emplacement registre ou mmoire de 64 bits avec la retenue. Soustrait un registre de 8 bits d'un emplacement registre ou mmoire de 8 bits avec la retenue. Soustrait un registre de 16 bits d'un emplacement registre ou mmoire de 16 bits avec la retenue. Soustrait un registre de 32 bits d'un emplacement registre ou mmoire de 1143
81h /3 iw
81h /3 id
81h /3 id
83h /3 ib
83h /3 ib
83h /3 ib
18h /r
19h /r
19h /r
32 bits avec la retenue. Soustrait un registre de 32 bits d'un emplacement registre ou mmoire de 32 bits avec la retenue. Soustrait un emplacement registre ou mmoire de 8 bits avec la retenue d'un registre de 8 bits. Soustrait un emplacement registre ou mmoire de 16 bits avec la retenue d'un registre de 16 bits. Soustrait un emplacement registre ou mmoire de 32 bits avec la retenue d'un registre de 32 bits. Soustrait un emplacement registre ou mmoire de 32 bits avec la retenue d'un registre de 32 bits.
19h /r
1Ah /r
1Bh /r
1Bh /r
1Bh /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du
#SS(Pile)
#GP(Protection gnral)
1144
segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Instruction
assembleur
80x86
Instruction
ADC
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 832 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 416 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 221. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 409 412.
1146
Syntaxe
SCAS chainecible
Description Cette instruction permet de comparer un octet, un mot ou un double mot avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction.
Algorithme
SI chainecible est un octet ALORS temp AL - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI SINON SI chainecible est un mot ALORS temp AX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI (E)DI + 2 SINON (E)DI (E)DI - 2 FIN SI SINON SI chainecible est un double mot ALORS temp EAX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI (E)DI + 4
1147
SINON (E)DI (E)DI - 4 FIN SI SINON temp EAX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI (E)DI + 8 SINON (E)DI (E)DI - 8 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Compare le contenu d'un registre AL avec l'octet ES:(R)DI et incrmente ou dcrmente R(DI). Compare le contenu d'un registre AX avec le mot ES:(R)DI et incrmente ou dcrmente R(DI). Compare le contenu d'un registre EAX avec le double mot ES:(R)DI et incrmente ou dcrmente R(DI). Compare le contenu d'un registre RAX avec le double mot ES:(R)DI et incrmente ou dcrmente R(DI).
SCAS mem8
AEh
SCAS mem16
AFh
SCAS mem32
AFh
SCAS mem64
AFh
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description
1148
#GP(Protection gnral)
Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 832
1149
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 223. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 413 417.
1150
Syntaxe
SCASB
Description Cette instruction permet de comparer le registre AL avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 1 en fonction de l'tat du drapeau de direction.
Algorithme
temp AL - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI
Mnmonique
Instruction Opcode Description Compare le contenu d'un registre AL avec l'octet ES:(R)DI et incrmente ou dcrmente R(DI).
SCASB
AEh
Exceptions
1151
Mode rel X
Virtuel 8086 X
Mode protg X
Description Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 833 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 416 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007,
1152
Publication No. 24594, page 223. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 413 417.
1153
Syntaxe
SCASD
Description Cette instruction permet de comparer le registre EAX avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 4 en fonction de l'tat du drapeau de direction.
Algorithme
temp EAX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI (E)DI + 4 SINON (E)DI (E)DI - 4 FIN SI
Mnmonique
Instruction Opcode Description Compare le contenu d'un registre EAX avec le double mot ES:(R)DI et incrmente ou dcrmente R(DI).
SCASD
AFh
Exceptions
1154
Mode rel X
Virtuel 8086 X
Mode protg X
Description Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 833 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 223.
1155
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 413 417.
1156
Syntaxe
SCASW
Description Cette instruction permet de comparer le registre AX avec la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 2 en fonction de l'tat du drapeau de direction.
Algorithme
temp AX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI (E)DI + 2 SINON (E)DI (E)DI - 2 FIN SI
Mnmonique
Instruction Opcode Description Compare le contenu d'un registre AX avec le mot ES:(R)DI et incrmente ou dcrmente R(DI).
SCASW
AFh
Exceptions
1157
Mode rel X
Virtuel 8086 X
Mode protg X
Description Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 834 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 417 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007,
1158
Publication No. 24594, page 223. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 413 417.
1159
SET
Syntaxe
SET condition oprande
Description Ces instructions permettent de fixer la valeur d'une oprande 1 si la condition d'indicateur d'tat du registre 32 bits de drapeau est vrai sinon fixe la valeur 0. Il est a noter que les combinaisons de lettres permettant de reprsenter la condition sont indiques dans le tableau suivant:
Instruction Condition Description SETA SETAE SETB SETBE SETC SETCXZ SETE SETECXZ SETG A AE B BE C CXZ E ECXZ G Suprieur Suprieur ou gal Infrieur Infrieur ou gal Indicateur de retenue gal 1 Si CX = 0 Zro (Egal) Si ECX = 0 Suprieur
1160
SETGE SETL SETLE SETNA SETNAE SETNB SETNC SETNE SETNG SETNGE SETNL SETNLE SETNO SETNP SETNS SETNZ SETO SETP SETPE
Suprieur ou gal Infrieur Infrieur ou gal Pas suprieur Ni infrieur ni gal Pas infrieur Indicateur de retenue gal 0 Pas gal (Zro) Pas suprieur Ni suprieur ni gal Pas infrieur Ni infrieur ni gal Pas de dbordement (indicateur de dbordement gal 0) Pas de parit Pas de signe Pas zro Dbordement (indicateur de dbordement gal 1) Parit Parit paire
1161
PO S Z
Algorithme
SI condition ALORS DEST 1 SINON DEST 0 FIN SI
Mnmonique
Instruction Opcode Description Fixe l'octet si le drapeau de dbordement vaut 1 (OF = 1). Fixe l'octet si le drapeau de dbordement vaut 0 (OF = 0). Fixe l'octet si le drapeau de retenue vaut 1 (CF = 1). Fixe l'octet si le drapeau de retenue vaut 1 (CF = 1). Fixe l'octet si le drapeau de retenue vaut 1 (CF = 1). Fixe l'octet si le drapeau de retenue vaut 0 (CF = 0).
SETO reg/mem8
0Fh 90h /0
SETNO reg/mem8
0Fh 91h /0
SETB reg/mem8
0Fh 92h /0
SETC reg/mem8
0Fh 92h /0
SETNAE reg/mem8
0Fh 92h /0
SETNB reg/mem8
0Fh 93h /0
1162
SETNC reg/mem8
0Fh 93h /0
Fixe l'octet si le drapeau de retenue vaut 0 (CF = 0). Fixe l'octet si le drapeau de retenue vaut 0 (CF = 0). Fixe l'octet si le drapeau de zro vaut 1 (ZF = 1). Fixe l'octet si le drapeau de zro vaut 1 (ZF = 1). Fixe l'octet si le drapeau de zro vaut 1 (ZF = 1). Fixe l'octet si le drapeau de zro vaut 1 (ZF = 1). Fixe l'octet si le drapeau de retenue et zro vaut 1 (CF = 1 ou ZF = 1). Fixe l'octet si le drapeau de retenue et zro vaut 1 (CF = 1 ou ZF = 1). Fixe l'octet si le drapeau de retenue et zro vaut 0 (CF = 0 ou ZF = 0). Fixe l'octet si le drapeau de retenue et zro vaut 0 (CF = 0 ou ZF = 0). Fixe l'octet si le drapeau de signe vaut 1 (SF = 1). Fixe l'octet si le drapeau de signe vaut 0 (SF = 0). Fixe l'octet si le drapeau de parit vaut 1 (PF = 1).
SETAE reg/mem8
0Fh 93h /0
SETZ reg/mem8
0Fh 94h /0
SETE reg/mem8
0Fh 94h /0
SETNZ reg/mem8
0Fh 95h /0
SETNE reg/mem8
0Fh 95h /0
SETBE reg/mem8
0Fh 96h /0
SETNA reg/mem8
0Fh 96h /0
SETNBE reg/mem8
0Fh 97h /0
SETA reg/mem8
0Fh 97h /0
SETS reg/mem8
0Fh 98h /0
SETNS reg/mem8
0Fh 99h /0
SETP reg/mem8
0Fh 9Ah /0
1163
SETPE reg/mem8
0Fh 9Ah /0
Fixe l'octet si le drapeau de parit vaut 1 (PF = 1). Fixe l'octet si le drapeau de parit vaut 0 (PF = 0). Fixe l'octet si le drapeau de parit vaut 0 (PF = 0). Fixe l'octet si SF <> OF. Fixe l'octet si SF <> OF. Fixe l'octet si SF = OF. Fixe l'octet si SF = OF. Fixe l'octet si ZF = 1 ou SF <> OF. Fixe l'octet si ZF = 1 ou SF <> OF. Fixe l'octet si ZF = 0 et SF = OF. Fixe l'octet si ZF = 0 et SF = OF.
SETNP reg/mem8
0Fh 9Bh /0
SETPO reg/mem8
0Fh 9Bh /0
SETL reg/mem8 SETNGE reg/mem8 SETNL reg/mem8 SETGE reg/mem8 SETLE reg/mem8 SETNG reg/mem8 SETNLE reg/mem8 SETG reg/mem8
0Fh 9Ch /0 0Fh 9Ch /0 0Fh 9Dh /0 0Fh 9Dh /0 0Fh 9Eh /0 0Fh 9Eh /0 0Fh 9Fh /0 0Fh 9Fh /0
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique
#SS(Pile)
1164
#GP(Protection gnral)
Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
1165
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 834 836 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 225. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 418 422.
1166
SETALC
Syntaxe SETALC
Description Cette instruction permet de copier la valeur du drapeau de retenue dans le registre AL en la multipliant par 0FFh.
Mnmonique Instruction Opcode Description Cette instruction permet de copier la valeur du drapeau de retenue dans le registre AL en la multipliant par 0FFh.
SETALC
D6h
1167
Assembleur 80x86
INTEL Pentium III (SSE)+
SFENCE
Store Fence
Syntaxe
SFENCE
Description Cette instruction permet d'agir comme une barrire pour forcer une priorit en mmoire (srialisation) entre les instructions prcdant emmagasiner du SFENCE et les instructions suivant le SFENCE.
Mnmonique
Instruction Opcode Description Force l'ordre de srialisation des oprations entreposs.
SFENCE
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 423.
1168
Assembleur 80x86
INTEL 80386+
SGDT
Store Global Descriptor Table
Syntaxe
SGDT operande
Description Cette instruction permet d'entreposer le slecteur de segment dans le registre GDTR (registre de table global de descripteur) dans l'oprande de destination.
Algorithme
SI taille de l'operande = 16 ALORS operande (0..15) GDTR(Limite) operande (16..39) GDTR(Base) operande (40..47) 0 SINON operande (0..15) GDTR(Limite) operande (16..47) GDTR(Base) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'entreposer le slecteur de segment dans le registre GDTR (registre de table global de descripteur) dans 1169
SGDT mem
0Fh 01h /0
l'oprande de destination.
Voir Instruction Instruction Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 424 426.
1170
Syntaxe
SHL oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la gauche en rinsrant le bit dans l'indicateur de retenue (CF).
Algorithme
temp compteur 001Fh POUR FAIRE TANT QUE temp1 = 0 CF highorder ( destination ) destination destination dcalage gauche de 1 temp temp - 1 POUR FIN DE FAIRE SI count = 1 ALORS OF highorder ( destination ) <> CF SINON OF ? FIN SI
Mnmonique
Instruction Opcode Description Cette instruction effectue une dclage d'un seul bit vers la gauche de 8 bits d'un oprande registre ou
SHL reg/mem8, 1
D0h /4
1171
mmoire 8 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la gauche de 8 bits d'un oprande registre ou mmoire 8 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 8 bits. Cette instruction effectue une dclage d'un seul bit vers la gauche de 16 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la gauche de 16 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 16 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue une dclage d'un seul bit vers la gauche de 32 bits d'un oprande registre ou mmoire 32 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la gauche de 32 bits d'un oprande registre ou 1172
SHL reg/mem8, CL
D2h /4
C0h /4 ib
SHL reg/mem16, 1
D1h /4
SHL reg/mem16, CL
D3h /4
C1h /4 ib
SHL reg/mem32, 1
D1h /4
SHL reg/mem32, CL
D3h /4
mmoire 32 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 32 bits d'un oprande registre ou mmoire 32 bits. Cette instruction effectue une dclage d'un seul bit vers la gauche de 64 bits d'un oprande registre ou mmoire 64 bits. Cette instruction effectue une dclage du nombre de bits spcifi par le registre CL vers la gauche de 64 bits d'un oprande registre ou mmoire 64 bits. Cette instruction effectue une dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 64 bits d'un oprande registre ou mmoire 64 bits.
C1h /4 ib
SHL reg/mem64, 1
D1h /4
SHL reg/mem64, CL
D3h /4
C1h /4 ib
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse
#SS(Pile noncanonique)
#GP(Protection
1173
gnral)
mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir
1174
galement
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 836 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 415 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 216. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 400 408.
1175
Assembleur 80x86
INTEL 80386+
SHLD
Shift Left Double Precision
Syntaxe
SHLD operande16, operande16, immediat8 SHLD operande16, operande16, CL SHLD operande32, operande32, immediat8 SHLD operande32, operande32, CL
Description Cette instruction permet d'effectuer une rotation des bits d'un double mot vers la gauche en rinsrant le bit dans l'indicateur de retenue (CF).
Algorithme
COUNT COUNT 1Fh SIZE taille de l'oprande SI COUNT = 0 ALORS pas d'opration SINON SI COUNT >= SIZE ALORS DEST est indfinis CF, OF, SF, ZF, AF, PF sont indfinis SINON CF BIT(DEST, SIZE - COUNT) BOUCLE POUR i SIZE - 1 JUSQU'A COUNT FAIRE BIT(DEST, i) BIT(DEST, i - COUNT) FIN BOUCLE POUR BOUCLE POUR i COUNT - 1 JUSQU'A 0 FAIRE
1176
Mnmonique
Instruction Opcode Description Effecute un dcalage de bits vers la gauche de la combinaison d'une oprande registre ou mmoire 16 bits et d'un registre 16 bits du nombre de bits spcifi par la valeur immdiate de 8 bits. Effecute un dcalage de bits vers la gauche de la combinaison d'une oprande registre ou mmoire 16 bits et d'un registre 16 bits du nombre de bits spcifi par le registre CL. Effecute un dcalage de bits vers la gauche de la combinaison d'une oprande registre ou mmoire 32 bits et d'un registre 32 bits du nombre de bits spcifi par la valeur immdiate de 8 bits. Effecute un dcalage de bits vers la gauche de la combinaison d'une oprande registre ou mmoire 32 bits et d'un registre 32 bits du nombre de bits spcifi par le registre CL. Effecute un dcalage de bits vers la
0Fh A5h /r
0Fh A5h /r
1177
gauche de la combinaison d'une oprande registre ou mmoire 64 bits et d'un registre 64 bits du nombre de bits spcifi par la valeur immdiate de 8 bits. Effecute un dcalage de bits vers la gauche de la combinaison d'une oprande registre ou mmoire 64 bits et d'un registre 64 bits du nombre de bits spcifi par le registre CL.
0Fh A5h /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment
#SS(Pile)
#GP(Protection gnral)
1178
non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 427 429.
1179
Syntaxe
SHR oprandecible,nombredebits
Description Cette instruction permet d'effectuer une rotation des bits vers la droite en rinsrant le bit dans l'indicateur de retenue (CF).
Algorithme
temp compteur 001Fh BOUCLE FAIRE TANT temp <> 0 x highorder ( destination ) CF destination 1 destination destination dcalage droite de 1 highorder ( destination ) x temp temp - 1 BOUCLE FIN DE FAIRE SI compteur = 1 ALORS OF 0 SINON OF ? FIN SI
Mnmonique Instruction SHR reg/mem8, 1 Opcode D0h /5 Description Cette instruction effectue un dclage d'un seul bit vers la droite d'un
1180
oprande registre ou mmoire 8 bits. Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche d'un oprande registre ou mmoire 8 bits. Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 8 bits. Cette instruction effectue un dclage d'un seul bit vers la droite d'un oprande registre ou mmoire 16 bits. Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche d'un oprande registre ou mmoire 16 bits. Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 16 bits. Cette instruction effectue un dclage d'un seul bit vers la droite d'un oprande registre ou mmoire 32 bits. Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche d'un oprande registre ou mmoire 32
SHR reg/mem8, CL
D2h /5
C0h /5 ib
SHR reg/mem16, 1
D1h /5
SHR reg/mem16, CL
D3h /5
C1h /5 ib
SHR reg/mem32, 1
D1h /5
SHR reg/mem32, CL
D3h /5
1181
bits. Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 32 bits. Cette instruction effectue un dclage d'un seul bit vers la droite d'un oprande registre ou mmoire 64 bits. Cette instruction effectue un dclage du nombre de bits spcifi par le registre CL vers la gauche d'un oprande registre ou mmoire 64 bits. Cette instruction effectue un dclage du nombre de bits spcifi par la valeur immdiate vers la gauche de 8 bits d'un oprande registre ou mmoire 64 bits.
C1h /5 ib
SHR reg/mem64, 1
D1h /5
SHR reg/mem64, CL
D3h /5
C1h /5 ib
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse
#SS(Pile)
#GP(Protection
1182
gnral)
mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir
1183
galement
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 836 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 417 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 231. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 400 408.
1184
Assembleur 80x86
INTEL 80386+
SHRD
Shift Right Double Precision
Syntaxe
SHRD operande16, operande16, immediat8 SHRD operande16, operande16, CL SHRD operande32, operande32, immediat8 SHRD operande32, operande32, CL
Description Cette instruction permet d'effectuer une rotation des bits d'un double mot vers la droite en rinsrant le bit dans l'indicateur de retenue (CF).
Algorithme
COUNT COUNT 1Fh SIZE taille de l'oprande SI COUNT = 0 ALORS pas d'opration SINON SI COUNT >= SIZE ALORS DEST est indfinis CF, OF, SF, ZF, AF, PF sont indfinis SINON CF BIT(DEST, COUNT - 1) BOUCLE POUR i 0 JUSQU'A SIZE - 1 - COUNT FAIRE BIT(DEST, i) BIT(DEST, i - COUNT) FIN BOUCLE POUR BOUCLE POUR i SIZE - COUNT JUSQU'A SIZE - 1 FAIRE
1185
Mnmonique
Instruction Opcode Description Effecute un dcalage de bits vers la droite de la combinaison d'une oprande registre ou mmoire 16 bits et d'un registre 16 bits du nombre de bits spcifi par la valeur immdiate de 8 bits. Effecute un dcalage de bits vers la droite de la combinaison d'une oprande registre ou mmoire 16 bits et d'un registre 16 bits du nombre de bits spcifi par le registre CL. Effecute un dcalage de bits vers la droite de la combinaison d'une oprande registre ou mmoire 32 bits et d'un registre 32 bits du nombre de bits spcifi par la valeur immdiate de 8 bits. Effecute un dcalage de bits vers la droite de la combinaison d'une oprande registre ou mmoire 32 bits et d'un registre 32 bits du nombre de bits spcifi par le registre CL. Effecute un dcalage de bits vers la
0Fh ADh /r
0Fh ADh /r
1186
droite de la combinaison d'une oprande registre ou mmoire 64 bits et d'un registre 64 bits du nombre de bits spcifi par la valeur immdiate de 8 bits. Effecute un dcalage de bits vers la droite de la combinaison d'une oprande registre ou mmoire 64 bits et d'un registre 64 bits du nombre de bits spcifi par le registre CL.
0Fh ADh /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du segment de pile ou n'est pas canonique Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment
#SS(Pile)
#GP(Protection gnral)
1187
non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Voir Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 430 433.
1188
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
SHUFPD
Shuffle Packed Double-Precision Floating-Point Values
Syntaxe
SHUFPD destination, source,select
Description Cette instruction permet de copier 4 paquets de valeurs de format rel de double prcision dans un oprande destinataire dans la partie basse d'un quadruple mot de celle-ci et copie 2 des 4 paquets de valeurs de format rel de simple prcision dans l'oprande source dans la partie haute d'un quadruple mot de l'oprande destinataire.
Algorithme
SI select(0) = 0 ALORS destination(0..63) destination(0..63) SINON destination(0..63) destination(64..127) FIN SI SI select(1) = 0 ALORS destination(64..127) source(0..63) SINON destination(64..127) source(64..127) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet de
1189
copier 4 paquets de valeurs de format rel de double prcision dans un oprande destinataire dans la partie basse d'un quadruple mot de celle-ci et copie 2 des 4 paquets de valeurs de format rel de simple prcision dans l'oprande source dans la partie haute d'un quadruple mot de l'oprande destinataire.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 433 436.
1190
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
SHUFPS
Shuffle Packed Single-Precision Floating-Point Values
Syntaxe
SHUFPS destination, source, select
Description Cette instruction permet de copier 4 paquets de valeurs de format rel de simple prcision dans une oprande destinataire dans la partie basse d'un quadruple mot de celle-ci et copie 2 des 4 paquets de valeurs de format rel de simple prcision dans l'oprande source dans la partie haute d'un quadruple mot de l'oprande destinataire.
Algorithme
EVALUER CAS select(0..1) CAS 0: destination(0..31) destination(0..31) CAS 1: destination(0..31) destination(32..63) CAS 2: destination(0..31) destination(64..95) CAS 3: destination(0..31) destination(96..127) FIN EVALUER CAS EVALUER CAS select(2..3) CAS 0: destination(32..63) destination(0..31) CAS 1: destination(32..63) destination(32..63) CAS 2: destination(32..63) destination(64..95)
1191
CAS 3: destination(32..63) destination(96..127) FIN EVALUER CAS EVALUER CAS select(4..5) CAS 0: destination(64..95) source(0..31) CAS 1: destination(64..95) source(32..63) CAS 2: destination(64..95) source(64..95) CAS 3: destination(64..95) source(96..127) FIN EVALUER CAS EVALUER CAS select(6..7) CAS 0: destination(96..127) source(0..31) CAS 1: destination(96..127) source(32..63) CAS 2: destination(96..127) source(64..95) CAS 3: destination(96..127) source(96..127) FIN EVALUER CAS
Mnmonique
Instruction SHUFPS xmm, xmm, imm8 Opcode 0Fh C6h /r ib Description Cette instruction permet de copier 4 paquets de valeurs de format rel de simple prcision dans une oprande destinataire dans la partie basse d'un quadruple mot de celle-ci et copie 2 des 4 paquets de valeurs de format rel de simple prcision dans l'oprande source dans la partie haute d'un quadruple mot de l'oprande destinataire.
1192
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 437 440.
1193
Assembleur 80x86
INTEL 80386+
SIDT
Store Interrupt Descriptor Table Register
Syntaxe
SIDT operande
Description Cette instruction permet d'entreposer le registre de descripteur de table d'interruption (IDTR) dans l'oprande de destination.
Algorithme
SI taille de l'oprande = 16 bits ALORS operande(0..15) IDTR(Limit) operande(16..39) IDTR(Base) operande(40..47) 0 SINON operande(0..15) IDTR(Limit) operande(16..47) IDTR(Base) FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'entreposer le registre de descripteur de table d'interruption (IDTR) dans l'oprande de destination.
SIDT mem
0Fh 01h /1
1194
Voir Instruction Instruction Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86 80x86 80x86 Instruction Instruction Instruction Instruction Instruction Instruction Instruction
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 441 444.
1195
Assembleur 80x86
AMD-V
Syntaxe SKINIT EAX
SKINIT
Secure Init and Jump with Attestation
Description Cette instruction permet de rinitialiser de faon scuritaire le microprocesseur et de dmarrer un logiciel de confiance comme un VMM.
Algorithme SI ((EFER.SVMEN = 0) ET PAS (CPUID 8000_0001.ECX(SKINIT)) OU (PAS PROTECTED_MODE)) ALORS EXCEPTION #UD() FIN SI SI CPL <> 0 ALORS EXCEPTION #GP() FIN SI Initialise l'tat du microproceseur pour un signal INIT CR0.PE 1 CS.sel 0008h CS.attr 32-bit code, lecture/excution CS.base 0 CS.limit FFFFFFFFh SS.sel 0010h SS.attr pile 32-bits, lecture/criture, haute expansion SS.base 0 SS.limit FFFFFFFFh EAX EAX FFFF0000h EDX famille/modle/niveau ESP EAX + 00010000h Efface le GPR autre que EAX, EDX, ESP EFER 0 VM_CR.DPD 1 VM_CR.R_INIT 1 VM_CR.DIS_A20M 1 Active SL_DEV, et protge 64 Kiloctets de mmoire physique de dmarrage l'adresse
1196
physique du registre EAX GIF 0 Lecture de la longueur du SL de l'offset 0002h du SLB Copie l'image du SL dans le TPM pour attestation Lecture du point d'entre SL de l'offset 0000h du SLB Saut au point d'entre SL, EIP = EAX + offset de point d'entre
Mnmonique Instruction SKINIT EAX Opcode 0Fh 01h DEh Description Cette instruction permet d'effectuer l'initialisation scuris et le saut avec l'attestation.
1197
Assembleur 80x86
INTEL 80386+
SLDT
Store Local Descriptor Table Register
Syntaxe
SLDT operande
Description Cette instruction permet d'entreposer le slecteur de segment dans le registre LDTR (registre de table local de descripteur) dans l'oprande de destination.
Algorithme
operande LDTR(Selecteur de segment)
Mnmonique
Instruction Opcode Description Cette instruction permet d'entreposer le slecteur de segment dans le registre LDTR (registre de table local de descripteur) dans l'oprande de destination.
SLDT r/m16
0Fh 00h /0
Voir Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86
1198
Instruction assembleur 80x86 Instruction assembleur 80x86 Instruction assembleur 80x86 - Instruction LTR
Instruction Instruction
LGDT LLDT
1199
Assembleur 80x86
AMD Am386SXLV,Am386DXLV+
Syntaxe SMI
SMI
System Managment Interrupt
Description Cette instruction permet de grer les interruptions systmes en mode de dboguage.
Algorithme SI SMIE = 1 ALORS Sauve l'tat d'excution de la SMRAM ENTER SMM SMMS 1 SINON INT 01h FIN SI
Mnmonique Instruction SMI Opcode F1h Description Cette instruction permet de grer les interruptions systmes en mode de dboguage.
1200
Assembleur 80x86
P6, Cyrix
Syntaxe SMINT
SMINT
Software SMM Interrupt
Description Cette instruction permet de faire entre le microprocesseur en mode SMM (System Management Mode).
Algorithme Sauvegarde l'tat CPU de l'entte SMM au sommet de l'espace SMM Entre en mode SMM
Mnmonique Instruction SMINT Opcode 0Fh 38h Description Cette instruction permet de faire entre le microprocesseur en mode SMM (System Management Mode).
1201
Assembleur 80x86
Cyrix Cx486DX/DX2/DX4, IBM BL486DX/DX2
Syntaxe SMINTOLD
SMINTOLD
Software SMM Interrupt
Description Cette instruction permet de faire entre le microprocesseur en mode SMM (System Management Mode).
Algorithme Sauvegarde l'tat CPU de l'entte SMM au sommet de l'espace SMM Entre en mode SMM
Mnmonique Instruction SMINTOLD Opcode 0Fh 7Eh Description Cette instruction permet de faire entre le microprocesseur en mode SMM (System Management Mode).
1202
Assembleur 80x86
INTEL 80386+
SMSW
Store Machine Status Word
Syntaxe
SMSW operande
Description Cette instruction permet d'entreposer le mot des tats (soit les bits de 0 15 du registre de contrle CR0) partir du registre de tche (TR) dans l'oprande cible.
Algorithme
operande CR0(15..0)
Mnmonique
Instruction Opcode Description Cette instruction permet d'entreposer le mot des tats (soit les bits de 0 15 du registre de contrle CR0) partir du registre de tche (TR) dans l'oprande cible.
SMSW r/m16
0Fh 01h /4
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 447 349.
1203
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
SQRTPD
Square Roots of Packed Double-Precision Floating-Point Values
Syntaxe
SQRTPD destination, source
Description Cette instruction permet d'effectuer le calcul de la racine carr d'un paquet de valeur de double prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel de double prcision.
Algorithme
destination(0..63) SquareRoot(source(0..63)) destination(64..127) SquareRoot(source(64..127))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le calcul de la racine carr d'un paquet de valeur de double prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel de double prcision.
Rfrences
1204
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 450 453.
1205
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)
SQRTPS
Packed Single-Precision Floating Square Root
Syntaxe
SQRTPS dest,source
Description Cette instruction permet d'effectuer le calcul de la racine carr d'un paquet de valeur de simple prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel de simple prcision.
Algorithme
dest(31..0) SQRT(source(31..0)) dest(63..32) SQRT(source(63..32)) dest(95..64) SQRT(source(95..64)) dest(127..96) SQRT(source(127..96))
Mnmonique
Instruction SQRTPS xmmreg,r/m128 Opcode 0Fh 51h /r Description Cette instruction permet d'effectuer le calcul de la racine carr d'un paquet de valeur de simple prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel
1206
de simple prcision.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 453 455.
1207
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
SQRTSD
Square Root of Scalar Double-Precision Floating-Point Value
Syntaxe
SQRTSD destination, source
Description Cette instruction permet d'effectuer le calcul de la racine carr d'une valeur de double prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel de double prcision.
Algorithme
destination(0..63) SquareRoot(source(0..63))
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le calcul de la racine carr d'une valeur de double prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel de double prcision.
Rfrences
1208
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 456 458.
1209
Assembleur 80x86
INTEL Pentium III+ (KNI/MMX2)
SQRTSS
Scalar Single-Precision Floating-Point Square Root
Syntaxe
SQRTSS dest,source
Description Cette instruction permet d'effectuer le calcul de la racine carr d'une valeur de simple prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel de simple prcision.
Algorithme
dest(31..0) SQRT(source(31..0))
Mnmonique
Instruction SQRTSS xmm1,xmm2/m32 Opcode F3h 0Fh 51h /r Description Cette instruction permet d'effectuer le calcul de la racine carr d'une valeur de simple prcision rel de l'oprande source et de mettre son rsultat dans l'oprande de destination sous forme d'un rel de simple prcision.
Rfrences
1210
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 459 460.
1211
SS:
Description Ce prfixe permet d'indiquer une instruction d'utiliser le Segment de Pile (Stack Segment) pour adresse dans l'oprande.
1212
Syntaxe
STC
Algorithme drapeau CF 1
Remarque A titre purement informatif, sachez que ce registre d'tat de retenue est toujours gal 1 lorsqu'une opration gnre une retenue arithmtique et qu'il est par consquent impossible de reprsenter le rsultat qu'avec l'aide des bits disponibles. Dans ce ventualit, l'indicateur de retenue est considr comme 17ime ou 9ime bit du rsultat. C'est surtout dans la perspective des instructions ADC et SBB que le positionnement 0 de l'indicateur de retenue s'avre utile. Dans les autres cas, l'interruption 21h du systme d'exploitation sans servira pour indiquer s'il y a eu une erreur d'excution, toutefois ce n'est pas une situation relier directement au microprocesseur mais une programmation logiciel.
Mnmonique
Instruction Opcode Description Fixe le registre de drapeau de retenue 1
STC
F9h
1213
Exception Aucune
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 836 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 417 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 235. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 461.
1214
Syntaxe
STD
Description Cette instruction permet de fixer l'indicateur de direction (DF) la valeur 1. Les oprations sur les chanes de caractres, tel CMPSB, CMPSD, CMPSQ, CMPSW, LODSB, LODSD, LODSQ, LODSW, MOVSB, MOVSD, MOVSQ, MOVSW, OUTSB, OUTSD, OUTSW, STOSB, STOSD, STOSQ et STOSW par exemple, incrmenteront maintenant les registres SI et DI.
Algorithme
drapeau DF 1
Mnmonique
Instruction Opcode Description Fixe le registre de drapeau de direction 1
STD
F9h
Exception Aucune
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 836 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 417 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 236. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 462.
1216
Assembleur 80x86
AMD-V
STGI
Set Global Interrupt Flag
Syntaxe
STGI
Description Cette instruction permet de fixer les drapeaux global d'interruption (GIF). Quand le GIF est 1, les interruptions externes sont ractivs.
Algorithme
drapeau GIF 1
Mnmonique
Instruction Opcode Description Cette instruction permet de fixer les drapeaux global d'interruption (GIF).
STGI
galement
1217
Syntaxe
STI
Description Cette instruction permet de fixer l'indicateur d'interruption (IF) la valeur 1. Aprs avoir excuter cette instruction, aucune interruption ne sera admise tant que l'instruction STI n'est pas rencontre.
Algorithme
SI CPL <= IOPL ALORS drapeau IF 1 SINON SI (((VIRTUAL_MODE) ET (CR4.VME = 1)) OU ((PROTECTED_MODE) ET (CR4.PVI = 1) ET (CPL = 3))) ALORS SI RFLAGS.VIP = 1 ALORS EXCEPTION #GP(0) FIN SI RFLAGS.VIF 1 SINON EXCEPTION #GP(0) FIN SI
Remarque Afin que les choses soit bien claire, sachez que mme si ce registre d'tat d'interruption est mit 0, le microprocesseur ne masque pas les interruptions de type NMI (Non masquable Interruption). La commande CLI vise donc faire en sorte que toutes les interruptions masquables ne soient plus excutes. Cette interdiction peut tre leve l'aide de la commande STI.
1218
Mnmonique
Instruction Opcode Description Cette instruction permet de fixer l'indicateur d'interruption (IF) la valeur 1.
STI
FBh
galement CLI
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 836 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 417 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 305. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 463 465.
1219
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
STMXCSR
Store MXCSR
Syntaxe
STMXCSR dest
Description Cette instruction permet de copier le MXCSR dans un emplacement mmoire de 32 bits.
Algorithme
dest MXCSR
Mnmonique
Instruction STMXCSR m32 Opcode 0Fh AEh /3 Description Cette instruction permet de copier le MXCSR dans un emplacement mmoire de 32 bits.
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 466 467.
1220
Syntaxe
STOS chainecible
Description Cette instruction permet de copier un octet, un mot ou un double mot dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI en fonction de la taille de l'oprande cible et de l'tat du drapeau de direction.
Algorithme
SI chainecible est octet ALORS chainecible AL SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI SINON SI chainecible est un mot ALORS chainecible AX SI DF = 0 ALORS (E)DI (E)DI + 2 SINON (E)DI (E)DI - 2 FIN SI SINON SI chainecible est un double mot ALORS chainecible EAX SI DF = 0 ALORS (E)DI (E)DI + 4 SINON (E)DI (E)DI - 4 FIN SI
1221
SINON chainecible RAX SI DF = 0 ALORS (E)DI (E)DI + 8 SINON (E)DI (E)DI - 8 FIN SI FIN SI
Mnmonique
Instruction Opcode Description Entrepose le contenu du registre AL dans ES:(R)DI et incrmente ou dcrmente (R)DI. Entrepose le contenu du registre AX dans ES:(R)DI et incrmente ou dcrmente (R)DI. Entrepose le contenu du registre EAX dans ES:(R)DI et incrmente ou dcrmente (R)DI. Entrepose le contenu du registre RAX dans ES:(R)DI et incrmente ou dcrmente (R)DI.
STOS mem8
AAh
STOS mem16
ABh
STOS mem32
ABh
STOS mem64
ABh
Exceptions
Message #GP(Protection gnral) Mode rel X Virtuel 8086 X Mode protg X Description Une adresse mmoire dpasse la limite du
1222
segment ES ou n'est pas canonique L'oprande de destination n'est pas dans un segment ES non crivable Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
Rfrences
1223
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 837 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 237. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 468 472.
1224
Assembleur 80x86
INTEL 8088+
STOSB
Store String Byte
Syntaxe
STOSB
Description Cette instruction permet de copier le registre AL dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 1 en fonction de l'tat du drapeau de direction.
Algorithme
chainecible AL SI DF = 0 ALORS (E)DI (E)DI + 1 SINON (E)DI (E)DI - 1 FIN SI
Mnmonique
Instruction Opcode Description Entrepose le contenu du registre AL dans ES:(R)DI et incrmente ou dcrmente (R)DI.
STOSB
AAh
Exceptions
1225
Mode rel X
Virtuel 8086 X
Mode protg X
Description Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique L'oprande de destination n'est pas dans un segment ES non crivable Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
1226
Exemples Cet exemple suivant, destin au 8088 mais peu performante, permet de remplir avec la valeur de la variable Valeur un tampon d'octets spcifi par la variable Tampon de la longueur spcifi par la variable Longueur avec une cadence de 8 bits la fois :
1. 2. 3. 4. CLD LES DI,Tampon MOV CX,Longueur MOV AL,Valeur 5. REP STOSB
Cet exemple suivant, destin au 8086 et trs performante, permet de remplir avec la valeur de la variable Valeur un tampon d'octets spcifi par la variable Tampon de la longueur spcifi par la variable Longueur avec une cadence de 16 bits la fois :
1. 2. 3. 4. 5. 6. 7. 8. CLD LES DI,Tampon MOV CX,Longueur MOV AL,Valeur MOV AH,AL SHR CX,1 REP STOSW ADC CX,CX 9. REP STOSB
Cet exemple suivant, destin au 80386 ou plus, permet de remplir avec la valeur de la variable Valeur un tampon d'octets spcifi par la variable Tampon de la longueur spcifi par la variable Longueur avec une cadence de 32 bits la fois :
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. CLD LES DI,Tampon MOV CX,Longueur MOV AL,Valeur MOV AH,AL ; EAX := AX:AX PUSH AX PUSH AX POP EAX MOV BX,CX AND BX,3 SHR CX,2 REP STOSD 1227
Voir galement Instruction assembleur 80x86 - Instruction STOSD Instruction assembleur 80x86 - Instruction STOSQ Instruction assembleur 80x86 - Instruction STOSW
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 837 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 418 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 237. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 468 472.
1228
Syntaxe
STOSD
Description Cette instruction permet de copier le registre EAX dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 4 en fonction de l'tat du drapeau de direction.
Algorithme
chainecible EAX SI DF = 0 ALORS (E)DI (E)DI + 4 SINON (E)DI (E)DI - 4 FIN SI
Mnmonique
Instruction Opcode Description Entrepose le contenu du registre EAX dans ES:(R)DI et incrmente ou dcrmente (R)DI.
STOSD
ABh
Exceptions
1229
Mode rel X
Virtuel 8086 X
Mode protg X
Description Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique L'oprande de destination n'est pas dans un segment ES non crivable Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
1230
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 837 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 237. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 468 472.
1231
Assembleur 80x86
x86-64+
STOSQ
Store String Quadword
Syntaxe
STOSQ
Description Cette instruction permet de copier le registre RAX dans la cellule mmoire l'adresse ES:[(R)DI] et incrmente/dcrmente le registre (R)DI de 8 en fonction de l'tat du drapeau de direction.
Algorithme
chainecible RAX SI DF = 0 ALORS (E)DI (E)DI + 8 SINON (E)DI (E)DI - 8 FIN SI
Mnmonique
Instruction Opcode Description Entrepose le contenu du registre RAX dans ES:(R)DI et incrmente ou dcrmente (R)DI.
STOSQ
ABh
Exceptions
1232
Mode rel X
Virtuel 8086 X
Mode protg X
Description Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique L'oprande de destination n'est pas dans un segment ES non crivable Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
1233
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 468 472.
1234
Assembleur 80x86
INTEL 8088+
STOSW
Store String Word
Syntaxe
STOSW
Description Cette instruction permet de copier le registre AX dans la cellule mmoire l'adresse ES:[DI] et incrmente/dcrmente le registre DI de 2 en fonction de l'tat du drapeau de direction.
Algorithme
chainecible AX SI DF = 0 ALORS (E)DI (E)DI + 2 SINON (E)DI (E)DI - 2 FIN SI
Mnmonique
Instruction Opcode Description Entrepose le contenu du registre AX dans ES:(R)DI et incrmente ou dcrmente (R)DI.
STOSW
ABh
Exceptions
1235
Mode rel X
Virtuel 8086 X
Mode protg X
Description Une adresse mmoire dpasse la limite du segment ES ou n'est pas canonique L'oprande de destination n'est pas dans un segment ES non crivable Un segment ES nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification d'alignement est activ
#PF(Faute de page)
#AC(Vrifie l'alignement)
1236
Exemple L'exemple suivant, s'adressant au mode rel sous un systme d'exploitation DOS, permet d'entreproser dans des pointeurs de variables le contenu de la date :
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. MOV AH,2Ah INT 21h CLD LES DI,DayOfWeek STOSB MOV AL,DL LES DI,Day STOSB MOV AL,DH LES DI,Month STOSB XCHG AX,CX LES DI,Year 14. STOSW
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 838 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 418 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 237. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 468 472.
1237
Assembleur 80x86
INTEL 80286+
STR
Store Task Register
Syntaxe
STR operande
Description Cette instruction permet d'entreposer le slecteur de segment partir du registre de tche (TR) l'oprande cible.
Fonction
operande TR(Slecteur de segment)
Mnmonique
Instruction Opcode Description >Cette instruction permet d'entreposer le slecteur de segment partir du registre de tche (TR) l'oprande cible.
STR r/m16
0Fh 00h /1
Voir Instruction Instruction Instruction Instruction Instruction assembleur assembleur assembleur assembleur assembleur 80x86 80x86 80x86 80x86 80x86
1238
galement Instruction Instruction Instruction Instruction Instruction LGDT LIDT LLDT LTR SIDT
Instruction Instruction
assembleur assembleur
80x86 80x86
Instruction Instruction
SGDT SLDT
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 474 475.
1239
Syntaxe
SUB oprandecible,oprandesource
Algorithme
oprandecible oprandecible - oprandesource
Mnmonique
Instruction Opcode Description Soustrait une valeur immdiate de 8 bits du registre AL et entrepose le rsultat dans le registre AL. Soustrait une valeur immdiate de 16 bits du registre AX et entrepose le rsultat dans le registre AX. Soustrait une valeur immdiate de 32 bits du registre EAX et entrepose le rsultat dans le registre EAX. Soustrait une valeur entire immdiate de 32 bits du registre RAX et entrepose le rsultat dans le 1240
2Ch ib
2Dh iw
2Dh id
2Dh id
registre RAX. Soustrait une valeur entire immdiate de 8 bits de l'emplacement registre ou mmoire de 8 bits. Soustrait une valeur entire immdiate de 16 bits de l'emplacement registre ou mmoire de 16 bits. Soustrait une valeur entire immdiate de 32 bits de l'emplacement registre ou mmoire de 32 bits. Soustrait une valeur entire immdiate de 64 bits de l'emplacement registre ou mmoire de 32 bits. Soustrait une valeur entire immdiate de 16 bits de l'emplacement registre ou mmoire de 8 bits. Soustrait une valeur entire immdiate de 32 bits de l'emplacement registre ou mmoire de 8 bits. Soustrait une valeur entire immdiate de 64 bits de l'emplacement registre ou mmoire de 8 bits. Soustrait un registre de 8 bits de l'emplacement registre ou mmoire
80h /5 ib
81h /5 iw
81h /5 id
81h /5 id
83h /5 ib
83h /5 ib
83h /5 ib
28h /r
1241
de 8 bits. Soustrait un registre de 16 bits de l'emplacement registre ou mmoire de 16 bits. Soustrait un registre de 32 bits de l'emplacement registre ou mmoire de 32 bits. Soustrait un registre de 64 bits de l'emplacement registre ou mmoire de 64 bits. Soustrait de l'oprande d'emplacement registre ou mmoire de 8 bits d'un registre de 8 bits. Soustrait de l'oprande d'emplacement registre ou mmoire de 16 bits d'un registre de 16 bits. Soustrait de l'oprande d'emplacement registre ou mmoire de 32 bits d'un registre de 32 bits. Soustrait de l'oprande d'emplacement registre ou mmoire de 64 bits d'un registre de 64 bits.
29h /r
29h /r
29h /r
2Ah /r
2Bh /r
2Bh /r
2Bh /r
Exceptions
Message Mode rel Virtuel 8086 Mode protg Description Une adresse mmoire dpasse la limite du
#SS(Pile)
1242
segment de pile ou n'est pas canonique #GP(Protection gnral) X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est effectu quand une vrification
#PF(Faute de page)
#AC(Vrifie l'alignement)
1243
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 838 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 418 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 239. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 476 478.
1244
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
SUBPD
Subtract Packed Double-Precision FloatingPoint Values
Syntaxe
SUBPD destination, source
Description Cette instruction permet d'effectuer une soustraction de 2 paquets de valeurs rels de double prcision d'un oprande source et d'un oprande destination et entrepose le rsultat dans l'oprande de destination sous le format d'un paquet de valeurs rels de double prcision.
Algorithme
destination(0..63) destination(0..63) - source(0..63) destination(64..127) destination(64..127) - source(64..127)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une soustraction de 2 paquets de valeurs rels de double prcision d'un oprande source et d'un oprande destination et entrepose le rsultat dans l'oprande de destination sous le format d'un paquet de valeurs rels de double prcision.
1245
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 479 480.
1246
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
SUBPS
Packed Single-Float-Point Subtract
Syntaxe
SUBPS destination,source
Description Cette instruction permet d'effectuer une soustraction de 4 paquets de valeurs rels de simple prcision d'une oprande source et d'une oprande destination et entrepose le rsultat dans l'oprande de destination sous le format d'un paquet de valeurs rels de simple prcision.
Algorithme
destination(31..0) destination(31..0) - source(31..0) destination(63..32) destination(63..32) - source(63..32) destination(95..64) destination(95..64) - source(95..64) destination(127..96) destination(127..96) - source(127..96)
Mnmonique
Instruction SUBPS xmm1,xmm2/m128 Opcode 0Fh 5Ch /r Description Cette instruction permet d'effectuer une soustraction de 4 paquets de valeurs rels de simple prcision d'une oprande source et d'une oprande destination et entrepose le rsultat dans l'oprande de
1247
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 481 483.
1248
Assembleur 80x86
INTEL Pentium 4 (SSE2)+
SUBSD
Subtract Scalar Double-Precision Floating-Point Values
Syntaxe
SUBSD destination, source
Description Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur rel de double prcision d'un oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de double prcision.
Algorithme
destination(0..63) destination(0..63) - source(0..63)
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur rel de double prcision d'un oprande source et destination et entrepose le rsultat dans un oprande de destination de valeur rel de double prcision.
Rfrences
1249
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 484 486.
1250
Assembleur 80x86
INTEL Pentium III (KNI/MMX2)+
SUBSS
Scalar Single-Float-Point Subtract
Syntaxe
SUBSS destination,source
Description Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur rel de simple prcision d'une oprande source et destination et entrepose le rsultat dans une oprande de destination de valeur rel de simple prcision.
Algorithme
destination(31..0) destination(31..0) - source(31..0)
Mnmonique
Instruction SUBSS xmm1,xmm2/m32 Opcode F3h 0Fh 5Ch /r Description Cette instruction permet d'effectuer une soustraction de la partie basse d'une valeur rel de simple prcision d'une oprande source et destination et entrepose le rsultat dans une oprande de destination de valeur rel de simple prcision.
Rfrences
1251
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 487 489.
1252
Assembleur 80x86
Cyrix Cx486S/S2/D/D2/DX/DX2/DX4, IBM BL486DX/DX2, TI 486SLC/DLC/e, TI 486SXL/SXL2/SXLC, TI Potomac
Syntaxe SVDC destination, source
SVDC
Save Register and Descriptor
0Fh 78h (mm sreg mmm) Cette instruction permet de sauvegarder le registre et le descripteur.
1253
Assembleur 80x86
Cyrix Cx486S/S2/D/D2/DX/DX2/DX4, IBM BL486DX/DX2, TI 486SLC/DLC/e, TI 486SXL/SXL2/SXLC, TI Potomac
Syntaxe SVLDT destination
SVLDT
Save Register and Descriptor
0Fh 7Ah (mm 000b mmm) Cette instruction permet de sauvegarder le LDTR et le descripteur.
1254
Assembleur 80x86
Cyrix Cx486S/S2/D/D2/DX/DX2/DX4, IBM BL486DX/DX2, TI 486SLC/DLC/e, TI 486SXL/SXL2/SXLC, TI Potomac
Syntaxe SVTS destination
SVTS
Save TR and Descriptor
0Fh 7Ch (mm 000b mmm) Cette instruction permet de sauvegarder le TR et le descripteur.
1255
Assembleur 80x86
x86-64+
SWAPGS
Swap GS Register with KernelGSbase MSR
Syntaxe
SWAPGS
Description Cette instruction permet de fournir une mthode un logiciel systme pour charger un pointeur sur une structure de donnes systme.
Mnmonique
Instruction Opcode Description Cette instruction permet de fournir une mthode un logiciel systme pour charger un pointeur sur une structure de donnes systme.
SWAPGS
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 490 491.
1256
Assembleur 80x86
AMD K6-2+
SYSCALL
Fast System Call
Syntaxe
SYSCALL
Description Cette instruction permet d'effectuer le transfert du contrle d'un point d'entre fixe au systme d'exploitation.
Algorithme
SYSCALL_START: SI MSR_EFER.SCE = 0 ALORS EXCEPTION #UD() FIN SI SI LONG_MODE ALORS SYSCALL_LONG_MODE SINON SYSCALL_LEGACY_MODE FIN SI SYSCALL_LONG_MODE: RCX.q next_RIP R11.q RFLAGS SI mode 64 bits ALORS temp_RIP.q MSR_LSTAR SINON temp_RIP.q MSR_CSTAR CS.sel MSR_STAR.SYSCALL_CS FFFCh CS.attr 64-bit code,dpl0 CS.base 00000000h CS.limit FFFFFFFFh 1257
SS.sel MSR_STAR.SYSCALL_CS + 8 SS.attr pile 64 bits,dpl0 SS.base 00000000h SS.limit FFFFFFFFh RFLAGS RFLAGS MSR_SFMASK RFLAGS.RF 0 CPL 0 RIP temp_RIP FIN SI FIN SYSCALL_LEGACY_MODE: RCX.d prochain RIP temp_RIP.d MSR_STAR.EIP CS.sel MSR_STAR.SYSCALL_CS FFFCh CS.attr code 32 bits,dpl0 CS.base 00000000h CS.limit FFFFFFFFh SS.sel MSR_STAR.SYSCALL_CS + 8 SS.attr pile 32 bits,dpl0 SS.base 00000000h SS.limit FFFFFFFFh RFLAGS.VM,IF,RF 0 CPL 0 RIP temp_RIP FIN
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le transfert du contrle d'un point d'entre fixe au systme d'exploitation.
SYSCALL
0Fh 05h
Voir
1258
galement
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 492 493.
1259
Assembleur 80x86
INTEL Pentium Pro+
SYSENTER
System Enter
Syntaxe
SYSENTER
Description Cette instruction permet d'effectuer le transfrer du contrle d'un point d'entre au systme d'exploitation.
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer le transfrer du contrle d'un point d'entre au systme d'exploitation.
SYSENTER
0Fh 34h
Voir Instruction Instruction Instruction Rfrences assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 494 498.
1260
Assembleur 80x86
INTEL Pentium Pro+
SYSEXIT
System Return
Syntaxe
SYSEXIT
Mnmonique
Instruction Opcode Description Cette instruction permet de retourner du systme d'exploitation une application.
SYSEXIT
0Fh 35h
Voir Instruction Instruction Instruction Rfrences assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 499 502.
1261
Assembleur 80x86
AMD K6-2+
SYSRET
Fast System Return
Syntaxe
SYSRET
Algorithme
SYSRET_START: SI MSR_EFER.SCE = 0 ALORS EXCEPTION #UD() FIN SI SI ((PAS PROTECTED_MODE) OU (CPL != 0)) ALORS EXCEPTION #GP(0) FIN SI SI mode 64 bits ALORS ALLER A SYSRET_64BIT_MODE SINON ALLER A SYSRET_NON_64BIT_MODE FIN SI SYSRET_64BIT_MODE: SI taille de l'oprande = 64 bits ALORS CS.sel (MSR_STAR.SYSRET_CS + 16) U 3 CS.base 00000000h CS.limit FFFFFFFFh CS.attr 64-bit code,dpl3 temp_RIP.q RCX SINON
1262
CS.sel MSR_STAR.SYSRET_CS U 3 CS.base 00000000h CS.limit FFFFFFFFh CS.attr 32-bit code,dpl3 temp_RIP.d = RCX FIN SI SS.sel MSR_STAR.SYSRET_CS + 8 RFLAGS.q R11 CPL 3 RIP temp_RIP FIN SYSRET_NON_64BIT_MODE: CS.sel MSR_STAR.SYSRET_CS U 3 CS.base 00000000h CS.limit FFFFFFFFh CS.attr 32-bit code,dpl3 temp_RIP.d RCX SS.sel MSR_STAR.SYSRET_CS + 8 RFLAGS.IF 1 CPL 3 RIP temp_RIP FIN
Mnmonique
Instruction Opcode Description Cette instruction permet de retourner du systme d'exploitation une application.
SYSRET
0Fh 07h
Voir Instruction Instruction Instruction assembleur assembleur assembleur 80x86 80x86 80x86 Instruction Instruction Instruction
1263
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 503 504.
1264
TEST
Syntaxe
TEST oprandecible,oprandesource
Description Cette instruction permet d'effectuer un Et binaire sur une oprande cible sans modifier sa valeur.
Algorithme
TEMP oprandecible oprandesource SF MSB(TEMP) SI TEMP = 0 ALORS ZF 1 SINON ZF 0 FIN SI PF BitwiseXNOR(TEMP(0 7)) CF 0 OF 0
Mnmonique
Instruction Opcode Description Effectue un test de Et binaire avec une valeur immdiate de 8 bits sur le registre AL et indique le rsultat de la comparaison sur le registre des
A8h ib
1265
drapeaux. Effectue un test de Et binaire avec une valeur immdiate de 16 bits sur le registre AX et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec une valeur immdiate de 32 bits sur le registre EAX et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec une valeur immdiate de 32 bits sur le registre RAX et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec une valeur immdiate de 8 bits sur l'oprande registre ou mmoire 8 bits et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec une valeur immdiate de 16 bits sur l'oprande registre ou mmoire 16 bits et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec une valeur immdiate de 32 bits sur l'oprande registre ou mmoire 32 bits et indique le rsultat de la comparaison sur le registre des
A9h iw
A9h id
A9h id
F6h /0 ib
F7h /0 iw
F7h /0 id
1266
drapeaux. Effectue un test de Et binaire avec une valeur immdiate de 32 bits sur l'oprande registre ou mmoire 64 bits et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec un registre de 8 bits sur l'oprande registre ou mmoire 8 bits et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec un registre de 16 bits sur l'oprande registre ou mmoire 16 bits et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec un registre de 32 bits sur l'oprande registre ou mmoire 32 bits et indique le rsultat de la comparaison sur le registre des drapeaux. Effectue un test de Et binaire avec un registre de 64 bits sur l'oprande registre ou mmoire 64 bits et indique le rsultat de la comparaison sur le registre des drapeaux.
F7h /0 id
84h /r
85h /r
85h /r
85h /r
Exceptions
Message #SS(Pile nonMode rel X Virtuel 8086 X Mode protg X Description Une adresse
1267
canonique)
mmoire dpasse la limite du segment de pile ou n'est pas canonique X X X Une adresse mmoire dpasse la limite du segment de donnes ou n'est pas canonique L'oprande de destination n'est pas dans un segment non crivable Un segment de donnes nulle est utilis comme rfrence mmoire Une faute de page rsultat de l'excution de l'instruction Un dsalignement de la rfrence mmoire est
#GP(Protection gnral)
#PF(Faute de page)
#AC(Vrifie l'alignement)
1268
Rfrences Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 838 Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 418 AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 241. Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 505 507.
1269
Assembleur 80x86
INTEL Pentium III+
UCOMISD
Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS
Syntaxe
UCOMISD dest,source
Description Cette instruction permet d'effectuer une comparaison dsordonne de valeurs rels de double prcision dans la partie basse d'un double mot du premier oprande et du deuxime oprande, et fixe les drapeaux ZF, PF et FC dans le registre EFLAGS selon le rsultat (non-ordonne, suprieur , infrieur ou gal).
Algorithme
SI (dest(63..0) UNORDERED source(63..0)) ALORS ZF 1 PF 1 CF 1 SINON SI (dest(63..0) > source(63..0)) ALORS ZF 0 PF 0 CF 0 SINON SI (dest(63..0) < source(63..0)) ALORS ZF 0 PF 0 CF 1 SINON ZF 1 PF 0 CF 0 FIN SI
1270
OF 0 SF 0 AF 0
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison dsordonne de valeurs rels de double prcision dans la partie basse d'un double mot du premier oprande et du deuxime oprande, et fixe les drapeaux ZF, PF et FC dans le registre EFLAGS selon le rsultat (non-ordonne, suprieur , infrieur ou gal).
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 508 510.
1271
Assembleur 80x86
INTEL Pentium III+
UCOMISS
Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS
Syntaxe
UCOMISS dest, source
Description Cette instruction permet d'effectuer une comparaison dsordonne de valeurs rels de simple prcision dans la partie basse d'un double mot du premier oprande et du deuxime oprande, et fixe les drapeaux ZF, PF et FC dans le registre EFLAGS selon le rsultat (non-ordonne, suprieur , infrieur ou gal).
Algorithme
OF 0 SF 0 AF 0 SI (dest(31..0) UNORDERED source(31..0)) ALORS ZF 1 PF 1 CF 1 SINON SI (dest(31..0) > source(31..0)) ALORS ZF 0 PF 0 CF 0 SINON SI (dest(31..0) < source(31..0)) ALORS ZF 0 PF 0 CF 1 SINON ZF 1
1272
PF 0 CF 0 FIN SI
Mnmonique
Instruction Opcode Description Cette instruction permet d'effectuer une comparaison dsordonne de valeurs rels de simple prcision dans la partie basse d'un double mot du premier oprande et du deuxime oprande, et fixe les drapeaux ZF, PF et FC dans le registre EFLAGS selon le rsultat (non-ordonne, suprieur , infrieur ou gal).
UCOMISS xmm1,xmm2/m32
0Fh 2Eh /r
Rfrences Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 511 514.
1273
Assembleur 80x86
AMD Am5k86 (SSA/5, K5)+
Syntaxe UD
UD
Undefined
Mnmonique Instruction UD Opcode 0Fh FFh Description Cette instruction permet de provoquer l'excution d'un code indfinie.
1274
Assembleur 80x86
INTEL Pentium Pro+
UD2
Undefined To
Syntaxe
UD2
Fonction
EXCEPTION #UD
Mnmonique
Instruction Opcode Description Cette instruction permet de provoquer l'excution d'un code indfinie.
UD2
0Fh 0Bh
Rfren