0% ont trouvé ce document utile (0 vote)
70 vues72 pages

Cours Complet

Le document présente une introduction au microprocesseur 8086, y compris son architecture, son jeu d'instructions et la programmation en assembleur. Il décrit les caractéristiques techniques du 8086, son histoire et les signaux associés à son fonctionnement. Le document vise à expliquer les concepts fondamentaux liés à ce microprocesseur et son importance dans l'évolution des systèmes informatiques.

Transféré par

kimdoudou41
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)
70 vues72 pages

Cours Complet

Le document présente une introduction au microprocesseur 8086, y compris son architecture, son jeu d'instructions et la programmation en assembleur. Il décrit les caractéristiques techniques du 8086, son histoire et les signaux associés à son fonctionnement. Le document vise à expliquer les concepts fondamentaux liés à ce microprocesseur et son importance dans l'évolution des systèmes informatiques.

Transféré par

kimdoudou41
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

02/01/2025

PLAN

I. Introduction

II. Architecture Générale du 8086

III. Jeu d’Instructions

IV. Programmation en Assembleur 8086

V. Code Machine des Instructions

Microprocesseur
8086

Deuxième partie

Dr. Y. AKARNE
Contact: [email protected]

1
02/01/2025

PLAN

I. Introduction

II. Architecture Générale du 8086

III. Jeu d’Instructions

IV. Programmation en Assembleur 8086

V. Code Machine des Instructions

INTRODUCTION

? Programme en
Pascal, C, C++
JAVA !!!!... Compilateur

Programme en
Langage assembleur
Hiérarchie
de traduction
Assembleur

Programme en
Langage machine
Chargeur
en Mémoire

2
02/01/2025

INTRODUCTION

Langage machine
Langage binaire: l’information est exprimée et manipulée sous
forme d’une suite de bits
Une combinaison de 16 bits= Hexadécimal → possibilités qui
permettent de coder tous les caractères alphabétiques,
numériques, et symboles tels que ?,*,&, …
Rappel
Un bit (binary digit) = 0 ou 1 (2 états électriques)
Une combinaison de 8 bits= 1 Octet
Les opérations logiques et arithmétiques de base (addition,
multiplication, … ) sont effectuées en binaire

INTRODUCTION

Pourquoi l'assembleur?
Problème: le langage machine est difficile à comprendre par l’être humain
Idée: trouver un langage compréhensible par l'homme qui sera ensuite
converti en langage machine
Assembleur (1er langage): exprimer les instructions élémentaires de façon
symbolique
ADD A, 4
LOAD B traducteur langage machine
MOV A, OUT

+: plus accessible que le langage machine


-: dépend du type de la machine
-: pas assez efficace pour développer des applications complexes

Apparition des langages évolués

3
02/01/2025

INTRODUCTION

Exemple
Voici une représentation hexadécimale d’un programme en
langage machine :
A1 01 10 03 06 01 12 A3 01 14
Il est évident que ce type d'écriture est difficilement lisible par
nous, humains.

INTRODUCTION

I- Qu'est-ce qu'un microprocesseur ?

Un microprocesseur est un processeur dont tous les


composants ont été suffisamment minimisés pour être intégrés
dans un seul boîtier. Sur le plan fonctionnel, le processeur (ou CPU,
Central Processing Unit) est le composant essentiel d'un système
microprogrammé. Il exécute les instructions et traite les données
des programmes qui réalisent les principaux calculs.

Un système microprogrammé est un circuit intégré qui peut être programmé pour
effectuer des tâches particulières. L'objectif est de pouvoir modifier les tâches sans
toucher à l'électronique. Sa structure est la suivante :
N Bus d’adresses

Périphériques
ROM RAM Ports
Processeur • d’entrée
Programme Données d’E/S
• de sortie

Bus de données

Lecture
écrite
Bus de contrôle

4
02/01/2025

INTRODUCTION

Histoire des processeurs Intel

1968 Création d'Intel Corporation par Gordon Moore et Robert Noyce.

1971 Intel 4004, premier microprocesseur de l'histoire,

4 bits et 2.300 transistors.

