Vous êtes sur la page 1sur 38

Ecole Marocaine des Sciences

de l’Ingénieur

Le Microprocesseur
Intel 8086

2020/2021
Dr. Hanane YATIMI
Introduction générale

Pourquoi étudier et apprendre à programmer un Microprocesseur

Qu’est-ce qu’un Microprocesseur

Le Microprocesseur Intel 8086

2
Le Microprocesseur Intel 8086

L’architecture externe du 8086

Qui est-ce qu’un Bus, une interruption et une mémoire

La description des broches de connexion

Chronogrammes de lecture/écriture en mémoire

3
Le Microprocesseur Intel 8086

L’architecture interne du 8086

Organisation de l’espace mémoire adressable

Les registres

Le codage des instructions

4
Le Microprocesseur Intel 8086
Les modes d’adressage
Introduction

Lorsque vous envoyé une lettre ou un colis, vous pouvez utiliser un grand nombre
de moyens de transport:

- le bateau
- l’avion
- la voiture
- la bicyclette
- le coursier
- etc..
Il en est de même pour le processeur : On parle alors de modes
d’adressage
5
Le Microprocesseur Intel 8086
Les modes d’adressage
Introduction
Un mode d’adressage : est un moyen qui permet au microprocesseur d'avoir accès à une donnée bien
précise dans un emplacement bien précis.

Une donnée peut être: Un nombre qui se trouve écrit quelque part
en mémoire (case mémoire).

Un nombre qui se trouve déjà dans un registre.

Un nombre quelconque dont on aura besoin dans


le programme.

Le mode d’adressage permet d'écrire les programmes de la façon la plus courte, la plus simple
et la plus lisible possible.
6
Le Microprocesseur Intel 8086
Les modes d’adressage

La structure la plus générale d’une instruction est :

 L’opération est réalisée entre les 2 opérandes.


 Le résultat est toujours récupéré dans l’opérande de gauche.
 Il y a aussi des instructions qui agissent sur un seul opérande

Les opérandes peuvent être des registres, des constantes ou le contenu de


cases mémoire, c’est ce qu’on appelle mode d’adressage

7
Le Microprocesseur Intel 8086
Les modes d’adressage - Types

8086
possède 7 modes d’adressage

Adressage registre à registre


Adressage Immédiat
Adressage Direct
Adressage Basé
Adressage Indexé
Adressage Basé Indexé
Adressage Basé Indexé
avec déplacement

8
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Registre à Registre
(adressage par registre)
 L’opération se fait sur un ou deux registres.
INST R , R
INST R

Exemple

INC AX : incrémenter le registre AX

MOV AX, BX : copier/déplacer/charger le contenu de BX dans AX (opérandes de 16bits)

ADD CH, DL : faire la somme du contenu de CH et DL (opérandes de 8bits)

9
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Immédiat
 Un des opérandes est une constante (valeur).
INST R , cste Charger le registre R par la valeur cste immédiatement (directement)

Exemple

MOV CX, 4432h : Transférer la valeur hexa 4432 dans CX


MOV AL, FFH : Transférer la valeur FF dans AL
MOV AX, 4432 : Transférer la valeur décimal dans AX
MOV AL, 'a‘ : Charger le registre AL par le code ASCII du caractère 'a'
MOV AX, 'a‘ : Charger le registre AH par 00 et le registre AL par le code ASCII du
caractère 'a‘.
MOV AX,'ab‘ : Charger AH par 'a' et AL par 'b‘
MOV AX, 0xA243 : Quand le chiffre de gauche du nombre hexadécimal est une
lettre, il est préférable d'utiliser le préfix 0x pour l'hexadécimal.
10
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Direct - 1
 Un des deux opérandes se trouve en mémoire. L’adresse de la case mémoire ou plus
précisément son Offset (adresse effective) est précisé directement dans l’instruction.
 L’adresse Rseg:Off doit être placée entre [ ]
Rq : si le segment n’est pas précisé, DS est pris par défaut

INST R , [adr] Zone mémoire: segment DS


INST [adr] , R

Exemple

MOV AX, [560H] : copier le contenu de l’emplacement mémoire 560H (existant [560H]
dans DS cad DS:560H) dans AX.
opérande
MOV AX, [SS:560H] : copier le contenu de la mémoire d’adresse SS:560H
dans AX.
MOV [124H], AX : copier le contenu de AX dan la case mémoire d'adresse
DS:124 11
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Direct - 2
Exercise 1:

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

12
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Direct - 3
Exercise 2:

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.

13
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Indirect - 1
 Un des deux opérandes se trouve en mémoire.
 L’offset de l’adresse n’est pas précisé directement dans l'instruction, il se trouve dans l’un
des 4 registres d’offset BX, BP, SI ou DI et c’est le registre qui sera précisé dans l’instruction :
[Rseg : Roff].
Rq : Si Rseg n'est pas spécifié, le segment par défaut sera utilisé est le suivant :

INST R , [Rseg : Roff]


INST [Rseg : Roff] , R

14
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Indirect - 2
Exemples:

