56
République Tunisienne Ministère de l’Enseignement Supérieur et de la Recherche scientifique et de la Technologie Notes de cours Microprocesseurs 3 ème niveau Informatique Industrielle Mohamed Ali KAMMOUN Année Universitaire : 2006-2007 Version : 2.0 Institut Supérieur des Etudes Technologiques de Mahdia

notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

  • Upload
    lydiep

  • View
    222

  • Download
    3

Embed Size (px)

Citation preview

Page 1: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

République Tunisienne Ministère de l’Enseignement Supérieur et de la Recherche scientifique et de la Technologie

Notes de cours Microprocesseurs

3ème niveau Informatique Industrielle

Mohamed Ali KAMMOUN

Année Universitaire : 2006-2007 Version : 2.0

Institut Supérieur des Etudes Technologiques de Mahdia

Page 2: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

Table des matières CHAPITRE I :....................................................................................................................................................... 1 INTRODUCTION GENERALE AUX MICROPROCESSEURS.................................................................... 1 1. INTRODUCTION ....................................................................................................................................... 2

1.1. DEFINITIONS ......................................................................................................................................... 2 2. PRINCIPE DE FONCTIONNEMENT DU MICROPROCESSEUR..................................................... 3 3. ARCHITECTURE D’UN MICROPROCESSEUR.................................................................................. 5 CHAPITRE II: ...................................................................................................................................................... 7 LE MICROPROCESSEUR 16 BITS 8086/8088 ................................................................................................ 7 1. INTRODUCTION ....................................................................................................................................... 8 2. STRUCTURE INTERNE ........................................................................................................................... 8

2.1. UNITE D’INTERFACE DE BUS................................................................................................................. 9 2.2. UNITE D’EXECUTION............................................................................................................................. 9 2.3. LES REGISTRES ..................................................................................................................................... 9

2.3.1 Registres de données ..................................................................................................................... 10 2.3.2 Les pointeurs et index.................................................................................................................... 10 2.3.3 Registres de segments.................................................................................................................... 10

3. FONCTIONNEMENT INTERNE DU 8086 ........................................................................................... 10 3.1. FONCTIONNEMENT EN MODE INTERRUPTION....................................................................................... 10

3.1.1 Principe d’échange par interruption............................................................................................. 10 3.1.2 Les différents types d’interruptions............................................................................................... 11

3.2. FONCTIONNEMENT AVEC LA MEMOIRE ............................................................................................... 11 3.2.1 Segmentation ................................................................................................................................. 11 3.2.2 Le mapping.................................................................................................................................... 12 3.2.3 La gestion de la pile ...................................................................................................................... 13

3.3. FONCTIONNEMENT AVEC LES ENTREES/SORTIES ................................................................................. 13 CHAPITRE III:................................................................................................................................................... 15 LA PROGRAMMATION ASSEMBLEUR DU 8086/8088 ............................................................................. 15 1. DEMARCHE A SUIVRE POUR ECRIRE UN PROGRAMME EN ASSEMBLEUR....................... 16 2. CONSTITUTION D’UN PROGRAMME SOURCE ............................................................................. 16

2.1. LES INSTRUCTIONS ............................................................................................................................. 16 2.2. LES DIRECTIVES.................................................................................................................................. 16

2.2.1 Les directives de données.............................................................................................................. 16 2.2.2 Les directives de segment et de procédure .................................................................................... 17 2.2.3 La directive macro ........................................................................................................................ 18 2.2.4 Les directives de blocs................................................................................................................... 18 2.2.5 Les directives de contrôle.............................................................................................................. 19 2.2.6 Les directives de liaison ................................................................................................................ 19

2.3. LES OPERATEURS ................................................................................................................................ 19 2.3.1 Les opérateurs arithmétiques ........................................................................................................ 19 2.3.2 Les opérateurs logiques ................................................................................................................ 20 2.3.3 Les opérateurs relationnels ........................................................................................................... 20 2.3.4 Les opérateurs retournant une valeur ........................................................................................... 21 2.3.5 Les opérateurs attribuant une valeur ............................................................................................ 21

3. LES MODES D’ADRESSAGE ................................................................................................................ 21 3.1. ADRESSAGE IMMEDIAT ....................................................................................................................... 21 3.2. ADRESSAGE REGISTRE ........................................................................................................................ 22

Page 3: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

3.3. ADRESSAGE DIRECT............................................................................................................................ 22 3.4. ADRESSAGE INDIRECT ........................................................................................................................ 22 3.5. ADRESSAGE RELATIF A UNE BASE (BASE) ........................................................................................... 22 3.6. ADRESSAGE INDEXE ........................................................................................................................... 22 3.7. ADRESSAGE BASE INDEXE................................................................................................................... 22 3.8. RECAPITULATION ............................................................................................................................... 22

CHAPITRE IV:................................................................................................................................................... 23 LES INSTRUCTIONS DU 8086/8088 ............................................................................................................... 23 1. INTRODUCTION ..................................................................................................................................... 24 2. LES INSTRUCTIONS DE TRANSFERT DE DONNEES.................................................................... 24

2.1. LES INSTRUCTIONS A USAGE GENERAL ............................................................................................... 24 2.2. LES INSTRUCTIONS D’ENTREE / SORTIE .............................................................................................. 25 2.3. LES INSTRUCTIONS DE TRANSFERT D’ADRESSE ................................................................................... 26 2.4. LES INSTRUCTIONS DE TRANSFERT DE FLAGS...................................................................................... 26

3. LES INSTRUCTIONS ARITHMETIQUES........................................................................................... 26 3.1. LES INSTRUCTIONS D’ADDITION.......................................................................................................... 26 3.2. LES INSTRUCTIONS DE MULTIPLICATION............................................................................................. 27 3.3. LES INSTRUCTIONS DE SOUSTRACTION................................................................................................ 27 3.4. LES INSTRUCTIONS DE DIVISION.......................................................................................................... 28 3.5. LES INSTRUCTIONS D’EXTENSION DU SIGNE........................................................................................ 28

4. LES INSTRUCTIONS DE MANIPULATION DES BITS.................................................................... 29 4.1. LES INSTRUCTIONS LOGIQUES............................................................................................................. 29 4.2. LES INSTRUCTIONS DE DECALAGE....................................................................................................... 30 4.3. LES INSTRUCTIONS DE ROTATION ....................................................................................................... 31

5. LES INSTRUCTIONS DE BRANCHEMENT....................................................................................... 32 5.1. BRANCHEMENT INCONDITIONNEL....................................................................................................... 32 5.2. BRANCHEMENT CONDITIONNEL .......................................................................................................... 32 5.3. LES INSTRUCTIONS DE BOUCLE ........................................................................................................... 33

6. LES INSTRUCTIONS STRING.............................................................................................................. 34 6.1. LES INSTRUCTIONS MOVE-STRING ..................................................................................................... 34 6.2. LES INSTRUCTIONS COMPARE-STRING................................................................................................ 34 6.3. LES INSTRUCTIONS LOAD-STRING (LODS) ET STORE-STRING (STOS) .......................................... 34 6.4. LES INSTRUCTIONS SCAN-STRING..................................................................................................... 35

7. LES INSTRUCTIONS D’INTERRUPTION .......................................................................................... 35 8. LES INSTRUCTIONS DE CONTROLE DE PROCESSUS ................................................................. 36

8.1. OPERATIONS SUR LES FLAGS............................................................................................................... 36 8.2. SYNCHRONISATION EXTERNE ............................................................................................................. 37 8.3. NON OPERATION ................................................................................................................................. 37

CHAPITRE V : ................................................................................................................................................... 38 LES OPERATIONS D’ENTREES/SORTIES.................................................................................................. 38 1. INTRODUCTION ..................................................................................................................................... 39 2. ENTREE/SORTIE D’UN CARACTERE ............................................................................................... 39

2.1. ENTREE D’UN CARACTERE .................................................................................................................. 39 2.2. SORTIE D’UN CARACTERE ................................................................................................................... 39

3. ENTREE/SORTIE D’UNE CHAINE DE CARACTERE ..................................................................... 39 3.1. ENTREE D’UNE CHAINE ....................................................................................................................... 39 3.2. SORTIE (AFFICHAGE) D’UNE CHAINE .................................................................................................. 40

4. QUELQUES FONCTIONS DE L’INTERRUPTION 21H DOS........................................................... 40

Page 4: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

5. ENTREE/SORTIE SUR PORT................................................................................................................ 41 CHAPITRE VI:................................................................................................................................................... 42 LES INTERRUPTIONS..................................................................................................................................... 42 1. INTRODUCTION ..................................................................................................................................... 43 2. LES INTERRUPTIONS MATERIELLES ............................................................................................. 43 3. LES INTERRUPTIONS LOGICIELLES............................................................................................... 43 4. TRAITEMENT D’UNE INTERRUPTION ............................................................................................ 44

4.1. PRISE EN CHARGE D’UNE INTERRUPTION............................................................................................. 44 4.2. VECTEUR D’INTERRUPTIONS............................................................................................................... 44 4.3. ARCHITECTURE D’UNE ROUTINE DE TRAITEMENT D’INTERRUPTION ................................................... 45 4.4. INSTRUCTIONS SPECIFIQUES................................................................................................................ 46

CHAPITRE VII: ................................................................................................................................................. 47 L’INTERFACE PARALLELE I8255 ............................................................................................................... 47 1. DESCRIPTION ......................................................................................................................................... 48 2. FONCTIONS DES LIGNES DE COMMANDES .................................................................................. 49 3. PROGRAMMATION DU PPI ................................................................................................................. 49

3.1. FORMAT DU MOT DE COMMANDE........................................................................................................ 49 3.2. SEQUENCE DE LECTURE/ECRITURE..................................................................................................... 50

4. MODE 0 DU PPI ....................................................................................................................................... 50 BIBLIOGRAPHIE.............................................................................................................................................. 51

Page 5: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

Liste des figures FIG. 1 : INTERVENTION D’UN SYSTEME INFORMATIQUE. SOUS LA DIRECTION D’UN PROGRAMME, IL TRAITE DES

DONNEES ET FOURNIT UN RESULTAT. ............................................................................................................. 2 FIG. 2 : COMPOSITION D’UN SYSTEME INFORMATIQUE DES PLUS CLASSIQUES, ICI UN PC DE BUREAU. ON Y TROUVE

UNE UNITE CENTRALE ET PLUSIEURS PERIPHERIQUES. .................................................................................... 2 FIG. 3 : VOICI LE SYNOPTIQUE LE PLUS DEPOUILLE D’UN MICRO-ORDINATEUR. IL COMPREND LE

MICROPROCESSEUR RELIE D’UNE PART A DES MEMOIRES CENTRALES ET D’AUTRE PART, A DES CIRCUITS

D’INTERFACES LE CONNECTANT AU CLAVIER, A L’ECRAN, ETC ...................................................................... 3 FIG. 4: EN UNE PREMIERE APPROCHE, ON PEUT CONSIDERER QUE LE MICROPROCESSEUR EST DOTE DE TROIS

GROUPES DISTINCTS APPELES 1) L’UNITE DE RECHERCHER D’UNE INSTRUCTION EN MEMOIRE, 2) L’UNITE DE

DECODAGE DE L’INSTRUCTION, ET ENFIN 3) L’UNITE D’EXECUTION. .............................................................. 4 FIG. 5: CE NOUVEAU SYNOPTIQUE EST PLUS DEVELOPPE QUE LE PRECEDENT. IL FAIT INTERVENIR TROIS

IMPORTANTS REGISTRES (IL S’AGIT DE PETITES MEMOIRES LINEAIRES) QUI SONT LE COMPTEUR ORDINAL, LE