1972 – 1992 Intel 8008, Intel 8080 (6.000 transistors), Intel 8086 (premier

processeur à architecture x86), Intel 80286, Intel 80386DX (275.000

transistors), Intel 80386 (premier microprocesseur 32 bits d'Intel),

Intel 80386 & 80387.

1993 – 2005 Pentium I, II, III, IV, V, ….

2006 – Aujourd’hui Processeurs multicore : Core 2, i3, i5, i7, i9 .....


La majorité des microprocesseurs Intel
sont compatibles avec le 8086

INTRODUCTION

II- Caractéristiques du 8086:

▪ Disponible depuis juillet 1978

▪ Le 8086 est le premier microprocesseur 16 bits développé par Intel

▪ C’est le premier de la famille x86

▪ Le 8086 est constitué de 29.000 transistors sur une puce de 32,7 mm²

▪ Il existe en trois versions : 8086 (5 MHz), 8086-2 (8 MHz), 8086-4 (10 MHz)

▪ Il est équipé d’un bus de données de 16 bits

▪ Il a un bus adresse de 20 bits pouvant accéder à 220 locations de mémoire

(1Mo)

▪ 14 registres de 16 bits

5
02/01/2025

INTRODUCTION

Le 8086 accède à 220 locations de mémoire (1 Mo):

La taille de chaque case mémoire :


1octet = 8 bits

Bus d’adresse :
20 bits ==> le nombre de case de la mémoire 220 cases

La taille totale de la mémoire :


220 x 1octet = 1Mo

PLAN

I. Introduction

II. Architecture Générale du 8086

III. Jeu d’Instructions

IV. Programmation en Assembleur 8086

V. Code Machine des Instructions

6
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

I- Brochage du 8086:

Le 8086 (développé en 1978) est le premier


microprocesseur de type x86. Il est équipé d'un
bus de données de 16 bits et un bus d'adresses
de 20 bits et fonctionne à des fréquences diverses
selon plusieurs variantes: 5, 8 ou 10 MHz. Le 8086
se présente sous la forme d’un boîtier DIP (Dual
In-line Package) à 40 broches :

ARCHITECTURE GÉNÉRALE DU 8086

I- Brochage du 8086:

7
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux:

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux:

𝑪𝑳𝑲 : Entrée d’horloge qui cadence le fonctionnement


du microprocesseur.

𝑹𝑬𝑺𝑬𝑻 : Entrée de réinitialisation du microprocesseur.


Lorsque cette entrée est mise à l'état haut pendant au
moins 4 périodes d'horloge, le microprocesseur est remis
à zéro.

𝑹𝑬𝑨𝑫𝒀 : Entrée de synchronisation avec la mémoire. Ce


signal provient également du générateur d’horloge. Le
signal est actif à l’état haut.

𝑻𝑬𝑺𝑻 : Entrée de mise en attente du microprocesseur


d’un événement extérieur.

8
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux:


1. READY : Synchronisation avec la Mémoire ou Périphériques Lents

Fonction : La broche READY est utilisée pour synchroniser le processeur avec des périphériques lents comme la
mémoire. Elle indique au processeur s'il peut continuer ou s'il doit attendre.

Quand elle est Utilisée : READY est activée quand le processeur doit accéder à des données de la mémoire ou de
périphériques externes, mais ceux-ci peuvent être plus lents.
Comment elle Fonctionne :
Si READY est haut (1), le processeur continue ses opérations normalement.
Si READY est bas (0), le processeur attend que READY revienne à l'état haut pour s'assurer que les données
sont prêtes à être utilisées.
Exemple : Le 8086 lit une donnée depuis une mémoire lente. Si cette mémoire n’est pas prête, READY sera bas pour
dire au processeur d’attendre.

2. TEST̅ : Attente d'un Signal Extérieur pour un Événement Spécifique


Fonction : TEST̅ est utilisé pour mettre en pause le processeur jusqu'à ce qu'un événement particulier se produise en
dehors de la mémoire principale, généralement pour une tâche spécifique indiquée par un autre circuit.
Quand elle est Utilisée : TEST̅ est principalement utilisé avec des circuits d'attente ou de contrôle externes qui
envoient un signal pour indiquer que quelque chose est prêt ou terminé.
Comment elle Fonctionne :
Si TEST̅ est haut (1), le processeur continue à exécuter son programme.
Si TEST̅ est bas (0), le processeur se met en attente jusqu'à ce que TEST̅ devienne haut.
Exemple : Si un périphérique externe (comme un coprocesseur) doit faire un calcul avant que le 8086 ne continue, ce
périphérique peut maintenir TEST̅ à bas jusqu’à ce qu’il soit prêt.

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux:

𝑪𝑳𝑲 : Entrée d’horloge qui cadence le fonctionnement


du microprocesseur.

𝑹𝑬𝑺𝑬𝑻 : Entrée de réinitialisation du microprocesseur.


Lorsque cette entrée est mise à l'état haut pendant au
moins 4 périodes d'horloge, le microprocesseur est remis
à zéro.

𝑹𝑬𝑨𝑫𝒀 : Entrée de synchronisation avec la mémoire. Ce


signal provient également du générateur d’horloge. Le
signal est actif à l’état haut.

𝑻𝑬𝑺𝑻 : Entrée de mise en attente du microprocesseur


d’un événement extérieur.

𝑴𝑵/𝑴𝑿 : Le signal de cette broche indique dans quel


mode le processeur va fonctionner.
• Mode minimum (𝑴𝑵/𝑴𝑿=1 ) : le 8086 fonctionne de manière
autonome, il génère lui-même le bus de commande,

• Mode maximum (𝑴𝑵/𝑴𝑿=0 ) : Les signaux de commande sont


produits par un contrôleur de bus (8288). Ce mode permet de
réaliser des systèmes multiprocesseurs.

9
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux:

𝑪𝑳𝑲 : Entrée d’horloge qui cadence le fonctionnement


du microprocesseur.

𝑹𝑬𝑺𝑬𝑻 : Entrée de réinitialisation du microprocesseur.


Lorsque cette entrée est mise à l'état haut pendant au
moins 4 périodes d'horloge, le microprocesseur est remis
à zéro.

𝑹𝑬𝑨𝑫𝒀 : Entrée de synchronisation avec la mémoire. Ce


signal provient également du générateur d’horloge. Le
signal est actif à l’état haut.

𝑻𝑬𝑺𝑻 : Entrée de mise en attente du microprocesseur


d’un événement extérieur.

𝑴𝑵/𝑴𝑿 : Le signal de cette broche indique dans quel


mode le processeur va fonctionner.

𝑵𝑴𝑰, 𝑰𝑵𝑻𝑹 : Entrées de demande d’interruption.


NMI (Non Maskable Interrupt) : interruption prioritaire..
INTR (Maskable interrupt): interruption normale.

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux:

𝑵𝑴𝑰, 𝑰𝑵𝑻𝑹 : Entrées de demande d’interruption.


NMI (Non Maskable Interrupt) : interruption prioritaire..
INTR (Maskable interrupt): interruption normale.

INTR (Pin 18) : Interruption masquable. C’est comme un


bouton “attire ton attention” que des périphériques
peuvent utiliser pour demander de l’aide.
Par exemple, si un clavier envoie une touche, il peut utiliser
INTR pour que le processeur lise la touche.

INTR est comme une notification que le 8086 peut décider


de traiter ou de différer selon l’importance de sa tâche en
cours.

NMI (Pin 17) : Interruption non-masquable, utilisée pour


des événements critiques comme une alerte de panne de
courant.

10
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux


𝑰𝑵𝑻𝑨 (Interrupt Acknowledge) : Reconnaissance d'interruption, indique que le
microprocesseur accepte l’interruption. Il est actif à l’état bas.

𝑯𝑶𝑳𝑫, 𝑯𝑳𝑫𝑨 : Signaux de demande d’accès direct à la


mémoire (DMA). Le uP qui reçoit la demande HOLD va
émettre HLDA à l’état haut comme accusé de réception.

ARCHITECTURE GÉNÉRALE DU 8086

Exemple : Transfert de Données Direct (DMA)


Imaginons un système où un contrôleur DMA doit transférer une grande quantité de données entre la
mémoire et un périphérique (comme un disque dur) sans que le processeur intervienne dans chaque
étape. Voici comment HOLD et HLDA fonctionnent dans ce cas :
1. Le Contrôleur DMA demande le Bus (HOLD) :
o Le contrôleur DMA envoie un signal HOLD (Pin 31) au microprocesseur 8086.
o Ce signal HOLD demande au 8086 de libérer le bus, car le contrôleur DMA veut accéder à la mémoire directement.
2. Le Processeur Libère le Bus (HLDA) :
o Le 8086 termine l'instruction en cours et envoie un signal HLDA (Hold Acknowledge) pour indiquer qu’il a libéré le bus.
o Pendant ce temps, le 8086 arrête temporairement ses propres accès mémoire et attend que le contrôleur DMA termine son
travail.
3. Accès Direct par le Contrôleur DMA :
o Le contrôleur DMA utilise maintenant le bus pour lire et écrire directement dans la mémoire sans impliquer le 8086.
o Ceci permet des transferts de données rapides entre la mémoire et le périphérique, car le processeur n’a pas besoin
d’intervenir.
4. Fin de la Demande (Fin de HOLD) :
o Une fois le transfert terminé, le contrôleur DMA relâche le signal HOLD.
o Le 8086 voit que HOLD est terminé, il récupère donc le contrôle du bus et continue ses opérations normales.

11
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux


𝑰𝑵𝑻𝑨 (Interrupt Acknowledge) : Reconnaissance d'interruption, indique que le
microprocesseur accepte l’interruption. Il est actif à l’état bas.

𝑯𝑶𝑳𝑫, 𝑯𝑳𝑫𝑨 : Signaux de demande d’accès direct à la


mémoire (DMA). Le uP qui reçoit la demande HOLD va
émettre HLDA à l’état haut comme accusé de réception.

𝑺𝟎 − 𝑺𝟕 : Signaux d’état indiquant le type d’opération en


cours sur le bus.
𝑨𝟏𝟔 /𝑺𝟑 à 𝑨𝟏𝟗 /𝑺𝟔 : 4 bits de poids fort du bus d’adresses,
multiplexés avec 4 bits d’état.

𝑨𝑫𝟎 … 𝑨𝑫𝟏𝟓 : Le bus A/D est multiplexé (multiplexage


temporel) d’où la nécessité d’un démultiplexage pour
obtenir séparément les bus d’adresses et de données.
𝑨𝑳𝑬 (Address Latch Enable): Commande de mémorisation
de l’adresse.

ARCHITECTURE GÉNÉRALE DU 8086

•Exemple : ALE (Address Latch Enable)


•Le microprocesseur 8086 utilise un bus qui sert à la fois pour les adresses et pour les données. Cela
signifie qu'il ne peut pas envoyer une adresse et des données en même temps sur les mêmes broches.

•ALE aide à séparer les deux types d'informations pour que le système puisse d'abord recevoir l'adresse,
puis les données.

Fonctionnement de ALE:
1.Activation de ALE (Quand ALE = Haut) :
1. Lorsque la broche ALE est "haute" (active), cela signifie que les informations présentes sur le
bus sont l’adresse où le 8086 doit lire ou écrire des données.
2. ALE informe ainsi le système que ce qui arrive en premier sur le bus est une adresse.
2.Désactivation de ALE (Quand ALE = Bas) :
1. Une fois l’adresse envoyée, ALE passe à "bas".
2. Maintenant, le bus peut transporter les données sans confusion avec l’adresse.
Exemple Pratique
•Imaginons une livraison de colis :
• Le livreur (microprocesseur 8086) doit d'abord donner l’adresse avant de laisser le colis
(données).
• ALE est comme un signal qui dit : "Je donne l’adresse maintenant, préparez-vous pour la
livraison."
• Une fois l’adresse reçue par le destinataire, ALE passe à bas, et le livreur peut maintenant livrer
le colis.

12
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux


𝑰𝑵𝑻𝑨 (Interrupt Acknowledge) : Reconnaissance d'interruption, indique que le
microprocesseur accepte l’interruption. Il est actif à l’état bas.

𝑯𝑶𝑳𝑫, 𝑯𝑳𝑫𝑨 : Signaux de demande d’accès direct à la


mémoire (DMA). Le uP qui reçoit la demande HOLD va
émettre HLDA à l’état haut comme accusé de réception.

𝑺𝟎 − 𝑺𝟕 : Signaux d’état indiquant le type d’opération en


cours sur le bus.
𝑨𝟏𝟔 /𝑺𝟑 à 𝑨𝟏𝟗 /𝑺𝟔 : 4 bits de poids fort du bus d’adresses,
multiplexés avec 4 bits d’état.

𝑨𝑫𝟎 … 𝑨𝑫𝟏𝟓 : Le bus A/D est multiplexé (multiplexage


temporel) d’où la nécessité d’un démultiplexage pour
obtenir séparément les bus d’adresses et de données.
𝑨𝑳𝑬 (Address Latch Enable): Commande de mémorisation
de l’adresse.

𝑹𝑫 (Read): Signal de lecture d’une donnée.

𝑾𝑹 (Write): Signal d’écriture d’une donnée.

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux


𝑴/𝑰𝑶 (Memory/Input-Output): indique si le 8086 adresse la
mémoire (𝑀/𝐼𝑂= 1) ou les E/S (𝑀/𝐼𝑂 = 0).

𝑫𝑬𝑵 (Data Enable): indique que des données sont en


train de circuler sur le bus A/D (Comme ALE dans le cas
des adresses).

13
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux

La broche DEN̅ (Data Enable) fonctionne un peu comme ALE, mais au lieu de gérer les adresses,
elle est utilisée pour activer les données sur le bus A/D (adresse/données) du 8086.
Fonctionnement de DEN̅
•Rôle : La broche DEN̅ indique au système externe que le processeur 8086 est en train d'envoyer
ou de recevoir des données.
•Signal Actif (DEN̅ = Bas) :
• Lorsque DEN̅ est à l'état bas (actif), cela signifie que des données circulent sur le bus.
• Les périphériques savent alors qu'ils peuvent lire les données envoyées par le processeur
ou préparer à recevoir les données du processeur.
Exemple Pratique :
•Imaginons un supermarché avec une caisse automatique :
• ALE serait comme le moment où le client entre son numéro de carte de fidélité (adresse).
• DEN̅ serait le moment où la caisse commence à afficher et à traiter les articles achetés
(données).
• Quand DEN̅ est actif (bas), cela signifie que les informations sur le bus sont des données
(comme les prix des articles). Le système sait qu'il peut traiter ces informations.

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux


𝑴/𝑰𝑶 (Memory/Input-Output): indique si le 8086 adresse la
mémoire (𝑀/𝐼𝑂= 1) ou les E/S (𝑀/𝐼𝑂 = 0).

𝑫𝑬𝑵 (Data Enable): indique que des données sont en


train de circuler sur le bus A/D (Comme ALE dans le cas
des adresses).

𝑫𝑻/𝑹 (Data Transmit/Receive): indique le sens de transfert


des données :
▪ 𝐷𝑇/𝑅= 1 : données émises par le uP (écriture) ;
▪ 𝐷𝑇/𝑅= 0 : données reçues par le uP (lecture).
𝑩𝑯𝑬 (Bus High Enable): Signal de lecture d’octet de poids
fort du bus de données (D8-D15). 1 Mo adressable est divisé
en deux banques de 512 Ko chacune : la banque inférieure
(ou paire) et la banque supérieure (ou impaire).

Ces deux banques sont sélectionnées par :


• A0 pour la banque paire contenant les octets de poids faible
• BHE pour la banque impaire contenant les octets de poids fort

14
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

𝑩𝑯𝑬 (Bus High Enable): Signal de lecture d’octet de poids


fort du bus de données (D8-D15). 1 Mo adressable est divisé
en deux banques de 512 Ko chacune : la banque inférieure
(ou paire) et la banque supérieure (ou impaire).

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux


Démultiplexage des adresses et des données
Chronogramme du bus A/D

15
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux


Résumé:

Les lignes d’adresses et de données du 8086 sont multiplexées de manière à


économiser le nombre de broches.
Circuit de démultiplexage A/D

Le bus sera démultiplexé pour fournir


des bus de données et d'adresses
séparément. Ceci est réalisé par de simples «
latchs » commandés par le signal ALE (Adress
Latch Enable).

Le signal ALE est généré directement par le 8086 en mode minimum, et par son
contrôleur de bus 8288 en mode maximum.

ARCHITECTURE GÉNÉRALE DU 8086

II- Description des signaux Circuit de démultiplexage A/D

Résumé:

Étape 1 : Envoi de l'Adresse


• Le 8086 envoie l’adresse sur les broches AD0 - AD15.
• ALE devient actif pour indiquer que ces broches transportent une adresse.
• Le latch capture l'adresse et la garde en mémoire.
Étape 2 : Envoi des Données
• Une fois que l'adresse est capturée, ALE se désactive.
• Maintenant, les broches AD0 - AD15 peuvent être utilisées pour envoyer les données.
• Le latch garde l'adresse sur le bus d'adresses pendant que les données circulent sur le bus de données.

16
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

Création du bus système du 8086:


Contrôle du transfert des données.
1- Broches AD0 - AD15 :
• Ces broches peuvent être utilisées pour envoyer une
adresse ou des données.
• Quand on envoie une adresse, les broches transportent
l’emplacement où on veut accéder.
• Quand on envoie des données, les broches transportent
l’information qu'on veut échanger.
2- DT/¯R (Direction du Transfert) :
• Ce signal indique si le 8086 envoie ou reçoit des données.
• DT = 1 : le 8086 envoie les données (vers un autre
composant).
• ¯R = 1 : le 8086 reçoit les données (d'un autre composant).
3- DEN (Validation du Transfert) :
• Ce signal confirme que le transfert de données est en
cours.
• DEN activé : le bus est prêt pour échanger les données.
4-DIR et G :
• DIR : indique la direction du flux de données.
• G (Enable) : active les lignes de données pour autoriser le
transfert.
1. Lignes de Données (D0 - D7 ou D8 - D15) :
Ce sont les "routes" par lesquelles les données circulent. Elles
sont parfois "bufferisées" pour éviter des problèmes comme
des pertes de données.

ARCHITECTURE GÉNÉRALE DU 8086

34

17
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

III- Création du bus système du 8086

Pour construire le bus système, nous utilisons :

▪ 3 circuits de type 8282 (obtenir les lignes


d'adresses de A0 à A19 et la ligne 𝑩𝑯𝑬)

▪ 2 circuits de type 8286 (obtenir le bus de


données)

▪ Le bus de contrôle est généré directement


en mode minimum, ou à l'aide d'un circuit
supplémentaire (8288) en mode maximum.

ARCHITECTURE GÉNÉRALE DU 8086

III- Création du bus système du 8086

▪ 8282 : Capture et verrouille l’adresse


provenant du 8086 pour le bus d’adresses.
▪ 8286 : Permet au 8086 d’envoyer ou de
recevoir des données via le bus de données.
▪ Commandes : Gère les signaux de
commande pour indiquer si l’opération est
une lecture, une écriture, ou une opération
sur la mémoire ou un périphérique.

18
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

IV- Les modes de fonctionnement du8086

Le 8086 peut fonctionner suivant deux modes : minimum et maximum. La


sélection entre ces deux modes se fait au niveau de la broche 𝑴𝑵/𝑴𝑿.

Lorsque cette broche est à l’état:


• Haut, le 8086 fonctionne en mode minimum et
génère sur ses broches 24 à 31, tous les signaux
de contrôle nécessaires à ce mode. Il ne peut
adresser que 64 Ko de la mémoire dans ce cas.

• Bas, le 8086 opère en mode maximum. Il peut


adresser 16 segments de 64 Ko, soit 1 Mo. Ce
mode permet de réaliser des systèmes
multiprocesseurs.

ARCHITECTURE GÉNÉRALE DU 8086

QUIZ

1.Quel est le rôle du signal CLK dans le 8086 ?


1. A) Réinitialiser le processeur
2. B) Synchroniser les opérations du
processeur
3. C) Gérer les interruptions
4. D) Contrôler le mode du processeur

