0% ont trouvé ce document utile (0 vote)
68 vues38 pages

COURS Microprocesseur8086

Transféré par

kamil69ali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
68 vues38 pages

COURS Microprocesseur8086

Transféré par

kamil69ali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

17/11/2020

Le µp 8086 Caractéristiques principales d’un µp


Le choix du socket *détermine le modèle de processeur ; *le type de carte mère
*l'évolutivité de la machine

Le nombre de cœurs *compression vidéo ; *le calcul d'effets

La fréquence *plus cette dernière est élevée, meilleures seront les


de fonctionnement performances
*Elle s'exprime généralement en gigahertz, notés GHz.

La quantité de *Plus la quantité de mémoire cache est élevée, meilleures


mémoire cache seront les performances
*processeur d'entrée de gamme comporte 1 Mo
de mémoire cache de second niveau
*processeur haut de gamme comportera 6 Mo de
mémoire cache de second niveau
TDP (en Watts) *Plus il est élevé, plus le processeur chauffe, plus il
enveloppe consomme de l'énergie.
thermique *Processeur haut gamme 130w, milieu de gamme
du processeur 90 w.

Le µp 8086 Evolution technologique des µp INTEL

1
17/11/2020

Le µp 8086 Aspect externe du µp 8086


circuit intégré de forme DIL
(Dual In-Line ; boitier de circuit integres)
de 40 pattes

équipé d'un bus de données de 16 bits

équipé d'un bus d’adresse de 20 bits

fonctionne à des fréquences diverses selon


plusieurs variantes:
5, 8 ou 10 MHz.

Le processeur 8086 d'Intel est à la base des


processeurs Pentium actuels

Un ancien programme écrit pour un 8086


fonctionne toujours sur un nouvel
ordinateur équipé d'un Pentium IV.

Le µp 8086 Aspect interne du µp 8086

deux unités internes distinctes

2
17/11/2020

Le µp 8086 Aspect interne du µp 8086

UE : Unité d'Exécution UIB : Unité d'Interfaçage


exécute les instructions avec le Bus
qui lui sont transmises récupère et stocke les informations à traiter.
par l'UIB établit les transmissions avec les bus du
système.

Le µp 8086 Aspect interne du µp 8086

UE : Unité d'Exécution UIB : Unité d'Interfaçage


comporte essentiellement l'UAL de avec le Bus
16 bits qui manipule les registre Interface physique entre le microprocesseur
généraux de 16 bits et le monde extérieur

3
17/11/2020

Le µp 8086 Aspect interne du µp 8086

1- Extraction de l’instructions par l'UIB


2- Exécution de l’instruction par l’UE
3- Extraction de la nouvelle instruction

l'UE reste inactif un court instant,


(TEMPS D’ATTENTE)
pendant que l'UIB extrait l'instruction

Le µp 8086 Aspect interne du µp 8086


Technique pour éliminer le temps d’attente
Prétraitement ou Traitement pipeline

4
17/11/2020

Le µp 8086 Aspect interne du µp 8086


Technique pour éliminer le temps d’attente
Prétraitement ou Traitement pipeline
Pendant que l'UE exécute les informations qui lui sont
transmises, l'instruction suivante est chargée dans l'UIB.

Les instructions qui suivront sont placées dans une


file d'attente
Lorsque l'UE a fini de traiter une instruction l'UIB lui
transmet instantanément l'instruction suivante, et charge
la troisième instruction en vue de la transmettre à l'UE.

Le µp 8086 Aspect interne du µp 8086

Prétraitement ou Traitement pipeline

5
17/11/2020

Le µp 8086 Registres Internes du µp 8086

Un registre est une petite partie


de mémoire intégrée au
microprocesseur, dans le but de
recevoir des informations
spécifiques, notamment des
adresses et des données stockées
❖Certains sont affectés à des
durant l'exécution d'un
opérations d'ordre général et
programme
sont accessibles au programmeur
à tout moment
❖D'autres registres ont des rôles
bien plus spécifiques et ne
servent que pour un usage
spécialisé.

Le µp 8086 Registres Internes du µp 8086

✓Registres de 16 bits
✓chaque registre peut être
divisé en deux registres de
8 bits
01111101 01110001
High Low
Byte Byte

6
17/11/2020

Le µp 8086 Registres Internes du µp 8086


Registre AX : (Accumulateur)
✓Toutes les opérations de
transferts de données avec les
entrées-sorties ainsi que le
traitement des chaînes de
caractères se font dans ce
registre, de même que les
opérations arithmétiques et
logiques.
✓Les conversions en BCD du
résultat d'une opération
arithmétique (addition,
soustraction, multiplication et
division) se font dans ce registre.

