Les instructions de l'assembleur 80X86 :


AAA - Ascii Adjust for Addition
Syntaxe : AAA
Corrige le resultat en [AL] d'une addition de deux nombres BCD non compactes. Ce resultat est ajuste au format BCD non compacte. Le CPU teste le quartet de poids faible en [AL] : Si [AL] est correct, le quartet de poids fort et les indicateurs [CF] et [AF] sont mis a zero. Si [AL] contient une valeur incorrecte (avec le format BCD) ou si [AF] est posé, [AH] est incremente et [CF] mis a 1. Le contenu de [AL] est converti en valeur BCD inferieure à 6.
Rem : Pour annuler le quartet de poids fort de [AL], l'instruction AND AL,00001111B est plus rapide que l'instruction AAA.

AAD - Ascii Adjust for Division
Syntaxe : AAD
Prepare un nombre BCD non compacte a une division : [AH] est multiplie par 10 et ajoute a [AL] puis annule.
Rem : AAD peut etre utilise pour convertir un nombre BCD en son equivalent binaire.

AAM - Ascii Adjust for Multiplication
Syntaxe : AAM
Ajuste le resultat en [AX] d'une multiplication de deux nombre BCD non compactes : Le contenu de [AL] est divise par 10, le resultat entier est mis en [AH] et le reste en [AL].

AAS - Ascii Adjust for Subtraction
Syntaxe : AAS
Ajuste le resultat en [AL] d'une soustraction de deux nombres BCD non compactes : Si le quartet de poids faible de [AL] est > 9, [AL] est decremente de 6 et le quartet de poids fort est decrementer de 1.Les indicateurs [CF] et [AF] sont mis a zero.
Rem : Pour annuler le quartet de poids fort de [AL], l'instruction AND AL,00001111B est plus rapide que l'instruction AAS.

ADC - Add With Carry
Syntaxe : ADC Destination, Source
Effectue une addition avec retenue (a utiliser dans le cas d'addition de grande envergure). Cette instruction permet aux processeurs 16 bits notamment (8088 ou 80286, les registres 32 bits evitant bien souvent d' avoir recours a cette instruction) d'effectuer des operations donnant des resultats superieurs a la taille des registres. La retenue est stockée dans [CF].

ADD - Arithmetic Addition
Syntaxe : ADD Destination, Source
Effectue une addition sans retenue. Le contenu de la source est ajoutée a la destination, le resultat etant dans la destination.

AND - Logical And
Syntaxe : AND Destination, Source
Effectue un "ET" binaire entre la source et la destination. La source et la destination sont combines bit a bit de la maniere suivante : Tout bit de destination est mis a zero si le bit correspondant de la source est egal a zero. Les bits de destination qui correspondent a des bits de sources egaux a un ne sont pas modifies.
Rem : La source et la destination doivent etre de meme format : on ne peut pas combiner un nombre de 8 bits avec un nombre de 16 bits par exemple.

ARPL - Adjusted Requested Privilege Level of Selector
Syntaxe : ARPL Destination, Source

BOUND - Array Index Bound Check
Syntaxe : BOUND Destination, Source
Teste si la valeur stockee en destination se trouve dans les limites definies par la source. Ces limites sont deux nombres de 16 bits deposes dans les deux mots-memoires consecutifs de la source : d'abord la limite superieure (2 octets) puis la limite inferieure (2 octets). La destination est un registre de 16 bits. Si son contenu est en dehors des limites, l'interruption 5 est declenchee.
Rem : L 'interruption 5 est generalement utilisee, en mode reel, pour la copie d'ecran. On doit donc penser a la detourner avant d'utiliser l'instruction BOUND.

BSF - Bit Scan Forward
Syntaxe : BSF Destination, Source
Recherche le premier bit de destination egal a 1. Commence avec le bit de rang 0 dans l'ordre croissant du poids des bits. En cas de succes de recherche : l'indicateur [ZF] est mis a 1 et la source contient la position du bit. Sinon [ZF] et la source sont mis a 0.
Rem : La destination et la source ne doivent etre que des registres de 16 ou 32 bits (et seulement des registres).

BSR - Bit Scan Reverse
Syntaxe : BSR Destination, Source
Recherche le dernier bit de destination egal a 1. Commence avec le bit de plus haut rang dans l'ordre decroissant du poids des bits. En cas de succes de recherche : l'indicateur [ZF] est mis a 1 et la source contient la position du bit. Sinon [ZF] et la source sont mis a 0.
U>Rem : La destination et la source ne doivent etre que des registres de 16 ou 32 bits (et seulement des registres).

BSWAP - Byte Swap
Syntaxe : BSWAP Destination
Permute le premier et le quatrieme octet ainsi que le deuxieme et troisieme dans un registre de 32 bits.

BT - Bit Test
Syntaxe : BT Destination, Source
BT place dans [CF] le bit de la destination donne par la source. La source donne la position a la maniere de BSR.
Rem : La destination et la source doivent etre de meme taille.

BTC - Bit Test with Compliment
Syntaxe : BTC Destination, Source
Meme mecanisme que BT, mais, cette fois, le bit adresse dans la destination est inverse par l'operateur NOT (s'il est egal a 1 il devient 0 et vice-versa).

BTR - Bit Test with Reset
Syntaxe : BTR Destination, Source
Meme mecanisme que BT, mais, a la suite de la lecture du bit adresse dans la destination, ce bit est mis a zero.