2.Comment fonctionne le signal TEST̅ pour le


8086 ?
1. A) Il permet de synchroniser les
opérations
2. B) Il met le processeur en attente d'un
événement extérieur
3. C) Il active le bus de contrôle
4. D) Il envoie un signal d'interruption

19
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

QUIZ

1.À quoi sert le signal ALE (Address Latch


Enable) ?
1. A) À synchroniser la mémoire et le
processeur
2. B) À indiquer que les données sont
prêtes à être lues
3. C) À distinguer entre les adresses et les
données sur le bus
4. D) À activer une interruption
2.Quel est l'effet de mettre le signal RESET à
l'état haut ?
1. A) Le microprocesseur attend un
événement extérieur
2. B) Le microprocesseur est réinitialisé
3. C) Le microprocesseur passe en mode
maximum
4. D) Le processeur continue son
programme sans interruption

ARCHITECTURE GÉNÉRALE DU 8086

QUIZ
• Quel mode du 8086 permet de fonctionner de manière autonome sans contrôleur de bus externe ?
A) Mode maximum
B) Mode minimum
C) Mode mixte
D) Aucun
• Que se passe-t-il lorsque le signal HOLD est activé sur le 8086 ?
A) Le processeur cesse de fonctionner
B) Le processeur libère le bus pour un accès direct par un périphérique
C) Le processeur active une interruption prioritaire
D) Le processeur entre en mode basse consommation
• Le signal BHE (Bus High Enable) est utilisé pour :
A) Activer le bus de données complet
B) Indiquer une écriture en mémoire
C) Sélectionner la banque de mémoire haute (D8-D15)
D) Sélectionner la banque de mémoire basse (D0-D7)
• Quel signal permet au 8086 de différencier entre la mémoire et les périphériques d’entrée/sortie ?
A) ALE
B) DEN
C) M/IO
D) READY
• Lors d’un transfert de données, quel est le rôle du signal DT/R ?
A) Indiquer si le bus transporte des adresses ou des données
B) Indiquer le sens de transfert des données (émission ou réception)
C) Indiquer une demande d’interruption
D) Indiquer si le processeur est prêt à recevoir des données

20
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

Registres:

Définition: 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 durant l'exécution d'un programme.

ARCHITECTURE GÉNÉRALE DU 8086

Architecture interne du 8086:

• L'UIB (Unité d'Interfaçage avec le


Bus) s’occupe des fonctions de
recherche des instructions.
Recherche des opérandes et
stockage des résultats. Il dispose
d’un fil d’attente de 6 instructions.
Ces instructions sont transmises
une à une à l’UE.

• L'UE (Unité d'Exécution) permet de


fournir à l’UIB les adresses et les
opérandes et permet également
bien sur de calculer les résultats
des opérations. Alors l’UE exécute
les instructions qui lui sont
transmises par l'UIB.

Unité d’Exécution (EU) Unité d’Interface de Bus (BIU)

21
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086

➢ UIB comporte:
▪ 4 registres de segments (DS, CS, SS et ES),
▪ Un pointeur d’instruction (IP),
▪ Une pile pour stocker les instruction et
données en attente.

➢ UE comporte:
▪ UAL : peut être charger par 2 Registres
Temporaires (TR) et effectuer des opérations
sur un ou deux octets.
▪ 4 registres généraux (AX, BX, CX et DX),
▪ 2 pointeurs de pile (SP et BP),
▪ 2 registres d'index (SI et DI).
Unité d’Exécution (EU) Unité d’Interface de Bus (BIU)

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086

➢ UIB comporte:
▪ 4 registres de segments (DS, CS, SS et ES),
▪ Un pointeur d’instruction (IP),
▪ Une pile pour stocker les instruction et
données en attente.

➢ UE comporte:
▪ UAL : peut être charger par 2 Registres
Temporaires (TR) et effectuer des opérations
sur un ou deux octets.
▪ 4 registres généraux (AX, BX, CX et DX),
▪ 2 pointeurs de pile (SP et BP),
▪ 2 registres d'index (SI et DI).
Unité d’Exécution (EU) Unité d’Interface de Bus (BIU)

! Tous les registres sont d'une largeur de 16 bits

22
02/01/2025

AH AL Bus d’adresse Interne 20 bits


BH BL Calcul 20 bits
CX CH CL d’adresse Bus d’adresse
DX DH DL Interface
16 bits
BP CS IP avec Bus Bus de contrôle
SP DS
externes
SI SS 16 bits
DI ES Bus de données

Bus de données Interne 16 bits

RT RT
Codage
Contrôle
Séquencement
UAL File d’attente 6
octets de codes
instructions 7

Flags Architecture Générale du processeur 8086


45

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Registres généraux : 4 registres sur 16 bits.

• AX = (AH, AL) : Accumulateur


• BX = (BH, BL) : Registre de base (adressage)
• CX = (CH, CL) : Compteur (boucle)
• DX = (DH, DL): Registre de données

23
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :
1. AX (Registre Accumulateur)
•Description : Le registre AX est souvent utilisé comme registre principal pour les
opérations arithmétiques et logiques.
•Fonctions principales : Il est divisé en deux parties : AH (8 bits de poids fort) et AL (8 bits
de poids faible). AX est souvent impliqué dans des instructions qui nécessitent des calculs
ou manipulations de données.
2. BX (Registre de Base)
•Description : BX est principalement utilisé comme registre de base pour accéder aux
données stockées en mémoire.
•Fonctions principales : Comme AX, il est divisé en deux parties (BH et BL) et sert souvent
d'adresse de base pour le stockage de données ou pour manipuler les segments mémoire.
3. CX (Registre de Compte)
•Description : CX est souvent utilisé comme compteur pour les boucles.
•Fonctions principales : Il sert de compteur dans des instructions répétitives (comme les
boucles), car le 8086 peut utiliser CX pour répéter certaines instructions automatiquement
jusqu’à ce que CX atteigne zéro.
4. DX (Registre de Données)
•Description : DX est utilisé pour stocker les données intermédiaires et pour certaines
opérations spécifiques.
•Fonctions principales : En complément de AX dans les opérations de multiplication et de
division de grands nombres, DX peut aussi stocker des adresses d’entrée-sortie (I/O) dans
certaines instructions.

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Registres généraux : 4 registres sur 16 bits.