Le µp 8086 Registres Internes du µp 8086


Registre BX : Registre de base
✓Utilisé pour l'adressage de
données dans une zone mémoire
différente de la zone code

✓En général il contient une


adresse de décalage par rapport à
une adresse de référence.

✓Peut servir pour la conversion


d'un code à un autre

7
17/11/2020

Le µp 8086 Registres Internes du µp 8086


Registre CX : Le compteur

✓Utilise comme compteur lors


des instructions de boucle.

Registre DX :
✓Utilise pour les opérations de
multiplication et de division

✓Utilise pour contenir le numéro


d'un port d'entrée/sortie pour
adresser les interfaces d'E/S.

La programmation en assembleur du
microprocesseur 8086

• Généralités
• Les instructions de transfert
• Les instructions arithmétiques
• Les instructions logiques
• Les instructions de branchement
• Méthodes de programmation

8
17/11/2020

Généralités

• Chaque microprocesseur reconnaît un ensemble


d’instructions appelé jeu d’instructions
(Instruction Set) fixé par le constructeur.
• Pour les microprocesseurs classiques, le nombre
d’instructions reconnues varie entre 75 et 150
(microprocesseurs CISC : Complex Instruction Set
Computer).
• Il existe aussi des microprocesseurs dont le nombre
d’instructions est très réduit (microprocesseurs RISC :
Reduced Instruction Set Computer) : entre 10 et 30
instructions, permettant d’améliorer le temps d’exécution
des programmes.

Généralités (suite)

• Une instruction est définie par son code


opératoire, valeur numérique binaire difficile
à manipuler par l’ être humain.
• On utilise donc une notation symbolique
pour représenter les instructions : les
mnémoniques.
• Un programme constitue de mnémoniques
est appelé programme en assembleur.

9
17/11/2020

Les groupes d’instructions

Les instructions peuvent être classées en


groupes :
• instructions de transfert de données ;
• instructions arithmétiques ;
• instructions logiques ;
• instructions de branchement ...

Les instructions de transfert

Elles permettent de déplacer des données


d’une source vers une destination :
• registre vers mémoire ;
• registre vers registre ;
• mémoire vers registre.

Remarque : le microprocesseur 8086


n’autorise pas les transferts de mémoire
vers mémoire
(pour ce faire, il faut passer par un registre
intermédiaire).

10
17/11/2020

Syntaxe : MOV destination,source

• Remarque : MOV est l’abréviation du


verbe « to move » : déplacer.

Il existe différentes façons de spécifier


l’adresse d’une case mémoire dans une
instruction :
ce sont les modes d’adressage.

Exemples de modes d’adressage simples :


MOV destination,source

• mov ax,bx : charge le contenu du


registre BX dans le registre AX.
Dans ce cas, le transfert se fait de
registre à registre : adressage par
registre ;

• mov al,12H : charge le registre AL avec la


valeur 12H. La donnée est fournie
immédiatement avec l’instruction :
adressage immédiat.

11
17/11/2020

Exemples de modes d’adressage simples :


MOV destination,source
• mov bl,[1200H] : transfère le contenu de la
case mémoire d’adresse effective (offset)
1200H vers le registre BL.
L’instruction comporte l’adresse de la case
mémoire ou se trouve la donnée : adressage
direct.
L’adresse effective représente l’offset de la
case mémoire dans le segment de données
(segment dont l’adresse est contenue dans
le registre DS) : segment par défaut.

Adressage direct.

12
17/11/2020

On peut changer le segment lors d’un adressage direct en


ajoutant un préfixe de segment,
exemple : mov bl,es :[1200H].
On parle alors de forçage de segment.

Les instructions de transfert

Remarque :
Dans le cas de l’adressage immédiat de la
mémoire, il faut indiquer le format de la donnée :
octet ou mot (2 octets) car le microprocesseur
8086 peut manipuler des données sur 8 bits ou 16
bits.

Pour cela, on doit utiliser un spécificateur de


format :

13
17/11/2020

Les instructions de transfert (suite)


Remarque : les microprocesseurs Intel rangent l’octet de poids faible d’une
donnée sur plusieurs octets à l’adresse la plus basse (format Little Endian).

Modes d’adressage évolués :

adressage basé : l’offset est contenu dans un registre de