MOV AX, [BX] : Charger AX par le contenu de la mémoire d'adresse DS:BX


MOV AX, [BP] : Charger AX par le contenu de la mémoire d'adresse SS:BP
MOV AX, [SI] : Charger AX par le contenu de la mémoire d'adresse DS:SI
MOV AX, [DI] : Charger AX par le contenu de la mémoire d'adresse DS:DI
MOV AX, [ES:BP] : Charger AX par le contenu de la mémoire d'adresse ES:BP

L’adressage indirect est divisé en 3 catégories selon le registre d’offset utilisé. On


distingue ainsi, l’adressage Basé, l’adressage indexé et l’adressage basé indexé
15
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Indirect - Basé
 L’offset se trouve dans l’un des deux registres de base BX ou BP.
 On peut préciser un déplacement qui sera ajouté au contenu de Roff pour déterminer
l’offset

INST R , [Rseg : Rb+dep]


INST [Rseg : Rb+dep] , R

Exemples:

MOV AX, [BX] : Charger AX par le contenu de la mémoire d'adresse DS:BX


MOV AX, [BX+5] : Charger AX par le contenu de la mémoire d'adresse DS:BX+5
MOV AX, [BP-200] : Charger AX par le contenu de la mémoire d'adresse SS:BP-200
MOV AX, [ES:BP] : Charger AX par le contenu de la mémoire d'adresse ES:BP

16
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Indirect - Indexé
 L’offset se trouve dans l’un des deux registres d’index SI ou DI.
 On peut préciser un déplacement qui sera ajouté au contenu de Ri pour déterminer l’offset

INST R , [Rseg : Ri + dep]


INST [Rseg : Ri + dep] , R

Exemples:

MOV AX, [SI] : Charger AX par le contenu de la mémoire d'adresse DS:SI


MOV AX, [SI+300] : Charger AX par la mémoire d'adresse DS:SI+300
MOV AX, [DI-10] : Charger AX par la mémoire d'adresse DS:DI-10
MOV AX, [ES:SI+7] : Charger AX par la mémoire d'adresse ES:SI+7

17
Le Microprocesseur Intel 8086
Les modes d’adressage - Types
Mode d’adressage Indirect - Basé Indexé avec Déplacement
 L'offset de l’adresse de l'opérande est la somme d'un registre de base, d'un registre
d'index et d'un déplacement optionnel.

 Si Rseg n'est pas spécifié, le segment par défaut du registre de base est utilisé (DS).
INST R , [Rseg : Rb + Ri + dep]
INST [Rseg : Rb + Ri + dep] , R
Exemples:

MOV AX,[BX+SI] ; AX est chargé par la mémoire d'adresse DS:BX+SI


MOV AX,[BX+DI+9] ; AX est chargé par la mémoire d'adresse DS:BX+DI+9
MOV AX,[BP+SI-3] ; AX est chargé par la mémoire d'adresse SS:BP+SI-3
MOV AX,[BP+DI] ; AX est chargé par la mémoire d'adresse SS:BP+DI

18
Le Microprocesseur Intel 8086
Les principales instructions du 8086

8086

Instructions Arithmétiques

Instructions Logiques

Instructions de Branchement

Instructions de Transfert

19
Le Microprocesseur Intel 8086
Les principales instructions du 8086
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 MOV destination, source
 Mémoire vers registre

Rq : 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).

20
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions de transfert
Exemples:
MOV AL, 21h : Charger 21h dans le registre AL

MOV AX, BX : Charger le contenu de BX dans AX.

MOV AX, [0200h] : Charger le contenu de la case mémoire 0200 dans AX

MOV AH, [BX+SI+100h] : Charger le contenu de BX+SI+100h dans la AH

XCHG OD, OS

 Echange l'opérande Source avec


l'opérande Destination

21
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions de transfert
PUSH Op // PUSH source (Sauvegarde « source»)

 Empiler l’opérande Op (Op doit être un opérande 16 bits, Source = registre ou case mémoire dont
le contenu doit être placé sur la pile)
 Décrémente SP de 2 octets
 Copie Op dans la mémoire pointée par SP

POP Op // POP destination (Restaure « destination»)

 Dépiler dans l’opérande Op (Op doit être un opérande 16 bits, Destination = registre ou case
mémoire auquel est affectée la valeur retirée du sommet de la pile)
Copie les deux cases mémoire pointée par SP dans
l'opérande Op
 Incrémente SP de 2 octets
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions de transfert
PUSH Op // PUSH source POP Op // POP destination

23
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions de transfert
Exemples:
(a) Situation de la pile après empilement des
registres AX, BX et CX
(b) Situation de la pile après empilement du
registre DX
(c) Situation de la pile après un dépilement.
On remarquera que DX reste dans la
mémoire mais il ne fait plus partie de la
pile. La pile s'arrête à son sommet qui est
pointé par le pointeur de pile.
(d) Situation de la pile après empilement du
registre BP. On remarque que la valeur
BP écrase la valeur DX dans la mémoire.
Fonctionnement d’une pile
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques
Les instructions arithmétiques de base sont l’addition, la soustraction, la multiplication et la division