• AX = (AH, AL) : Accumulateur


• BX = (BH, BL) : Registre de base (adressage)
• CX = (CH, CL) : Compteur (boucle)
• DX = (DH, DL): Registre de données

Registres de pointeurs et d’index : 4 registres sur 16 bits.

Index :
• SI : Source Index Ils sont utilisés pour les
transferts de chaînes d’octets
• DI : Destination Index entre deux zones mémoire.
5. SI (Source Index)
•Description : SI est principalement utilisé pour accéder aux données dans la mémoire, surtout pour les opérations de traitement de
chaîne.
•Fonctions principales : Il aide à lire des données d'une chaîne de caractères ou d'un tableau. Souvent utilisé avec le registre DS (Data
Segment) pour pointer vers des données en mémoire.
6. DI (Destination Index)
•Description : DI est utilisé pour écrire des données en mémoire, en particulier dans les opérations de chaîne.
•Fonctions principales : Souvent couplé avec le segment ES (Extra Segment), DI pointe vers l’endroit où les données doivent être stockées.
Utilisé aussi pour copier des chaînes de données.

24
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Registres généraux : 4 registres sur 16 bits.

• AX = (AH, AL) : Accumulateur


• BX = (BH, BL) : Registre de base (adressage)
• CX = (CH, CL) : Compteur (boucle)
• DX = (DH, DL): Registre de données

Registres de pointeurs et d’index : 4 registres sur 16 bits.

Index :
• SI : Source Index Ils sont utilisés pour les
transferts de chaînes d’octets
• DI : Destination Index entre deux zones mémoire.
5. SI (Source Index)
•Description : SI est principalement utilisé pour accéder aux données dans la mémoire, surtout pour les opérations de traitement de
chaîne.
•Fonctions principales : Il aide à lire des données d'une chaîne de caractères ou d'un tableau. Souvent utilisé avec le registre DS (Data
Segment) pour pointer vers des données en mémoire.
Exemple concret :
Imaginez que vous avez une liste de noms, et que vous voulez lire chaque nom dans l'ordre. SI va pointer sur le début de chaque nom, et
vous pouvez avancer SI pour lire le nom suivant dans la liste.

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Registres généraux : 4 registres sur 16 bits.

• AX = (AH, AL) : Accumulateur


• BX = (BH, BL) : Registre de base (adressage)
• CX = (CH, CL) : Compteur (boucle)
• DX = (DH, DL): Registre de données

Registres de pointeurs et d’index : 4 registres sur 16 bits.

Index :
• SI : Source Index Ils sont utilisés pour les
transferts de chaînes d’octets
• DI : Destination Index entre deux zones mémoire.
6. DI (Destination Index)
•Description : DI est utilisé pour écrire des données en mémoire, en particulier dans les opérations de chaîne.
•Fonctions principales : Souvent couplé avec le segment ES (Extra Segment), DI pointe vers l’endroit où les données doivent être stockées.
Utilisé aussi pour copier des chaînes de données.
•Exemple concret :
Imaginez que vous copiez une chaîne de caractères (par exemple, un mot ou une phrase) d'un endroit de la mémoire à un autre. DI va
pointer vers l'endroit où chaque caractère doit être copié. Vous pouvez avancer DI pour copier chaque caractère, un par un, vers le nouvel
emplacement.

25
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Registres généraux : 4 registres sur 16 bits.

• AX = (AH, AL) : Accumulateur


• BX = (BH, BL) : Registre de base (adressage)
• CX = (CH, CL) : Compteur (boucle)
• DX = (DH, DL): Registre de données

Registres de pointeurs et d’index : 4 registres sur 16 bits.


Pointeurs :
• SP (Stack Pointer) : Pointeur de pile, utilisé pour l’accès à la pile.
• BP (Base Pointer) : Pointeur de base, utilisé pour adresser les données sur la pile.
7. BP (Base Pointer)
•Description : BP est souvent utilisé pour pointer vers des données stockées dans la pile.
•Fonctions principales : Principalement utilisé en accès indirect pour récupérer des valeurs de la pile, souvent dans des
appels de sous-programmes ou des fonctions, et travaille souvent avec le segment SS (Stack Segment).
8. SP (Stack Pointer)
•Description : SP pointe vers le sommet de la pile, c’est-à-dire la dernière donnée ajoutée dans la pile.
•Fonctions principales : Lors de l’utilisation de la pile pour stocker des adresses de retour ou des données temporaires,
SP permet de savoir où sont stockées ces informations.

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Pointeur d’instruction et registre d’état : 2 registres sur 16 bits.

• Pointeur d’instruction IP (Compteur ordinal): contient


l’adresse de la prochaine instruction à exécuter. Il pointe
TOUJOURS vers le premier octet de l'adresse de l'instruction
suivante.

9. IP (Instruction Pointer)
•Description : IP garde la trace de l'adresse de
la prochaine instruction à exécuter.
•Fonctions principales : Avec le segment CS
(Code Segment), IP forme l’adresse complète
de la prochaine instruction. C’est crucial pour
le déroulement du programme.

26
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Pointeur d’instruction et registre d’état : 2 registres sur 16 bits.

• Pointeur d’instruction IP (Compteur ordinal): contient


l’adresse de la prochaine instruction à exécuter. Il pointe
TOUJOURS vers le premier octet de l'adresse de l'instruction
suivante.
• Registre d’état : contient les indicateurs (flags)

CF : indicateur de retenue (Carry)


PF : indicateur de parité (paire : P=1; impaire : P=0)
AF : indicateur de retenue auxiliaire
ZF : indicateur de Zéro
SF : indicateur de signe
TF : indicateur d’exécution pas à pas (Trap)
IF : indicateur d’autorisation d’Interruption
DF : indicateur de Décrémentation
OF : indicateur de dépassement (Overflow)

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Registres de segments : 4 registres sur 16 bits.

• CS (Code Segment) : registre de segment de code


• DS (Data Segment): registre de segment de données
• SS (Stack Segment): registre de segment de pile
• ES (Extra Segment): registre de segment supplémentaire pour les
données.

• CS (Code Segment) : Stocke le segment d’adresse pour les instructions en


cours d'exécution. c’est-à-dire la partie de la mémoire où est stocké le code
du programme (les instructions à exécuter).
• DS (Data Segment) : Contient l'adresse segment des données. c'est-à-dire la
partie de la mémoire où les données sont stockées.
• SS (Stack Segment) : Segment où la pile est située. la partie de la mémoire
réservée pour la pile.
• ES (Extra Segment) : Utilisé pour les opérations additionnelles,
particulièrement les copies de chaîne.

27
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086


Résumé: Tous les registres du 8086 sont structurés sur 16 bits.

ARCHITECTURE GÉNÉRALE DU 8086

V- Architecture interne du 8086

Bloc de commandes de l’unité d’exécution


Permet de générer les signaux de commandes
nécessaires au fonctionnement et à la synchronisation
des différents éléments du microprocesseur.

Bloc UAL (Unité Arithmétique-Logique)


Une partie de la machine chargée d'effectuer les calculs.

N
Largeur du bus

Unidirectionnel

Bidirectionnel

28
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

❑ Bus d’adresse est de 20 bits ---> Mémoire totale adressable égale 220 octets = 1 Mo

❑ Taille des registres est de 16 bits ---> seuls 216 octets = 64 Ko peuvent être adressés

❑ La mémoire est donc divisée en segments de 64 Ko

❑ Deux registres sont alors nécessaires pour adresser un emplacement mémoire:

• Registre pour adresser le segment (registre de segment) : CS, DS, SS, ES

• Registre pour adresser l'intérieur du segment (registre offset) : IP, SP, BP, SI, DI et BX

❑ Une adresse se présente sous la forme segment : offset


• Le segment localise le début d’une zone mémoire de 64 Ko

• L’offset précise l’adresse relative par rapport au début de segment.

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

Pensez à la mémoire comme à une grande bibliothèque remplie de livres. Chaque étagère de cette
bibliothèque contient un certain nombre de livres, et chaque livre a sa propre position sur l'étagère.

1.Segment : C’est comme l’adresse d’une étagère dans la bibliothèque. Dans notre cas, chaque segment
représente une étagère où l'on peut ranger des livres.
2.Offset : C’est le numéro du livre sur cette étagère. L’offset nous indique la position précise d'un livre sur
une étagère.
Pour trouver un livre précis dans cette grande bibliothèque, vous devez :
1.Aller à la bonne étagère (le segment).
2.Trouver le livre exact sur cette étagère en comptant un certain nombre de positions (l’offset).
Exemple dans la bibliothèque
Imaginons que :
•Étagère = Segment = 100
•Position du livre sur l’étagère = Offset = 20
Pour trouver l’emplacement précis de ce livre dans la bibliothèque, on utilise l’adresse segment : offset, ici
100 : 20.