BTS - Bit Test and Set
Syntaxe : BTS Destination, Source
Meme mecanisme que BT, mais, a la suite de la lecture du bit adresse dans la destination, ce bit est mis a un.

CALL - Procedure Call
Syntaxe : CALL Destination
CALL sert a appeler des sous programmes. Le sous programme se termine par l'instruction RET (RETURN). CALL memorise dans la pile l'adresse de retour qui sera alors lue par RET : il faut donc s'assurer, dans le sous programme que l'adresse sera disponible au moment du retour.
Rem : Pour un appel inter-segment (FAR), on peut acceder a tout l'espace memoire de 1Mo disponible et l'instruction CALL sauvegarde sur la pile, a la fois l'adresse de retour et le segment de code.

CBW - Convert Byte to Word
Syntaxe : CBW
CBW etend a 16 bits un nombre signe de 1 octet (8 bits) contenu dans [AL]. Le resultat est renvoye dans [AX]. Le 8eme bit de [AL] est reporte dans tous les bits du registre [AH].

CDQ - Convert Double to Quad
Syntaxe : CDQ
CDQ etend a 64 bits le contenu signe de [EAX]. Le resultat est renvoye dans [EDX:EAX].

CLC - Clear Carry
Syntaxe : CLC
CLC met a zero [CF].

CLD - Clear Direction Flag
Syntaxe : CLD
CLD met a zero l'indicateur [DF].
Rem : Les instructions concernees par CLD sont CMPS, LODS, MOVS, MOVSX, MOVZX, SCAS et STOS. Les instructions de traitement de chaines de caracteres opereront dans le sens croissant de la chaine (de gauche a droite).

CLI - Clear Interrupt Flag
Syntaxe : CLI
CLI met a zero l'indicateur [IF]. Cela a pour consequence d'empecher l' execution des interruptions masquables. CLI est usite pour empecher la perturbation d'une routine par une interruption externe.

CLTS - Clear Task Switched Flag
Syntaxe : CLTS

CMC - Complement Carry Flag
Syntaxe : CMC
CMC inverse l'indicateur [CF] (comme un operateur not).

CMP - Compare
Syntaxe : CMP Destination, Source
CMP est l'operateur de comparaison de tous les processeurs d'Intel. La destination est comparee a la source, provoquant une mise a jour des indicateurs. Cela consiste en une soustraction de la source a la destination, sans retenir le resultat, ne faisant que modifier les indicateurs.
Rem : Seules les combinaisons suivantes sont autorisees :

CMP Registre, Registre
CMP Registre, Memoire ( = variable)
CMP Registre, Constante
CMP Memoire, Registre
CMP Memoire, Constante

CMPS - Compare String (Byte, Word or Doubleword)
Syntaxe : CMPS
Compare des chaines de caracteres stockees en memoire : La premiere chaine dite de destination doit se trouver a l'adresse [ES:DI]. On doit donc, a l'aide d'instruction MOV, faire pointer le couple de registres [ES:DI] sur le premier caractere de la chaine (celle-ci etant achevee par le caractere "$"). La seconde chaine dite de source, doit se trouver a l'adresse [DS:SI]. On doit donc, faire pointer le couple de registres [DS:SI] sur le premier caractere de la chaine.
Rem : Pour une comparaison octet par octet, utiliser l' instruction CMPSB, pour une comparaison par mot (type Word), utiliser l' instruction CMPSW, pour une comparaison par double-mot (type double), utiliser l' instruction CMPSD.

CMPXCHG - Compare and Exchange
Syntaxe : CMPXCHG Destination, Source
Cette instruction compare a l'accumulateur le nombre enregistre dans destination. Si la destination et l'accumulateur ont le meme contenu, le nombre contenu dans la source est copie dans la destination. Si les contenus sont differents, le nombre de destination est copie dans l' accumulateur. Les indicateurs sont positionnes en fonction du resultat de la comparaison.
Cette instruction, n'est disponible qu'a partir du 80486.

CWD - Convert Word to Doubleword
Syntaxe : CWD
Convertit le mot (type word) signe contenu dans [AX] en double-mot (type double) dans [DX:AX] pour les processeurs 16 bits et dans [EAX] pour les processeurs 32 bits.

CWDE - Convert Word to Extended Doubleword
Syntaxe : CWDE
Convertit le double-mot (type double) en double-mot etendu (type extended).

DAA - Decimal Adjust for Addition
Syntaxe : DAA
Ajuste en [AL] le resultat d'une addition de deux nombres BCD compactes. Ce resultat est ajuste au format BCD compacte. Le contenu de [AL] est teste, si il est correct (avec le format BCD compacte : de 0 a 99), les indicateurs [CF] et [AF] sont mis a zero.

DAS - Decimal Adjust for Subtraction
Syntaxe : DAS
Ajuste en [AL], le resultat d'une soustractio, de deux nombres BCD compactres. Ce resultat est ajuste au format BCD compacte. Le contenu de [AL] est teste, si il depasse 99, les indicateurs [CF] et [AF] sont mis a 1; si [AL] est inferieur a 100, les indicateurs [CF] et [AF] sont mis a 0.

DEC - Decrement
Syntaxe : DEC Destination
DEC decremente de 1 (retranche 1) le contenu d'un registre ou d'une memoire ( = variable ). Cela influence les indicateurs (comme pour SUB).
Rem : La destination peut etre aussi bien de 8, 16 ou 32 bits.