base BX ou BP.
Exemples :
• mov al,[bx] : transfère la donnée dont l’offset est contenu
dans le registre de base BX vers le registre AL. Le segment
associe par défaut au registre BX est le segment de données :
on dit que l’adressage est basé sur DS;

• mov al,[bp] : le segment par défaut associé au registre de


base BP est le segment de pile.
Dans ce cas, l’adressage est base sur SS.

14
17/11/2020

Adressage basé

Adressage indexé

• adressage indexé : semblable à l’adressage


base, sauf que l’offset est contenu dans un
registre d’index SI ou DI, associes par défaut
au segment de données.
Exemples :
mov al,[si] : charge le registre AL avec le
contenu de la case mémoire dont l’offset est
contenu dans SI ;
mov [di],bx : charge les cases mémoire
d’offset DI et DI + 1 avec le contenu du
registre BX.

15
17/11/2020

Remarque : Adressage indexé

une valeur constante peut éventuellement


être ajoutée aux registres de base ou
d’index pour obtenir l’offset.
Exemple :
• mov [si+100H],ax
qui peut aussi s’écrire
• mov [si][100H],ax
ou encore
• mov 100H[si],ax

Les modes d’adressage bases ou indexes permettent


la manipulation de tableaux ranges en mémoire.
Exemple :
1. mov si,0
2. mov word ptr table[si],1234H
3. mov si,2
4. mov word ptr table[si],5678H

16
17/11/2020

Dans cet exemple, table représente l’offset


du premier élément du tableau et le registre
SI joue le rôle d’indice de tableau :

adressage basé et indexé


l’offset est obtenu en faisant la somme d’un registre
de base, d’un registre d’index et d’une valeur constante.
Exemple :
– mov ah,[bx+si+100H]
Ce mode d’adressage permet l’adressage de structures de
données complexes : matrices,
enregistrements, ...
Exemple :
• mov bx,10
• mov si,15
• mov byte ptr matrice[bx][si],12H
Dans cet exemple, BX et SI jouent respectivement le rôle
d’indices de ligne et de colonne dans la matrice

17
17/11/2020

Les instructions arithmétiques

Les instructions arithmétiques de base sont


l’addition, la soustraction, la multiplication
et la division qui incluent diverses variantes.

Plusieurs modes d’adressage sont possibles.

Addition : ADD opérande1,opérande2


L’opération effectuée est : opérande1 ←
opérande1 + opérande2.

Exemples :
• add ah,[1100H] : ajoute le contenu de la case
mémoire d’offset 1100H à l’accumulateur
AH (adressage direct) ;

• add ah,[bx] : ajoute le contenu de la case


mémoire pointée par BX à l’accumulateur
AH (adressage basé) ;

• add byte ptr [1200H],05H : ajoute la valeur


05H au contenu de la case mémoire d’offset
1200H (adressage immédiat).

18
17/11/2020

Les instructions arithmétiques (suite)


Soustraction
SUB opérande1,opérande2
L’opération effectuée est : opérande1 ← opérande1 −
opérande2.
Multiplication
MUL opérande, où opérande est un registre ou une case
mémoire.
Cette instruction effectue la multiplication du contenu de AL
par un opérande sur 1 octet
ou du contenu de AX par un opérande sur 2 octets.
Le résultat est placé dans AX si les données à multiplier
sont sur 1 octet (résultat sur 16 bits),
dans (DX,AX) si elles sont sur2 octets (résultat sur 32
bits).

Exemples :

mov al,51
mov bl,32
mul bl
→ AX = 51 × 32

mov ax,4253
mov bx,1689
mul bx
→ (DX, AX) = 4253 × 1689

19
17/11/2020

Exemples (suite):

• mov al,43
mov byte ptr [1200H],28
mul byte ptr [1200H]
→ AX = 43 × 28

• mov ax,1234
mov word ptr [1200H],5678
mul word ptr [1200H]
→ (DX, AX) = 1234 × 5678

Les instructions arithmétiques (suite)

Division :
DIV opérande, où opérande est un registre ou
une case mémoire.
Cette instruction effectue la division du
contenu de AX par un opérande sur 1 octet
ou le contenu de (DX,AX) par un opérande
sur 2 octets.

Résultat : si l’opérande est sur 1 octet, alors


AL = quotient et AH = reste ; si l’opérande est
sur 2 octets, alors AX = quotient et DX =
reste.

20
17/11/2020

Exemples :

mov ax,35
mov bl,10
div bl
→ AL = 3 (quotient) et AH = 5 (reste)

mov dx,0
mov ax,1234
mov bx,10
div bx
→ AX = 123 (quotient) et DX = 4 (reste)