29
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:
Dans la mémoire d’un ordinateur, cela se traduit par :
1. Le segment (étagère) nous donne un point de départ pour chercher dans la mémoire.
2. L’offset (position sur l’étagère) nous indique la distance par rapport au début du segment, ou là où se trouve notre donnée spécifique.
En informatique : Calcul de l'adresse physique
Pour le microprocesseur 8086, la mémoire fonctionne de manière similaire. L’adresse finale, ou adresse physique en mémoire, est calculée
avec cette formule :
Adresse physique=(Segment×16)+Offset {Adresse physique}
Ce calcul permet de trouver l’endroit précis en mémoire.
Exemple concret dans la mémoire
Imaginons :
• Segment = 0x1000 (adresse de début d'un segment de mémoire)
• Offset = 0x0020 (position relative dans ce segment)
On multiplie le segment par 16 (c’est comme compter les livres sur l’étagère) et on ajoute l'offset pour trouver la position exacte dans la
mémoire :
Adresse physique=(0x1000×16)+0x0020=0x10020
Cela signifie que l'adresse réelle en mémoire est 0x10020.
Pourquoi utiliser segment : offset ?
Cette méthode permet d’adresser beaucoup plus de mémoire avec des registres de 16 bits seulement. Chaque segment peut aller jusqu’à 64
Ko, mais en combinant plusieurs segments avec des offsets, on peut atteindre jusqu’à 1 Mo d’espace mémoire.

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

30
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:
➢ Adresse logique :

Segment : Offset
➢ Adresse physique :

Segment x 16 + Offset

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

Exercice : Effectuez l'opération suivante en passant par le système binaire. Puis,


calculer le résultat directement.

2 6 B 4 E H – 9 D 5 E H= 1 C D F 0 H

_ 0010 0110 1011 0100 1110


0000 1001 1101 0101 1110
____________________________
0001 1100 1101 1111 0000
1 C D F 0H

31
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

Exercice : Effectuez l'opération suivante en passant par le système binaire. Puis,


calculer le résultat directement.

2 6 B 4 E H – 9 D 5 E H= 1 C D F 0 H

+16 +16 +16

_ 2 6 B 4 E
+1 +1 +1
9 D 5 E
1 C D F 0
On emprunte 16, car on travaille en base de 16

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

Exercice 1 : Trouver l’adresse logique, si:


• Adresse segment: CS=1005H
• Adresse de décalage (offset): IP=5555H

Segment : Offset
----------->

----------->

1005H : 5555H

32
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

Exercice 2: Calculer l’adresse physique, si:


• Adresse segment: CS=1005H
• Adresse de décalage (offset): IP=5555H

Adresse segment: 1005H -------> 0001 0000 0000 0101


Décalage à gauche de 4 positions ------> 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0
16 bits
Adresse offset: 5555H ------>
+ 0101 0101 0101 0101
16 bits
Adresse physique: 155A5H <-----
= 0001 0101 0101 1010 0101
20 bits

Adresse Physique = Adresse de segment * 10H + Offset (adresse de décalage)

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

Exercice 3: Trouver l’adresse logique. Puis, calculer l’adresse physique, pour le cas:
• Adresse segment: CS=A000H
• Adresse offset : IP=5F00H
Adresse logique:
A000H : 5F00H
Adresse physique:
Adresse segment: (A000)H -----------> 1010 0000 0000 0000

Décalage à gauche de 4 positions : ------> 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


+
Adresse offset: (5F00)H -----------> 0101 1111 0000 0000

Adresse physique: (A5F00)H <------- 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0

La limite inférieure de CS : CS*10H+ 0000H


La limite supérieure de CS : CS*10H+ FFFFH

33
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VI- Gestion de la mémoire


Segmentation de la mémoire:

Exercice 4:

1. Si CS=3499H et IP=2500H, trouver:


a. les limites du code segment CS
b. l’adresse logique du registre IP
c. l’adresse physique du registre IP

2. Refaire la même chose pour le cas de CS= 1296H et IP= 100H

ARCHITECTURE GÉNÉRALE DU 8086

Exercices:

• Si CS=3499H et IP=2500H, trouver:


a) l’adresse logique b) l’adresse physique c) les limites du code segment
• Si DS=3499H et Offset=3FB9H , trouver:
a) l’adresse physique b) l’adresse logique c) les limites du segment de données
• Si 1296H et IP=100H trouver:
a) l’adresse logique b) l’adresse physique c) les limites du code segment
• Si DS=1298H et Offset=37CC8H, trouver:
a) l’adresse logique b) l’adresse physique c) les limites du code segment

34
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

Exercices:

Exercice 1 :
Si CS = 4500H et IP = 1A2BH, trouver :
L’adresse logique.
L’adresse physique.
Les limites du segment de code.

Exercice 2 :
Si DS = 3200H et Offset = 4C39H, trouver :
L’adresse physique.
L’adresse logique.
Les limites du segment de données.

Exercice 3 :
Si CS = 29FFH et IP = 0FFFH, trouver :
L’adresse logique.
L’adresse physique.
Les limites du segment de code.

ARCHITECTURE GÉNÉRALE DU 8086

Exercices:

Exercice 4 :
Si DS = 3B20H et Offset = 7F99H, trouver :
1.L’adresse logique.
2.L’adresse physique.
3.Les limites du segment de données.

Exercice 5 :
Si SS = 5500H et SP = 00F8H, trouver :
1.L’adresse logique.
2.L’adresse physique.
3.Les limites du segment de pile.

Exercice 6 :
Si ES = 4A80H et Offset = 0156H, trouver :
1.L’adresse logique.
2.L’adresse physique.
3.Les limites du segment supplémentaire.

35
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

Exercices:

Exercice 7 :
Si CS = 2AB4H et IP = 1234H, trouver :
1.L’adresse logique.
2.L’adresse physique.
3.Les limites du segment de code.

Exercice 8 :
Si DS = 1C00H et Offset = FFFFH, trouver :
1.L’adresse logique.
2.L’adresse physique.
3.Les limites du segment de données.

ARCHITECTURE GÉNÉRALE DU 8086

Exercices:

Un programme est exécuté sur un système 8086. Les informations suivantes sont données :
Le registre CS contient la valeur 2A3FH et IP = 1F90H.
Le registre DS contient la valeur 3B50H et l'offset d'une variable dans le segment est 2F9CH.
Le registre SS contient 2E00H, et SP = FF80H.
Questions :
Code Segment :
Trouver l’adresse logique et l’adresse physique du programme.
Calculer les limites du segment de code.
Si on ajoute une instruction qui dépasse l’offset maximal, quelle adresse physique sera générée ?
L'exécution est-elle valide ?
Data Segment :
Trouver l’adresse logique et l’adresse physique de la variable dans le segment de données.
Calculer les limites du segment de données.
Si on essaie d’accéder à une donnée avec un offset 5FFFH, l’accès est-il valide ? Pourquoi ?
Stack Segment :
Trouver l’adresse logique et l’adresse physique du sommet de la pile (stack pointer).Calculer les limites
du segment de pile.
Si une instruction PUSH est exécutée alors que le SP = 0000H, qu'arrive-t-il ?

36
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

Exercices:

8. Quelle est la capacité d’adressage mémoire du 8086


9. Pour un 8086, donner le nom, la taille et expliquer le rôle des registres suivants: AX,CX,
DX, IP, DS.
10. Quel doit être la taille du bus d’adresse d’un microprocesseur 16 bits pour qu’il puisse
accéder à une mémoire de 512 ko?
11. Définir l’adresse effective, l’adresse physique et l’adresse logique.
12. Quelle est la différence entre un registre et une mémoire?
13. Quels sont les 4 groupes de registres du 8086, en indiquant les registres de chaque
groupe?

ARCHITECTURE GÉNÉRALE DU 8086

VII- Format d’une instruction


Un microprocesseur exécute un programme. Le programme est une suite d’instructions
stockées dans la mémoire. Une instruction peut être codée sur un ou plusieurs octets.

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

L’opération est réalisée entre les 2 opérandes et le résultat est toujours récupéré dans l’opérande de gauche.
Exemples : CMP, ADD, MOV, XCHG, AND …

➢ Il y a des instructions qui agissent sur un seul opérande:

Exemples : INC, DEC, NEG, NOT …

➢ Il y a aussi des instructions sans opérande

Exemples : NOP, STI, CLI, CBW …

Les opérandes peuvent être des registres, des constantes ou le contenu de cases mémoire.

37
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086


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. Il y a plusieurs modes d’adressage dans le 8086:

1. Adressage registre

2. Adressage immédiat

3. Adressage direct

4. Adressage indirect

a. Adressage basé

b. Adressage indexé

c. Adressage basé-indexé

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

1- Adressage registre

Ce mode d'adressage concerne tout transfert ou toute opération, entre deux


registres de même taille. Dans ce mode, le μP effectue toutes les opérations d'une
façon interne et l'opérande sera stockée dans un registre interne (sauf IP).

L'opération se fait sur un ou deux registres:


INST R1 , R2
INST R

Exemples :
INC AX : incrémenter le registre AX
MOV AX, BX : Copier le contenu de BX dans AX (AXBX); opérandes 16 bit
ADD CH, DL : Ajouter le contenu de DL au CH (CHDL+CH) ; opérandes 8 bits
ADD BX, AL : Déclaration d’erreur car BX est de 16 bits et AL est de 8 bits.

38
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

2- Adressage immédiat

Ce mode d’adressage est un mode de manipulation des valeurs latéraux avec un


registre interne.

L'opérande est une constante (valeur) qui fait partie de l’instruction:


INST R , VN
Exemples :
MOV AX, 243 : Charger AX par le nombre décimal 243 (AX243)
MOV AL, ‘A‘ : Charger AL par le code ASCII du caractère ‘A' (65)
MOV AX,‘AB' : Charger AH par le ASCII du caractère ‘A' (65) et AL par le ASCII du ‘B‘ (66)
MOV AX, A1EBH : Charger le registre AX par la valeur hexadécimal A1EB
102H :: Déclaration d’une erreur, AL est de 8 bits et la valeur 102h est de taille de 12
MOV AL, 102H
bits.
MOV AX, 40H : Cette instruction est juste, car on peut écrire 40h → 0040h valeur sur 16 bits.

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

3- Adressage direct
Un des deux opérandes se trouve en mémoire. L’adresse de la case mémoire est
précisé directement dans l’instruction.
INST R , [@]
INST [@] , R
INST taille [@] , VN
• L’adresse doit être placée dans [Rseg : Roffset].
• Si le segment (Rseg) n’est pas précisé, le registre DS est pris par défaut comme Rseg.

Exemples : :
Exemples
MOV AX,AX,
MOV [1234] ; : Copier le contenu de la mémoire d'adresse DS:1234 dans AX
[1234]
MOV [0200h]
MOV , AX, ;AX : Copier le contenu de AX dans la mémoire d'adresse DS:0200
[0200h]
MOV AX ,AX
MOV SS:243 ; : Copier le contenu de la mémoire SS:243 dans AX
, SS:243
MOV BYTE
MOV ptr [1213]
BYTE 4Ah,; Copier la valeur 4A dans la case mémoire DS:1213
[1213] ,, 4Ah
MOV WORD
MOV WORD ptr [1213] 4Ah ;; 4A → adresse DS:1213, et 00 → adresse+1 (c-à-d
[1213] ,, 4Ah
DS:1214)

39
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

4- Adressage indirect
Un des deux opérandes se trouve en mémoire. L’adresse se trouve dans l’un de
ces 4 registres BX, BP, SI ou DI.
INST R , [Rseg : Roffset]
INST [Rseg : Roffset] , R
INST taille [Rseg : Roffset] , VN