DIV - Divide
Syntaxe : DIV Source
Effectue une division non signee d'une destination implicite constituee du couple de registre [DX:AX] ou du couple [EDX:EAX] a partir du 80386. Le quotient se touve alors dans en [AX] + la partie haute de [DX] ou [EAX] et le reste en [EDX]. Ceci influence le registre des indicateurs : Les indicateurs [OF] et [CF] sont positionnes a 0 si le resultat d'une division par une source de 8 bits tient dans [AL], ou si le resultat d'une division par une source de 16 bits tient dans le registre [AX], ou encore, pour les processeurs 32 bits, si le resultat d'une division par une source de 32 bits tient dans le registre [EAX].

ENTER - Make Stack Frame
Syntaxe : ENTER Source1, Source2
ENTER sert a installer les cadres de pile (Stack frame) necessites par la plupart des langages de haut niveau. Source1 est une constante de 16 bits (0-65535) qui indique le nombre d'octets a reserver pour les variables locales du programme de haut niveau. Source2 est une constante de 8 bits (0-255) qui fixe le niveau d'imbrication de la procedure.

ESC - Escape
Syntaxe : ESC Destination, Source
Sert a envoyer une instruction (Destination) a un coprocesseur arithmetique. L'instruction transmise doit etre contenue dans un registre ou un emplacement memoire ( variable ).

HLT - Halt CPU
Syntaxe : HLT
Met le processeur en attente : aucune instruction n'est plus executee jusqu'au prochain evenement exterieur (la reponse d'un port d' entree/sortie par exemple...).

IDIV - Signed Integer Division
Syntaxe : IDIV Source
Divise une destination implicite par la source. L'operation, est ici signee (contrairement a DIV). La destination est [AX] ou le couple de registre [DX:AX] ou encore, pour les processeurs 32 bits le couple [EDX:EAX]. IDIV est a utiliser en remplacement de DIV pour toutes les divisions signees. Ceci influence le registre des indicateurs : Les indicateurs [OF] et [CF] sont positionnes a 0 si le resultat d'une division par une source de 8 bits tient dans [AL], ou si le resultat d'une division par une source de 16 bits tient dans le registre [AX], ou encore, pour les processeurs 32 bits, si le resultat d'une division par une source de 32 bits tient dans le registre [EAX].

IMUL - Signed Multiply
3 syntaxes sont possibles :

Syntaxe : IMUL Source
Multiplie une destination implicite par la source. L'operation signee. La destination est l'accumulateur [AX] ou le couple de registres [DX:AX], ou encore, pour les processeurs 32 bits, le couple de registres [EDX:EAX]. IMUL est a utiliser en remplacement de MUL pour toutes les multiplications signees.Ceci influence le registre des indicateurs : Les indicateurs [OF] et [CF] sont positionnes a 0 si le resultat d'une multiplication par une source de 8 bits tient dans [AL], ou si le resultat d'une multiplication par une source de 16 bits tient dans le registre [AX], ou encore, pour les processeurs 32 bits, si le resultat d'une multiplication par une source de 32 bits tient dans le registre [EAX].

Syntaxe : IMUL Destination, Source1, Source2
Effectue la multiplication signee de source1 par source2, le resultat etant depose dans la destination. La destination doit toujours etre un registre d'au moins 16 bits. Si le resultat ne tient pas dans le registre de destination, les indicateurs [CF] et [OF] sont mis a 1.
Rem : Seules les combinaisons suivantes sont autorisees :
IMUL Registre, Registre, Constante
IMUL Registre, Memoire, constante

Syntaxe : IMUL Destination, Source
Syntaxe semblable a l'addition : On peut choisir librement source et destination... Si le resultat depasse la capacite de la destination, les indicateurs [CF] et [OF] sont positionnes a 1. Les autres propriete de l'instruction IMUL ordinaire sont respectees.

IN - Input Byte or Word From Port
Syntaxe : IN Destination, Source
Lit une valeur sur le port d'adresse source et le memorise dans destination. La destination est toujours l'accumulateur [AL] ou [AX]. la source est une constante de 8 bits ou le registre [DX], celui-ci etant donc le seul permettant d'acceder aux 65536 adresses de ports possibles.

INC - Increment
Syntaxe : INC Destination
Incremente (augmente de 1) la destination, qui peut etre un registre ou une memoire ( = variable ) de 8, 16 ou 32 bits. Les indicateurs sont modifies comme dans le cas de l'instruction ADD (Mis a part la retenue en [CF]). Si apres incrementation, la destination devient nulle, [ZF] est mis a 1, sinon [ZF] est a zero.

INS - Input String from Port
Syntaxe : INS
INS lit toute une chaine de caracteres. La destination etant la zone memoire [ES:DI]. L'adresse du port doit etre dans [DX].
Pour lire la chaine octet par octet, on utilise INSB.
Pour lire la chaine mot par mot (type word), on utilise INSW.
Pour lire la chaine par double-mot (type double), on utilise INSD.