REGISTRE D’INSTRUCTIONS ET L’ACCUMULATEUR. DANS LES PROCESSEURS EVOLUES, LE NOMBRE DES

REGISTRES S’ACCROIT CONSIDERABLEMENT ET, BIEN SUR, ILS CHANGENT DE NOMS...................................... 5 FIG. 6 : CERTAINS MICROPROCESSEURS INCORPORENT DES CIRCUITS D’HORLOGE. SEUL, LE QUARTZ, QUI BAT LA

FREQUENCE DE TRAVAIL, RESTE EXTERNE...................................................................................................... 5 FIG. 7 : LE PLUS SOUVENT, LES PHASES DE L’HORLOGE SONT CREEES PAR UN CIRCUIT INTEGRE INDEPENDANT

PILOTE PAR LE QUARTZ. IL Y EN A DEUX, ICI. ELLES SONT ENSUITE APPLIQUEES AU MICROPROCESSEUR. ...... 6 FIG. 8 : LES BATTEMENTS DE L’HORLOGE PILOTENT L’EXECUTION DES INSTRUCTIONS. ICI, ON SUPPOSE QUE

L’INSTRUCTION EST EXECUTEE EN TROIS PERIODES D’HORLOGE, OU TROIS MICROCYCLES............................. 6 FIG. 10 : PRINCIPE DE L’ECHANGE PAR INTERRUPTION........................................................................................... 11 FIG. 11 : PRINCIPE DE LA SEGMENTATION .............................................................................................................. 12 FIG. 12 : LE MAPPING............................................................................................................................................. 12 FIG. 13 : VECTEUR D’INTERRUPTIONS.................................................................................................................... 45 FIG. 14 : STRUCTURE INTERNE DU 8255................................................................................................................. 48 FIG. 15 : BROCHAGE DU PPI 8255.......................................................................................................................... 48 FIG. 15 : MOT DE COMMANDE................................................................................................................................ 49 FIG. 16 : MOT DE COMMANDE EN MODE SET/RESET .............................................................................................. 50

Page 6: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE I :

Introduction Générale aux Microprocesseurs

Plan :

1. Introduction

2. Principe de fonctionnement du microprocesseur

3. Architecture d’un microprocesseur

Page 7: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE I : Introduction Générale aux Microprocesseurs ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 2

1. Introduction

1.1. Définitions

• Système informatique

Un système informatique sert à exécuter des programmes d’applications à partir des nouvelles données qu’on lui fournit. Il procure, en échange, des résultats ou, dans un contexte industriel, prend des décisions. C’est ce qu’illustre la figure 1.

Fig. 1 : Intervention d’un système informatique. Sous la direction d’un programme, il traite

des données et fournit un résultat.

Fig. 2 : Composition d’un système informatique des plus classiques, ici un PC de bureau. On

y trouve une unité centrale et plusieurs périphériques.

Ce système informatique se compose, à son tour, au moins d’une unité centrale et de plusieurs périphériques (figure 2).

• Le microprocesseur

Un microprocesseur est un circuit intégré programmable qui exécute les fonctions d’unité centrale d’ordinateur. Il gère ses périphériques grâces a des circuits spécialisés appelés interfaces ou circuits d’interfaces ou encore entrées-sorties.

Dans l’unité centrale on trouve généralement le microprocesseur qui doit lire son programme, recevoir des données, en fournir d’autres en sortie. Par conséquent, il doit communiquer avec des mémoires centrales ainsi qu’avec des périphériques via des circuits d’entrées-sorties, ou «interfaces». Sachant que tout cela est réuni par des connexions

Page 8: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE I : Introduction Générale aux Microprocesseurs ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 3

électriques qui, regroupées, prennent le nom général de bus, on aboutit à un schéma synoptique aussi dépouillé que celui de la figure 3.

Fig. 3 : Voici le synoptique le plus dépouillé d’un micro-ordinateur. Il comprend le microprocesseur relié d’une part à des mémoires centrales et d’autre part, à des circuits

d’interfaces le connectant au clavier, à l’écran, etc • Les bus

Le microprocesseur communique avec son environnement via 3 bus : données, adresses et commande. 1) Le bus de données il transporte les données ou les instructions du programme.

2) Le bus d’adresses il fournit l’adresse, soit de la cellule mémoire visée, soit du dispositif d’entrée-sortie. Chacun d’eux dispose, en effet, d’une ou de plusieurs adresses qui se distinguent de celles des mémoires d’une façon ou d’une autre.

3) Le bus de commandes il transmet les ordres dans tous les sens. Il s’agit, par exemple, d’un ordre de lire la cellule mémoire adressée, ou de l’écrire.

2. Principe de fonctionnement du microprocesseur Le programme à exécuter est composé d’instructions rangées aux adresses croissantes de la mémoire. Le µP doit accomplir les taches suivantes :

• Il doit appeler une instruction qu’il lit en mémoire. • Il la décode c’est à dire qu’il traduit en commandes d’organisation interne ce qu’elle

lui a dit de faire. • L’exécute.

Page 9: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE I : Introduction Générale aux Microprocesseurs ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 4

Cette procédure est illustrée par la figure suivante :

Fig. 4: En une première approche, on peut considérer que le microprocesseur est doté de trois groupes distincts appelés 1) l’unité de rechercher d’une instruction en mémoire, 2)

l’unité de décodage de l’instruction, et enfin 3) l’unité d’exécution.

Le µP recherche une instruction. Pour savoir, en permanence, qu'elle est l’adresse de la cellule à laquelle il doit accéder, il dispose d’un registre qui conserve le nombre correspondant à cette adresse appelé registre d’adresse, compteur d’instructions, pointeur d’instructions ou compteur ordinal.

Le code de l’instruction qui vient d’être lu dans la mémoire est ramené dans le µP où il est enregistré dans un autre registre appelé registre d’instructions. Il est décodé et le processeur sait maintenant ce qu'il doit faire. Si cet octet de code d’instruction est encore insuffisant, c’est le décodeur qui commandera la recherche d’un second octet.

Dès qu'un octet d'instruction est chargé, le compteur d'instruction s'incrémente automatiquement. De ce fait, il est prêt pour aller chercher l'instruction suivante le compteur ordinal pointe toujours l'instruction suivante.

Les résultats du décodage sont transmis à l'unité d'exécution du µP qui lance l'exécution de l'instruction.

Si l’instruction procure un résultat, ce dernier est temporairement enregistré dans un autre registre appelé accumulateur.

Cette séquence est pilotée par des circuits de commande et de séquencement et d'une horloge qui met chacune de ces unités en service à tour de rôle (figure 5).

Mémoire

Unité de recherche

Unité de décodage

Unité d’exécution

Microprocesseur

Page 10: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE I : Introduction Générale aux Microprocesseurs ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 5

Fig. 5: Ce nouveau synoptique est plus développé que le précédent. Il fait intervenir trois importants registres (il s’agit de petites mémoires linéaires) qui sont le compteur ordinal, le

registre d’instructions et l’accumulateur. Dans les processeurs évolués, le nombre des registres s’accroît considérablement et, bien sûr, ils changent de noms.

3. Architecture d’un microprocesseur

Les circuits de commande et de séquencement mettent chacune des sections du microprocesseur en service à tour de rôle. Ils sont eux-mêmes pilotés par une horloge à quartz (un peu comme dans une montre électronique). Le quartz est forcément externe au processeur ; en revanche, les circuits d’horloge peuvent être internes, externes, ou les deux à la fois.

Fig. 6 : Certains microprocesseurs incorporent des circuits d’horloge. Seul, le quartz, qui bat

la fréquence de travail, reste externe.

Page 11: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE I : Introduction Générale aux Microprocesseurs ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 6

Fig. 7 : Le plus souvent, les phases de l’horloge sont créées par un circuit intégré

indépendant piloté par le quartz. Il y en a deux, ici. Elles sont ensuite appliquées au microprocesseur.

La figure 6 montre comment se présente une horloge interne et la figure 7 comment intervient un circuit d’horloge externe. Prenons un exemple concret de calcul des temps. Soit une horloge à 50 MHz. Dans ce cas, la période d’horloge (une période est l’inverse de la fréquence) vaut : 1 / 50 000 000 = 20 ns (nanosecondes)

Considérons maintenant l’exécution d’une instruction d’addition en supposant que:

• La lecture en mémoire du code de l’instruction avec ses données demande une période d’horloge.

• Le décodage en consomme une.

• L’exécution s’effectue également en une période d’horloge.

Dans ce cas, l’instruction complète est traitée en trois périodes d’horloge, soit : 3*20ns = 60ns

Fig. 8 : Les battements de l’horloge pilotent l’exécution des instructions. Ici, on suppose que

l’instruction est exécutée en trois périodes d’horloge, ou trois microcycles. NB : Le temps d’exécution de chaque instruction est rigoureux et indiqué par le fabricant du microprocesseur en périodes d’horloge. C’est ce qui explique que le fonctionnement s’accélère lorsque la fréquence de travail s’accroît.

L’ensemble des périodes nécessaires pour exécuter une instruction est appelé cycle d’instruction

Page 12: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II:

Le Microprocesseur 16 Bits 8086/8088

Plan:

1. Introduction

2. Structure interne

3. Fonctionnement interne du 8086

Page 13: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II : Le Microprocesseur 16 Bits 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 8

1. Introduction Créé en 1978 par Intel, le 8086 a été l'un des premiers microprocesseurs 16 bits. Il dispose d'un bus de données sur 16 bits, ce qui constituait à l’époque à la fois un avantage en raison de cette puissance, et un inconvénient car les circuits spécifiques 16 bits d'accompagnement n'existaient pas encore. Force était donc d’uti1iser les « anciens » circuits périphériques 8 bits dans des montages plus complexes. C'est ce qui a amené Intel à créer un sous-produit du 16 bits 8086 mais avec une différence considérable : son bus de données externe est sur 8 bits. C’est le 8088, né en 1979. Ainsi, le microprocesseur 16 bits en interne peut utiliser des circuits périphériques 8 bits dont le double avantage est qu ils existaient et qu'ils étaient économiques. C'est pourquoi le 8088 est désigné par « vrai-faux» 16 bits.

2. Structure interne

Fig. 9 : Structure interne du 8086/8088 Le schéma de la structure interne fait apparaître deux unités : l'unité d'interface du bus (BIU) et l'unité d'exécution (EU). Un microprocesseur exécute un programme en respectant les cycles suivants :

• Recherche de la prochaine instruction dans la mémoire (Fetch). • Lecture (si requise pour l'instruction) d'un opérande. Décodage.

Page 14: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II : Le Microprocesseur 16 Bits 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 9

• Exécution de l'instruction • Ecriture (si requise pour l'instruction) du résultat.

L'unité d'interface du bus (BIU) recherche les instructions, lit les opérandes et écrit les résultats alors que l'EU effectue le décodage et l'exécution. La BIU et l'EU fonctionnent en mode pipeline : pendant que l'EU exécute une instruction, la BIU appelle la suivante, stockée dans la mémoire.

2.1. Unité d’Interface de Bus Les BIU du 8086 et du 8088 sont fonctionnellement identiques mais structurellement différentes pour s'adapter respectivement aux bus de 16 et de 8 bits. La BIU assure la liaison avec le monde extérieur, génère les adresses grâce à un additionneur, cherche les instructions et les range dans une file d'attente (Queue) de 6 octets pour le 8086 et de 4 pour le 8088.