Si Rseg n'est pas spécifié, le segment Roffset BX BP SI DI


par défaut sera utilisé comme suit:
Rseg par défaut DS SS DS DS

Exemples :
MOV AX, [BX] :; Transfert de contenu de la case mémoire 16 bits pointer par BX,
par rapport au DATA segment vers AX.
ADD [SI], DL :; Ajouter le contenu de DL au contenu de la case mémoire 8 bits
pointer par DS:SI et stocker le résultats dans Op Déstination.

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

4- Adressage indirect

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


a. Adressage Basé
b. Adressage indexé
c. Adressage basé indexé

Mode Adressage Basé Indexé Basé Indexé


Registres utilisés BX DI BX, DI
BP SI BX, SI
BP, DI
BP, SI

40
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

4- Adressage indirect
a. Adressage Basé

L’offset se trouve dans l’un des deux registres de base BX ou BP. On peut préciser
un déplacement (Dep) optionnel qui sera ajouté au contenu de Rbase pour déterminer
l’offset:
INST R , [Rbase+Dep]
INST [Rbase+Dep] , R
INST taille [Rbase+Dep] , VN

Exemples :
MOV [BX+12], AL ; Transfert de contenu de AL vers la case mémoire pointer par
(BX+12) par rapport au DATA segment (DS:BX+12).
MOV SI, [BP+400] ; Charger SI par le contenu de la mémoire d'adresse SS:BP+400
MOV AX, [ES:BP] ; Charger AX par le contenu de la mémoire d'adresse ES:BP

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

4- Adressage indirect
b. Adressage Indexé

L’offset se trouve dans l’un des deux registres d’index SI ou DI. On peut préciser
un déplacement (Dep) optionnel qui sera ajouté au contenu de Rindex pour déterminer
l’offset:
INST R , [Rindex+Dep]
INST [Rindex+Dep] , R
INST taille [Rindex+Dep] , VN

Exemples :
MOV AX, [SI] ;: Charger AX par le contenu de la mémoire d'adresse DS:SI
MOV AX, [SI+200] ;: Charger AX par le contenu de la mémoire d'adresse DS:SI+200
MOV AX, [DI-10] ;: Charger AX par le contenu de la mémoire d'adresse DS:DI-10
MOV AX, [ES:SI+4] ;: Charger AX par le contenu de la mémoire d'adresse ES:SI+4

41
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

VIII- Modes d'adressage du 8086

4- Adressage indirect
c. Adressage Basé-Indexé

L'offset de l’adresse de l'opérande est la somme d’un registre de base (Rbase),


d'un registre d'index (Rindex) et d'un déplacement (Dep) optionnel. Si Rseg n'est pas
spécifié, le segment par défaut du registre de base est utilisé :
INST R , [Rbase+Rindex+Dep]
INST [Rbase+Rindex+Dep] , R
INST taille [Rbase+Rindex+Dep] , VN

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

ARCHITECTURE GÉNÉRALE DU 8086

Exercice II: Identifier le mode d’adressage pour chacune des lignes suivantes:
N° de ligne

1. MOV AL, [000BH] ; 1. Adressage direct


2. ADD AL, C4H ; 2. Adressage immédiat
3. MOV [BX], 00H ; 3. Adressage indirect basé
4. SUB AL, [BX+SI] ; 4. Adressage indirect basé-indexé
5. MOV AX, [BX+DI+5] ; 5. Adressage indirect basé-indexé
6. MOV AX, ‘AB’ ; 6. Adressage immédiat
7. ADD CH, DL ; 7. Adressage registre
8. MOV AX, [SI]; 8. Adressage indirect indexé
9. MOV AX, 5; 9. Adressage immédiat
10. MOV AX, BX; 10. Adressage registre
11. MOV AX, [BX]; 11. Adressage indirect basé
12. MOV AX, [BX+5]; 12. Adressage indirect basé
13. MOV AX, [SI+5]; 13. Adressage indirect indexé
14. MOV AX, [BX+SI]; 14. Adressage indirect basé-indexé
15. MOV AX, [BX+DI]; 15. Adressage indirect basé-indexé
16. MOV AX, [BX][DI]5; 16. Adressage indirect basé-indexé
17. MOV AX, [BX+SI+5]; 17. Adressage indirect basé-indexé

42
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

IX- Taille des échanges avec la mémoire


➢ La mémoire est organisée en octets.
➢ Lorsqu'une instruction est effectuée entre un registre et des données en mémoire,
le registre détermine la taille de l'opération :

▪ Si le registre est sur un octet, l'opération sera effectuée avec MOV [@], AL @ AL

une cellule de mémoire.

▪ Si le registre est sur un mot, l'opération sera effectuée avec AL


MOV [@], AX @
deux cellules de mémoire. AH

➢ Lorsqu'on effectue une opération entre une constante et une cellule de mémoire, il faut
utiliser les préfixes BYTE (octet) et WORD (mot) pour spécifier le nombre d'octets à écrire :

MOV BYTE ptr [@], 4Ah @ 4A MOV WORD ptr [@], 4Ah @ 4A
00

ARCHITECTURE GÉNÉRALE DU 8086

Exemple 1:

❑ Soit: SI = 24ABh; DI = C140h; DS = A1BAh

MOV [SI+1000h], 142Bh

▪ L'adresse effective : 24ABh + 1000h = 34ABh


▪ L'adresse physique : 34ABh + A1BA0h = A504Bh

❑ Soit le programme suivant :

MOV AX, A1BAh


MOV DS, AX
MOV DI, C140h
MOV AX, 1412h
MOV [DI], AX

Dans la dernière instruction où l'adressage indirect indexé est employé :


▪ L'adresse effective : C140h
▪ L'adresse physique : A1BA0h + C140h = ADCE0h

43
02/01/2025

ARCHITECTURE GÉNÉRALE DU 8086

Exemples:

❑ Soit: SS = 1240h ; BP = 42A8h ; SI = 4010h

MOV [BP+SI], 12h

▪ Autre écriture : MOV [BP][SI],12h


▪ L'adresse effective : BP + SI = 82B8h
▪ L'adresse physique : 10h × SS + 82B8h = 1A6B8h
▪ L'octet d'adresse 1A6B8h sera chargé par la valeur 12h.

❑ Indiquer le mode d’adressage pour chacune des instructions suivantes :

• MOV AX, BX
• MOV CX, 1234H
• MOV [1000H], CX
• MOV AL, [BX]
• MOV AH, [BX+SI]

PLAN

I. Introduction

II. Architecture Générale du 8086

III. Jeu d’Instructions

IV. Programmation en Assembleur 8086

V. Code Machine des Instructions

44
02/01/2025

JEU D’INSTRUCTIONS

I- Introduction
Chaque microprocesseur reconnait un ensemble d’instructions appelé jeu
d’instructions fixé par le constructeur.

Une instruction est définie par son code opératoire (opcode). On utilise donc une
notation symbolique pour représenter les instructions (mnémoniques). Un programme
constitué de mnémoniques est appelé programme en assembleur.

Les instructions peuvent être classées en groupes :

❑ Instructions de transfert de données (MOV, XCHG, ...) ;

❑ Instructions arithmétiques (ADD, SUB, MUL, DIV, ...) ;

❑ Instructions logiques (NOT, AND, OR, XOR, ...) ;

❑ Instructions de décalage et de rotation (SHR, SHL, ROL, ROR, ...);

❑ Instructions de branchement (JMP, Jxx, LOOP, ...) ...

JEU D’INSTRUCTIONS

II- Les instructions de transfert

Elles permettent de déplacer des données d’une source vers une destination.

MOV

MOV Od, Os : Copie l'opérande Source (Os) dans l'opérande Destination (Od)
[Od  Os]
MOV R1 , R2 R1R2
MOV R , [adr] R [adr]
MOV [adr] , R [adr] R
MOV R , im Rim
MOV taille [adr] , im copier une constante dans une case mémoire
taille = BYTE ou WORD

MOV [adr], [adr]


MOV Rseg, Rseg

45
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions de transfert

Elles permettent de déplacer des données d’une source vers une destination.

XCHG

XCHG Od, Os : Échange de l'opérande Source (Os) avec l'opérande Destination (Od)
[Od ⟷ Os]

XCHG R1 , R2 R1⟷R2
XCHG R , [adr]
R⟷ [adr]
XCHG [adr] , R

XCHG [adr], [adr]

JEU D’INSTRUCTIONS

Exercices:

1. Ecrire un code permettant de: org 100h


mov ax, 10FAh
• Mettre dans AX la valeur 10FAH
mov bx, 2234h
• Mettre dans BX la valeur 2234H xchg ax,bx
• Permuter le contenu des registres AX et BX ret

2. Ecrire un code permettant de: org 100h


mov si,10AAh
• Mettre dans SI la valeur 10AAH
mov di,10ABh
• Mettre dans DI la valeur 10ABH
mov [si], 0FFh
• Mettre dans [SI] la valeur FFH mov [di], 033h
• Mettre dans [DI] la valeur 33H xchg [si],bl
• Permuter le contenu des [SI] et [DI] xchg bl,[di]
xchg [si],bl
ret

46
02/01/2025

JEU D’INSTRUCTIONS

Exercices:

1. Ecrire un programme en assembleur 8086 qui org 100h


permet de : mov ax, 100h
▪ Charger la valeur 100H dans le registre AX. mov bx, 205h
▪ Charger la valeur 205H dans le registre BX. xchg ax,bx
▪ Permuter les valeurs des registres AX et BX. ret

2. Refaire la même chose sans utiliser l’instruction org 100h


mov ax, 100h
XCHG
mov bx, 205h
mov cx, ax
mov ax, bx
mov bx, cx
ret

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques

Le 8086 permet d'effectuer les quatre opérations arithmétiques de base: l'addition,


la soustraction, la multiplication et la division.

Les opérations peuvent s'effectuer sur des nombres de 8 bits ou de 16 bits signés
ou non signés. Les nombres signés sont représentés en complément à 2.