INT - Interrupt
Syntaxe : INT Destination
INT sert a declencher une interruption materielle ou software, donnee par son numero compris entre 0 et 255. Les interruptions materielles ne dependent pas du programme lui-meme mais d'un evenement exterieur, par exemple l'appuie sur une touche qui declenche l'interruption clavier. Il existe 2 sortes d'interruptions materielles : les interruptions dites masquables, peuvent etre desactivees grace a l'indicateur [IF] (en le mettant a 0 par une instruction CLI) les "non-masquable" ne peuvent etre desactivees.
Les interruptions logicielles (software) sont des sortes de sous-programmes appeles par le programme lui-meme grace a l'instruction INT ##. Le processeur recherche alors dans la memoire du PC (Segment 0000H, offset (n° d'interruption *4)) l'adresse qu'il charge en [CS:IP] apres avoir sauvegarde sur la pile, le registre des indicateurs, le segment de code [CS] et le registre [IP].

INTO - Interrupt on Overflow
Syntaxe : INTO
INTO est une interruption conditionnelle. Cette instruction déclenche l'interruption 4 lorsque l'indicateur [OF], indicateur de debordement, est positionné a 1.

INVD - Invalidate Cache
Syntaxe : INVD
L'instruction INVD, efface la memoire cache interne et externe du processeur (80486).

INVLPG - Invalidate Translation Look-Aside Buffer Entry
Syntaxe : INVLPG Destination
L'instruction INVLPG est liee a l'exploitation des capacites virtuelles du processeur 80486 : a savoir la possibilite d'emuler plusieurs 8086. L' instruction declare invalide un element du "Translation Lookaside Buffer" (TLB), a condition que l'adresse physique complete mentionnee dans destination corresponde a un element du TLB. Cette adresse doit referencer une des zones de memoire virtuelle enregistrees. Sous DOS, sans extension Windows ou de DOS Extender (ex : DOS4GW, GO32...), cette instruction n'a aucun effet...

IRET/IRETD - Interrupt Return
Syntaxe : IRET
IRET est l'instruction de retour d'une interruption : IRET, retire de la pile les donnees sauvegardees par l'instruction INT (le contenu de [CS:IP], et le registre des indicateurs) puis rend la main au programme.

Jxx - Jump Instructions Table
Syntaxe : Jxx Destination

JA ou JNBE :
Le saut vers la destination est effectue si le resultat d'une operation logique non-signee est "superieur". C'est a dire si les indicateurs [ZF] et [CF] sont a zero.

JAE ou JNB ou JNC :
Le saut vers la destination est effectue si le resultat d'une operation logique non signee est superieur ou egal. C'est a dire si l'indicateur [CF] est a zero.

JB ou JNAE ou JC :
Le saut vers la destination est effectue si le resultat d'une operation logique non signee est inferieur. C'est a dire si [CF] est a 1.

JBE ou JNA :
Le saut vers la destination est effectue si le resultat d'une operation logique non signee est inferieur ou egal. C'est a dire si l'indicateur [CF] et l'indicateur [ZF] sont a zero.

JE ou JZ :
Le saut vers la destination est effectue si le resultat d'une operation logique est egal. C'est a dire si l'indicateur [ZF] est a 1.

JG ou JNLE :
Le saut vers la destination est effectue si le resultat d'une operation logique signee est superieur. C'est a dire si l'indicateur [ZF] et l'indicateur [SF] sont a zero.

JGE ou JNL :
Le saut vers la destination est effectue si le resultat d'une operation logique signee est superieur ou egal. C'est a dire si l'indicateur [SF] et l'indicateur [OF] sont egaux. JL ou JNGE :
Le saut vers la destination est effectue si le resultat d'une operation logique signee est inferieur. C'est a dire si l'indicateur [SF] et l'indicateur [OF] sont differents.

JLE ou JNG :
Le saut vers la destination est effectue si le resultat d'une operation logique signee est inferieur ou egal. C'est a dire si les indicateurs [SF] et [OF] sont differents et que l'indicateur [ZF] est a 1.

JNE ou JNZ :
Le saut vers la destination est effectue si le resultat d'une operation logique signee est different. C'est a dire si l'indicateur [ZF] est a zero.

JNO :
Le saut vers la destination est effectue si le resultat d'une operation logique n'a pas provoque de debordement. C'est a dire si l'indicateur [OF] est a zero.

JNP ou JPO :
Le saut vers la destination est effectue si le resultat d'une operation logique possede une parite impaire. C'est a dire si l'indicateur [PF] est a zero.

JNS :
Le saut vers la destination est effectue si le resultat d'une operation logique est positif. C'est a dire si l'indicateur [SF] est a zero.

JO :
Le saut vers la destination est effectue si le resultat d'une operation logique a provoque un debordement. C'est a dire si l'indicateur [OF] est a 1.

JP ou JPE :
Le saut vers la destination est effectue si le resultat d'une operation logique possede une parite paire. C'est a dire si l'indicateur [PF] est a 1.

JS :
Le saut vers la destination est effectue si le resultat d'une operation logique est negatif. C'est a dire si l'indicateur [SF] est a 1.

JCXZ :
Le saut vers la destination est effectue si le registre [CX] contient la valeur zero.

JECXZ :
Le saut vers la destination est effectue si le registre [ECX] contient la valeur zero.
Rem : C'est l'equivalent de l'instruction JCXZ pour les processeurs 32 bits.

JMP - Unconditional Jump
Syntaxe : JMP Destination
L'instruction JMP effectue un saut inconditionnel vers la destination, c'est a dire que le saut est effectue, quelque soient les conditions.

LAHF - Load Register AH From Flags
Syntaxe : LAHF
Charge en AH, l'octet de poids faible du registre des indicateurs.

LAR - Load Access Rights
Syntaxe : LAR