Addition

ADD Od, Os Additionne l'opérande source et l'opérande destination avec résultat dans l'opérande destination
Exemples: ADD AX,123h (A.I) ADD AX,BX (AR) ADD [123h],AX (A.D) ADD BX,[SI] (A.I)

ADC Od, Os Additionne l'opérande source, l'opérande destination et le curry avec résultat dans l'opérande
destination

INC Op Incrémente l'opérande Op

Rq : Pour incrémenter une case mémoire, il faut préciser la taille

25
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques

Soustraction
SUB Od, Os Soustrait l'opérande source et l'opérande destination avec résultat dans l'opérande destination.

SBB Od, Os Soustrait l'opérande source et le curry de l'opérande destination avec résultat dans l'opérande
destination

DEC Op Décrémente l'opérande Op

CMP Od, Os Compare (soustrait) les opérandes Os et Od et positionne les drapeaux en fonction du résultat.
Rq : L’opérande Od n’est pas modifié

26
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques

Multiplication
MUL Op
 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 (AH, AL) si les données à multiplier sont sur 1 octet (résultat sur 16 bits),
dans (DX,AX) si elles sont sur 2 octets (résultat sur 32 bits).

Rq : L'opérande Op ne peut pas être une donnée, c’est soit un registre soit une position mémoire, dans ce
dernier cas, il faut préciser la taille (byte ou word)

27
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques
Multiplication
Exemples:

mov al, 51 mov ax, 4253


mov bl, 32 mov bx, 1689
mul bl mul bx
→ AX = 51 × 32 → (DX, AX) = 4253 × 1689
= 1632 (660H) = 7183317 (6D9BD5H)
IMUL Op (Integer Multiply ) Identique à MUL excepté qu'une multiplication signée est effectuée
28
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques

Division
DIV Op
 Effectue la division AX/Op8 ou (DX/AX)/Op16 selon la taille de Op qui doit être soit un registre soit une
mémoire. Dans le dernier cas il faut préciser la taille de l’opérande.

Exemple : DIV byte [adresse] ou DIV word [adresse].

Rq : Op ne peut pas être une donnée (immédiat)


29
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques

Division

Exemples:

mov ax,35 mov dx,0


mov bl,10 mov ax,1234
div bl mov bx,10
→ AL = 3 (quotient) et AH = 5 (reste) div bx
→ AX = 123 (quotient) et DX = 4 (reste)

IDIV Op Identique à DIV mais effectue une division signée

30
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques

Division

CBW (Convert Byte to Word)


 Effectue une extension de AL dans AH. On écrit le contenu de AL dans AX en respectant le signe
- Si AL contient un nombre positif, On complète par des 0 pour obtenir la représentation sur 16 bits.
- Si AL contient un nombre négatif, On complète par des 1 pour obtenir la représentation sur 16 bits.

+5 = 0000 0101 0000 0000 0000 0101


-10 = 1111 1010 1111 1111 1111 1011
CWD (Convert Word to Double Word)
 Effectue une extension de AX dans DX en respectant le signe.
 On écrit AX dans le registre 32 bits obtenu en collant DX et AX
31
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques

Exercice - 1

On désire additionner :

 Un nombre de 32 bits situe à l’adresse 1000H avec un


nombre de 32 bits situe à l’adresse 1004H,
 Le résultat sera stockée à l’adresse 1008H.

32
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Arithmétiques

Exercice - 2

Ecrire les instructions pour calculer l’expression suivante :

(200/60 + 3*20 – 5)

33
Le Microprocesseur Intel 8086
Les principales instructions du 8086
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

34
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Logiques

ET Logique AND Od, Os

 L’opération Effectuée est : Od  Od ET Os

Exemples:
mov al,10010110B
mov bl,11001101B
and al, bl

Donner le contenu résultant du registre AL en binaire puis en hexadécimal

MOV AX,125h
AND AL, AH

35
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Logiques

OU Logique OR Od, Os

 L’opération Effectuée est : Od  Od OU Os

Exemples:
mov ah, 01011000B met à 1 le bit de faible
OR AL, 1H
or ah, 00001101B poids de AL

Donner le contenu résultant du registre AH en binaire puis en hexadécimal

MOV AX,105h
OR AH, AL

36
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Logiques

OU exclusif XOR Od, Os

 L’opération Effectuée est : Od  Od XOR Os

Exemples:
mov al, 25
al = ?
xor al, al

mov ax, 344h


ax = ?
xor ax, 433h

37
Le Microprocesseur Intel 8086
Les principales instructions du 8086
Les instructions Logiques

Complément à 1 NOT OP

 Complément à 1 de l’opérande
Exemples:
mov al, 10010001B
al  01101110
not al

Complément à 2 NEG OP
 Complément à 2 de l’opérande
Exemples: mov al,25
mov bl,12
al = 25 + (−12) = 13
neg bl
add al,bl
38

Vous aimerez peut-être aussi