2.2. Unité d’exécution L'EU (identique pour le 8086 et 88) comporte essentiellement l'UAL à 16 bits qui manipule les registres généraux (16 bits) et les opérandes d'instruction. Elle n'a pas de liaison avec le bus système (monde extérieur). Elle reçoit les instructions à partir de la queue et transmet à la BIU le résultat de son travail.

2.3. Les registres Les registres du 8086/88 peuvent être classés en quatre groupes :

• Les registres de données • Les registres pointeurs et index • Les registres de segments • Les registres pointeur d'instruction et indicateur.

Registres de données

AH AL BH BL CH CL DH DL

Pointeurs et index

Pointeur de pile Pointeur de base

Index source Index destination

Registres de segment

Code Données

Pile (Stack) Extra (Supplémentaire)

AX BX CX DX

7 0 7 0

SP BP SI DI

15 0

CS DS SS ES

15 0

Page 15: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II : Le Microprocesseur 16 Bits 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 10

Pointeurs d’instructions et indicateurs

Pointeur d’instructions O D I T S Z A P C

2.3.1 Registres de données Ils sont au nombre de quatre et peuvent travailler par moitié (8 bits) Accumulateur : AX composé de AH et AL. Base : BX composé de BH et BL. Compteur : CX composé de CH et CL. Donnée : DX composé de DH et DL. Bien qu’ils soient généraux, ils ont des fonctions très précises en dehors des opérations arithmétiques et logiques classiques. BX sert à l’adressage en mémoire des données. CX et CL servent de compteur de boucle. DX permet l’adressage des ports et sert également d’extension à AX (donnée sur 16 bits)

2.3.2 Les pointeurs et index Parmi ces quatre registres 16 bits, deux sont appelés pointeurs (SP et BP) et deux index (SI et DI) Les deux pointeurs SP (Stack Pointer: pointeur de pile) et BP (Base Pointer) servent a l’adresse des données ; (SP indique le niveau de remplissage de la pile). Les deux index SI (Index de Source) e DI (Index de Destination) permettent la gestion de suite de mots.

2.3.3 Registres de segments Le 8086/88 possède un bus d’adresse de 20 bits capable d’adresser un espace mémoire de 1 Méga Octets. Cet espace est découpé en tranches de 64 KO maximum appelées «Segment ». Le CPU possède un accès direct aux quatre segments au moyen de leurs adresses de base se trouvent dans les registres segments.

• Segment de code (CS) : sert à l’adressa2e des octets du programme.

• Segment de données (DS) : sert à l’adressage des données. • Segment de pile (SS) : gère la pile. • Segment supplémentaire (ES) : complète DS.

3. Fonctionnement interne du 8086

3.1. Fonctionnement en mode interruption Une interruption est fondamentalement un événement externe par rapport au microprocesseur qui survient à un moment imprévu cela alors que le microprocesseur exécute sa tâche.

3.1.1 Principe d’échange par interruption Une interruption permet ainsi à un événement aléatoire, survenant à un moment quelconque non prévisible, d’être pris en compte par le microprocesseur.

IP Mot d’état

15 0

Page 16: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II : Le Microprocesseur 16 Bits 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 11

Fig. 10 : Principe de l’échange par interruption

• Un périphérique alerte son circuit d'interface (E/S) qu'il veut transmettre une information au processeur.

• Le circuit d'E/S envoie une demande d’interruption au µP. • Le processeur termine l'instruction qu'il est entrain d'exécuter. Il range en mémoire