LDS - Load Pointer Using DS
Syntaxe : LDS Destination, Source
Transfert dans [DS] et dans un registre de destination (de 16 bits), le contenu de la memoire adresse par la source.

LEA - Load Effective Address
Syntaxe : LEA destination, Source
Charge l'adresse effective d'un mot memoire (la source) dans le registre de destination 16 bits, c'est a dire l'offset de la source.

LEAVE - Restore Stack for Procedure Exit
Syntaxe : LEAVE
C'est l'instruction en retour a ENTER, elle defait le cadre de pile installe precedemment. Le pointeur de pile [BP] est ainsi restaure.
Rem : LEAVE n'enleve pas les variables locales de la pile et ne met pas a jour le niveau d'imbrication.

LES - Load Pointer Using ES
Syntaxe : LES Destination , Source
Transfere dans [ES] et dans un registre de destination a 16 bits le contenu de la memoire adressee par la source. Les deux premiers octets de memoire sont copies de la source vers le registre de destination. Les deux derniers octets de memoire sont copies dans le registre de segment [ES].

LFS - Load Pointer Using FS
Syntaxe : LFS Destination, Source
Transfere dans [FS] et dans un registre de destination a 16 bits le contenu de la memoire adressee par la source. Les deux premiers octets de memoire sont copies de la source vers le registre de destination. Les deux derniers octets de memoire sont copies dans le registre de segment [FS].

LGDT - Load Global Descriptor Table
Syntaxe : LGDT

LIDT - Load Interrupt Descriptor Table
Syntaxe : LIDT

LGS - Load Pointer Using GS
Syntaxe : LGS Destination, Source
Transfere dans [GS] et dans un registre de destination a 16 bits le contenu de la memoire adressee par la source. Les deux premiers octets de memoire sont copies de la source vers le registre de destination. Les deux derniers octets de memoire sont copies dans le registre de segment [GS].

LLDT - Load Local Descriptor Table
Syntaxe : LLDT

LMSW - Load Machine Status Word
Syntaxe : LMSW

LOCK - Lock Bus
Syntaxe : LOCK
LOCK, en bloquant le bus de donnees, empeche toute interruption de l'instruction qui suit. A la suite de l'instruction, le bus de donnee est a nouveau libre.

LODS - Load String (Byte, Word or Double)
Syntaxe : LODS
Charge dans l'accumulateur, le contenu de la memoire d'adresse [DS :SI]. Selon la position de [DF], l'instruction provoque une incrementation de [SI] (Si [DF] est a zero) ou une decrementation de [SI] (Si [DF] est a 1).

LOOP - Decrement CX and Loop if CX Not Zero
Syntaxe : LOOP Destination
Provoque un branchement vers la destination jusqu'a ce que le registre [CX] contienne la valeur zero. Avant chaque execution de l'instruction, le contenu de [CX] est decremente de 1. La distance de branchement doit etre situee dans un rayon de 127 octets.

LOOPE/LOOPZ - Loop While Equal / Loop While Zero
Syntaxe : LOOPE Destination / LOOPZ Destination
Provoque un branchement vers la destination jusqu'à ce que le registre [CX] contienne la valeur 0 et que l'indicateur [ZF] soit a zero.

LOOPNZ/LOOPNE - Loop While Not Zero / Loop While Not Equal
Syntaxe : LOOPNZ Destination / LOOPNE Destination
Provoque un branchement vers la destination jusqu'à ce que le registre [CX] contienne la valeur zero et que l'indicateur [ZF] soit a 1.

LSL - Load Segment Limit
Syntaxe : LSL

LSS - Load Pointer Using SS
Syntaxe : LSS Destination, Source
Transfere dans [SS] et dans un registre de destination de 16 bits, le contenu de la memoire adressee par la source. Les deux premiers octets de memoire sont copies de la source vers le registre de destination. Les deux dernier octets de memoire sont copies dans le registre de segment [SS].

LTR - Load Task Register
Syntaxe : LTR

MOV - Move Byte or Word
Syntaxe : MOV Destination, Source
Deplace les donnees entre registres et memoires, octet par octet (8bits), mot par mot (16 bits) ou, pour les processeurs 32 bits, double mot par double mot (32 bits). Le contenu de la source est copie dans la destination sans etre change.
Rem : Les combinaisons suivantes seules sont autorisees :

MOV Registre, Registre
MOV Registre, Memoire
MOV Registre, Constante
MOV Memoire, Constante
MOV Registre de segment, Registre
MOV Registre, Registre de segment
MOV Memoire, Registre de segment

MOVS - Move String (Byte or Word)
Syntaxe : MOVS
Transfere le contenu de la memoire adressee par [DS :SI] dans la memoire adressee par [ES :DI]. Selon la position de l'indicateur [DF], l'instruction provoque une incrementation ou ou une decrementation de [DI] et de [SI] (si [DF] est a zero, on a incrementation, sinon decrementation).
MOVSB est destine a traiter un octet.
MOVSW est destine a traiter un mot (type word) complet.
MOVSD est destine a traiter un double mot.

MOVSX - Move with Sign Extend
Syntaxe : MOVSX Destination, Source
Etend a 32 bits le nombre signe contenu dans la source et transfere le resultat dans la destination.

MOVZX - Move with Zero Extend
Syntaxe : MOVZX Destination, Source
Etend a 32 bits le nombre non signe contenu dans la source et transfere le resultat dans la destination qui doit etre un registre d'au moins 16 bits.