ADD
ADD Od, Os : Additionne l'opérande source (Os) et l'opérande destination (Od) et
met le résultat dans l'opérande destination (Od).
[Od  Od + Os]
ADD R1 , R2 R1R1+R2
ADD R , [adr] R R+[adr]
ADD [adr] , R [adr] R+[adr]
ADD R , im RR+im
ADD taille [adr] , im [adr] [adr]+im

ADD [adr], [adr]

47
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques

Exemples :

add ah, [1100H] ; ajoute le contenu de la case mémoire d’offset 1100H à


l’accumulateur AH;

add ah,[bx] ; ajoute le contenu de la case mémoire pointée par DS:BX à


l’accumulateur AH;

add byte [1200H], 05H ; ajoute la valeur 05H au contenu de la case


mémoire d’offset 1200H.

JEU D’INSTRUCTIONS

Exercice:
L’instruction ADD permet de positionner les flags à « 1 » ou à « 0 » selon le résultat
de l’opération:

1. Après avoir exécuté les programmes suivants, quelles sont les valeurs que
prennent les flags? Faire un calcul manuel pour justifier la réponse.

org 100h org 100h


mov al, 0D8h mov bl, 75 ; décimal
mov ah, 0CAh mov bh, 67; décimal
add ah,al add bh, bl C 1
ret ret
Z 1
2. Proposer un programme pour positionner les flags comme indiqué: S 0
O 0
P 1
A 1

48
02/01/2025

JEU D’INSTRUCTIONS

Exercices:
1.

org 100h org 100h


mov al, 0D8h mov bl, 75 ; décimal
mov ah, 0CAh mov bh, 67; décimal
add ah,al add bh, bl
ret ret

JEU D’INSTRUCTIONS

Exercices:
2.

C 1
Z 1
S 0
O 0
P 1
A 1

49
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques

Le 8086 permet d'effectuer les quatre opérations arithmétiques de base: l'addition,


la soustraction, la multiplication et la division.

Les opérations peuvent s'effectuer sur des nombres de 8 bits ou de 16 bits signés
ou non signés. Les nombres signés sont représentés en complément à 2.

SUB
SUB Od, Os : Soustrait l'opérande source (Os) et l'opérande destination (Od) et met
le résultat dans l'opérande destination (Od).
[Od  Od - Os]
SUB R1 , R2 R1R1-R2
SUB R , [adr] R R-[adr]
SUB [adr] , R [adr] [adr] -R
SUB R , im RR-im SUB [adr], [adr]
SUB taille [adr] , im [adr] [adr]-im
Exemple :
mov ax, 39h
sub ax, 18h ; axax-18h

JEU D’INSTRUCTIONS

Exercice:
L’instruction SUB permet de positionner les flags CZSOPA à ‘1’ ou à ‘0’ selon le
résultat de l’opération:

1. Après avoir exécuté les programmes suivants, quelles sont les valeurs que
prennent les flags? Faire un calcul manuel pour justifier la réponse.

org 100h org 100h


mov bl, 75 ; décimal mov bl, 75 ; décimal
mov bh, 67; décimal mov bh, 67; décimal
sub bh, bl sub bl, bh
ret ret

2. Discuter les résultats

50
02/01/2025

EXERCICES

Exercice:

Il faut un CA2

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


MUL
MUL Os : Effectue une multiplication non signée entre l'accumulateur (AL ou AX) et
l'opérande (Os). Le résultat de taille double est stocké dans l'accumulateur
et son extension (AH ou DX).
IMUL Os : Identique à MUL excepté qu'une multiplication signée est effectuée.

(I) MUL Reg8 AXAL*Reg8


(I) MUL BYTE [adr] AXAL*[adr]
(I) MUL Reg16 DX:AX AX*Reg16 (I) MUL im

(I) MUL WORD [adr] DX:AX AX*[adr]

Exemples :

mov al,51 mov ax,4253


mov bl,32 mov bx,1689
mul bl; AX = 51 × 32 mul bx; (DX, AX) = 4253 × 1689

51
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


Exemples : AH AL

MOV AL, 4 ? ? 0 4
MOV AH, 25 1 9 0 4 AX
MUL AH 0 0 6 4

MOV BX, 435 0 1 B 3 BX


MOV AX, 2372 0 9 4 4 AX
MUL BX 0 0 0 F B E 8 C

DX AX
MOV BX, -435 F E 4 D BX

MOV AX, 2372 0 9 4 4 AX


IMUL BX F F F 0 4 1 7 4

DX AX

JEU D’INSTRUCTIONS

Exemples:

MOV BX, 435


A l’issue de l’exécution de ces 3 instructions, AX contient la
MOV AX, 2372 valeur BE8C et DX la valeur F, soit la valeur hexadécimale
FBE8C, c’est-à-dire 1031820, le produit de 435 par 2372.
IMUL BX

MOV BX, -435


A l’issue de l’exécution de ces 3 instructions, AX contient la
MOV AX, 2372 valeur 4174 et DX la valeur FFF0, soit la valeur -1031820, le
produit de -435 par 2372.
IMUL BX

52
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


DIV
DIV Os : Effectue une division non signée entre l'accumulateur (AL ou AX) par
l'opérande (Os). Le quotient est récupéré dans le registre AL ou AX et le
reste dans le registre AH ou DX.
IDIV Os : Identique à DIV excepté qu'une division signée est effectuée.

(I) DIV Reg8 AL Quotient


(I) DIV BYTE [adr] AH Reste

(I) DIV Reg16 AX  Quotient (I) DIV im

(I) DIV WORD [adr] DX  Reste

Exemples : mov dx,0


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

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


Exemples :

MOV BX, 435 0 1 B 3 BX


MOV AX, 2372 0 9 4 4 AX
DIV BX 0 0 C 5 0 0 0 5

DX (reste) AX (quotient)

MOV BX, -435 F E 4 D BX

MOV AX, 2372 0 9 4 4 AX


IDIV BX 0 0 C 5 F F F B

DX (reste) AX (quotient)

53
02/01/2025

JEU D’INSTRUCTIONS

Exemples:

MOV BX, FFFEh


A l’issue de l’exécution de ces 4 instructions, AX contient la
MOV AX, 2372H valeur 0172H et DX la valeur 2656H.
MOV DX, 0172H Tous les opérandes sont considérés comme nombre positifs.
DIV BX

MOV BX, FFFEh


A l’issue de l’exécution de ces 4 instructions, AX contient la
MOV AX, 2372H valeur 2372H et DX la valeur 0172H.

MOV DX, 0172H Un opérande est considéré comme un nombre négatif si le


IDIV BX bit du poids leplus fort est 1 (bit signe).

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


INC

INC Os : incrémente l'opérande (Os) d’une unité. Os [Os  Os +1]

INC R R R+1

Incrémenter le contenu d’une case mémoire


INC taille [adr]
taille = BYTE ou WORD

Exemples : En partant de la situation mémoire illustrée, quelle est la situation mémoire


après l’exécution séquentielle des instructions suivantes

INC BYTE ptr [400h] DS: 400 FEh


DS: 401 33h
INC WORD ptr [400h]

54
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


DEC

DEC Os : Décrémente l'opérande (Os) d’une unité. Os [Os  Os -1]

DEC R R R-1

Décrémenter le contenu d’une case mémoire


DEC taille [adr]
taille = BYTE ou WORD

Exemples : En partant de la situation mémoire illustrée, quelle est la situation mémoire


après l’exécution séquentielle des instructions suivantes

DEC BYTE ptr [400h] DS: 400 FEh


DS: 401 33h
DEC WORD ptr [400h]

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques

Exemple : FEh
DS: 400
33h

INC BYTE ptr [400h]

DS: 400 FFh


33h

INC WORD ptr [400h]

DS: 400 00 octet du poids faible


34h octet du poids fort

55
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


NEG

NEG Os : Remplace l'opérande (Os) par son complément à 2 [Os  0- Os=CA2(Os)]

NEG R R CA2(R)

NEG taille [adr] adresse CA2([adresse])

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


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

Opérandes non Signés Opérandes Signé

O S Z C O S Z C
Od > Os - 0 0 0 0/1 0 0 -

Od = Os - 0 1 0 0 0 1 -

Od < Os - 1 0 1 0/1 1 0 -

56
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


Exemples :

AH AL

MOV AL, 23 ? ? 1 7 AX
CMP AL, 34
C = 1 ; Z = 0; S = 1

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


Autres instructions arithmétiques

DEC Op : Décrémentation d’une unité ; Op - 1 → Op

NEG Op : Remplace Op par son négatif (Complément à 2 de Op)

CWD : Conversion de mot en double mot, effectuer une extension de AX dans DX


en respectant le signe.

MOV AX, 96 ? ? ? ? 0 0 6 0
CWD 0 0 0 0 0 0 6 0

DX AX
MOV AX, - 96 ? ? ? ? F F A 0
CWD F F F F F F A 0

DX AX

57
02/01/2025

JEU D’INSTRUCTIONS

II- Les instructions arithmétiques


Autres instructions arithmétiques

DEC Op : Décrémentation d’une unité ; Op - 1 → Op

NEG Op : Remplace Op par son négatif (Complément à 2 de Op)

CWD : Conversion de mot en double mot, effectuer une extension de AX dans DX


en respectant le signe.

CBW : Conversion d’octet en mot, effectue une extension de AL dans AH 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


AH AL

MOV AX, 96 ? ? 6 0
AX
CBW 0 0 6 0

JEU D’INSTRUCTIONS

III- Les instructions Logiques

Le 8086 permet d’exécuter les instructions logiques. Ces instructions 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.

58
02/01/2025

JEU D’INSTRUCTIONS

III- Les instructions logiques


AND
AND Od, Os effectue un ET logique entre Od et Os.

Od ← Od ET Os

AND R1 , R2 R1R1 ET R2
AND R , [adr] R R et [adr]
AND [adr] , R [adr] [adr] et R
AND R , im RR et im
AND [adr], [adr]
AND taille [adr] , im [adr] [adr] et im

Exemple :

MOV AL, 10010110B


MOV BL, 11001101B →
AND AL, BL

JEU D’INSTRUCTIONS

III- Les instructions logiques


Exemple :

MOV AX, 503H


AND AX, 0201H

AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1

0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1

AX 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

59
02/01/2025

JEU D’INSTRUCTIONS

III- Les instructions logiques


