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.
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]
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
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)
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
Les instructions du µP 8086
PUSHF
Empile le registre d’état FLAGS (au complet).
POPF
dépile le registre d’état.
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.
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)
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]
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é.
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.
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
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.
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.
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)
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)
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
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é.
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.
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
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.
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
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
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.
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.
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 .
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
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
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
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
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
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.
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.
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.
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.

cours sur Les instructions du µP 8086.pdf

  • 1.
    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.