MUL - Unsigned Multiply
Syntaxe : MUL Source
Multiplie une destination implicite par la source, les deux nombres etant consideres non-signes. Le resultat est transfere dans la destination qui est le registre [AX] ou le couple de registres [DX :AX], ou pour les processeurs 32 bits, le couple [EDX :EAX]. La source peut etre de 8, 16 ou 32 bits. MUL effectue le produit ordinaire des deux nombres et influence le registre des indicateurs, les indicateurs [OF] et [CF] sont positionnes a 0 si le resultat d'une multiplication par une source de 8 bits tient dans [AL], ou si le resultat d'une multiplication par une source de 16 bits tient dans le registre [AX], ou encore, pour les processeurs 32 bits, si le resultat d'une multiplication par une source de 32 bits tient dans le registre [EAX].

NEG - Two's Complement Negation
Syntaxe : NEG Destination
Forme le complement a deux d'un nombre : C'est a dire, transforme la destination en son oppose.

NOP - No Operation (90h)
Syntaxe : NOP
Ne fait rien... Mais alors, rien du tout... Cela prend un certain temps (tres court)...

NOT - One's Compliment Negation (Logical NOT)
Syntaxe : NOT Destination
Inversion logique de la destination : chaque bit de la destination est change en son oppose.

OR - Inclusive Logical OR
Syntaxe : OR Destination, Source
Destination et source sont combines bit a bit par l'operateur logique OU : Tout bit de destination est mis a 1 si le bit de source correspondant est a 1, sinon, il reste inchange.

OUT - Output Data to Port
Syntaxe : OUT Destination, Source
OUT ecrit la valeur de la source dans le port d'adresse Destination. La source est toujours l'accumulateur, soit [AL] pour une valeur de 8bits ou [AX] pour une valeur de 16 bits.

OUTS - Output String to Port
Syntaxe : OUTS
Ecrit une chaine de caractere dans un port d'entree/sortie. La chaine de caractere est situee en [DS:SI] et l'adresse du port en [DX].

POP - Pop Word off Stack
Syntaxe : POP Destination
Permet de restaurer des donnees stockees sur le dessus de la pile (il s'agit d'un depilage). La destination est une zone memoire ou un registre de 16 ou 32 bits.

POPA/POPAD - Pop All Registers onto Stack
Syntaxe : POPA / POPAD
POPA depile tous les registres de 16 bits ( = POP DI ; POP SI ; POP BP ; POP SP ; POP BX ; POP DX ; POP CX ; POP AX )
POPAD depile tous les registres de 32 bits.

POPF/POPFD - Pop Flags off Stack
Syntaxe : POPF / POPFD
POPF depile le contenu 16 bits du registre des indicateurs.
POPFD depile le contenu 32 bits du registre des indicateurs.

PUSH - Push Word onto Stack
Syntaxe : PUSH Source
PUSH place sur la pile, les donnees recuperees dans la source de 16 ou 32 bits ( memoire ou registre ).

PUSHA/PUSHAD - Push All Registers onto Stack
Syntaxe : PUSHA / PUSHAD
PUSHA place sur la pile tous les registres de 16 bits ( = PUSH AX ; PUSH CX ; PUSH DX ; PUSH BX ; PUSH SP ; PUSH BP ; PUSH SI ; PUSH DI )
PUSHAD place sur la pile tous les registres de 32 bits.

PUSHF/PUSHFD - Push Flags onto Stack
Syntaxe : PUSHF / PUSHFD
PUSHF place sur la pile, le contenu 16 bits du registre des indicateurs.
PUSHFD place sur la pile, le contenu 32 bits du registre des indicateurs.

RCL - Rotate Through Carry Left
Syntaxe : RCL Destination, Source
Effectue la rotation a gauche des bits de la destination, du nombre de position mentionne par la source : l'operation RCL destination, 1 deplace tous les bits de la destination d'une position vers la gauche, le premier bit etant place dans [CF] apres que le contenu de celui-ci ait ete place dans le bit 0 de la destination.

RCR - Rotate Through Carry Right
Syntaxe : RCR Destination, Source
Effectue la rotation a droite des bits de la destination, du nombre de position mentionne par la source : l'operation RCR destination, 1 deplace tous les bits de la destination d'une position vers la droite, le dernier bit etant place dans [CF] apres que le contenu de celui-ci ait ete place dans le bit le plus eleve de la destination.

REP - Repeat String Operation
Syntaxe : REP
REP est utilise avec les instructions MOVS, STOS, INS ou OUTS. L'instruction prefixee est repetee jusqu' a ce que [CX] soit a 0 (A chaque iteration [CX] est decremente de 1) .

REPE/REPZ - Repeat Equal / Repeat Zero
Syntaxe : REPE / REPZ
Meme fonctionnement que REP, mais, ces instructions interrompent la boucle des que [ZF] est a zero. C'est a dire que que REPZ ou REPE repete l'instruction tant que [CX] est different de zero et que [ZF] est a un.

REPNE/REPNZ - Repeat Not Equal / Repeat Not Zero
Syntaxe : REPNE / REPNZ
Meme fonctionnement que REPNE, mais, ces instructions interrompent la boucle des que [ZF] est a un. C'est a dire que que REPNZ ou REPNE repete l'instruction tant que [CX] est different de zero et que [ZF] est a zero.