Les instructions logiques

Ce sont des instructions qui permettent de manipuler


des données au niveau des bits. Les opérations
logiques de base sont :
• ET;
• OU;
• OU exclusif ;
• complément à 1;
• complément à 2;
• décalages et rotations.

Les différents modes d’adressage sont disponibles.

21
17/11/2020

Les instructions logiques (suite)


ET logique : AND opérande1,opérande2
L’opération effectuée est : operande1 ←
operande1 ET operande2.
Exemple :
mov al,10010110B
mov bl,11001101B
and al, bl

AL= 1 0 0 1 0 1 1 0
BL= 1 1 0 0 1 1 0 1
AL= 1 0 0 0 0 1 0 0

Application

masquage de bits pour mettre à zéro


certains bits dans un mot.
Exemple : masquage des bits 0, 1, 6 et
7 dans un octet :
76543210
01010111
0 0 1 1 1 1 0 0 ← masque
00010100

22
17/11/2020

Les instructions logiques (suite)


OU logique : OR opérande1,opérande2
L’opération effectuée est : operande1 ← operande1 OU
operande2.
Application : mise à 1 d’un ou plusieurs bits dans un mot.
Exemple : dans le mot 10110001B on veut mettre à 1 les bits 1
et 3 sans modifier les autres bits.
76543210
10110001
0 0 0 0 1 0 1 0 ← masque
10111011
Les instructions correspondantes peuvent s’écrire :
mov ah,10110001B
or ah,00001010B

Les instructions logiques (suite)

Complément à 1 : NOT opérande

23
17/11/2020

Les instructions logiques (suite)

Complément à 2 : NEG opérande

Les instructions logiques (suite)


OU exclusif : XOR operande1,operande2

L’opération effectuée est : opérande1 ←


opérande1 ⊕ opérande2.

Exemple : mise à zéro d’un registre :


mov al,25
xor al,al → AL = 0

24
17/11/2020

Instructions de décalages et de rotations

• Ces instructions déplacent d’un certain


nombre de positions les bits d’un mot vers la
gauche ou vers la droite.

• Dans les décalages, les bits qui sont


déplaces sont remplaces par des zéros.
Il y a les décalages logiques (opérations non
signées) et les décalages arithmétiques
(opérations signées).
• Dans les rotations, les bits déplaces dans un
sens sont réinjectes de l’autre côte du mot.

Décalage logique vers la droite (Shift Right)

SHR opérande,n
Cette instruction décale l’opérande de n
positions vers la droite.
Exemple :
mov al,11001011B
shr al,1

Entrée d’un 0 à la place du bit de poids fort ; le bit sortant passe à


travers l’indicateur de retenue CF.

25
17/11/2020

Décalage logique vers la droite (Shift Right)

Remarque : si le nombre de bits a décaler est


supérieur a 1, ce nombre doit être place
dans le registre CL ou CX.
Exemple : décalage de AL de trois positions
vers la droite :
mov cl,3
shr al,cl