OR
OR Od, Os effectue un OU logique entre Od et Os.

Od ← Od ET Os

OR R1 , R2 R1R1 ou R2
OR R , [adr] R R ou [adr]
OR [adr] , R [adr] [adr] ou R
OR R , im RR ou im
OU [adr], [adr]
OR taille [adr] , im [adr] [adr] ou im
Exemple :

MOV AX , 503h
AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1
OR AX , 0201h
0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1

AX 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1

JEU D’INSTRUCTIONS

III- Les instructions logiques


XOR
XOR Od, Os effectue un OU Exclusif logique entre Od et Os.

Od ← Od XOR Os

XOR R1 , R2 R1R1 ou exclusif R2


XOR R , [adr] R R ou exclusif [adr]
XOR [adr] , R [adr] [adr] ou exclusif R
XOR R , im RR ou exclusif im
XOR [adr], [adr]
XOR taille [adr] , im [adr] [adr] ou exclusif im
Exemple :

MOV AX , 503h
AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1
XOR AX , 0201h
0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1

AX 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0

60
02/01/2025

JEU D’INSTRUCTIONS

III- Les instructions logiques


Exercices:

Écrire un programme qui fait AX  BX sans utiliser l'instruction XOR.

org 100h
MOV AX,[301h]
MOV BX,[303h]
NOT AX
NOT BX
AND AX, [303h]
AND BX, [301h]
OR AX, BX
ret

JEU D’INSTRUCTIONS

III- Les instructions logiques


Exercices:

Écrire un programme qui fait AX  BX sans utiliser l'instruction XOR.

org 100h
MOV AX,[301h]
MOV BX,[303h]
NOT AX
NOT BX
AND AX, [303h]
AND BX, [301h]
OR AX, BX
ret

61
02/01/2025

JEU D’INSTRUCTIONS

III- Les instructions logiques


Exercices:
1. Convert the character in AL to upper case.
Solution: Use the AND instruction to clear bit 5.
mov al,'a' ; AL = 0110 0001b
and al, 1101 1111b ; AL = 0100 0001b
2. Convert a binary decimal byte into its equivalent ASCII decimal digit.
Solution: Use the OR instruction to set bits 4 and 5.
mov al,6 ; AL = 0000 0110b
or al, 0011 0000b ; AL = 0011 0110b
The ASCII digit '6' = 0011 0110b
3. Jump to a label if the value in AL is not zero.
Solution: OR the byte with itself, then use the JNZ (jump if not zero)
instruction.
or al,al
jnz IsNotZero ; jump if not zero
ORing any number with itself does not change its value.

JEU D’INSTRUCTIONS

III- Les instructions logiques


NOT
NOT Od transforme la valeur de l’opérande (registre ou mot mémoire) en son
complément à 1.
Od ← CA1(Od)

NOT R RCA1(R)
NOT [adr] [adr]CA1([adr])

Exemples :

MOV AX , 503h AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1

NOT AX AX 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0

AX
MOV AX, 96 0 0 6 0
NOT AX F F 9 F

62
02/01/2025

JEU D’INSTRUCTIONS

III- Les instructions logiques


TEST
TEST Od, Os similaire à AND mais ne retourne pas de résultat dans Od, seuls les
indicateurs sont positionnés.

Exemple :

MOV AX , 503h

TEST AX, 0201h

AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1

0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1

RT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

S = 0, Z = 0

JEU D’INSTRUCTIONS

IV- 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.
❑ L’instruction de branchement est une instruction à un
opérande « INST Label ». Un label (ou une étiquette) est une
représentation symbolique d’une instruction en mémoire.
❑ Le mode d’adressage des instructions de branchement est
immédiat.

63
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ On distingue trois types d’instructions:

▪ Contrôle de boucle : LOOP X

▪ Branchement inconditionnel: JMP

▪ Branchement conditionnel: Jcondition

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

Le processeur 8086 dispose d'instructions permettant de


contrôler le flux d'exécution du programme :

LOOP X : Répéter un bloc de code un nombre spécifique de fois.

JMP X : Sauter de façon inconditionnelle à une étiquette.

Jcondition X : Sauter de façon conditionnelle selon le résultat


d'une opération.

64
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de contrôle de boucle : LOOP


LOOP label : fonctionne automatiquement avec le registre CX
(compteur). Quand le processeur rencontre une instruction LOOP, il
décrémente le registre CX. Si le résultat n'est pas encore nul, il reboucle à
la ligne portant l'étiquette label, sinon il continue le programme à la ligne
suivante:
MOV CX, 10
ici: .....
..... S’exécute 10 fois
.....
LOOP ici
......

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de contrôle de boucle : LOOP


L'instruction LOOP utilise implicitement le registre CX comme compteur.

À chaque itération, elle décrémente CX automatiquement.

Si CX≠0, elle saute à l'étiquette X.

Si CX=0, l'exécution continue après l'instruction LOOP.

> Remarque importante : Avant de commencer la boucle, CX doit être


initialisé avec le nombre de répétitions souhaitées.

65
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Exemple:
MOV CX, 5 ;
MOV AX, 0 ;
MOV BX, 1 ;
DD_LOOP:
ADD AX, BX ;
INC BX ;
LOOP ADD_LOOP ;

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de contrôle de boucle : LOOP

Exemple: Que fait ce programme?

MOV DX, 0

MOV CX, 5

ETIQ: MOV BX, CX

ADD DL, [BX+1100]

LOOP ETIQ

Additionne les 5 valeurs se trouvant à l’adresse 1101--1105

66
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de contrôle de boucle : LOOP

Instructions Actions
1. Mise à jours de CX 2. Branchement si:
LOOP CXCX-1 CX≠0
LOOPZ, LOOPE CXCX-1 (CX ≠ 0 ) et (Z = 1)
LOOPNZ, LOOPNE CXCX-1 (CX ≠ 0 ) et (Z = 0)
JCXZ Pas d’action CX = 0

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de branchement inconditionnel : JMP


JMP label : effectue un saut (jump) vers le label spécifié.

. .
. .
. .
JMP suite Etiq: .
. .
. .
. .
Suite: ......... JMP Etiq
. .
. .

67
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de branchement inconditionnel : JMP

Exemple: Que fait ce programme?


org 100h
mov ax, 5 ; set ax to 5.
mov bx, 2 ; set bx to 2.
jmp calc ; go to 'calc'.
back: jmp stop ; go to 'stop'.
clc: add ax, bx ; add bx to ax.
jmp back ; go 'back'.
stop: ret ; return to operating system.

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de branchement conditionnel : Jcondition

▪ 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 qui sont positionnés en

fonction du résultat de la dernière opération.

68
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de branchement conditionnel : Jcondition


Instruction Nom Condition
JZ Jump if Zero Saut si Z = 1
JNZ Jump if Not Zero Saut si Z = 0
JC Jump if Carry Saut si C = 1
JNC Jump if Not Carry Saut si C = 0
JS Jump if Sign Saut si S = 1
JNS Jump if Not Sign Saut si S = 0
JO Jump if Overflow Saut si O = 1
JNO Jump if Not Overflow Saut si O = 0
JP Jump if Parity Saut si P = 1
7
JNP Jump if Not Parity
Saut si P = 0

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de branchement conditionnel : Jcondition


❑ MOV AX, 5 ;
MOV BX, 3 ;
CMP AX, BX ;
JG GREATER ;
MOV CX, 0 ;
JMP END ;
GREATER:
MOV CX, 1 ;

69
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

❑ Instructions de branchement (saut) arithmétique:

Condition Nombres signés Nombres non signés


A=B JE
A≠B JNE
A>B JG JA
A≥B JGE JAE
A<B JL JB
A≤B JLE JBE 7

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

Les boucles
Il n’existe pas de structure générale en assembleur pour coder une boucle tant-que ou
une boucle répéter.

▪ Cependant, à l’aide des instructions vues précédemment pour réaliser des tests, on
peut coder n’importe quel type de boucle.

▪ On verra également que des instructions simplifient grandement le codage des


boucles pour (boucle for).

70
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

Principe général
Une boucle est essentiellement composée de deux éléments :
▪ Une condition de sortie qui indique quand la boucle doit être interrompue,
qu’il faut sortir de la boucle et continuer l’exécution des instructions
en séquence.
▪ Un corps de boucle qui spécifie l’action à réaliser pendant que la condition de
sortie n’est pas vérifiée, à chaque itération de la boucle.
La condition de sortie va donc être codée d’une manière ressemblant aux tests.
Un saut conditionnel testera cette condition et entraînera, quand la condition est
vérifiée, la sortie de la boucle.
Le corps de la boucle devra pour sa part (boucler), c’est-à-dire, une fois exécuté,
entraîner le réévaluation de la condition de sortie et la prise de décision quant à la
poursuite ou non des itérations

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

Boucle Tant que


Le squelette d’une boucle tant-que, dans un langage de haut niveau, est le suivant :

TANT-QUE (condition) FAIRE


action
FIN_TQ

Cela va se traduire en assembleur sous la forme suivante :

TQn: calcul de la condition


Jcc FTQn
action
...
JMP TQn
FTQn:
...

71
02/01/2025

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

Boucle Répéter
Le squelette d’une boucle répéter, dans un langage de haut niveau, est le suivant :

Répéter
action
Jusqu’à (condition vraie)

Cela va se traduire en assembleur sous la forme suivante :

REPETERn: action
...
Calcul de la condition
Jcc REPETERn
...

JEU D’INSTRUCTIONS

IV- Les instructions de branchement

Boucles pour

Une boucle pour est généralement codée à l’aide d’une instruction de la famille LOOP.
Syntaxe : LOOP label
LOOP fonctionne avec le registre CX qui joue le rôle de compteur de boucles. Elle
décrémente le compteur Sans Modifier Aucun Des Indicateurs.
Si le compteur est différent de 0, un saut à l’étiquette opérande de l’instruction
LOOP est réalisé.
Le squelette d’une boucle pour s’écrit de la manière suivante :
POUR indice = 0 à n FAIRE
Action
Fin pour
Cette boucle se traduit en assembleur de la manière suivante :
mov cx, n ; n est le nombre d’itérations
POURn: ...
action
loop POURn

72

Vous aimerez peut-être aussi