RET/RETF - Return From Procedure
Syntaxe : RET / RETF
Met fin au sous programme appele par CALL. RET recupere sur la pile l'offset de l'adresse du programme appelant et le segment de code en cas d'appel long (FAR).
Rem : Dans , le sous programme, on doit gérer la pile avec precision : en effet, elle contient l'adresse de retour au programme et les donnees se trouvant au dessus de la pile a l'appel de RET sont consideres comme cette adresse...

ROL - Rotate Left
Syntaxe : ROL Destination, Source
Effectue la rotation a gauche des bits de la destination, du nombre de position mentionne par la source : l'operation ROL destination, 1 deplace tous les bits de la destination d'une position vers la gauche, le premier bit etant place dans [CF] apres que le contenu de celui-ci ait ete place dans le bit 0 de la destination.

ROR - Rotate Right
Syntaxe : RCR Destination, Source
Effectue la rotation a droite des bits de la destination, du nombre de position mentionne par la source : l'operation ROR destination, 1 deplace tous les bits de la destination d'une position vers la droite, le dernier bit etant place dans [CF] apres que le contenu de celui-ci ait ete place dans le bit le plus eleve de la destination.

SAHF - Store AH Register into FLAGS
Syntaxe : SAHF
Transfere le contenu du registre [AH] dans l'octet de poids faible du registre des indicateurs.

SAL/SHL - Shift Arithmetic Left / Shift Logical Left
Syntaxe : SAL Destination, Source / SHL Destination, Source
Decale vers la gauche les bits de la destination du nombre de positions indique par la source. L'indicateur [CF] est utilise dans le decalage : Le bit le plus a gauche est transfere dans cet indicateur, celui plus a droite est mis a zero.
Rem : Cette instruction est ideale pour multiplier la source par une puissance de 2, en effet, elle est beaucoup plus rapide que l'instruction MUL. La source represente alors la puissance de 2 par laquelle est multipliee la destination.

SAR - Shift Arithmetic Right
Syntaxe : SAR Destination, Source
Decale vers la droite les bits de la destination du nombre de positions indique par la source. L'indicateur [CF] est utilise dans le decalage : Le bit le plus a droite est transfere dans cet indicateur.

SBB - Subtract with Borrow/Carry
Syntaxe : SBB Destination, Source
Retranche la source de la destination et stocke le resultat dans la destination. L'indicateur de retenue [CF] est retranche de la destination : s'il est a un, le resultat est decremente de un.
Rem : La source et la destination doivent etre de même taille : 8, 16 ou 32 bits.

SCAS - Scan String (Byte, Word or Doubleword)
Syntaxe : SCAS
Compare une chaine de caracteres situee a l'adresse [ES:DI] avec le contenu de l'accumulateur (le registre [AL]). Pour effectuer une comparaison, bit a bit, on utilise SCASB, pour une comparaison mot par mot (type word), on utilise SCASW et pour une comparaison double-mot par double-mot (type double), on utilise SCASD ; la valeur a comparee devant se trouver respectivement dans [AL], [AX] ou [EAX]. Le resultat de la comparaison obeit aux memes regles qu'avec l'instruction CMP. Selon la position de [DF], l'instruction incremente ou decremente le registre [DI].

SETAE/SETNB - Set if Above or Equal / Set if Not Below
SETAE Destination / SETNB Destination
Met a 1 la destination si [CF] est a zero.

SETB/SETNAE - Set if Below / Set if Not Above or Equal
Syntaxe : SETB Destination / SETNAE Destination
Met a 1 la destination si [CF] est a 1.

SETBE/SETNA - Set if Below or Equal / Set if Not Above
Syntaxe : SETBE Destination / SETNA Destination
Met a 1 la destination si [CF] ou [ZF] est a 1.

SETE/SETZ - Set if Equal / Set if Zero
Syntaxe : SETE Destination / SETZ Destination
Met a 1 la destination si [ZF] est a 1.

SETNE/SETNZ - Set if Not Equal / Set if Not Zero
Syntaxe : SETNE Destination / SETNZ Destination
Met a 1 la destination si [ZF] est a zero.

SETL/SETNGE - Set if Less / Set if Not Greater or Equal
Syntaxe : SETL Destination / SETNGE Destination
Met a 1 la destination si [SF] est different de [OF].

SETGE/SETNL - Set if Greater or Equal / Set if Not Less
Syntaxe : SETGE Destination / SETNL Destination
Met a 1 la destination si [SF] est egal a [OF].

SETLE/SETNG - Set if Less or Equal / Set if Not greater or Equal
Syntaxe : SETLE Destination / SETNG Destination
Met a 1 la destination si [ZF] est a 1 ou si [SF] est different de [OF].

SETG/SETNLE - Set if Greater / Set if Not Less or Equal
Syntaxe : SETG Destination / SETNLE Destination
Met la destination a 1 si [ZF] est a zero ou si [SF] est egal a [OF].

SETS - Set if Signed
Syntaxe : SETS Destination
Met la destination a 1 si [SF] est a 1.

SETNS - Set if Not Signed
Syntaxe : SETNS Destination
Met la destination a 1 si [SF] est a 0.

SETC - Set if Carry
Syntaxe : SETC Destination
Met a 1 la destination si [CF] est a zero.

SETNC - Set if Not Carry
Syntaxe : SETNC Destination
Met a 1 la destination si [CF] est a zero.

SETO - Set if Overflow
Syntaxe : SETO Destination
Met la destination a 1 si [OF] est a 1.

