Université Mouloud Mammeri, Tizi Ouzou
Faculté de Génie Electrique et d'Informatique
Département d’Automatique
Module : Microprocesseurs et microcontrôleurs
Promotion : Licence S5, Année : 2023/2024
Jeu d'instruction du 8086
Instructions de transfert de données
Mnémonique Dest Source Sens Opération effectuée Exemples
MOV R R Move Copie le second opérande dans le MOV AX,BX
R MEM premier MOV BX,LABEL
MEM R MOV [DI],CX
R DATA MOV CL,15H
MEM DATA
RSEG R16
RSEG MEM16
R16 RSEG
MEM RSEG
XCHG R R Exchange Permute le contenu des deux XCHG AL,BL
MEM R opérandes XCHG LABEL, AX
LAHF Load Flags into Copie le registre des drapeaux dans le LAHF
AH registre AH
SAHF Store AH into Copie le registre AH dans le registre SAHF
Flags des drapeaux
LEA R16 MEM16 Load Effective Charge l'adresse du second opérande LEA BX,[BP]
Address dans le premier
LDS R16 MEM32 Load DS with Charge un pointeur de type far LDS SI,POINTEUR
Far Pointer (lointain) dans le registre DS
(segment) et l'opérande (décalage)
(MEM) R16 et (MEM+2) DS
LES R16 MEM32 Load ES with Charge un pointeur de type far LDS DI,POINTEUR
Far Pointer (lointain) dans le registre ES (segment)
et l'opérande (décalage)
(MEM) R16 et (MEM+2) ES
PUSH R16 Push a Value Empile le registre opérande PUSH SI
RSEG onto the Stack PUSH ES
MEM PUSH LABEL [SI]
PUSHF Push Flags Empile le registre des drapeaux PUSHF
Register onto (Registre d’état) PILE
the Stack
POP R16 Pop a Value Dépile vers le registre opérande POP DX
RSEG from the Stack POP DS
MEM POP LABEL
POPF Pop Flags Dépile vers le registre des drapeaux POPF
Register from
the Stack
IN A PORT Input from Port Lit depuis un port IN AX , 204H
A DX La destination est le registre AL/AX IN AL,DX
OUT PORT A Écrit vers un port OUT 22,AX
Output to Port
DX A La source est le registre AX/AL OUT DX ,AX
Instructions arithmétiques
Mnémonique Dest Source Sens Opération effectuée Exemples
ADD R R Ajoute deux entiers ADD CX,DX
R MEM Le résultat remplace le premier ADD DI,LABEL
MEM R Add opérande ADD LABEL,CL
R DATA ADD CL,36
MEM DATA ADD LABEL,54
ADC R R Add with Carry Ajoute deux entiers, plus le drapeau de ADC AX,SI
R MEM retenue ADC BX,LABEL
MEM R Le résultat remplace le premier ADC LABEL,CL
R DATA opérande ADC AX,200
MEM DATA ADC LABEL,75
DAA Decimal Adjust Correction décimale sur l’addition DAA
AL after Ajuste le registre AL après addition
Addition (mode décimal)
Utilisé avec le codage BCD compacté
AAA ASCII Ajuste le registre AL après AAA
Adjust AL addition (mode ASCII)
after
Addition
AAD ASCII Ajuste le registre AX après AAD
Adjust AX division (mode ASCII)
after Utilisé avec le codage BCD non
Division compacté
AAM ASCII Ajuste le registre AX après AAM
Adjust AX multiplication (mode ASCII)
after Utilisé avec le codage BCD non
Multiplicatio compacté
n
AAS ASCII Ajuste le registre AL après AAS
Adjust AL soustraction (mode ASCII)
after Utilisé avec le codage BCD non
Subtraction compacté
SUB R R Subtract Soustrait deux entiers SUB AX,CX
R MEM Le résultat remplace le premier SUB BX,LABEL
MEM R opérande SUB [BD-4],CL
R DATA SUB SI,4520
MEM DATA SUB LABEL,670
SBB R R Integer Soustrait deux entiers, ajoute le SBB CX,AX
R MEM Subtraction drapeau de retenue SBB DI,LABEL
MEM R with Borrow Le résultat remplace le premier SBB LABEL,BX
R DATA opérande SBB BXL,16
MEM DATA SBB LABEL,16
DAS Decimal Adjust Correction décimale sur la DAS
AL after soustraction
Subtraction Ajuste le registre AL après
soustraction (mode décimal)
Utilisé avec le codage BCD compacté
MUL R8 Unsigned Multiplie par un entier non signé MUL BL
R16 Multiply Le facteur est le registre AL/AX et le MUL LABEL
MEM8 produit est écrit dans AX/DX:AX
MEM16
IMUL R8 Signed Multiplie par un entier signé IMUL CX
R16 Multiply Le facteur est le registre AL/AX et le IMUL LABEL
MEM8 produit est écrit dans AX/DX:AX
MEM16
DIV R8 Unsigned Divise par un entier non signé DIV BX
R16 Divide Le dividende est le registre DIV LABEL
MEM8 AX/DX:AX, le quotient est écrit dans
MEM16 AL/AX et le reste dans AH/DX
IDIV R8 Signed Divide Divise par un entier signé IDIV CL
R16 Le dividende est le registre IDIV LABEL
MEM8 AX/DX:AX, le quotient est écrit dans
MEM16 AL/AX et le reste dans AH/DX
2
Instructions logiques
Mnémonique Dest Source Sens Opération effectuée Exemples
OR R R Logical Effectue un OU logique inclusif des OR BL,AL
R MEM Inclusive OR opérandes OR BX,LABEL
MEM R Le résultat remplace le premier OR LABEL,CL
R DATA opérande OR AL,A0H
MEM DATA OR LABEL,04
XOR R R Logical Effectue un OU logique exclusif des XOR BL,ALI
R MEM exclusive OR opérandes XOR BX,LABEL
MEM R Le résultat remplace le premier XOR LABEL,DX
R DATA opérande XOR SI,1200H
MEM DATA XOR LABEL,E5H
AND R R Logical AND Effectue un ET logique des opérandes AND AL,BL
R MEM Le résultat remplace le premier AND CX,LABEL
MEM R opérande AND LABEL,BL
R DATA AND AX,10FH
MEM DATA AND LABEL,0BH
NOT R One's Effectue un NON logique (négation NOT BX
MEM Complement par complément à un) NOT LABEL
Negation Le résultat remplace l'opérande
NEG R Two's Calcule l'opposé de l'opérande NEG AL
MEM Complement (négation par complément à deux) NEG MEM
Negation Le résultat remplace l'opérande
INC R Increment by 1 Incrémente un entier INC CL
MEM Ajoute un à l'opérande INC LABEL
DEC R Decrement by 1 Décrémente un entier DEC AX
MEM Ote un à l'opérande DEC LABEL
TEST R R Logical Compare deux opérandes (de façon TEST SI,DI
R MEM Compare logique) TEST SI,LABEL
R DATA Positionne les drapeaux en fonction du TEST AL,0FH
MEM DATA résultat du ET logique entre les TEST
opérandes LABEL,0BH
CMP R R Compare Compare deux entiers (de façon CMP CX,AX
R MEM arithmétique) CMP DH,[BP-2]
MEM R Positionne les drapeaux en fonction de CMP LABEL,SI
R DATA la différence entre les opérandes CMPAL,40
MEM DATA CMP LABEL,0BH
Décalages et rotations
Mnémonique Dest Source Sens Opération effectuée Exemples
SAL R 1 Shift Décalage arithmétique vers la gauche SAL BL,1
MEM 1 Arithmectically Même instruction que SHL
R CL Left
MEM CL
SHL R 1 Shift Left Décalage logique vers la gauche SHL DI,CL
MEM 1 Même instruction que SAL SHL LABEL,1
R CL SHL LABEL,CL
MEM CL C 0
SAR R 1 Shift Décalage arithmétique vers la droite SAR DX,1
R CL Arithmectically À ne pas confondre avec SHR SAR DI,CL
MEM 1 Right SAR LABEL,1
MEM CL C SAR LABEL,CL
SHR R 1 Shift Right Décalage logique à droite SHR SI,1
R CL À ne pas confondre avec SAR SHL SI,CL
MEM 1 0 C SHL LABEL,1
MEM CL SHL LABEL,CL
3
ROL R 1 Rotate Left Effectue une rotation vers la gauche
ROL BX,1
R CL ROL BX,CL
MEM 1 C ROL LABEL,1
MEM CL ROL LABEL,CL
ROR R 1 Rotate Right Effectue une rotation vers la droite ROR BL,1
R CL ROR AX,CL
MEM 1 C ROR LABEL,1
MEM CL ROR LABEL,CL
RCL R 1 Rotate through Effectue une rotation à gauche via le RCL AX,1
R CL Carry Left drapeau de retenue RCL AL,CL
MEM 1 C RCL LABEL,1
MEM CL RCL LABEL,CL
RCR R 1 Rotate through Effectue une rotation à droite via le RCR BX,1
R CL Carry Right drapeau de retenue RCR BX,CL
MEM 1 C RCR LABEL,1
MEM CL RCR LABEL,CL
Instructions de branchement
Mnémonique etiq Sens Opération effectuée
JMP Etiq Jump Saute (inconditionnel)
R
JZ / JNZ etiq Jump if Zero / Saut à etiq si le résultat est zéro (Z=1) / différent de
if not Zero zéro (Z=0)
JC / JNC etiq Jump if Carry / Saut à etiq si retenue =1(C=1) / si retenue =0 (C=0)
if not Carry
JO / JNO etiq Jump if Saut à etiq si débordement (O=1)/ si pas de
Overflow/ not débordement (O=0)
Overflow
JP / JNP etiq Jump if Parity / Saut à etiq si l'indicateur parité=1 (P=1) / si
if not Parity l'indicateur parité=0 (P=0)
JS / JNS etiq Jump if Sign / Saut à etiq si résultat négatif (S=1)/ si résultat positif
if not Sign (S=0)
JA / JNBE etiq Jump if Above/ Saut à etiq si le résultat est >0 (non signé)
if not Bellow or
Equal
JAE / JNB etiq Jump if Above Saut à etiq si le résultat est >=0 (non signé)
or Equal/ if not
Bellow
JB /JNAE etiq Jump if Saut à etiq si le résultat est <0 (non signé)
Bellow/ if not
Above or Equal
JBE / JNA etiq Jump if Bellow Saut à etiq si le résultat est <=0 (non signé)
or Equal/ if not
Above
JG / JNLE etiq Jump if Grater/ Saut à etiq si le résultat est >0 (signé)
if not Less or
Equal
JGE / JNL etiq Jump if Grater Saut à etiq si le résultat est >=0 (signé)
or Equal/if not
Less
JL /JNGE etiq Jump if Less/ Saut à etiq si le résultat est <0 (signé)
JLE / JNG etiq Jump if Less or Saut à etiq si le résultat est <=0 (signé)
Equal/ if not
Grater or Equal
JCXZ etiq Saut à etiq si CX = 0
LOOP etiq Décrémente CX et saut à etiq si CX≠ 0
CALL etiq Call Procedure Saut à sous-programme pointé par etiq
RET Return from Revient d'une procédure appelée avec décalage seul
Procedure
RET N Retour de sous-programme puis (SP) = (SP) + N
RETF Return from Revient d'une procédure appelée avec segment et
Far Procedure décalage
4
Instructions de commande du 8086
Mnémonique Sens Opération effectuée Exemple Indicateurs affectés
INT N Call to Appelle l'interruption identifiée par l'opérande INT12 I=0 T=0
Interrupt
Procedure
INTO Call to Interruption interne si indicateur O =1 INTO I=0 T=0
Interrupt
Procedure if
Overflow
IRET Interrupt Retour d’interruption IRET Indicateurs
Return restitués
HLT Halt Entre en état d'arrêt jusqu'à réception d'une HLT
interruption
LOCK Assert LOCK# Interdiction d’accès aux BUS LOCK CLC
Signal Prefix
WAIT Wait Génère états d’attente tant que TEST=1 WAIT
CLC Clear Carry Met à 0 l’indicateur Carry CLC C=0
Flag
STC Set Carry Flag Met à 1 l’indicateur Carry STC C=1
CMC Complement Complément à 1 du Carry CMC C= NON C
Carry Flag
CLI Clear Interrupt Met à 0 l’indicateur I CLI I=0
Flag
STI Set Interrupt Met à 1 l’indicateur I STI I =1
Flag
CLD Clear Direction Met à 0 l’indicateur D CLD D=0
Flag
STD Set Direction Met à 1l’indicateur D STD D=1
Flag
NOP No Operation Pas d’opération NOP