Les instructions duµP 8086
Le 8086 offre 89 types d’instructions (89
mnémoniques) de base qu’on peut diviser en 6
groupes :
Les instructions de transfert des données.
Les instructions arithmétiques.
Les instructions logiques.
Les instructions de traitement de chaînes de
données.
Les instructions de rupture de séquence.
Les instructions de contrôle de l’état du processeur.
2.
Les instructions duµP 8086
1- Les instructions transfert données :
MOV destination, source : (destination)←(source).
Destination Source Exemple
Registre 8 bits
Mémoire 8 bits
Registre 8 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre de travail 16 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre de segment (sauf CS)
Registre de segment (sauf CS)
Registre 8 bits
Mémoire 8 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre 8 bits
Registre 8 bits
Mémoire 8 bits
Registre de travail 16 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre de segment
Registre de segment
Registre de travail
Mémoire 16 bits
Valeur immédiate 8 bits
Valeur immédiate 8 bits
Valeur immédiate 16 bits
Valeur immédiate 16 bits
MOV AL,BL
MOV [200],DL
MOV CL,[200]
3.
Les instructions duµP 8086
XCHG registre, source : (registre)↔(source).
C’est l’échange du contenu du registre et de la
source.
Registre Source
Registre 8 bits
Registre 8 bits
Registre de travail 16 bits
Registre de travail 16 bits
Registre 8 bits
Mémoire 8 bits
Registre de travail 16 bits
Mémoire 16 bits
4.
Les instructions duµP 8086
PUSH source : (la pile)←(source).
POP destination : (destination)←(la pile)
source destination
Registre de travail 16 bits
Mémoire (mot)
Registre de segment
Registre de travail 16 bits
Mémoire (mot)
Registre de segment (sauf CS)
5.
Les instructions duµP 8086
LAHF
Place l’octet de poids faible du registre d’état
dans AH :
AH←
SAHF
Place le contenu de AH dans l’octet de poids
faible du registre d’état.
SF ZF X AF X PF X CF
6.
Les instructions duµP 8086
PUSHF
Empile le registre d’état FLAGS (au complet).
POPF
dépile le registre d’état.
7.
Les instructions duµP 8086
LEA registre de travail, déplacement dans un
segment
Cette instruction permet de placer dans un
registre de travail 16 bits le résultat du calcul
du déplacement généré par l’un des modes
d’adressage.
8.
Les instructions duµP 8086
IN accumulateur, adresse du port : lecture d’un
port.
Out adresse du port, accumulateur : écriture d’un
port.
Ce sont les instructions de transfert avec les
entrées/sorties
L’accumulateur est AX pour les mots, AL pour les
octets.
L’adresse du port est :
Soit la valeur de cette adresse sur un octet
Soit DX (le contenu de DX)
9.
Les instructions duµP 8086
2- Les instructions arithmétiques :
ADD destination, source : (destination) ←
(destination) + (source)
Destination Source Exemple
Registre 8 bits
Mémoire 8 bits
Registre 8 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre de travail 16 bits
Registre 8 bits
Mémoire 8 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre 8 bits
Registre 8 bits
Mémoire 8 bits
Registre de travail 16 bits
Registre de travail 16 bits
Mémoire 16 bits
Valeur immédiate 8 bits
Valeur immédiate 8 bits
Valeur immédiate 16 bits
Valeur immédiate 16 bits
ADD AL, BL
ADD [200], BL
ADD BL,[400]
10.
Les instructions duµP 8086
ADC destination, source : (destination) ←
(destination) + (source) + (CF)
SUB destination, source : (destination) ←
(destination) - (source)
SBB destination, source : (destination) ←
(destination) - (source) - (CF)
CMP destination, source : effectue
(destination) - (source) et positionne les
indicateurs en conséquence, le résultat n’est
pas conservé.
11.
Les instructions duµP 8086
CBW : conversion d’un octet en mot, c’est
l’extension de signe de AL dans AX.
CWD : conversion de mot en double mot, c’est
l’extension de signe de AX dans DX. Le double
mot est DX poids fort, AX poids faible.
L’ancien contenu de DX est perdu.
12.
Les instructions duµP 8086
INC destination : (destination) ← (destination) +1
DEC destination : (destination) ← (destination) -1
NEG destination : (destination) ← -(destination)
(complément à deux).
Destination
Registre 8 bits
Registre de travail 16 bits
Mémoire 16 bits
Mémoire 8 bits
13.
Les instructions duµP 8086
DAA : ajustement décimal après addition.
Si les 4 bits de poids faible de AL valent
plus que 9 ou si l’indicateur AF=1, 6 est
ajouté à AL. Et si les 4 bits de poids fort
de AL valent plus que 9 ou si l’indicateur
CF=1, 60h est ajouté à AL.
14.
Les instructions duµP 8086
DAS : c’est l’ajustement décimal après
soustraction.
Si les 4 bits de poids faible de AL valent
plus que 9 ou si l’indicateur AF=1, 6 est
soustraite de AL. Et si les 4 bits de poids
fort de AL valent plus que 9 ou si
l’indicateur CF=1, 60h est soustraite de
AL.
15.
Les instructions duµP 8086
MUL source : multiplication non signé.
IMUL source : multiplication signé.
Accumulateur Source Résultat
AL Registre 8 bits
AX
AL Mémoire (octet)
AX Registre de travail 16 bits
DX:AX
AX Mémoire (mot)
16.
Les instructions duµP 8086
DIV dénominateur : division non signé.
IDIV dénominateur : division signé.
Accumulat
eur
Source Résultat
AX Registre 8 bits Quotient : AL
Reste : AH
AX Mémoire (octet)
DX : AX Registre de travail 16 bits Quotient : AX
Reste : DX
DX : AX Mémoire (mot)
17.
Les instructions duµP 8086
3- Les instructions logiques :
OR destination, source : (destination) ←
(destination) OU (source)
Destination Source
Registre 8 bits
Mémoire 8 bits
Registre 8 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre de travail 16 bits
Registre 8 bits
Mémoire 8 bits
Registre de travail 16 bits
Mémoire 16 bits
Registre 8 bits
Registre 8 bits
Mémoire 8 bits
Registre de travail 16 bits
Registre de travail 16 bits
Mémoire 16 bits
Valeur immédiate 8 bits
Valeur immédiate 8 bits
Valeur immédiate 16 bits
Valeur immédiate 16 bits
18.
Les instructions duµP 8086
XOR destination, source : (destination) ←
(destination) OU exclusif (source)
AND destination, source : (destination) ←
(destination) ET (source)
TEST destination, source : effectue (destination)
ET (source) et positionne les indicateurs en
conséquence, le résultat n’étant pas
conservé.
19.
Les instructions duµP 8086
SAR destination, count: (Ou count =1 ou c=CL pour
toutes les opérations de décalage et de rotation)
Shift Arithmetic Right : décalage arithmétique à
droite.
Si count=1, division entière par 2, avec le reste dans
CF.
20.
Les instructions duµP 8086
SHR destination,count
Shift Logical Rigth: Décalage logique à droite de 1 ou CL
bit.
Si count = 1, division entière par 2, avec le reste dans CF
21.
Les instructions duµP 8086
SHL destination,count ou SAL destination,count
Shift Logical Left ou Shift Arithmetic Left :
Décalage à gauche de 1 ou CL bit.
22.
Les instructions duµP 8086
ROL destination,count
Rotate Left : Rotation à gauche de 1 ou CL bit.
CF prend la valeur du bit de poids fort. Tous les bits
sont décalés de 1 vers la gauche
Le bit de poids faible prend la valeur de CF
23.
Les instructions duµP 8086
ROR destination,count
Rotate Right : Rotation à droite de 1 ou CL bit.
CF prend la valeur du bit de poids faible. Tous les bits
sont décalés de 1 vers la droite
24.
Les instructions duµP 8086
RCL destination,count
Rotate Left through Carry : Rotation à gauche à travers
"Carry Flag« de 1 ou CL bit.
Tous les bits sont décalés de 1 vers la gauche. Le bit de
poids faible prend la valeur de CF
CF prend la valeur du bit de poids fort.
25.
Les instructions duµP 8086
RCR destination,count
Rotate Right through Carry : Rotation à droite à travers
"Carry Flag« de 1 ou CL bit.
Tous les bits sont décalés de 1 vers la droite. Le bit de
poids fort prend la valeur de CF
CF prend la valeur du bit de poids faible.
26.
Les instructions duµP 8086
4-Les instructions de saut:
a) Saut inconditionnel :
JMP destination :
Saut dans le même segment (NEAR) ou dans
un autre segment (FAR).
Saut Intra segment modification de IP.
Saut Inter segment modification de CS et IP .
27.
Les instructions duµP 8086
b) Saut conditionnel :
JA ou JNBE (>) CF=0 et ZF=0
Jump if Above / if Not Below nor Equal
JBE ou JNA (≤) CF=1 ou ZF=1
Jump if Below or Equal / if Not Above
JAE ou JNC ou JNB (≥) CF=0
Jump if Above or Equal / if Not carry / if Not Below
JB ou JC ou JNAE (<) CF=1
Jump if below / if carry / if not above nor Equal
28.
Les instructions duµP 8086
JCXZ (CX)=0
Jump if CX is zero
JE ou JZ (=) ZF=1
Jump if Equal / if zero
JNE ou JNZ (≠) ZF=0
Jump if not equal/ if not zero
JNP ou JPO PF=0
Jump if not parity/ if parity odd
JP ou JPE PF=1
Jump if parity/ if parity Even
29.
Les instructions duµP 8086
JG ou JNLE (>signé) ZF=0 et OF=SF
Jump if greater/ if not less nor equal
JLE ou JNG (≤signé) ZF=1 ou OF≠SF
Jump if less or equal/ if not greater
JGE ou JNL (≥signé) OF=SF
Jump if greater or equal/ if not less
JL ou JNGE (<signé) OF≠SF
Jump if less/ if not greater nor equal
30.
Les instructions duµP 8086
JNO OF=0
Jump if no overflow
JO OF=1
Jump if overflow
JNS SF=0
Jump if no sign
JS SF=1
Jump if sign
31.
Les instructions duµP 8086
Saut si non signés signés
Destination=Source
Destination≠Source
Destination>Source
Destination≥Source
Destination<Source
Destination≤Source
JE
JNE
JA
JAE
JB
JBE
JE
JNE
JG
JGE
JL
JLE
32.
Les instructions duµP 8086
c) Les instructions de boucle: LOOP,
LOOPE et LOOPNE
LOOP etiquette
LOOPE etiquette
LOOPNE etiquette
LOOP décrémente le CX, le compare à 0 et tant
que CX≠0 il y a branchement à étiquette.
33.
Les instructions duµP 8086
c) Les procédures :
CALL destination :
Appel de procédure dans le même segment (NEAR)
ou dans un autre segment (FAR).
Pour un CALL FAR (Inter segment)
Sauvegarde de CS dans la pile
CS←nouvelle valeur.
Sauvegarde de IP dans la pile
IP←nouvelle valeur.
34.
Les instructions duµP 8086
RET
Retour de procédure (NEAR : RET, FAR :RETF).
Restauration à partir de la pile des anciennes
valeurs de CS et IP.
35.
Les instructions duµP 8086
5- Les instructions de contrôle du processeur et du
registre d’état
NOP : No opération.
CLC : Clear Carry CF=0.
STC : Set Carry CF=1.
CMC : Complement Carry CF= not CF.
CLD: Clear Direction Flag DF = 0.
STD: Set Direction Flag DF=1.
CLI: Clear Interruption Flag IF=0.
STI: Set Interruption Flag IF=1.