SETNO - Set if Not Overflow
Syntaxe : SETNO Destination
Met a 1 la destination si [OF] est a zero.

SETP/SETPE - Set if Parity / Set if Parity Even
Syntaxe : SETP Destination / SETPE Destination
Met a 1 la destination si [PF] est a 1.

SETNP/SETPO - Set if No Parity / Set if Parity Odd
Syntaxe : SETNP Destination / SETPO Destination
Met a 1 la destination si [PF] est a zero.

SGDT - Store Global Descriptor Table
Syntaxe : SGDT

SIDT - Store Interrupt Descriptor Table
Syntaxe : SIDT

SHL - Shift Logical Left
Syntaxe : SHL Destination, Source
Decale vers la gauche les bits de destination du nombre de positions indique par la source. Le decalage utilise l'indicateur [CF] : Le bit le plus a gauche est transfere dans cet indicateur, celui plus a droite est mis a zero.

SHR - Shift Logical Right
Syntaxe : SHR Destination, Source
Decale vers la droite les bits de destination du nombre de positions indique par la source. Le decalage utilise l'indicateur [CF] : Le bit le plus a droite est transfere dans cet indicateur, l'ancienne valeur de [CF] est copiee dans le bit le plus eleve de la destination.

SHLD/SHRD - Double Precision Shift
Syntaxe : SHLD Destination, Source1, Source2
Decale vers la gauche les bits de Source1 du nombre de positions donne par Source2, le resultat etant place dans la destination.

SLDT - Store Local Descriptor Table
Syntaxe : SLDT

SMSW - Store Machine Status Word
Syntaxe : SMSW

STC - Set Carry
Syntaxe : STC
Met l'indicateur [CF] a un, quelles que soient les conditions.

STD - Set Direction Flag
Syntaxe : STD
Met l'indicateur [DF] a un, quelles que soient les conditions.
Rem : Après l'utilisation de cette instruction, les instructions de traitement de chaines de caracteres operent de la droite vers la gauche.

STI - Set Interrupt Flag (Enable Interrupts)
Syntaxe : STI
Met l'indicateur [IF] a un, quelles que soient les conditions.
Rem : Cette instruction permet aux interruptions masquable d'etre executees, elle est employee après l'instruction CLI, qui empeche leur execution.

STOS - Store String (Byte, Word or Doubleword)
Syntaxe : STOS
Stocke le contenu de l'accumulateur dans la memoire d'adresse [ES:DI]. Le registre [DI] est incremente si [DF] est a 0, sinon, il est decremente.
Pour travailler avec des donnees 8 bits, on utilise STOSB, c'est alors [AL] qui est transfere dans [ES:DI].
Pour travailler avec des donnees 16 bits, on utilise STOSW, c'est alors [AX] qui est transfere dans [ES:DI].
Pour travailler avec des donnees 32 bits, on utilise STOSD, c'est alors [EAX] qui est transfere dans [ES:DI].

STR - Store Task Register
Syntaxe : STR

SUB - Subtract
Syntaxe : SUB Destination, Source
Retranche la source de la destination et stocke le resultat dans la destination. Contrairement a SBB, cette instruction ne prend pas en compte l'indicateur de retenue [CF]. Cette instruction permet d'effectuer une soustraction ordinaire. La source et la destination doivent etre de même taille : 8, 16 ou 32 bits.

TEST - Test For Bit Pattern
Syntaxe : TEST Destination, Source
Effectue un ET binaire entre la source et la destination , sans modifier leur contenu, en agissant seulement sur le registre des indicateurs. Le test effectue, on utilise les branchements conditionnels (JXX) habituels pour tester le resultat.
Rem : Cette instruction est surtout utilisee pour tester un bit isole de la destination. VERR - Verify Read

VERW - Verify Write

WAIT/FWAIT - Event Wait
Syntaxe : WAIT
Cette instruction est utilisee avec le coprocesseur arithmetique : le processeur se stoppe jusqu'a un signal sur la ligne TEST qui est systematiquement envoye par le coprocesseur lorsqu'il a termine son traitement.

WBINVD - Write-Back and Invalidate Cache
Syntaxe : WBINVD
Efface le contenu de la memoire cache interne du processeur (a partir du 80486). Le contenu de la memoire cache externe est renvoye dans la memoire centrale avant d'etre efface.

XCHG - Exchange
Syntaxe : XCHG Destination, Source
Echange le contenu de la source et de la destination.
Rem : seules les combinaisons suivantes sont autorisees :

XCHG Registre, Registre
XCHG Registre, Memoire
XCHG Memoire, Registre

XLAT/XLATB - Translate
Syntaxe : XLAT / XLATB
Très apparente a LODS, l'instruction XLAT (XLATB pour MASM) ne traite que des octets : elle charge en [AL] le contenu de la memoire d'adresse [BX+AL], le segment etant stocke dans [DS].

XOR - Exclusive OR
Syntaxe : XOR Destination, Source
Effectue un OU exclusif bit a bit entre la source et la destination : Si le bit correspondant de la source est different du bit de destination, celui ci est mis a un, sinon, il est mis a zero.


Toutes les pages referencees ici ont ete crees par Gael LE MAHEC.
Pour m'écrire : Ce site est normalement aussi lisible sur "Internet Explorer" que sur "Netscape Navigator"... (Ceci pour les resolutions suivantes : 640*480 800*600 et 1024*768) L'idéal étant 800*600 en 65536 couleurs...