(Pile) le contenu de tous les registres relatifs au programme en cours d’exécution (compteur ordinal, index et du registre d'état etc). puis il retourne un accusé de réception (Interruption autorisée =1) au circuit d'E/S pour l'informer qu'il est prêt.

• Il passe à la séquence de traitement de l'interruption en appelant le programme spécifique et l'exécute.

• Cela terminé, il rappelle tout ce qu'il avait sauvegardé et reprend l'exécution du programme principal.

3.1.2 Les différents types d’interruptions On distingue deux types d'interruption : les interruptions matérielles, déclenchées par un périphérique, et les interruptions logicielles, introduites sous forme d'un code dans un programme. Les interruptions matérielles se subdivisent encore en plusieurs catégories : Une interruption de plus haute priorité, non masquable. Pour cette raison elle s'appelle interruption NMI, le µP dispose d'une entrée spéciale pour ce type d'interruption. Les 15 interruptions masquables courantes. Une interruption encore supérieure en priorité appelée RESET. Elle sert à la réinitialisation du µP. Après un RESET on aura :

8086/88 CS DS ES SS Flag IP RESET FFFFH 0000H 0000H 0000H 0000H 0000H

3.2. Fonctionnement avec la mémoire

3.2.1 Segmentation Pour les processeurs 8086/88, un segment est une portion de mémoire de 64 Ko au maximum. Le µP dispose d'un registre de segment qui pointe un segment en mémoire via une adresse sur 16 bits.

Microprocesseur

Circuit d’E/S

Demande d’interruption

Interruption autorisée

Bus

Périphérique

Page 17: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II : Le Microprocesseur 16 Bits 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 12

Fig. 11 : Principe de la segmentation Une adresse complète couvrant un espace 1Mo doit être fournie sur 20 bits. Le registre de segment seul est donc insuffisant. La solution consiste à multiplier l'adresse sur 16 bits par 16 (soit tout simplement ajouter quatre 0 à droite). Cette adresse sur 20 bits sert de point de départ à un segment de 64Ko. Dans ce segment, un pointeur, sur l6 bits, désigne une cellule mémoire en indiquant un déplacement par rapport à son début. Sa valeur s’ajoute à celle du pointeur de segment. Par convention, une adresse complète est indiquée en hexadécimal en spécifiant la valeur du segment avant multiplication, donc sur 16 bits, puis la valeur du déplacement dans ce segment, sur 16 bits également. Le tout séparé par un double-point (:) La syntaxe est ainsi :

Segment : déplacement

3.2.2 Le mapping C'est la traduction de l'adresse logique en adresse physique. Pour le 8086/88 ce mécanisme est implémenté dans la BIU, il fournit une adresse sur 20 bits couvrant 1Mo (de 00000H à FFFFFH). Cette adresse est formée de la façon suivante :

Fig. 12 : Le mapping

Code Segment

Data Segment

Stack Segment

Extra Segment

CS

DS

SS

ES

Offset IP Offset BX, SI, DI

Offset SP, BP

Offset BX, SI, DI

0000

FFFF

Adresse logique

15 0

Registre de segment

15 0

0000

Adresse physique sur 20 bits

19 0

+

Page 18: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II : Le Microprocesseur 16 Bits 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 13

Exemple Soit l’adresse 15B2 : 0120 L'adresse du segment est 15B2H le décalage 0120H. D’où l'adresse physique est 15B20 + 0120 = 15C40H Remarque L'adresse calculée finale est l'adresse physique ou réelle. L'adresse effective est l'offset calculé.

3.2.3 La gestion de la pile La pile du 8086/88 est large de 16 bits. C’est une mémoire de type LIFO. On y accède au moyen des registres SS : SP. Le registre de segment SS contient son adresse de base alors que SP pointe son haut (TOS : Top Of Stack), c’est à dire que SP contient l’offset du haut de la pile par rapport à son adresse de base. Un mot est empilé (mis dans la pile) au moyen de l’instruction PUSH, le pointeur de pile SP est alors décrémenté de 2. Il est dépilé (extrait de la pile) au moyen de l’instruction POP, SP est alors incrémenté de 2. Exemple Etat initial AX = 21F4H Empilement : PUSH AX Dépilement : POP AX

3.3. Fonctionnement avec les entrées/sorties Le 8086/88 peut adresser jusqu’à 1Mo en mémoire, de plus il est capable d’adresser des périphériques sur 1 octet (256) ou même sur deux octets (65535 maximum).

XX

XX

XX

00A8

000C

SS SP

+

00A8CH

00A80H

Pile

XX

XX

XX

00A8

000A

SS SP

+

00A8AH

00A80H

Pile

21

F4

XX

XX

XX

00A8

000C

SS SP

+

00A8CH

00A80H

Pile

Page 19: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE II : Le Microprocesseur 16 Bits 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 14

Les instructions IN (INPUT) et OUT (OUTPUT) transfèrent les données entre l’accumulateur AL/AX (8/16 bits) et les ports se trouvant dans l’espace E/S. L’espace E/S n’est pas segmenté. Afin d’accéder à un port, la BIU place l’adresse du port sur les 16 lignes d’adresse de poids le plus faible. Si l’adresse est seulement un octet, il suffit d’en spécifier la valeur dans l’instruction même. Si c’est un mot, c’est une variable à mettre dans le registre DX au préalable.

Page 20: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III:

La Programmation Assembleur du 8086/8088

Plan:

1. Démarche à suivre pour écrire un programme en

assembleur

2. Constitution d’un programme source

3. Les modes d’adressage

Page 21: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III : La Programmation Assembleur du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 16

1. Démarche à suivre pour écrire un programme en assembleur

• Traduire le cahier des charges en un algorithme ou un organigramme explicitant le

fonctionnement du programme.

• Ecrire les instructions du programme puis les saisir à l’aide d’un éditeur. On dispose ainsi d’une version lisible du programme appelée programme source.

• Assembler le programme. S’il contient des erreurs, il faut corriger puis ré-assembler. Le résultat de cette opération est un programme objet.

• Lier le programme. Le linker de l’assembleur permet de lier ensemble les divers modules du programme : on obtient ainsi le programme final (exécutable).

• Exécuter le programme.

2. Constitution d’un programme source Le programme source est constitué de:

• Déclarations destinées au microprocesseur appelées instructions. • Déclarations destinées à l’assembleur appelées directives

2.1. Les instructions Toute instruction du programme source possède le format à quatre champs suivant : [Label :] mnémonique [opérande] [ ; commentaire] La mnémonique est toujours obligatoire, l’opérande pourrait être nécessaire pour l’instruction, alors que le label et le commentaire sont optionnels.

2.2. Les directives Les directives sont des déclarations à l’intention de l’assembleur pour le guider. Elles peuvent en outre, définir des constantes et des symboles, réserver de la place mémoire pour les variables .... A la différence des instructions, elles ne génèrent pas de code machine. Le format d’une directive peut posséder quatre champs [Nom] directive [opérande] [ ; commentaire] Les directives de l’assembleur se classent en cinq catégories :

2.2.1 Les directives de données * EQU : (Equal) • Syntaxe : Nom EQU expression [ ; commentaire] • Fonction : Assigne la valeur de l’expression au nom. Exemples : Nombre EQU 25 ; valeur constante X EQU PI ; nom symbolique Y EQU 2*X+1 ; expression * DB: (Define Byte) • Syntaxe : [Nom] DB expression [; commentaire] • Fonction : Définit une variable ou alloue (réserve) des octets.

Page 22: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III : La Programmation Assembleur du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 17

• Exemples : Maxi DB 50 ; définit une variable maxi initialisée à 50. Table DB 2,6, 4 dup(?) Message DB ‘Bonjour $’ * DW : (Define Word) • Syntaxe : [Nom] DW expression [; commentaire] • Fonction : Comme DB mais on alloue des mots de 2 octets. * DD : (Define Double Word) • Syntaxe : [Nom] DD expression [; commentaire] • Fonction : Comme DB mais on alloue des mots de 2 octets.

2.2.2 Les directives de segment et de procédure • Syntaxe : Nom_seg SEGMENT [alignement][combine][‘classe’]

Nom_seg ENDS • Fonction : Délimite un segment donné. ENDS marque la fin du segment. [alignement]: indique l’alignement du début de segment à une adresse: - contiguë : Byte - paire : Word - divisible par 16 (par défaut) : Para (paragraphe) - divisible par 256: Page [combine] : indique qu’il faut: - concaténer avec un autre module : Public - mettre à une adresse fixe : AT valeur [‘classe’] : indique la classe : ‘code’, ‘donnée’. ‘pile’… * ASSUME • Syntaxe : ASSUME Reg_seg1 : Nom_seg1, Reg_seg2 : Nothing [,…] • Fonction : Indique à l’assembleur, que tel segment appartient à tel registre. Assume nothing annule l’ancien assume. • Exemple : Code SEGMENT

ASSUME CS:code, DS:donnée, ES:nothing

Code ENDS * PROC • Syntaxe : Nom_proc PROC

Ret ; permet le retour au programme principal Nom_proc ENDP

• Fonction : Assigne un nom à une procédure. ENDP marque sa fin. • Variété : Nom_proc PROC NEAR ; procédure appelée uniquement à l’intérieur du ; segment où elle se trouve.

Ret Nom_proc ENDP

Page 23: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III : La Programmation Assembleur du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 18

PUBLIC Nom_proc ; procédure appelée à partir de n’importe Nom_proc PROC FAR ; quel segment

Ret Nom_proc ENDP Appel : L’appel d’une procédure, dans un programme, se fait au moyen de l’instruction CALL de la façon suivante: CALL Nom_proc

2.2.3 La directive macro * MACRO • Syntaxe : Nom_mac MACRO[ ………]

Nom_mac ENDM • Fonction : Définit un ensemble d’instructions qui sont intercalées dans le programme source chaque fois que le nom de la macro (Nom_mac) est cité. • Avantages : + La macro s’exécute plus rapidement que la procédure. Cette dernière est retardée par les appels et retour d’adresse. + La macro est plus dynamique et souple. + La macro peut faire partie d’une librairie, à la disposition de plusieurs programmes. • Exemple : Mult MACRO op1, op2

MOV AX,opl MOV BX.op2 MUL BX

Mult ENDM Appel de cette macro Mult 5,6 ; 5*6 = résultat dans AX Mult 20, nombre ; 20 = résultat dans AX

2.2.4 Les directives de blocs * GROUP • Syntaxe : Nom GROUP Nom_seg1, Nom_seg2 [,....] • Fonction : Rassemble les segments spécifiés par un nom de sorte quels puissent résider dans un seul segment physique de 64 Ko. • Exemple : Bloc GROUP code, donnée

Assume CS:Bloc, DS :Bloc Donnée SEGMENT

Donnée ENDS

Page 24: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III : La Programmation Assembleur du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 19

Code SEGMENT Assume CS:Code, DS:Donnée

Code ENDS

* NAME • Syntaxe : NAME Nom_module • Fonction : Assigne un nom à un module.

2.2.5 Les directives de contrôle * ORG • Syntaxe : ORG Expression • Fonction : Spécifie l’adresse de départ (origine) du code. * END • Syntaxe : END Expression • Fonction : Marque la fin du programme source. Expression est généralement une étiquette à partir de laquelle débutera l’exécution du programme.

2.2.6 Les directives de liaison * PUBLIC • Syntaxe : PUBLIC Symbole [,...] • Fonction : Donne la liste, dans un module assembleur, des symboles non définis par EQU mis à la disposition d’autres modules. * EXTRN • Syntaxe : EXTRN Nom : Type [,…] • Fonction : Spécifie les symboles définies et déclarés PUBLIC dans d’autres modules. Le type peut être BYTE. WORD. DWORD, NEAR. FAR. • Exemple : Module 1 Module 2

PUBLIC Sortie EXTRN Sortie :WORD Sortie DW 25

2.3. Les opérateurs

2.3.1 Les opérateurs arithmétiques * + • Syntaxe : Valeur1 + Valeur2 • Fonction : Addition. • Exemple : Table2 DW Table1+4 * - • Syntaxe : Valeur1 - Valeur2 • Fonction : Soustraction. • Exemple : Diff DW Table2 –Table1 * * • Syntaxe : Valeur1 * Valeur2 • Fonction : Multiplication. • Exemple : Total EQU Quantité * Unité * / • Syntaxe : Valeur1/Valeur2 • Fonction : Retourne la partie entière du quotient. • Exemple : Heure EQU 100/60 ; le résultat est 1.

Page 25: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III : La Programmation Assembleur du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 20

* MOD • Syntaxe : Valeur1 MOD Valeur2 • Fonction : Retourne le reste. • Exemple : Minutes EQU 100 MOD 60 ; le résultat est 40. * SHL • Syntaxe : Valeur SHL Expression • Fonction : Décalage à gauche. • Exemple : Mask1 DB 10111001B Mask2 EQU Mask1 SHL 2 ; le résultat est 11100 100B * SHR • Syntaxe : Valeur SHR Expression • Fonction : Décalage à droite. • Exemple : Mask1 DB 10111001B Mask2 EQU Mask1 SHR 2 ; le résultat est 00101110B

2.3.2 Les opérateurs logiques * AND • Syntaxe : Valeur1 AND Valeur2 • Fonction : ET logique. • Exemple : 11000101B AND 00111010B ; le résultat est 0. * OR • Syntaxe : Valeur1 OR Valeur2 • Fonction : OU logique. • Exemple : 11000101B OR 00111010B ; le résultat est FFH. * XOR • Syntaxe : Valeur1 XOR Valeur2 • Fonction : OU Exclusif. • Exemple : 11000101B XOR 11000101B ; le résultat est 0. * NOT • Syntaxe : NOT Valeur • Fonction : Retourne le complément logique. • Exemple : NOT 11000101B ; le résultat est 00111010B.

2.3.3 Les opérateurs relationnels * EQU • Syntaxe : Opérande1 EQU Opérande2 • Fonction : Egalité. L’égalité des deux opérandes donne FFFFH sinon on a 0. * NE • Syntaxe : Opérande1 NE Opérande2 • Fonction : Inégalité. L’inégalité des deux opérandes donne FFFFH sinon on a 0. * LT • Syntaxe : Opérande1 LT Opérande2 • Fonction : Si opérande 1 < opérande2 le résultat est FFFFH sinon 0. • Exemple : MOV AX,Nombre LT 4 ; Si Nombre < 4 AX=FFFFH sinon AX=0. * GT • Syntaxe : Opérande1 GT Opérande2 • Fonction : Si opérande1 > opérande2 le résultat est FFFFH sinon 0. • Exemple : MOV AX,Nombre GT 4; Si Nombre> 4 AX=FFFFH sinon AX=0.

Page 26: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III : La Programmation Assembleur du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 21

* LE • Syntaxe : Opérande LE Opérande2 • Fonction : Si opérande1<= opérande2 le résultat est FFFFH sinon 0. * GE Syntaxe : Opérande1 GE Opérande2 • Fonction : Si opérande 1 > = opérande2 le résultat est FFFFH sinon 0.

2.3.4 Les opérateurs retournant une valeur * SEG • Syntaxe : SEG Variable ou SEG Label • Fonction : Retourne la valeur segment d’une variable ou d’un label. • Exemple : MOV AX, SEG Table * OFFSET • Syntaxe : OFFSET Variable ou OFFSET Label • Fonction : Retourne la valeur offset d’une variable ou d’un label. • Exemple : MOV BX, OFFSET Table * TYPE • Syntaxe : TYPE Variable ou TYPE Label • Fonction : Si l’opérande est une variable, TYPE retourne 1 pour BYTE, 2 pour WORD ou 4 pour Double WORD, si c’est un label, elle retourne -1 pour NEAR et -2 pour FAR. * SIZE • Syntaxe : SIZE Variable • Fonction : Retourne le nombre d’octets alloué pour une variable. • Exemple : Table DW 100 Dup(?) MOV CX, SIZE Table ; ici CX reçoit 200. * LENGTH • Syntaxe : LENGTH Variable • Fonction : Retourne le nombre d’éléments d’un tableau. • Exemple : Table DW 100 Dup(?) MOV CX, LENGTH Table ; ici CX reçoit 100.

2.3.5 Les opérateurs attribuant une valeur * PTR • Syntaxe : PTR Expression • Fonction : Permet de préciser la taille du mot concerné lors de traitement de cases mémoire avec un adressage indirect. • Exemples : MOV BYTE PTR [DI], 7AH

MOV WORD PTR [DI], 7AH

3. Les modes d’adressage Pour accéder à un emplacement mémoire, l’EU calcule l’offset sur 16 bits (adresse effective). En plus de la mémoire, le lieu de l’opérande peut être l’instruction elle-même, un registre ou un port d’E/S. Il existe de nombreux mode d’adressage.

3.1. Adressage immédiat La donnée est spécifiée immédiatement après l’instruction. Elle est donc située dans le segment de code. Exemple : MOV AX,20

Page 27: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE III : La Programmation Assembleur du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 22

3.2. Adressage registre Dans ce mode le 8086 cherche un opérande dans un registre. Exemple : MOV AX,BX

3.3. Adressage direct L’adresse effective (généralement un label) se trouve dans l’instruction même. L’assembleur traduit les étiquettes en offset. Exemples : MOV AX, Table ; L’octet à l’adresse « Table » est mis dans AL,

; et celui à « Table +1 » est mis dans AH. MOV AX, [0100]

3.4. Adressage indirect L’adresse effective est le contenu d’un registre de base (BX ou BP) ou index (Dl ou SI). Exemples : MOV AX. [BX]

MOV AX, [SI]

3.5. Adressage relatif à une base (basé) L’adresse effective est la somme d’un label ou un déplacement et d’un registre de base. Exemples : MOV AX,[BX]+3

MOV AX, [BX+3] MOV AX,3[BX] MOV AX, Table[BX]

3.6. Adressage indexé L’adresse effective est la somme d’un label ou un déplacement et d’un registre index. Exemple : MOV AL, Table[SI]

3.7. Adressage basé indexé L’adresse effective est la somme d’un label on un déplacement, d’un registre de base et d’un registre index. Exemple : MOV AL, Table[BX] [SI]

3.8. Récapitulation Mode d’adressage Format de l’opérande Registre segment

Immédiat Donnée Aucun Registre Registre Aucun Direct Déplacement ou label DS Indirect [BX], [BP], [DI], [SI] DS Basé [BX] + Déplacement

[BP] + Déplacement DS SS

Indexé [DI] + Déplacement [SI] + Déplacement

DS DS

Indexé basé [BX][DI] + Déplacement [BX][SI] + Déplacement [BP][DI] + Déplacement [BP][SI] + Déplacement

DS DS SS SS

Page 28: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV:

Les Instructions du 8086/8088

Plan:

1. Introduction

2. Les instructions de transfert de données

3. Les instructions arithmétiques

4. Les instructions de manipulation des bits

5. Les instructions de branchement

6. Les instructions STRING

7. Les instructions d’interruption

8. Les instructions de contrôle de processus

Page 29: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 24

1. Introduction Le 8086 possède 92 instructions de base qu’on peut diviser en sept groupes fonctionnels • Les instructions de transfert de données : déplacent l’information entre les registres et les cases mémoire ou les ports d’E/S. • Les instructions arithmétiques : accomplissent des opérations arithmétiques sur des nombres binaires ou des nombres décimaux mais codés en binaire (BCD). • Les instructions manipulant des bits : accomplissent des opérations logiques, de rotation ou de décalage sur des cases mémoire ou des registres. • Les instructions de branchement permettent des sauts à une autre séquence de programme, les appels et retours de procédure afin d’exécuter un sous programme. • Les instructions string : déplacent, comparent et scrutent des chaînes de caractères. • Les instructions d’interruption : interrompent le microprocesseur pour qu’il exécute une routine et revienne à son travail principal. • Les instructions de contrôle du processeur : mettent et efface les flags de status et chargent l’état d’exécution du processeur Dans ce qui suit nous donnons une description détaillée des instructions les plus employées ; les autres sont données à titre indicatif.

2. Les instructions de transfert de données Ces instructions transfèrent des données et adresses entre registres et cases mémoire ou ports d’E/S. On les divise en quatre catégories : usage général, entrée/sortie, transfert d’adresse et transfert de flags. On les résume comme suit avec la convention pour les flags (**. affecté, --: non affecté, ?: non défini).

2.1. Les instructions à usage général MOV : Move • Syntaxe : MOV Destination, Source • Fonction : Copier des données. Transfère une donnée de la «Source» à la «destination», selon 9 modes. • Exemples : - Accumulateur à mémoire : MOV MEMOIRE, AX

- Mémoire à accumulateur: MOV AX, MEMOIRE - Mémoire ou registre à registre de segment: MOV DS, AX - Registre de segment à mémoire ou registre : MOV AX, DS - Registre à registre: MOV CX, DX - Mémoire ou registre à registre: MOV CX, MEMOIRE - Registre à mémoire ou registre : MOV [BX][SI],DX - Donnée immédiate à registre: MOV AX, 25 - Donnée immédiate à mémoire ou registre : MOV [BX][SI], 25

PUSH : Sauvegarde dans la pile • Syntaxe : PUSH Source

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

Page 30: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 25

• Fonction : Décrémente le pointeur de pile SP de 2 puis transfère le mot « Source » dans la pile. •Exemples : - De registre 16 bits: PUSH AX

- D’un registre de segment: PUSH ES - D’une mémoire: PUSH MEMOIRE

POP : Restaure un mot extrait de la pile • Syntaxe : POP Destination • Fonction : Transfère le mot au sommet de la pile dans le registre ou la cellule mémoire indiquée par « Destination ». Après le POP le pointeur de pile SP est incrémenté de 2. • Exemples : - En registre 16 bits : POP AX

- En registre de segment : POP ES - En mémoire : POP MEMOIRE

XCHG : Exchange • Syntaxe : XCHG Destination,Source • Fonction : Echang- le contenu des deux opérandes (en sont exclus les registres de segments). •Exemples : - Accumulateur et registre : XCHG AX, BX

- Registre et mémoire ou registre : XCHG BX, MEMOIRE XLAT : Translate • Syntaxe : XLAT Table • Fonction : Traduction. Sert à exécuter des conversions, en visant dans une table de conversion. Le registre AL sert d’index dans cette table (256 octets maximum) dont l’adresse de départ est pointée par BX. L’octet lu revient dans AL. Donc la position lue est adressée par (BX)+(AL). • Exemple : MOV AL, Cellule

MOV BX.OFFSET Table XLAT Table

2.2. Les instructions d’Entrée / Sortie IN : Input Byte or Word • Syntaxe : IN Accumulateur AL ou AX, Port ou IN Accumulateur AL ou AX, DX • Fonction : Entrée d’un octet ou d’un mot. Transfère l’opérande arrivant par un port d’entrée dans AL ou AX. Le port est spécifiée dans l’instruction, sur 8 bits (on peut désigner les ports de 0 à 255) ou en indirect via le registre 16 bits DX. • Exemples : IN AL,53H IN AX.DX OUT : Output Byte or Word • Syntaxe : OUT Port, Accumulateur ou OUT DX, Accumulateur • Fonction : Transfère l’octet dans AL ou le mot dans AX, vers un port de sortie désigné en mode immédiat sur 1 octet ou en mode indirect par le registre 16 bits DX.

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

Page 31: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 26

• Exemples : OUT 18H, AX OUT DX, AL

2.3. Les instructions de transfert d’adresse LDS : Load Data Segment register • Syntaxe : LDS Destination, Source • Fonction : Chargement du registre de segment DS et d’un registre de données. Transfère un « pointeur» de 32 bits contenant l’adresse d’un segment et son décalage dans : DS pour le segment. et un registre 16 bits indiqué par «destination» pour le décalage (et autre qu’un registre de segment). • Exemple : LDS SI,[BX] LEA : Load Effective Address • Syntaxe : LEA Destination, Source • Fonction : Chargement de l’adresse effective. Le registre spécifié reçoit l’adresse effective. La source doit être en mémoire. • Exemple : LEA BX, Table LES : Load Extra Segment register • Syntaxe : LES Destination, Source • Fonction : Chargement du registre de segment ES et d’un registre de données. Transfère un « pointeur» de 32 bits contenant l’adresse d’un segment et son décalage dans : ES pour le segment, et un registre 16 bits indiqué par «destination » pour le décalage (et autre qu’un registre de segment). • Exemple : LES DI,[BX]

2.4. Les instructions de transfert de flags LAHF : Charge les indicateurs dans AH. SAHF : Rangement de AH dans le registre des indicateurs. PUSHF : Sauvegarde le registre des indicateurs dans la pile. POPF : Restauration des indicateurs extraits de la pile.

3. Les instructions arithmétiques

3.1. Les instructions d’addition ADD : Addition • Syntaxe : ADD Destination, Source • Fonction : Exécute une addition. Le résultat est dans « Destination » • Exemples : ADD BL, 17

ADD BL, CL ADD CX, NOMBRE

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

** -- -- -- ** ** ** ** **

Page 32: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 27

INC : Incrémenter • Syntaxe : INC Destination • Fonction : Ajoute 1 à l’opérande. • Exemple : INC AX

INC MEMOIRE On trouve aussi les instructions AAA : Ajustage ASCII pour l’addition. ADC : Addition avec retenue. DAA : Ajustage décimal pour l’addition.

3.2. Les instructions de multiplication MUL : Multiplication non signée • Syntaxe : MUL Multiplicateur • Fonction : Multiplication du contenu de l’accumulateur par le « multiplicateur» contenu dans un registre ou une cellule mémoire. Le multiplicande dans AL (8 bits) ou AX (16 bits). Le multiplicateur peut être un octet ou un mot. Le résultat va dans AX pour un multiplicande 8 bits ou dans DX:AX pour un multiplicande 16 bits. • Exemples : MUL CL MUL AL,CL ; variante autorisée IMUL : Multiplication entière signée • Syntaxe : IMUL Multiplicateur • Fonction : Multiplication signée du contenu de l’accumulateur par le «multiplicateur» contenu dans un registre ou une cellule mémoire. • Exemples : IMUL BX

IMUL [BX] ; variante autorisée On trouve aussi l’instruction AAM : Ajustage ASCII pour la multiplication.

3.3. Les instructions de soustraction SUB : Soustraire • Syntaxe : SUB Diminuende, Diminuteur • Fonction : Exécute l’opération (Diminuende -Diminuteur) et range la différence dans « Diminuende » • Exemples : Registre - Mémoire ou registre: SUB AX, MEMOIRE Accumulateur - opérande immédiat : SUB AL, 37 Mémoire ou registre - opérande immédiat: SUB SI, 37 DEC : Décrémentation • Syntaxe : DEC Destination • Fonction : Soustrait I de l’opérande. • Exemples : DEC BL

DEC NOMBRE

** -- -- -- ** ** ** ** --

** -- -- -- ? ? ? ? **

** -- -- -- ? ? ? ? **

** -- -- -- ** ** ** ** **

** -- -- -- ** ** ** ** --

Page 33: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 28

NEG : Formation du complément à 2 • Syntaxe : NEG opérande • Fonction : Exécute la soustraction (0-opérande) et range le résultat à la place de l’opérande : c’est son complément à 2. L’opérande est dans un registre ou une cellule mémoire. • Exemple : NEG AL CMP : Comparaison de deux opérandes • Syntaxe : CMP Destination, Source • Fonction : Soustrait un opérande du second, n’en modifie aucun et ne retient pas le résultat, mais positionne les indicateurs. L’opération est la suivante : Destination-source. • Exemples :CMP BX, CX CMP AX, 320 CMP NOMBRE, 37H On trouve aussi les instructions AAS : Ajustage ASCII pour la soustraction. SBB : Soustraction avec retenue. DAS : Ajustage décimal pour la soustraction.

3.4. Les instructions de division DIV : Division non signée • Syntaxe : DIV Diviseur • Fonction : Exécute une division non signée d’un dividende de 16 bits contenu dans AX, ou d’un nombre de 32 bits contenu dans DX:AX par le diviseur de 8 ou 16 bits. Le quotient va dans AL (dividende de 16 bits) ou AX (dividende de 32 et le reste dans AH ou DX. • Exemples : DIV CL DIV CX DIV NOMBRE IDIV : Division entière signée • Syntaxe : IDIV Diviseur • Fonction : Exécute une division signée. • Exemples : IDIV CL IDIV NOMBRE On trouve aussi l’instruction AAD : Ajustage ASCII pour la division.

3.5. Les instructions d’extension du signe CBW : Convertir Octet en Mot • Syntaxe : CBW • Fonction : Conversion d’octet en mot de 16 bits. Exécute une expansion du signe de (AL) dans (AH), ce signe étant dupliqué sur les 8 bits de AH. Donc si (AL)<80H alors (AH)=0 et si (AL)>=80H alors (AH)=FFH • Exemple : Si AL contient 80H, après CBW, AX contiendra : FF80H.

** -- -- -- ** ** ** ** **

? -- -- -- ? ? ? ? ?

? -- -- -- ? ? ? ? ?

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

Page 34: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 29

CWD : Convertir Mot en Double mot • Syntaxe : CWD Fonction : Conversion de mot de 16 bits en double mot de 32 bits. Le bit de signe de AX est étendu sur les 16 bits de DX. Donc si (AX)<8000H, (DX)=0; et (AX)>=8000H, (DX)=FFFFH. • Exemple : Si AX contient F000H, après CWD, DX contiendra : FFFFH.

4. Les instructions de manipulation des bits

4.1. Les instructions logiques AND : ET Logique • Syntaxe : AND Destination, Source • Fonction : Exécute la fonction logique ET entre « Destination » et « Source ». Le résultat est rangé dans « Destination ». • Exemples : AND BL, CL AND AX, NOMBRE AND AX,37H OR : OU Logique • Syntaxe : OR Destination, Source • Fonction : Exécute la fonction logique OU entre « Destination » et «Source ». Le résultat est rangé dans « Destination ». • Exemples : OR BL,CL OR AX,NOMBRE OR AX,37H XOR : ou exclusif • Syntaxe : XOR Destination, Source • Fonction : Exécute la fonction logique OU exclusif entre « Destination » et « Source ». Le résultat est rangé dans « Destination ». Des bits identiques fournissent un 0, des bits différents fournissent un 1. Exemples : XOR AL, 2AH XOR MEM, 37 XOR AX, MEM

XOR MEM, AX NOT : Opérateur logique d’inversion • Syntaxe : NOT Opérande • Fonction : Inverse les bits, forme le complément à 1 de l’opérande. L’opérande est dans un registre ou en mémoire. • Exemples : NOT AL

-- -- -- -- -- -- -- -- --

0 -- -- -- ** ** ? ** 0

0 -- -- -- ** ** ? ** 0

0 -- -- -- ** ** ? ** 0

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

Page 35: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 30

TEST : TEST(COMPARAISON LOGIQUE) • Syntaxe : TEST Destination, Source • Fonction : Compare deux opérandes bit à bit sans fournir le résultat mais positionne les indicateurs. La comparaison est assurée par un ET logique. • Exemples : TEST AL, 25 TEST MEMOIRE, 37 TEST BX, NOMBRE

4.2. Les instructions de décalage SAL : Shift Arithmetic Left SHL : Shift Logical Left • Syntaxe : SAL Destination, Compte / SHL Destination, Compte • Fonction : Décalage arithmétique ou logique à gauche. Le nombre de décalages est spécifié par «Compte», qui doit être 1 ou mentionner dans le registre CL servant alors de compteur. Chaque décalage est équivalent à une multiplication par 2 (attention au bit du plus fort poids). SAL et SHL ont le même code machine. • Exemples : SAL AL, 1 SHL MEMOIRE, CL SAR : Shift Arithmetic Right • Syntaxe : SAR Destination, Compte • Fonction : Décalage arithmétique à droite. Le bit de signe est conservé. Le nombre de décalages est spécifié par « Compte », qui doit être 1 ou mentionner dans le registre CL. • Exemples : SAR AL,1 SAR MEMOIR,CL SHR : Shift Logic Right • Syntaxe : SHR Destination,Compte • Fonction : Décalage logique à droite. Le nombre de décalages est spécifié par «Compte», qui doit être 1 ou mentionner dans le registre CL. • Exemples : SHR AL,1 SHR MEMOIRE,CL

** -- -- -- ** ** ? ** **

** -- -- -- ** ** ? ** **

** -- -- -- ** ** ? ** **

** -- -- -- ** ** ? ** **

8 ou 16 bits 0 CF

8 ou 16 bits CF

8 ou 16 bits0 CF

Page 36: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 31

4.3. Les instructions de rotation RCL : Rotate Left through Carry • Syntaxe : RCL Destination, Compte • Fonction : Rotation à gauche via l’indicateur de retenue CF. • Exemples : RCL AL, 1 RCL MEMOIRE,CL RCL BX,CL RCR : Rotate Right through Carry • Syntaxe : RCR Destination,Compte • Fonction : Rotation à droite via l’indicateur de retenue CF. • Exemples : RCR AL,1 RCR MEMOIRE,CL RCR BX,CL ROL : Rotate Left • Syntaxe : ROL Destination,Compte • Fonction : Rotation à gauche. • Exemples : ROL AL,1 ROL MEMOIRE,CL ROL BX,CL ROR : Rotate Right • Syntaxe : ROR Destination,Compte • Fonction : Rotation à droite. • Exemples : ROR AL,1 ROR MEMOIRE, CL ROR BX,CL

** -- -- -- -- -- -- -- **

** -- -- -- -- -- -- -- **

** -- -- -- -- -- -- -- **

8 ou 16 bitsCF

8 ou 16 bits CF

8 ou 16 bitsCF

8 ou 16 bits CF

Page 37: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 32

5. Les instructions de branchement

5.1. Branchement inconditionnel JMP : Jump • Syntaxe : JMP Cible • Fonction : Saut- branchement inconditionnel. • Exemples : JMP Cible JMP SI JMP [BP][DI] déplacement CALL : Appel d’une procédure • Syntaxe : CALL Cible Fonction : L’appel d’une procédure déclenche

- le rangement de CS puis IP dans la pile. - le chargement des 2 3 octets de l’instruction dans IP. - le chargement des 4 5 octets de l’instruction (pour un appel inter segments) dans CS.

L’exécution se poursuit à partir de cette nouvelle adresse (CS:IP). • Exemples : CALL TEMPORISATION CALL BX RET : Retour de procédure • Syntaxe : RET ou RET nombre à ajouter à SP • Fonction : Termine une procédure et renvoie à F instruction qui suivait le CALL d’appel. Le retour peut être court (NEAR) ou long (FAR). Avec un RET NEAR, l’adresse du déplacement est automatiquement déchargée du sommet de la pile dans IP ; avec un FAR c’est IP puis CS qui sont restaurés. Le RET peut se voir associer un nombre immédiat qui sera ajouté au pointeur de pile SP, afin d’abandonner des paramètres dans la pile. • Exemples RET RET 4

5.2. Branchement conditionnel • Syntaxe : Jx label-court (label se trouve à -128/+127 octets de Jx) Mnémonique Sens Equivalent

à Saut si

OF SF PF ZF CF

Nombres non signés JA Jump if Above JNBE -- -- -- 0 et 0JNA Jump if Not Above JBE -- -- -- 1 ou 1JAE Jump if Above or Equal JNB -- -- -- -- 0JNAE Jump if Not Above or Equal JB/JC -- -- -- -- 1JB Jump if Below JNAE/JC -- -- -- -- 1JNB Jump if Not Below JAE -- -- -- -- 0JBE Jump if Below or Equal JNA -- -- -- 1 ou 1JNBE Jump if Not Below or Equal JA -- -- -- 0 et 0

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

Page 38: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 33

JC Jump if Carry -- -- -- -- 1JNC Jump if Not Carry -- -- -- -- 0JCXZ Jump if CX = 0 -- -- -- -- -- JE Jump if Equal JZ -- -- -- 1 --JNE Jump if Not Equal JNZ -- -- -- 0 --JZ Jump if Zero JE -- -- -- 1 --JNZ Jump if Not Zero JNE -- -- -- 0 --JPE Jump on Parity Even (paire) JP -- -- 1 -- --JP Jump on Parity JPE -- -- 1 -- --JNP Jump if no Parity (impaire) JPO -- -- 0 -- --JPO Jump if Parity Odd

(impaire) JNP -- -- 0 -- --

Nombres signés JG Jump if Greater JNLE ** = ** -- 0 -- JNG Jump if Not Greater JLE ** ≠ ** -- 1 -- JGE Jump if Greater or Equal JNL ** = ** -- -- -- JNGE Jump if Not Greater or

Equal JL ** ≠ ** -- -- --

JL Jump if Less JNGE ** ≠ ** -- -- -- JNL Jump if Not Less JGE ** = ** -- -- -- JLE Jump if Less or Equal JNG ** ≠ ** -- 1 -- JNLE Jump if Not Less or Equal JG ** = ** -- 0 -- JS Jump if Sign -- 1 -- -- -- JNS Jump if Not Sign -- 0 -- -- -- JO Jump on Overflow 1 -- -- -- -- JNO Jump on Not Overflow 0 -- -- -- --

5.3. Les instructions de boucle LOOP : Loop until count complete • Syntaxe : LOOP Cible • Fonction : Boucler jusqu’à exécution du compte. Décrémente CX de 1 puis transfère le contrôle à l’opérande cible si CX n’est pas à zéro. En relatif, de +127 à -128. LOOPE : Loop if Equal LOOPZ : Loop if Zero • Syntaxe : LOOPE Cible / LOOPZ Cible • Fonction : Boucler si égal/si zéro. Bouclage conditionnel : a lieu si ZF = 1 et si le registre compteur CX n’est pas à zéro. Ces deux instructions possèdent le même code machine. LOOPNE : Loop if Not Equal LOOPNZ : Loop if Not Zero • Syntaxe : LOOPNE Cible / LOOPNZ Cible

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

Page 39: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 34

• Fonction : Boucler si non égal/si non zéro. C’est la condition inverse de LOOPE/LOOPZ. Le bouclage conditionnel a lieu si ZF=0 et si le registre compteur CX n’est pas à zéro. Ces deux instructions possèdent le même code machine.

6. Les instructions STRING

6.1. Les instructions Move-String MOVS : Move Byte or Word String MOVSB : Move Byte String MOVSW : Move Word String • Syntaxe : MOVS Chaîne-Destination, Chaîne-Source : MOVSB ; pas d’opérande : MOVSW ; pas d’opérande • Fonction : Déplacement d’un octet ou d’un mot d’une chaîne. Transfère l’octet ou le mot de la chaîne pointée par DS:DI. Après le transfert, SI et DI sont incrémentés ou décrémentés selon DF, du nombre d’octets transférés. Le préfixe REP sert à répéter l’opération. • Exemples : MOVS Recu,Emis

6.2. Les instructions Compare-String CMPS CMPSB CMPSW • Syntaxe : CMPS Chaîne-Destination,Chaîne-Source : CMPSB ; pas d’opérande : CMPSW ; pas d’opérande • Fonction : Comparaison d’octets ou de mots (16 bits) de chaînes. Agit comme CMP mais sur des chaînes pointées par DS:SI pour la source et ES:Dl pour la destination. Après la comparaison, SI et DI sont : - Incrémentés si l’indicateur de direction DF = 0. - Décrémentés si DF = 1. L’opération se poursuit si elle est préfixée par REP ou REPNZ ou REPZ. • Exemples : CMPS Alpha, Beta REP CMPS Alpha, Beta

6.3. Les instructions LOAD-String (LODS) et STORE-String (STOS) LODS : Load Byte or Word String LODSB : Load Byte String LODSW : Load Word String • Syntaxe : LODS Chaîne, Source : LODSB ; Pas d’opérande

: LODSW ; Pas d’opérande

-- -- -- -- -- -- -- -- --

** -- -- -- ** ** ** ** **

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

Page 40: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 35

• Fonction : Chargement d’un octet ou d’un mot d’une chaîne. Transfère un octet ou un mot de la chaîne pointée par DS:SI dans l’accumulateur AL ou AX puis incrémente ou décrémente SI (selon DF) de 1 ou 2. • Exemple : LOADS Phrase STOS : Store Byte or Word String STOSB : Store Byte String STOSW : Store Word String • Syntaxe : STOS Chaîne, Source : STOSB ; Pas d’opérande : STOSW ; Pas d’opérande • Fonction : Rangement d’un octet ou d’un mot dans une chaîne. L’octet est dans AL ou le mot dans AX, il est transféré dans la chaîne pointée par ES:DI. Après exécution. DI est incrémenté ou décrémenté (selon DF). Peut être préfixée par REP, pour répétition. Exemple : STOS Cible Phrase

6.4. Les instructions SCAN-String SCAS : Scan Byte or Word String SCASB : Scan Byte String SCASW : Scan Word String • Syntaxe : SCAS Chaîne Destination : SCASB ; Pas d’opérande : SCASW ; Pas d’opérande • Fonction : Analyse d’un octet ou d’un mot dans une chaîne. Exécute la soustraction (AL-Destination) pour un octet, ou (AX-Destination) pour un mot, ne retient aucun résultat mais positionne les indicateurs. Cela permet de comparer les octets ou les mots successifs d’une chaîne. Peut être préfixée par REP, pour répétition. La chaîne est pointée par ES:DI. • Exemple REP SCAS Chaine

7. Les instructions d’interruption INT : Interruption • Syntaxe : INT Type de l’interruption • Fonction : Appelle une interruption vectorisée. • Exemple : INT 21H INTO : lnterrupt if Overflow • Syntaxe : INTO • Fonction : Interruption si dépassement. Si l’indicateur OF = 0, équivalent à un NOP si OF=1, exécute une interruption de type 4. RET : lnterrupt Return • Syntaxe : IRET

-- -- -- -- -- -- -- -- --

** -- -- -- ** ** ** ** **

** -- -- -- ** ** ** ** **

-- -- 0 0 -- -- -- -- --

** ** ** ** ** ** ** ** **

Page 41: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 36

• Fonction : Retour d’interruption. Transfère le contrôle à F adresse de retour ( CS et IP) qui avait été sauvegardée par déclenchement de l’interruption.

8. Les instructions de contrôle de processus

8.1. Opérations sur les flags STC : Set Carry Flag • Syntaxe : STC • Fonction : Mise à 1 de l’indicateur de retenue CF. CLC : Clear Carry Flag • Syntaxe : CLC • Fonction : Mise à 0 de l’indicateur de retenue CF. CMC : Complement Carry Flag • Syntaxe : CMC • Fonction : Complémentation de l’indicateur de retenue. STD : Set Direction Flag • Syntaxe : STD • Fonction : Mise à 1 de l’indicateur de direction DF. Le travail sur les chaînes se fera en auto-décrémentation. CLD : Clear Direction Flag • Syntaxe : CLD • Fonction : Mise à 0 de l’indicateur de direction DF. Le travail sur les chaînes se fera en auto-incrémentation. STI : Set Interrupt Flag • Syntaxe : STI • Fonction : Mise à 1 de l’indicateur d’interruption IF. On autorise les interruptions masquables. CLI : Clear Interrupt Flag • Syntaxe : CLI • Fonction : Mise à 0 de l’indicateur d’interruption IF. Les interruptions masquables sont interdites.

-- -- -- -- -- -- -- -- 1

-- -- -- -- -- -- -- -- 0

-- -- -- -- -- -- -- -- **

-- 1 -- -- -- -- -- -- --

-- 0 -- -- -- -- -- -- --

-- -- 1 -- -- -- -- -- --

-- -- 0 -- -- -- -- -- --

Page 42: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE IV : Les Instructions du 8086/8088 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 37

8.2. Synchronisation externe HLT : Halte • Syntaxe : HLT • Fonction : Le processeur entre dans l’état « halte » attendant une interruption externe ou une réinitialisation. WAIT : Attente • Syntaxe : WAIT • Fonction : Met le microprocesseur en attente de l’arrivée d’un signal ramenant à 0 volt sa broche marqué TEST. WATT sert généralement à synchroniser le microprocesseur avec du matériel externe. ESC : Escape • Syntaxe : ESC Code opération externe,Source • Fonction : Echappement. Introduit dans un programme des instructions destinées à d’autres microprocesseurs. Si l’opérande est un registre 16 bits, l’instruction est équivalente à un NOP pour le 8088. Sinon, le bus de données reçoit l’adresse effective. Exemple : ESC 17,AL LOCK : Lock Bus • Syntaxe : LOCK • Fonction : Verrouillage des bus. Préfixe précédant n’importe quelle instruction et garantissant l’usage exclusif des bus pour l’opération suivante. Dans un système à plusieurs processeurs, on interdit à tout autre de prendre inconsidérablement la maîtrise des bus. • Excmple : LOCK XCHG AL,MEMOIRE

8.3. Non opération NOP : No operation • Syntaxe : NOP • Fonction : Le microprocesseur se croise les bras pendant 3 coups d’horloge.

0F DF IF TF SF ZF AF PF CF -- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

-- -- -- -- -- -- -- -- --

Page 43: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE V :

Les Opérations d’Entrées/Sorties

Plan :

1. Introduction

2. Entrée/Sortie d’un caractère

3. Entrée/Sortie d’une chaîne de caractère

4. Quelques fonctions de l’interruption 21H DOS

5. Entrée/Sortie sur port

Page 44: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE V : Les Opérations d’Entrées/Sorties ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 39

1. Introduction Au sens usuel du terme, les entrées et sorties désignent l’une des quatre opérations

suivantes : • L’affichage d’un caractère à l’écran; • La saisie d’un caractère frappé au clavier; • L’affichage d’une chaîne à l’écran; • La saisie d’une chaîne frappée au clavier.

Les opérandes de ces opérations sont donc les chaînes de caractères codées en ASCII. Toutes ces opérations font appel à des fonctionnalités externes à l’assembleur

désignées comme « appels au système » (DOS), et réalisées à l’aide du mécanisme dit d’«interruption logicielle».

2. Entrée/Sortie d’un caractère Une séquence de deux instructions est nécessaire :

• la première indique le numéro de l’appel du DOS à activer (le paramètre ou fonction de l’interruption). Ce numéro doit être mis dans le registre AH:

• la deuxième active l’interruption.

2.1. Entrée d’un caractère La séquence ci-dessous permet la lecture (entrée) d’un caractère frappé au clavier.

MOV AH, 7 ; 7 est le numéro de la fonction. INT 21H

Le caractère frappé est mémorisé dans le registre AL. Si on utilise la fonction 1 (au lieu de 7), le caractère frappé sera également affiché à l’écran. Ce phénomène est appelé « écho ».

2.2. Sortie d’un caractère La séquence ci-dessous affiche un caractère à l’écran.

MOV AH,2 INT 21H

Le caractère affiché est supposé avoir été mémorisé au préalable dans le registre DL.

3. Entrée/Sortie d’une chaine de caractère Une chaîne de caractères exige un tampon (une zone mémoire) par lequel elle transite.

3.1. Entrée d’une chaîne La chaîne frappée est effectivement transmise au système lorsqu’elle est terminée par le

caractère «retour» qui est composé de deux caractères de contrôle du clavier: • « retour chariot » ou CR (CR : carnage return. code ASCII 0D); • « changement de ligne » ou LF (LF: line feed. code ASCII 0A).

La chaîne frappée est mémorisée dans un tampon, (un tableau d’octets en mémoire) à partir du 3ième octet, les deux premiers contenant la longueur attendue de la chaîne et la longueur effective (réelle) de la chaîne lue. La longueur attendue (de 1 à 255 caractères) doit prévoir un octet pour le caractère CR (le caractère LF est ignoré par le système). La longueur effective (après la saisie) ne compte pas le caractère CR.

Page 45: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE V : Les Opérations d’Entrées/Sorties ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 40

Si la chaîne lue est plus longue qu’attendue, un « bip » sera émis, et les caractères supplémentaires seront ignorés (le caractère CR est mémorisé à la dernière position du tampon).

La réservation du tampon et l’initialisation de son premier octet sont à la charge du programmeur. Le tampon doit se trouver dans le segment de données (associé à DS) et doit être pointé par le registre DX.

La séquence ci-dessous « lit une chaîne frappée au clavier»

CHAINE DB 8, ?, 8 DUP(?) LEA DX, CHAINE MOV AH,10 INT 21H

En supposant que la chaîne « BONJOUR» a été frappée, la figure suivante montre le contenu du tampon CHAINE après l’exécution des instructions ci-dessus.

8 7 42 4F 4E 4A 4F 55 52 0D

3.2. Sortie (Affichage) d’une chaîne La chaîne à afficher doit être mémorisée dans un tampon pointé par le registre DX (et

implanté dans le segment associé au registre DS). Elle doit être terminée par le caractère «$», qui ne sera pas affiché à l’écran. La suite d’instructions ci-après affiche la chaîne ‘BON COURAGE’.

CHAINE DB ‘BON COURAGES’ LEA DX, CHAINE MOV AH,9 INT 21H

La déclaration de la chaîne de la façon ci-dessous, permet un retour à la ligne après l’affichage:

CHAINE DB ‘BON COURAGE’, 10,13, ‘$’

4. Quelques fonctions de l’interruption 21H DOS AH Fonction 0 Fin de programme : Identique à INT 20H. 1 Entrée au clavier: attend un caractère, l’affiche à l’écran et le retourne dans AL Si

on à frappé Ctrl+Break. déclenche INT 23H. 2 Affichage à l’écran du caractère dans DL. 3 Lit un caractère sur la carte de transmission asynchrone et le range dans AL. 4 Envoie le caractère dans DL à la carte de transmission asynchrone. 5 Imprime (imprimante) le caractère contenu dans DL. 6 Entrées-sorties directes Si (DL)=0FFH, AL reçoit un caractère du clavier s’il en

existe. Si (DL) est différent de 0FFH, DL contient un caractère envoyé à l’écran. 7 Entrée directe: attend qu’un caractère soit frappé (à moins qu’il n’y en ait un de

prêt) et l’envoie dans AI, uns affichage. Pas de vérification de la frappe de Ctrl+Break.

8 Entrée du clavier, comme (1), mais sans affichage.

Page 46: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE V : Les Opérations d’Entrées/Sorties ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 41

9 Chaîne de caractères. DS:DX doit pointer une chaîne de caractères en mémoire, se terminant par le symbole $ (soit 24H). Chaque caractère de la chaîne est affiché (comme en 2).

A Entrée du clavier vers la mémoire tampon. B Vérification de l’état de l’unité d’entrée C Vidage du tampon du clavier, puis exécution de l’une des fonctions 1, 6, 7, 8 et A

dont le numéro est dans AL. F Ouverture de fichier 10 Fermeture de fichier. 13 Suppression de fichier. 14 Lecture séquentielle. 15 Ecriture séquentielle. 16 Création de fichier. 17 Changement de nom de fichier 2A Obtention de la date, renvoyée dans CX:DX avec CX pour ramée (1980 à 2099 )

mais en binaire, DH pour le mois et DL le jour. 2B Initialisation de la date. 2C Obtention de l’heure renvoyée dans CX:DX avec l’heure dans CH, les minutes

dans CL, les secondes dans AH et les centièmes dans DL. 4C Fin d’un traitement (EXIT) et retour au DOS : à utiliser à la place de INT 20H.

5. Entrée/Sortie sur port On a vu que le 8088 pouvait adresser jusqu’à un méga-octet en mémoire. En plus, il

est capable d’adresser des périphériques sur un octet (donc 256) ou même sur deux octets (donc un maximum de 65336) grâce à des instructions spécifiques de sortie (OUT) ou d’entrée (IN).

Chaque périphérique est géré par des circuits d’interface et en fait, c’est leur adresse qui est prise en compte Ainsi, le haut-parleur interne du micro-ordinateur est piloté par un circuit de référence 8255 (une classique interface parallèle) dont l’adresse propre est 61 en hexadécimal.

Ce qui entre avec IN ou sort avec OUT va dans, ou provient obligatoirement de l’accumulateur, AL en 8 bit, ou AX en 16 bits. Lorsque l’adresse est sur 16 bits, elle doit se trouver dans DX. Taille du port Lecture Ecriture

MOV DX, Adresse du port MOV DX, Adresse du port 8 bits IN AL,DX MOV AL,octet à écrire

OUT DX,AL MOV DX, Adresse du port MOV DX, Adresse du port

16 bits IN AX,DX MOV AX,mot à écrire OUT DX,AX

Page 47: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VI:

Les Interruptions

Plan:

1. Introduction

2. Les interruptions matérielles

3. Les interruptions logicielles

4. Traitement d’une interruption

Page 48: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VI : Les Interruptions ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 43

1. Introduction Une interruption est un événement imprévu qui peut avoir une origine logicielle

(déclenchées par programme) ou matérielle (commandées par le câblage électrique). On désigne par interruption un signal pouvant intervenir à tout moment et de façon imprévue (incontrôlée, non programmée). Ce concept a été introduit pour :

• Signaler un événement important interne et/ou externe à l’unité centrale de traitement (un événement qui apparaît en temps réel);

• Arrêter et/ou modifier le fonctionnement programmé de l’ordinateur.

2. Les interruptions matérielles Le microprocesseur 8088 dispose de deux broches d’accès capables de recevoir des

interruptions : INTR: la demande d interruption générale, dont on peut condamner l’accès, si on le désire, par Logiciel. Parce qu’on peut interdire l’accès de et type d’interruption, on dit de INTR que c’est «l’interruption masquable ». Ce masquage est assuré par l’indicateur IF. En effet, lorsque le bit IF, pour «Interrupt Flag», est activé, le microprocesseur ne prend plus en compte les demandes d’interruptions INT NMI : pour « Non-Maskable Interrupt », une entrée de d d’interruption non masquable offrant une très haute priorité, la plus grande urgence. On ne peut pas l’interdire au niveau du microprocesseur, par logiciel. Dans le cas de INTR il s’ajoute une ligne (une broche au microprocesseur) INTA : pour «Interrupt Acknowledge», demande d’interruption acquise, que le microprocesseur active lorsqu’il a reçu la demande d’interruption et est prêt à la prendre en compte. Par conséquent les Interruptions matérielles sont déclenchées électriquement et non pas par programme. Il appartient au programmeur de rédiger la séquence d’instructions qu’elles vont mettre en œuvre.

3. Les interruptions logicielles L’interruption logicielle est déclenchée par le programme. On Introduit une instruction INT dans le programme, en précisant son numéro d’ordre. Ces interruptions peuvent être masquable ou non masquable. Parmi les interruptions non masquables on trouve:

• L’interruption générée à l’aide de l’instruction d’assembleur INTO (interruption lorsque l’indicateur overflow est positionné à 1);

• L’interruption due à la division par zéro (lors de l’exécution de l’instruction DIV ou IDIV) le cas où le quotient est plus grand que la destination spécifiée est aussi assimilée à la division par zéro

Page 49: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VI : Les Interruptions ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 44

Parmi les interruptions masquables, l’interruption de trap (TF : trap flag) ou de «pas-à-pas» (single step) est très utile pour la mise au point des programmes ; en effet, lorsque l’indicateur IF est positionné à 1, il est possible alors d’exécuter un programme pas à pas (c’est à dire instruction par instruction).

4. Traitement d’une interruption Pour qu’une interruption puisse être traitée par l’unité centrale, son occurrence doit être reconnue. Une interruption logicielle peut être générée à l’aide de l’instruction

INT n° Où n° code l’adresse de la routine de traitement spécifique de l’interruption.

4.1. Prise en charge d’une interruption Lorsque les interruptions masquables sont autorisées, l’occurrence d’une interruption

peut être signalée à l’unité centrale seulement à la fin de l’exécution de l’instruction en cours (sauf pour les instructions MOV et POP lorsqu’elles impliquent un registre - segment). La prise en charge d’une interruption entraîne :

• la sauvegarde sur la pile • Du registre d’état; • De l’adresse de retour (CS et IP) de la procédure interrompue (qui est toujours FAR vis-à-vis de la routine de traitement d’interruption)

• l’inhibition des interruptions externes (CLI) et du mode de trap (pas-à-pas); • La recherche de l’adresse de la routine de traitement de l’interruption spécifique; • l’exécution de cette routine.

Toutes les phases de prise en charge d’une interruption sont similaires au traitement d’une procédure (vue jusqu’à présent) sauf pour ce qui est de la recherche de l’adresse de la routine à exécuter. En effet, son numéro (dit aussi vecteur d’interruptions) ne pouvant pas être connu a priori, l’adresse de la routine spécifique est calculée à partir de ce numéro, qui est, en fin de compte, un index de la table des vecteurs d’interruption.

4.2. Vecteur d’interruptions La table des vecteurs d’interruptions est une table dont chaque élément représente

l’adresse d’implantation physique d’une routine de traitement d’interruption. Chaque élément en donc codé sur 4 octets pour mémoriser l’adresse physique sur 32 bits (CS et IP) d’une procédure. La table des vecteurs d’interruption est implantée à une adresse fixe, 00000H dans les systèmes à base de I80x86, et elle occupe 1Ko (en autorisant 256 interruptions).

Lors de la prise en charge d’une interruption, son numéro indiqué dans l’instruction est

multiplié par 4 et le résultat constitue l’adresse physique de l’emplacement du vecteur d’interruption qui renferme finalement l’adresse physique de la routine recherchée (il s’agit là d’un adressage indirect). La figure 13 donne l’organisation de la table des vecteurs d’interruptions. A l’adresse physique (4*n, 4*n + 1) on trouve toujours la valeur de l’IP, et à l’adresse (4*n + 2, 4*n + 3) la valeur du CS de la routine de traitement de l’interruption numéro n.

Page 50: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VI : Les Interruptions ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 45

Fig. 13 : Vecteur d’interruptions

Lorsque le microprocesseur reçoit une interruption logicielle, la 21H, par exemple, soit 33 en décimal, il multiplie cette valeur par 4 (soit 132 en décimal, donc 84H) et va chercher en 84H deux adresses qu’il loge dans IP et dans CS, puis il poursuit l’exécution à partir des ses nouvelles adresses.

4.3. Architecture d’une routine de traitement d’interruption L’architecture d’une routine de traitement d’interruption est assez similaire à celle d’une

routine (procédure) : elle comprend

• L’instruction CLI (inhibition des interruptions) • La sauvegarde des registres internes; • Le corps: • La restauration des registres internes; • L’instruction STI (autorisation des interruptions) • L’instruction IRET (retour à la routine interrompue).

L’instruction IRET dépile CS : IP et le registre d’état.

Page 51: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VI : Les Interruptions ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 46

4.4. Instructions spécifiques La gestion des interruptions logicielles ne fait appel qu’à un petit nombre d’instructions, dont voici le tableau: Instruction De l’anglais Fonction INT Interruption Appel d’une interruption logicielle INTO Interrupt on Overflow Interruption sur dépassement après une division IRET Interrupt Return Retour de procédure d’interruption HLT Halt Halte jusqu’à une interruption ou une ré-initialisation STI Set interrupt Flag Mise à 1 de l’indicateur IF CLI Clear Interrupt Flag Mise à 0 de l’indicateur IF Remarque Il n’existe aucune instruction agissant directement sur l’indicateur de pas à pas TF. Pour le positionner à 0 ou à 1, il faut agir globalement sur le mot d’état, passé dans la pile ou dans un registre tel que l’accumulateur, et exécuter une fonction logique :

• Or avec 0100H pour le mettre à 1; • AND avec FEFFH pour le mettre à 0.

Page 52: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VII:

L’Interface Parallèle i8255

Plan:

1. Description

2. Fonctions des lignes de commande

3. Programmation du PPI

4. Mode 0 du PPI

Page 53: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VII : L’Interface Parallèle i8255 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 48

1. Description Le PPI (Programmable peripheral Interface) 8255A est une interface Programmable travaillant en mode parallèle. Ce circuit possède :

• Un bus de données de 8 bits pour la communication avec le microprocesseur: • 24 lignes programmables en entrées ou en sorties, réparties en 2 port de 8 bits (A et B)

et deux demi-ports (C) de 4 lignes. Il est complètement compatible TTL. Sa tension d’alimentation est 5V ±5% et il dissipe au maximum une puissance de 1W.

Fig. 14 : Structure interne du 8255

Fig. 15 : Brochage du PPI 8255 Le buffer de données transfère les données entre le bus de données externe et le

registre de contrôle ou les ports. Quand le PPI n’est pas sélectionné, les entrées du buffer de données sont en troisième état.

Page 54: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VII : L’Interface Parallèle i8255 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 49

2. Fonctions des lignes de commandes • Do à D7 : ce sont les huit lignes de données bidirectionnelles du PPI. Elles sont

pilotées par un amplificateur 3 états, qui est lui-même commandé par les instructions d’entrées-sorties que nous lui enverrons. C’est également par lui que transitent les mots de contrôle qui initialiseront le PPI.

• WR : ligne active à un niveau bas. Lorsque le PC écrira un mot, il devra d’abord mettre cette ligne au niveau bas.

• RD : ligne active à un niveau bas. Le micro devra activer cette ligne lorsqu’il souhaitera lire une donnée.

• CS : ligne de sélection du boîtier. Aucune opération ne pourra être exécutée si cette ligne n’est pas d’abord validée.

• A0 et Al : avec ces deux lignes d’adresses directement prélevées sur le bus du PC, nous disposons de quatre adresses à l’intérieur du PPI.

A1 A0 Port sélectionné 0 0 A 0 1 B 1 0 C 1 1 Registre de contrôle

• RESET : lorsqu’un niveau haut est appliqué sur cette entrée. le PPI est réinitialisé et toutes les lignes des 3 ports sont positionnées en entrée avec un niveau logique 1 sur les broches de trois ports. Le 8255 reste dans cet état jusqu’à l’écriture du mot de commande dans le registre de contrôle, qui définit le mode de fonctionnement: MODE 0 : Entrée/Sortie de base. MODE 1 Entrée/Sortie échantillonné ; MODE 2 : Bus bidirectionnel

Dans ce chapitre on se limite au mode 0.

3. Programmation du PPI

3.1. Format du mot de commande Le format du mot de commande du circuit 8255 est le suivant :

D7 D6 D5 D4 D3 D2 D1 D0

Fig. 15 : Mot de commande

Mode set flag=1

Sélection du mode

00 : mode 0 01 : mode 1 1X : mode 2

Port A 1 : entrée 0 : sortie

Port C (bits 4..7) 1 : entrée 0 : sortie

Sélection du mode

0 : mode0 1 : mode1

Port B 1 : entrée 0 : sortie

Port C (bits 0..3) 1 : entrée 0 : sortie

Groupe A Groupe B

Page 55: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

CHAPITRE VII : L’Interface Parallèle i8255 ISET Mahdia

Informatique Industrielle 3ème niveau Med Ali KAMMOUN 50

Exemple: Le mot 90H permet de programmer le 8255 en mode 0 avec le port A en entrée et les ports B et C en sortie.

3.2. Séquence de Lecture/Ecriture PORTA EQU ADR_8255 PORTB EQU ADR_8255+1 PORTC EQU ADR_8255+3 ;Programmation du 8255 MOV DX, RCNT ; adresse du registre de contrôle dans DX MOV AL, 90H ; mot de commande dans AL MOV DX, AL ; programmation du PPI ;Lecture du port A MOV DX, PORTA ; adresse du port A dans DX IN AL, DX ; l’état du port A est mis dans AL ;Ecriture sur le port B MOV DX, PORTB ; adresse du port B dans DX MOV AL, OCTET ; Octet à écrire dans AL OUT DX,AL ;envoie du contenu de AL au port B

4. Mode 0 du PPI Dans ce mode chaque port peut être programmé en entrée ou en sortie. Par exemple le mot

de contrôle 8AH met le port A en sortie, le haut du port C en entrée, le bas du port C en sortie et le port B en entrée.

Les bits du port C du 8255 pourraient être mis à 1 ou à 0 individuellement, lorsque le bit 7 du registre de contrôle est mis à 0, dans ce cas il s d’une commande SET/RESET

0 X X X D3 D2 D1 D0

Fig. 16 : Mot de commande en mode Set/Reset Exemple : Le mot 0BH permet de mettre à 1 le bit 5 du port C.

BIT SET/RESET1 : Reset 0 : Set

SELECT BIT 000 : bit 0 001 : bit 1

111 : bit 7

Page 56: notes de cours microprocesseurs - …makammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · 2. principe de fonctionnement du microprocesseur..... 3 3. architecture

51

Bibliographie [1] E. Cerney, Le Langage d’Assemblage et l’Assembleur, Dép. D’IRO., Université de Montréal. [2] Ecole d’ingénieurs d’Arc jurassien University of Applied Sciences, cours Microprocesseurs Architecture de base, Département MT, Octobre 2001. [3] Intel Corporation, 8086 16-Bit Microprocessor 8086/8086-1/8086-2, Septembre 1990. [4] J. Harms, Cours système informatique I-Assembleur, Université de Genève, 2001/2002. [5] O. Benyattou, Support de cours Assembleur 80x86, 1999/2000. [6] P. Bettens, J.C. Jaumain, J.M. Van Loock, Langage Assembleur, Version 2002, HEB ESI. [7] Ph. Leray, cours Architecture des ordinateurs et système d’exploitation, INSA Rouen. http://www.trotek.ec-lyon.fr/~muller/cours/8086/