Décalage logique vers la gauche (Shift Left

SHL operande,n
Cette instruction décale l’opérande de n positions vers la
droite.
Exemple :
mov al,11001011B
shl al,1

entrée d’un 0 à la place du bit de poids faible ; le bit sortant passe


à travers l’indicateur de retenue CF.
Même remarque que précédemment si le nombre de positions à
décaler est supérieur à 1.

26
17/11/2020

Décalage arithmétique vers la droite


SAR opérande,n
• Ce décalage conserve le bit de signe bien que
celui-ci soit décale.
Exemple :
mov al,11001011B
sar al,1

le bit de signe est réinjecté.

Décalage arithmétique vers la gauche


SAR opérande,n
Identique au décalage logique vers la gauche.
Applications des instructions de décalage :
cadrage à droite d’un groupe de bits.

Exemple : on veut avoir la valeur du quartet de


poids fort du registre AL :
mov al,11001011B
mov cl,4
shr al,cl → AL = 00001100B

27
17/11/2020

Décalage arithmétique vers la gauche


Test de l’état d’un bit dans un mot.
Exemple : on veut déterminer l’état du bit 5 de AL :
mov cl,6
shr al,cl
ou
mov cl,3
shl al,cl

→ avec un décalage de 6 positions vers la droite ou


3 positions vers la gauche, le bit 5 de AL est
transfère dans l’indicateur de retenue CF. Il suffit
donc de tester cet indicateur.

• multiplication ou division par une puissance


de 2 : un décalage à droite revient à faire une
division par 2 et un décalage à gauche, une
multiplication par 2.
Exemple :
mov al,48
mov cl,3
shr al,cl

28
17/11/2020

Rotation à droite (Rotate Right)

ROR opérande,n
Cette instruction décale l’opérande de n positions
vers la droite et réinjecte par la gauche les bits
sortant.
Exemple :
mov al,11001011B
ror al,1

Réinjection du bit sortant qui est copie dans l’indicateur de retenue CF.

Rotation à gauche (Rotate Left)


ROL operande,n
Cette instruction décale l’opérande de n positions
vers la gauche et réinjecte par la droite les bits
sortant.
• Exemple :
mov al,11001011B
rol al,1

Réinjection du bit sortant qui est copié dans l’indicateur de retenue CF.

29
17/11/2020

Rotation à droite avec passage par l’indicateur de


retenue (Rotate Right through Carry)
RCR opérande,n
Cette instruction décale l’opérande de n positions vers
la droite en passant par l’indicateur de retenu CF.
Exemple :
mov al,11001011B
rcr al,1

le bit sortant par la droite est copie dans l’indicateur de retenue CF et la


valeur précédente de CF est réinjecté par la gauche.

Rotation à gauche avec passage par l’indicateur de


retenue (Rotate Left through Carry)

RCL opérande,n
Cette instruction décale l’opérande de n positions
vers la gauche en passant par l’indicateur de
retenue CF.
Exemple :
mov al,11001011B
rcl al,1

le bit sortant par la gauche est copie dans l’indicateur de


retenue CF et la valeur précédente de CF est réinjectée par la
droite.

30
17/11/2020

Les instructions de branchement

Les instructions de branchement (ou saut)


permettent de modifier l’ordre d’exécution
des instructions du programme en
fonction de certaines conditions.

Il existe 3 types de saut :


• saut inconditionnel ;
• sauts conditionnels ;
• appel de sous-programmes.

Instruction de saut inconditionnel

JMP label
Cette instruction effectue un saut (jump)
vers le label spécifié. Un label (ou
étiquette) est une représentation
symbolique d’une instruction en mémoire :

31
17/11/2020

Exemple : saut inconditionnel

boucle : inc ax
dec bx
jmp boucle → boucle infinie

Remarque : l’instruction JMP ajoute au registre IP (pointeur


d’instruction) le nombre d’octets (distance) qui sépare
l’instruction de saut de sa destination.
Pour un saut en arrière, la distance est négative (codée en
complément à 2).

Instructions de sauts conditionnels

Jcondition label
• Un saut conditionnel n’est exécuté que
si une certaine condition est satisfaite,
sinon
l’exécution se poursuit séquentiellement
à l’instruction suivante.
• La condition du saut porte sur l’ état de
l’un (ou plusieurs) des indicateurs d’
état (flags)
du microprocesseur :

32
17/11/2020

Instructions de sauts conditionnels (suite)

Exemple :
Instructions de sauts conditionnels

33
17/11/2020

Remarque
il existe un autre type de saut conditionnel, les
sauts arithmétiques. Ils suivent en général
l’instruction de comparaison :
CMP opérande1,opérande2

Exemple :

34
17/11/2020

Application des instructions de sauts conditionnels

Problème:

On veut additionner deux nombres signes N1 et


N2 se trouvant respectivement aux offsets 1100H
et 1101H.
Le résultat est rangé à l’offset 1102H s’il est
positif, à l’offset 1103H s’il est négatif et à
l’offset 1104H s’il est nul :

Organigramme :

35
17/11/2020

Programme :

Appel de sous-programmes

• Pour éviter la répétition d’une même séquence


d’instructions plusieurs fois dans un programme,
on rédige la séquence une seule fois en lui
attribuant un nom (au choix) et on l’appelle
lorsqu’on en a besoin.

Le programme appelant est le programme


principal.
La séquence appelée est un sous-
programme ou
procédure.

36
17/11/2020

Ecriture d’un sous-programme

Remarque : une procédure peut être de type NEAR si elle


se trouve dans le même segment ou de type FAR si elle se
trouve dans un autre segment.

Appel d’un sous-programme par le programme


principal: CALL procédure

Lors de l’exécution de l’instruction CALL, le pointeur


d’instruction IP est chargé avec l’adresse de la première
instruction du sous-programme.
Lors du retour au programme appelant, l’instruction
suivant le CALL doit être exécutée, c’est-à-dire que IP
doit être recharge avec l’adresse de cette instruction.

37
17/11/2020

Exécution de l’instruction CALL

38

Vous aimerez peut-être aussi