Cours Systemes Micro-Programmes Parti1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 43

Ecole des Mines de l’Industrie et de la Géologie

EMIG

SYSTEMES

MICRO-PROGRAMMES

‫ ۝‬Alkassoum Nabil [email protected] # octobre 2004 #


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Chapitre 01 - INTRODUCTION AUX MICROPROCESSEURS


I. Introduction
Avant l’apparition des microprocesseurs, les systèmes logiques étaient conçus à l’aide de circuits intégrés
logiques (AND, OR, NOR, etc.). Cette méthode de conception est appelée : logique câblée. La logique câblée
relève du matériel « hardware ». Le matériel est l’ensemble des éléments utilisés pour la réalisation d’un système
logique. Parmi ces éléments on peut citer :
o Les circuits intégrés logiques
o Les composants discrets : transistors, capacités…
o Les circuits imprimés
o Les connecteurs et câbles de liaison.
L’apparition des microprocesseurs a permis de concevoir tout autrement un système logique.

II. Historique
Premiers calculateurs
Les tout premiers calculateurs, ancêtres de l'ordinateur numérique, furent imaginés et réalisés au XVIIe siècle, en
particulier par Wilhelm Schickard, Blaise Pascal et Leibniz. L'appareil de Pascal comportait une série de roues à
dix crans, chaque cran représentant un chiffre de 0 à 9. Les additions et les soustractions s'effectuaient en
tournant les roues dentées d'un certain nombre de crans. Leibniz améliora par la suite cette machine pour lui
permettre d'effectuer aussi des multiplications.
Machine à calculer de Pascal
Au début du XIXe siècle, Joseph-Marie Jacquard conçut un métier automatique en utilisant de fines plaques en
bois perforées qui contrôlaient le tissage de motifs compliqués. Puis, dans les années 1880, le statisticien
américain Hermann Hollerith eut l'idée d'utiliser des cartes perforées, similaires à celles de Jacquard, pour traiter
des données. En utilisant un système où les cartes perforées passaient sur des contacts électriques, il parvint à
compiler des informations statistiques pour le recensement de la population des États-Unis en 1890. En 1896, il
fonda la Tabulating Machine Corporation, qui devint par la suite la société IBM.
Machines différentielle et analytique
Au XIXe siècle, le mathématicien et inventeur britannique Charles Babbage découvrit les principes de
l'ordinateur numérique moderne. Il créa différentes machines, en particulier la machine différentielle et la
machine analytique. Bien qu'elle n'ait jamais été terminée, la machine différentielle était destinée à résoudre des
problèmes mathématiques avec une précision de vingt décimales. Babbage améliora ensuite cette machine pour
concevoir en 1833 la machine analytique, dont une partie seulement fut réalisée. Véritable précurseur de nos
ordinateurs, cette machine aurait été capable de stocker des instructions, d'exécuter des opérations
mathématiques et d'utiliser des cartes perforées comme support de mémoire. La plupart des historiens
considèrent Babbage comme le véritable inventeur de l'ordinateur numérique moderne, même si la technologie
peu avancée de l'époque l'empêcha de réaliser concrètement ses idées. Il fut dont le premier à décrire les
principes d’un calculateur d’application générale (machine pouvant répéter des séquences d’opérations et choisir
une série d’opérations particulière en fonction de l’état du calcul).
Premiers ordinateurs
Les premiers ordinateurs analogiques furent fabriqués au début du XXe siècle. Ils effectuaient leurs calculs grâce
à un système d'axes et d'engrenages. Ce type de machine permettait de fournir des approximations numériques
d'équations difficiles à résoudre autrement. Pendant les deux guerres mondiales, des systèmes analogiques
mécaniques, puis électriques, furent notamment utilisés comme pointeurs de torpille dans les sous-marins et
comme contrôleurs de visée dans les bombardiers.
Ordinateurs électroniques
Dès 1939, un prototype de machine électronique (1er ordinateur binaire à lampes : ABC – Antanasoff
Berry Computer) fut fabriqué aux États-Unis par John Atanasoff et Clifford Berry à l'Iowa State College. Il
comportait une mémoire de 60 mots de 50 bits et une unité arithmétique et logique. Bien que le programme ne
fut pas stocké en mémoire, l’ABC est souvent considéré comme le premier vrai ordinateur. Ce prototype fut
discrètement développé, et éclipsé par la présentation en 1945 de l'ENIAC (Electronic Numerical Integrator And
Computer), ordinateur et intégrateur numérique électronique proposé en 1942 par Presper Eckert et John
Mauchly. L'ENIAC contenait plus de 18 000 tubes à vide, 1500 relais, consommait 170 kW, pesait 30 tonnes,
couvrait une surface de 72 m2. Il était environ 500 fois plus rapide que le Mark 1 (environ 330 multiplications
par seconde). Cependant sa programmation s’effectuait à l’aide de fiches à brancher dans le tableau de
connexions. Le travail de programmation pouvait prendre plusieurs jours.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 1


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Pendant la même période, John Von Neumann, consultant sur l’ENIAC, proposa de coder le programme
sous forme numérique et de les enregistrer en mémoire, avec gain en souplesse et rapidité. Il jetait ainsi les bases
de l’architecture de l’ordinateur moderne. Il ne fut cependant pas le premier à réaliser cette machine.
Parallèlement, à Londres, fut mis au point pendant la Seconde Guerre mondiale Colossus, un ordinateur
numérique entièrement électronique. Élaboré par une équipe de scientifiques et de mathématiciens dirigée par
Alan Turing, Colossus fut opérationnel en décembre 1943. Comportant 1 500 tubes à vide, il fut utilisé pour
déchiffrer les messages radio codés des Allemands.
Des querelles entre Eckert, Mauchly et Von Neumann portant notamment sur la paternité de l’idée et
des brevets, retardèrent le projet EDVAC (Electronic Discret Variable Computer). Celui-ci fut devancé en 1948
par un prototype, appelé Manchester Mark 1, puis en 1949 par l’EDSAC (Electronic Delay Storage Automatic
Computer) première machine opérationnelle construite par Maurice Wilkes.
En 1948, William Shockley, John Bardeen et Wlter Brattain inventèrent le transistor bipolaire. Celui-ci
remplaça rapidement les lampes, apportant fiabilité et rapidité aux ordinateurs. À la fin des années 1950 furent
conçus des ordinateurs dits de deuxième génération, la taille et la consommation diminuèrent sensiblement. Le
premier ordinateur utilisant des transistors fut le TRADIC en 1955. A la même époque IBM commercialisa le
premier disque dur (5 disques de 61 cm de diamètre pour 5 Mo). Les mémoires à tore de ferrite étaient
également disponibles. Le PDP-8 de DEC fut le premier mini-ordinateur à être diffusé en grand série (50000
exemplaires).
La troisième génération, à partir de 1970, correspond à l’utilisation des circuits intégrés. L’Intel 4004,
le premier microprocesseur 4 bits, fut en 1971 le premier circuit intégré incorporant unité de calcul, mémoire et
gestion des entrées-sorties. Il comportait 2300 transistors. Le 8008 sortit un an plut tard. Le premier micro-
ordinateur, le Micral N, fut construit en 1973 par une entreprise française R2E. Depuis le début de 1980, le
niveau d’intégration des puces ayant largement progressé en surface et en densité, on parle de quatrième
génération.

III. Principes de base


Tableau
de commande
Les premiers automatismes étaient réalisés à partir de la
logique câblée selon le synoptique suivant :
Automatisme
à logique câblée

Les systèmes à logique câblée sont conçus à l'aide de


circuits intégrés logiques. Certains de ces circuits font Actionneurs
appel à : Processus
Capteurs

j
ei i sj La logique combinatoire
Tableau de
(les sorties sont définies uniquement à partir des commande
variables d'entrée)

la logique séquentielle Interface


(les sorties dépendent toujours des entrées mais
aussi des états antérieurs).
Mémoire
Microprocesseur
n (instruction)

i j Interface
ei sj

Automatisme à
Le microprocesseur donne naissance au principe de la logique
programmée. Le fonctionnement n'est plus défini par un ensemble de logique câblée
circuits logiques, câblés entre eux, mais par une suite ordonnée
d'instructions stockées en mémoire et gérées par cet élément.
Nouveau synoptique : Actionneurs
Critères de choix Processus
avantage inconvénient Capteurs
logique câblée rapidité spécificité
logique programmée souplesse lenteur

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 2


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

III.1 logique câblée :


Pour une configuration hardware donnée, nous avons une fonction donnée. Il y a nécessité de modifier le
hardware pour changer de fonction.
III.2 logique programmée :
Le hardware conçu est figé. Il est réalisé pour plusieurs commandes. C'est le programme qui crée la fonction.
Pour une suite d'instructions donnée, nous avons une fonction donnée. Il y a nécessité de modifier le programme
pour une nouvelle fonction
Parmi ses avantages on peut citer :
 Souplesse d’utilisation (grâce à la programmation) ;
 Changement de fonction facile (par changement de
programme) ; Machine universelle
 Facilité de mise au point ; I/O Mémoire
Bus du
 Consommation et encombrement réduits ;
système
 Durée courte pour l’étude du système.
CPU
IV. Machine de Von Neumann
John Von Neumann est à l’origine (1946) d’un modèle de machine
universelle (non spécialisée) qui caractérise les machines possédant les
éléments suivants :
 Une mémoire contenant les programmes (instructions) et les Unité
données ; Registres Arithmétique
et Logique
 Une unité arithmétique et logique (UAL ou ALU) ; Interconnexion
interne du CPU
 Une unité permettant l’échange d’information avec les
périphériques : unité d’entrée / sortie (E/S ou I/O) ; Unité de
contrôle
 Une unité de commande (UC).
La plupart des machines actuelles s’appuient sur le modèle Von Figure 1 : Machine de Von Neumann
Neumann.

V. Microprocesseur
V.1 Définition (1)
le microprocesseur, noté aussi M.P.U. (Microprocessor unit) ou encore C.P.U. (Central Processing Unit) est un
circuit intégré complexe réalisé en technologie ULSI (Ultra large scale intégration) capable d'effectuer
séquentiellement et automatiquement des suites d'opérations élémentaires ( fonctions logiques, arithmétiques ,
contrôle de mémoire et contrôle des circuits d’entrées sorties).
V.2 Son rôle
Ce circuit remplit deux fonctions essentielles :

 le traitement des données


On parle d'unité de traitement. Cette fonction est dédiée à l'U.A.L.
Elle concerne la manipulation des données (mots binaires de 8, 16, 32 ou 64 bits) sous formes de transfert,
opérations arithmétiques, opérations logiques...

 le contrôle du système
Cette fonction se traduit par des opérations de décodage et d'exécution des ordres exprimés sous forme
d'instruction.
Les mots binaires qui sont traités sont des instructions puisqu’ils instruisent le microprocesseur de la fonction à
exécuter. Pour faire fonctionner un système à microprocesseur, il faut prévoir une suite ordonnée d’instructions,
cette suite est appelée programme.
Le programme est logé dans une mémoire externe au microprocesseur, ce dernier reçoit les instructions
séquentiellement est exécute la fonction spécifiée.
Le microprocesseur est le cœur de tout système à microprocesseur. Il n’a aucune utilité fonctionnelle par lui-
même. Il commande les fonctions des autres éléments du système. Il est généralement destiné à commander
plusieurs périphériques (clavier, écran, imprimante, afficheur, moteur, etc.). L’interfaçage avec ces différents
périphériques se fait par l’intermédiaire de circuits d’entrées/sorties.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 3


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Le microprocesseur a la charge des fonctions suivantes dans un système à microprocesseur :


 Fournir les signaux de synchronisation et de commande à tous les éléments du système ;
 Prendre en charge les instructions et les données dans la mémoire ;
 Transfert des données entre la mémoire et les dispositifs d’E/S, et vice versa ;
 Décodage des instructions ;
 Effectuer les opérations arithmétiques et logiques commandées par les instructions ;
 Réagir aux signaux de commande produits par les entrées / sorties comme le signal RESET et les
INTERRUPTIONS.

Circuits d’entrées /
Microprocesseur

Périphériques
Mémoires
Section des Bus de données

sorties
UAL REGISTRES
Bus d’adresses
Section de
COMMANDE et de
SYNCHRONISATION Bus de commandes

Figure 2 : Microprocesseur et son environnement

V.3 Structure d’un calculateur

L’´élément de base d’un calculateur est constitué par l’unité centrale de traitement (UCT, CPU : Central
Processing Unit). L’UCT est constituée :
• d’une unité arithmétique et logique (UAL, ALU : Arithmetic and Logic Unit) :
c’est l’organe de calcul du calculateur ;
• de registres : zones de stockage des données de travail de l’UAL (opérandes, résultats intermédiaires) ;
• d’une unité de contrôle (UC, CU : Control Unit) : elle envoie les ordres (ou commandes) à tous les autres
éléments du calculateur afin d’exécuter un programme.
La mémoire centrale contient :
• le programme `a exécuter : suite d’instructions élémentaires ;
• les données `a traiter.
L’unité d’entrées/sorties (E/S) est un intermédiaire entre le calculateur et le monde extérieur.
L’unité de transfert est le support matériel de la circulation des données.
Les échanges d’ordres et de données dans le calculateur sont synchronisés par une horloge qui délivre des
impulsions (signal d’horloge) `a des intervalles de temps fixes.
Définition (2)

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 4


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Un microprocesseur consiste en une unité centrale de traitement (UAL + registres + unité de contrôle)
entièrement contenue dans un seul circuit intégrée. Un calculateur construit autour d’un microprocesseur est un
microcalculateur ou un microordinateur.

Remarque : un circuit intégré qui inclut une UCT, de la mémoire et des périphériques est un microcontrôleur.

V.4 Puissance d'un microprocesseur


Définition :
La notion de puissance est la capacité de traiter un grand nombre d'opérations par seconde sur de grands nombres
et en grande quantité. Intrinsèquement la puissance se joue donc sur les trois critères suivants:
• La longueur des mots : données et instructions (on parle de largeur du bus des données).
• Le nombre d'octets que le microprocesseur peut adresser (on parle de largeur du bus des adresses).
• La vitesse d'exécution des instructions liée à la fréquence de fonctionnement de l'horloge de
synchronisation exprimée en MHz.
L'aspect dimensionnel renseigne assez bien de la puissance du composant.

V.5 Organisation de la mémoire centrale


La mémoire peut être vue comme un ensemble de cellules ou cases contenant chacune une information : une
instruction ou une donnée. Chaque case mémoire est repérée par un numéro d’ordre unique : son adresse.
Représentation :

Une case mémoire peut être lue ou écrite par le microprocesseur (cas des mémoires vives) ou bien seulement lue
(cas des mémoires mortes).

V.6 Circulation de l’information dans un calculateur


La réalisation matérielle des ordinateurs est généralement basée sur l’architecture de Von Neumann

Le microprocesseur échange des informations avec la mémoire et l’unité d’E/S, sous forme de mots binaires, au
moyen d’un ensemble de connexions appelé bus. Un bus permet de transférer des données sous forme parallèle,
c’est-à-dire en faisant circuler n bits simultanément.
Les microprocesseurs peuvent être classées selon la longueur maximale des mots binaires qu’ils peuvent
échanger avec la mémoire et les E/S : microprocesseurs 8 bits, 16 bits, 32 bits, ...
On distingue trois types de bus :

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 5


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

• le bus d’adresses permet au microprocesseur de spécifier l’adresse de la case mémoire `a lire ou à écrire ;
• le bus de données permet les transferts entre le microprocesseur et la mémoire ou les E/S ;
• le bus de commande transmet les ordres de lecture et d’écriture de la mémoire et des E/S.

Remarque : les bus de données et de commande sont bidirectionnels, le bus d’adresse est unidirectionnel :
seul le microprocesseur peut délivrer des adresses (il existe une dérogation pour les circuits d’accès direct à la
mémoire, DMA).

VI. Architecture du microprocesseur


VI.1 architecture interne
L’unité centrale de traitement UCT (CPU : Central Processing Unit), encore dénommée processeur ou
microprocesseur, est l’élément central, d’un système à microprocesseur, qui interprète et exécute les instructions
d’un programme. C’est le « cerveau » du système. Mais on trouve aussi des processeurs dits spécialisés, qui
peuvent décharger le CPU et assurer des tâches en parallèle. Ceci est fréquent pour la gestion des entrées /
sorties.
Un processeur est aujourd’hui un circuit électronique à très haute densité d’intégration (ULSI : Ultra Large
Scale Integration), qui peut compter quelques dizaines de millions de transistors.
Le premier circuit de ce type a été fabriqué par INTEL en 1971 : le 4004 conçu pour équiper des calculatrices. Il
comptait alors 2300 transistors pour 46 instructions.
La loi de Moore, formulée en 1965 par des fondateurs de la compagnie INTEL, qui prédit un doublement des
capacités des processeurs tous les 18-24 mois, à jusqu’à présent été relativement bien suivie. Il ne s’agit pas
seulement de l’augmentation de la fréquence de fonctionnement ou du nombre de transistors. Les concepteurs
cherchent aussi à augmenter la quantité de traitement par cycle d’horloge.

VI.1.1 SCHEMA FONCTIONNEL D'UN MICROPROCESSEUR

Un microprocesseur comprend essentiellement, comme le montre la figure qui suit :


Bus interne

Accumulateur Reg. Temporaire

Registre d’état
Reg. D’instruction
UAL
B C
E F
H L
Unité de COMMANDE et de SP
Décodeur PC
TEMPORISATION

RESET Buffer d’adresse


RD WR IO/R

Bus de commande externe Buffer d’adresse

Bus d’adresse externe


Bus de donnée externe
Figure 3 : Architecture interne d'un microprocesseur
V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 6
SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

• Une Unité Arithmétique et logique (UAL), qui effectue les différents traitements (opérations
arithmétiques, logiques et test) ;
• Une Unité de Commande (UC), qui va chercher dans la mémoire chaque instruction à exécuter pour la
décoder et générer tous les signaux nécessaires pour l’exécution de l’instruction.
• Des Registres, utilisés pour le stockage provisoire des informations à l’intérieur du microprocesseur.
Cet ensemble est interconnecté au travers de différents bus interne qui relient tous les différents éléments du
microprocesseur.
VI.1.1.1 L'unité Arithmétique et Logique (UAL)

Son rôle :
L’UAL (ALU : Arithmetic and Logical Unit) est l’unité fonctionnelle où sont effectuées les opérations
arithmétiques, logiques et les testes sur les données. Toute instruction qui modifie une donnée fait toujours appel
à l'UAL. La nature de l’opération à mener sur les données est déterminée par les signaux de l’unité de
commande. Les données, qui sont traitées, proviennent soit de la mémoire, soit de l’unité d’E/S. les résultats du
traitement sont transférés dans la mémoire ou à l’unité d’E/S.
L'entrée de L'UAL est connectée au bus interne via :
- Des registres "temporaires".
- Un registre particulier appelé "accumulateur".
La sortie de l'UAL est connectée uniquement à l'entrée de l'accumulateur.
L’UAL comprend au minimum :
• Un additionneur ;
• Un complémenteur (pour la soustraction) ;
• Un décaleur (pour la division et la multiplication) ;
• Des parties logiques diverses.
Noter :
Les deux entrées sont précédées par une mémoire tampon.
On les appelle encore des registres tampons ou verrou. Ces registres permettent de stocker des octets aux entrées
de l'U.A.L. L'UAL étant constitué d'une logique combinatoire, elle est dépourvue de moyen propre de stockage.
Ce type de registre ne peut être manipulé par le programmeur. Il lui est totalement transparent.

VI.1.1.2 Les Registres

L’exécution d’une instruction demande le stockage temporaire de données. La mémoire interne du CPU est
découpée en deux (2) types de registres :
• Les registres visibles pour l’utilisateur qui permettent au programmeur d’optimiser les référence à la
mémoire.
• Les registres de contrôle et de statuts, utilisés par l’unité de commandes pour contrôler l’activité du
CPU et par des programmes du système d’exploitation pour contrôler l’exécution des programmes.

VI.1.1.2.1 Registres visibles pour l’utilisateur

Un registre utilisateur est un registre référençable par les instructions exécutées par le CPU. On trouve
différentes catégories de registres :
- Données : ne peuvent être employés pour le calcul d’adresse ;
- Adresses : souvent dévolus à un mode d’adressage particulier (contenant des valeurs de base ou
d’index) ;
- Conditions (flags) : constitués d’une suite de bits indépendants dont chacun est positionné en fonction
du résultat d’une opération ;
- Autres : n’ont pas de fonction spécifique.
VI.1.1.2.2 Registres de contrôle et de statuts

En général, ces registres ne sont pas visibles pour l’utilisateur. Quatre (4) registres sont essentiels à l’exécution
d’une instruction, ils sont utilisés pour l’échange avec la mémoire principale :

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 7


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

• Le compteur ordinal CO (PC : Program Counter) : contient l’adresse de la prochaine instruction à


exécuter ;
• Le registre d’instruction (IR) : contient l’instruction du fetch le plus récent ;
• Le registre d’adresse mémoire (MAR) : contient une adresse mémoire. Est directement connecté au bus
d’adresse ;
• Le registre tampon mémoire (MBR) : contient un mot de données à écrire en mémoire ou un mot lu
récemment. Est directement connecté au bus de données. Fait le lien avec les registres visibles pour
l’utilisateur.
Des registres supplémentaires peuvent être intercalés entre l’ALU et les registres utilisateurs / MBR.
Un registre PSW (Program Status Word) contient des informations de statuts. Parmi les plus fréquentes :
o Signe : le bit de signe du résultat de la dernière opération arithmétique ;
o Zéro : à 1 lorsque le résultat d’une opération est égal à 0 ;
o Retenue : à 1 lorsqu’une opération a généré une retenue ;
o Egal : à 1 si le résultat d’une comparaison est une égalité ;
o Débordement : à 1 lorsqu’une opération a provoqué un débordement ;
o Interruption : indique si le fonctionnement normal peut être interrompu ;
o Superviseur : indique un mode privilégié.
En plus du PSW, un registre peut faire office de pointeur sur une zone mémoire contenant des informations
supplémentaires.
L’implantation de registres de contrôle peut être aussi faite en fonction de la prise en compte du système
d’exploitation.
VI.1.1.2.3 l'accumulateur

C'est le registre le plus important du microprocesseur, il sert systématiquement lorsque le µp a besoin de


"manipuler" des données. La plupart des opérations logiques et arithmétiques sur les données font appel au
couple "UAL - accumulateur" selon la procédure suivante:

Figure 4 : Accumulateur

Il en est de même pour les déplacements et transferts des données d'un endroit à un autre comme :
- De mémoire à mémoire.
- De mémoire à unités d'entrée-sortie (I/O).
Cette action se fait en deux temps :
Source vers Accumulateur et ensuite Accumulateur vers destination.
Les instructions supportées par un accumulateur sont très nombreuses.
Au niveau de la programmation, il représente une grande souplesse d'utilisation!
Les autres registres ne permettent que des opérations limitées.
Certains microprocesseur, possèdent des accumulateurs de longueur double tel D chez Motorola et HL chez Intel
- dissociés en deux et généralement baptisés individuellement A et B ou H et L respectivement.
Gros avantage présenté par un µp possédant plusieurs accumulateurs : les opérations logiques et arithmétiques se
font entre accumulateurs limitant ainsi les accès (transferts) avec l'extérieur.
C’est un registre sur 8, 16, 32 ou 64 bits selon le microprocesseur.

VI.1.1.2.4 le compteur d'instructions

Appelé encore Compteur Programme (P.C. Program Counter) ou Compteur Ordinal (C.O.)
Son rôle consiste à pointer TOUJOURS le premier octet d'une instruction.
Le programme à exécuter est une succession d'instructions ordonnées (chaque instruction pouvant prend
plusieurs octets!) qui se trouve rangé dans une zone mémoire, généralement à des adresses successives.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 8


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Le P.C. "repère" le premier octet de chaque instruction du programme. L’exécution de l’instruction incrémente
automatiquement le compteur ordinal.
Dans le cas où le PC à une taille de 16 bits, cela lui permettrait d'adresser 65536 adresses mémoire soit
64 k octets (le champ mémoire).
Notons que le PC est connecté au bus interne des données.
A la mise sous tension, une valeur particulière est déposée sur le bus d'adresses (Dans le cas du 6809,
cette valeur est $FFFE).
Le contenu des cases mémoires ($FFFE-$FFFF) représente en général l'adresse où se trouve le premier octet de
la première instruction du programme.

$FFFE adresse haute


$FFFF adresse basse
Figure 5 : Contenu du PC (cas du 6809)
Cette adresse est transmise aux circuits mémoires par l'intermédiaire du bus d'adresse via le Registre d'Adresses.

!! Le P.C. pointe toujours l'adresse du début de l'instruction suivante. (A retenir, car parfois il est utile de
connaître l'adresse présente.)
Il est possible de recharger le [P.C.] avec une adresse qui ne correspond pas au déroulement séquentiel du
programme. On trouve les détournements conditionnel et inconditionnel.
La figure suivante illustre les différentes étapes d’exécution d’une instruction :
Adresse 1
Pointeur d’Instruction

Instruction Programme en code


Registre d’Instruction
Instruction machine en
Instruction mémoire
3
Instruction
Décodeur
Contenu 2 Prochaine
4
instruction à
Unité de Séquencement exécuter
et de commande

Exécution

Figure 6 : Synoptique de l'exécution d'une instruction

VI.1.1.2.5 le registre d'instructions

Il contiendra le code d’opération de l’instruction qui doit être exécutée.


Le registre est chargé, pendant le cycle de base extraction-exécution, par 1er octet (code opératoire opcode), Il
reçoit l'information (octet) grâce au bus de données auquel il est connecté.
L'information qu'il "capture" sur le bus des données est utilisé par le décodeur d'instructions, suivant le protocole
ci-dessous :
La donnée extraite de la mémoire est stockée dans le R.I. (c'est la phase extraction).
Ensuite ce contenu est interprété par le décodeur d'instructions qui agit alors sur la logique de contrôle (c'est la
phase exécution).
Cet octet indique au microprocesseur deux choses :
Une action (une lecture, une écriture ou autre...)
Un lieu d'action (un registre, un accumulateur, une case mémoire...)
Le résultat de cette interprétation se traduit par des niveaux logiques sur le bus de contrôle.

VI.1.1.2.6 Le registre d'état (Program Status Word PSW)

L'existence de ce registre permet de distinguer le simple calculateur du véritable ordinateur.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 9


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

C’est un registre constitué d’un ensemble de bascule qui caractérise l’état de fonctionnement du
microprocesseur. Ces bascules sont affectées après l’exécution d’une instruction. Elles nous renseignent sur les
résultats obtenus après une opération effectuée par l’UAL. après traitement sur les données
L'existence de ces résultats permet d'écrire des programmes avec des branchements conditionnels (nouvelle
adresse dans le C.I.).
En fonction de l'état des bits de ce registre le microprocesseur peut, alors, exécuter des programmes différents.
Le microprocesseur prend en quelque sorte des "décisions".
Les bits les plus couramment utilisés sont :
a- Le bit de retenue (C : Carry)
Ce bit est dans l'état actif lorsqu’une retenue arithmétique est générée ; le huitième bit du résultat de l'opération
génère une retenue dans le cas de mot de 8 bits ( dans le cas de mot de 16 bits ce serait donc le 16ème bit).
b- Le Bit de Débordement ou dépassement ( O : Over flow)
Cet indicateur est utilisé que dans le cas des opérations arithmétiques faisant appel à la représentation qui peut
amener à un résultat erroné.
c- Indicateur de zéro (Z : Zero)
Ce bit est actif lorsque l'opération a pour effet de mettre tous les bits d'un accumulateur ou d'un registre à la
valeur logique 0 (très utilisé pour réaliser des compteurs).
d- Le bit de signe (S )
Information qui indique que le bit le plus significatif (MSB) du contenu de l'accumulateur est un 1 logique.
e- Masque d’interruption (I : Interrupt)
Cet indicateur permet de valider ou inhiber les interruptions provenant des circuits extérieurs. Dans le cas où les
interruptions sont validées le microprocesseur peut être interrompu pour exécuter d’autres tâches (sous
programme d’interruption).
f- Demi-retenue (H : Half carry)
Ce bit est mis à 1 dans le cas d’une retenue du 4ème bit vers le 5ème (du 8ème vers le 9ème pour un 16 bits).
e- Parité (P : Parity)
La plus part des microprocesseurs ne dispose pas de ce bit d’état ; il indique si le nombre de bits à 1 d’un registre
est pair ou impair. P H I S Z O C
Retenue

Débordement

Résultat nul

Résultat négatif

Masque
d’interruption
Demi-retenue

Parité
Figure 7 : Exemple de registre d'état

VI.1.1.2.7 Pointeur de Pile (SP Stack Pointer)

La pile est une partie de la mémoire RAM adressée par le microprocesseur, elle est utilisée pour faire des
sauvegardes de données (les registres par exemple) lorsque celle est nécessaire.
Le pointeur de pile SP pointe le sommet de cette pile.
La pile est une structure LIFO (Last In, First Out).
Le microprocesseur d’INTEL par exemple utilise deux instructions pour accéder à la pile :
- L’instruction PUSH permet de sauvegarder le contenu d’un registre dans la pile. Le SP est
décrémenté automatiquement avant une opération PUSH ;
Exemple : PUSH AX (AX  [SP])
- L’instruction POP permet d’extraire de la pile un contenu d’un registre déjà sauvegardé. Le SP est
incrémenté automatiquement après une opération POP.
Exemple : POP AX ( [SP]  AX).

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 10


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

VI.1.1.2.8 le registre d'adresses

Le Registre d'adresses ou (R.A.) sert d'interface entre le bus des données interne et le bus des adresses.
Il "pilote" le bus d'adresses du microprocesseur.
Son contenu provient de différentes sources :
• Le Compteur d'instruction
• Un registre général
• Un emplacement mémoire
Le contenu du registre d'adresse pointe la zone mémoire utile au microprocesseur.
!! Une fois que le premier octet de l'instruction en cours est décodé...
Le contenu du Compteur d'Instructions est changé (contient l'adresse du début de l'instruction à venir).
Le contenu du Registre d'adresses change! Donc [C.I.] ≠ [R.A.]
Ce changement correspond...
Soit à une incrémentation du contenu afin de lire l'information complémentaire de
l'instruction en cours.

Soit à un chargement d'une nouvelle valeur correspondant à une nouvelle zone


mémoire utilisée temporairement par le microprocesseur (zone différente de celle où
se trouve le programme).
Cette nouvelle valeur provient soit...
D’une lecture en mémoire (directement ou indirectement selon les modes
d'adressage utilisés) ;

D’un calcul (addition,...).


VI.1.1.2.9 les registres généraux

En plus des registres sus-cités, les microprocesseurs peuvent procéder d'autres destinés à faciliter la tâche du
programmeur. On les nomme registres généraux. Leur nombre et leur taille différent selon les microprocesseurs.
Ce ne sont pas des registres puissants (tel un accumulateur) puisqu'ils n'ont pas de liaison directe avec la sortie
de l'U.A.L. Ces registres peuvent néanmoins affecter le Registre d'Etat.
Parfois, ils peuvent constituer couplé par deux - appelé paire de registre (ex : BC chez Intel ou D chez Motorola).
Ainsi, il est possible de réaliser des opérations sur un mot (ex : incrémentation de la paire).
Ils servent généralement de registre intermédiaire dans le calcul.
Exemple : soit à faire le calcul suivant : y=[(x+y)-z] avec x=4000, y=5000 et z=1000.
AX= x = 4000 ; BX= y =5000 ; CX = z =1000.
1ère solution 2ème solution
MOV AX,4000 MOV AX,4000
ADD AX,5000 MOV BX,5000
SUB AX,1000 MOV CX,1000
ADD AX,BX
SUB AX,CX
(Exemple avec le 8086). MOV BX,AX

VI.1.1.3 La logique de contrôle (Unité de Commande UC)

Appelé encore Séquenceur ou Unité de contrôle (U.C.)


Permet le contrôle de tous les éléments constitutifs du microprocesseur en leur fournissant les signaux de
synchronisations et de commandes. Il leurs permet donc de travailler ensemble et dans l'ordre. Il est en quelque
sorte le « chef d’orchestre ». L’UC contient les circuits logiques et de synchronisations qui produisent les
signaux nécessaires à l’exécution de chacune des instructions d’un programme se trouvant en mémoire.
Les principaux éléments de l’unité de commande sont :
• Le compteur ordinal (CO) : registre contenant l’adresse en mémoire où se trouve l’instruction à
chercher ;
• Le registre d’instruction (RI) qui reçoit l’instruction qui doit être exécutée ;
• Le décodeur qui détermine l’opération à effectuer et les opérandes, c’est à dire sélectionner les
fonctions qui doivent être exécuter ;
• Le séquenceur (unité de séquencement) qui génère les signaux de commande aux différents
composants. ( Il est constitué par l’ensemble des circuits logiques de contrôle qui assurent l’exécution
de l’instruction). Cette unité fonctionne au rythme des impulsions d’une horloge.
• L’horloge (interne ou externe) qui émet les impulsions permettant la synchronisation de tous les
éléments de l’unité centrale.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 11


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

La logique de contrôle est pilotée par le Registre d'Instruction via le décodeur d'instruction. Il reçoit l’ordre de la
fonction sous la forme d’un code binaire appelé instruction.
Cette unité joue en quelque sorte un rôle d'intendance puisqu'elle décide de la disponibilité du bus à tel ou tel
élément logique. La logique de contrôle possède une architecture complexe et très spécialisée. L'élément central
est représenté par le décodeur d'instructions qui décode les informations (premier octet) stockées dans le R.I.
pour générer les signaux nécessaires à l'exécution de l'instruction.
La logique de contrôle génère sur les lignes de contrôle des niveaux logiques qui activent les différents circuits
environnant tels que mémoires et circuits I/O.
Cette unité fournit, à partir d'un signal de référence qui est l'horloge, tous les signaux de synchronisation utiles au
bon fonctionnement de l'ensemble.
Cette horloge est crée à partir d'un oscillateur interne qui utilise un signal en provenance d'un quartz externe.
Deux actions complémentaires à noter :
Cette unité assure :
 Le contrôle de mise sous tension du microprocesseur (initialisation des registres).

 Le traitement des interruptions.


La figure suivante montre un synoptique de l’UC pour des instructions codées sur 8 bits. dans ce cas on peut
commander 256 lignes individuelles (c’est à dire 256 instructions)

8
Horloge

8 256 sélections
Séquenceur
Décodeur

256 pour les


Reg. D’instruction sorties
&

différents circuits
de l’UAL
256

(verrouillage)

1er instruction 2ème instruction

Figure 8 : Unité de commande

VI.1.1.3.1 Qu'est-ce qu'une interruption ?

Disons pour l'instant, que c'est une requête présentée à la logique de contrôle par des éléments extérieurs
(périphériques).
VI.1.1.4 Bus interne

C’est un ensemble de fils par les quels transitent les informations binaires (données, adresses ou commandes).

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 12


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

VI.2 Architecture externe ( les signaux d’entrées sorties d’un microprocesseur)


Un microprocesseur se présente sous la forme d’un circuit intégré muni d’un nombre généralement important de
broches. Exemples :
• Intel 8085, 8086, Zilog Z80 : 40 broches, DIP (Dual In-line Package) ;
• Motorola 68000 : 64 broches, DIP ;
• Intel 80386 : 196 broches, PGA (Pin Grid Array).
Technologies de fabrication : NMOS, PMOS, CMOS.
On peut représenter un microprocesseur par son schéma fonctionnel :

Le microprocesseur est relié aux éléments extérieurs (mémoires, E/S,…) par des lignes d’entrées et /ou de
sorties (brochages du circuit intégré).
Ces lignes peuvent être groupées en quatre (4) parties :
- Bus d’adresses
- Bus de données
- Bus de commandes
- Signaux de commandes
En plus de ces 4 groupes, il faut citer les brochages servant pour l’alimentation du microprocesseur.

Demande d’interruptions Bus d’adresses


Microprocesseur

Autorisation d’interruptions Bus de données


Demande DMA Lecture mémoire

Autorisation DMA Ecriture mémoire

RESET Lecture périphérique

CLK Ecriture périphérique

Figure 9 : Signaux d'entrées / sorties


VI.2.1 Bus d’adresses

Ces broches unidirectionnelles permettent d’adresser les mémoires (RAM, ROM) et /ou les circuits
d’entrées sorties. Ces adresses sont fournies par le microprocesseur au bus d'adresse du système. La
taille du bus d’adresse est mesurée en nombres de bits qu’il peut adresser (exemple : 16, 20, 24, 32, 64
bits).
Ce bus est en logique 3 états.

VI.2.2 Bus de données

Ces broches sont bidirectionnelles. Elles permettent la communication avec le bus des données interne
du microprocesseur. C’est à travers ce bus que les données transitent entre le microprocesseur et la
mémoire (RAM ou ROM) et les circuits d’entrées sorties.
Il est généralement sur 8, 16, 32 ou 64 bits. Le sens du bus est commandé par les opérations de lecture
et d’écriture.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 13


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Dans certain microprocesseur, une partie ou la totalité du bus de données est multiplexé avec quelques
lignes du bus d’adresses. Par exemple dans les cas du microprocesseur 8085 d’INTEL , les bits A0-A7
du bus d’adresses sont multiplexés avec les bits D0-D7 du bus de données. Le 8085 possède une
commande ALE ( Adresse Latch Enable) qui permet de verrouiller l’adresse A0-A7 dans un registre
extérieur.
Il a les mêmes caractéristiques électriques que pour le bus d’adresse, c’est un bus en logique 3 états.

VI.2.3 Bus de commandes

Ce bus est constitué d’un ensemble de lignes destinées à contrôler les opérations sur les mémoires et les
E/S. Les principales commandes sont :
• Lecture mémoire (RD ou READ) ;
• Ecriture mémoire (WR ou WRITE) ;
• Lecture périphérique ;
• Ecriture périphérique.
Certains microprocesseurs disposent seulement des commandes de lecture et écriture mémoire ; dans ce
cas les circuits d’entrées / sorties sont considérés comme des cases mémoires.

VI.2.4 Signaux de commandes du microprocesseur

Ces signaux permettent de faire certains commandes du microprocesseur telle que :


 RESET : réinitialisation du microprocesseur ; réexécution du programme de démarrage à nouveau (non
masquable).
 Demande et autorisation d’interruption : ces signaux permettent d’interrompre le microprocesseur
afin d’exécuter un sous-programme d’interruption.
 Demande et autorisation de DMA : ces signaux sont utilisés lorsqu’un périphérique veut accéder
directement à la mémoire sans passer par le microprocesseur. Le périphérique demande un transfert
DMA et le microprocesseur lui rend un accusé de réception en lui autorisant le transfert.
VI.2.5 Alimentation

Selon les microprocesseurs, il y’a une, deux ou trois alimentations et une masse. Certains
microprocesseurs ne nécessitent qu’une seule alimentation de +5Volts.

VII. Fonctionnement du microprocesseur


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

Exemple :

Rangement en mémoire :

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 14


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Tous les microprocesseurs fonctionnent en mode synchrone, c’est à dire que leur travail est cadencé par une
horloge. La vitesse d’exécution d’une instruction dépend de la fréquence de l’horloge. L’exécution d’une
instruction est obtenue par une suite de ‘’micro cycle d’horloge’’ générée par l’unité de commande.
L’oscillateur fournissant le signal d’horloge peut être intégré sur la puce silicium du processeur. Ce n’est
généralement pas le cas pour au moins deux raisons :
Tout d’abord, la fréquence d’oscillation est sensible à la variation de température. Or celle d’un microprocesseur
n’est pas stable. Il serait possible d’observer une dérive fatale, la fréquence augmentant avec la température et la
température augmentant avec la vitesse de fonctionnement.
Cela poserait également des problèmes de synchronisation avec les composants externes au CPU.
Par ailleurs en embarquant une horloge dans la puce du processeur, la fréquence de celui ci serait figée par le
constructeur. Or les galettes de silicium ne sont jamais parfaitement homogènes. Les performances peuvent
varier selon les zones. Le constructeur serait alors obligé d’ajuster la fréquence de l’oscillateur au plus bas, en
prenant un facteur de sécurité. Alors qu’actuellement, les processeurs sont triés et vendus à un prix variant selon
leur vitesse de fonctionnement.
On préfère donc un oscillateur interne synchronisé sur un signale d’horloge externe, souvent fourni par un
oscillateur à quartz.
1. Ceux qui disposent d’un oscillateur intégré dans la même puce, en conséquence il suffit de leur
connecter un quartz ou un réseau RC externe pour fixer la fréquence d’horloge.

R
C Horloge
Horloge
Quartz
CPU
CPU

2. Ceux qui ne disposent pas d’oscillateur intégré dans la puce, en conséquence il est prévu en dehors
du CPU.

Oscillateur
Horloge CPU

Généralement les fabricants des microprocesseurs prévoient des circuits intégrés spécialisés qui permettent de
générer l’horloge.

VII.2 Exécution d’une instruction


Le seul langage compris par l'unité centrale (CPU) est le langage machine. Le programme exécutable est donc
obligatoirement, en langage machine. Ce programme est exécuté instruction par instruction, par la CPU à l'aide
de ses registres internes.
Une période élémentaire d’horloge est appelée micro-cycle. L’ensemble des micro-cycles qui concourent à
l’exécution d’une instruction est appelé cycle-machine.
L’exécution d’une instruction peut faire intervenir un cycle machine ou plusieurs.
La réalisation de toute instruction s'effectue selon le cycle extraction décodage exécution qui se décompose
comme suit (séquence de trois (3) phases) :

1. Recherche (Fetch) ;
2. Décodage (Decode) ;
3. Exécution (Execute).

La première phase est la phase d’accès à l’instruction (Fetch), le contenu du compteur Ordinal (PC) est placé sur
le bus d’adresse et une case mémoire est sélectionnée. La mémoire reçoit un ordre de lecture, les données sont
transférées à l’intérieur du microprocesseur vers le registre instruction. Le cycle d’accès Fech est terminé.

Le deuxième cycle est le cycle de décodage (Decode). En effet le contenu du registre d’instruction est décodé
par l’unité de commande : le code de l’instruction est alors identifié.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 15


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Pendant que l’instruction est décodée, le pointeur d’instruction est incrémentée de façon à pointer vers
l’instruction suivante, puis le processus de lecture et de décodage des instructions recommence.

L e troisième cycle est le dernier cycle est le cycle d’exécution (Execute), dans cette étape l’unité de commande
génère les signaux appropriés et l’instruction est exécutée. Cette étape est plus ou moins longue suivant la
complexité de l'instruction.

A la suite de chaque instruction, un registre du microprocesseur est actualisé en fonction du dernier résultat :
c’est le registre d’état du microprocesseur. Chacun des bits du registre d’état est un indicateur d’état ou flag
(drapeau).

Toutes ces étapes (lecture de l’instruction, décodage, exécution) sont synchronisées par un séquenceur qui assure
le bon déroulement des opérations :

Pour exécuter le programme contenu dans la mémoire centrale, le séquenceur du microprocesseur exécute lui-
même un programme appelé micro-code, contenu dans une mémoire morte à l’intérieur du microprocesseur.
Le séquenceur est dirigé par une horloge qui délivre un signal de fréquence donnée permettant d’enchaîner les
différentes étapes de l’exécution d’une instruction :

Figure 10 : Cycle d'exécution d'une instruction

Chaque instruction est caractérisée par le nombre de périodes d’horloge (ou microcycles) qu’elle utilise (donnée
fournie par le fabricant du microprocesseur).
Exemple : horloge `a 5 MHz, période T = 1/f = 0, 2 µs. Si l’instruction s’exécute en 3 microcycles, la durée
d’exécution de l’instruction est : 3 × 0,2 = 0, 6 µs.
L’horloge est constituée par un oscillateur `a quartz dont les circuits peuvent être internes ou externes au
microprocesseur.

La longueur d’une instruction peut être sur 8, 16, 32 ou 64 bits. Dans le cas où la longueur de l’instruction serait
supérieure au mot traité, l’unité de commande doit retourner vers la mémoire pour transférer les mots suivants
successivement à l’intérieur du microprocesseur

Le premier mot de l’instruction contient toujours son code opération (opcode), c’est à dire le code binaire qui
indique la nature de l’opération à exécuter.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 16


SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

Les autres mots représentent généralement les données qui doivent être utilisées par l’instruction. Ces
informations ne sont pas envoyées au décodeur.

VIII. Les circuits d’entrées / sorties


Le microprocesseur est relié au monde extérieur à travers des circuits d’entrées/sorties. Parmi ces
liaisons on peut citer :
 Des relations avec l’homme via des claviers, des imprimantes, des écrans, etc.

 Des relations avec l’environnement grâce à des capteurs, des relais, des systèmes
électromécaniques, des convertisseurs A/N et N/A, etc.
 Des mémoires de masse : bandes magnétiques, cartes perforées, disques magnétiques souples
et rigides, cassettes magnétiques, disques optiques, etc.
 …
Selon leurs principes de fonctionnement les circuits d’E/S peuvent se classer principalement en deux
catégories :
- Les circuits d’E/S parallèles ;
- Les circuits d’E/S séries ;
VIII.1 Circuits d’E/S parallèles
La transmission entre les circuits d’E/S et le périphérique se fait sur un ensemble de fils en parallèle (n
bits).

VIII.2 Circuits d’E/S séries


La transmission entre les circuits d’E/S et le périphérique se fait sur un fils en série.

IX. Synoptique Général d’un système à microprocesseur


La figure suivante illustre un synoptique simplifié d’un système à microprocesseur.

RAM ROM
Microprocesseur

Bus d’adresses

Bus de données

Bus de commandes

I/O

Périphériques

Figure 11 : Synoptique d'un système à microprocesseur

X. Conclusion
L’arrivée du microprocesseur a provoqué un grand progrès dans la commande et le traitement de
l’information par l’introduction des systèmes à microprocesseur entre autre l’ordinateur.
Le système à microprocesseur est devenu actuellement un outil indispensable.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 17


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

Chapitre 2 - Le Microprocesseur 8086 d’Intel


I. Introduction
La gamme de microprocesseurs 80x86 équipe les micro-ordinateurs de type PC et compatibles. Les premiers
modèles de PC, commercialisés au début des années 1980, utilisaient le 8086, un microprocesseur 16 bits.
Le modèles suivants ont utilisé successivement le 80286, 80386, 80486 et Pentium (ou 80586). Chacun de ces
processeurs est plus puissant que les précédents : augmentation de la fréquence d'horloge, de la largeur de bus (32 bits
d'adresse et de données), introduction de nouvelles instructions (par exemple calcul sur les réels) et ajout de registres.
Chacun d'entre eux est compatible avec les modèles précédents; un programme écrit dans le langage machine du
286 peut s'exécuter sans modification sur un 486. L'inverse n'est pas vrai, puisque chaque génération a ajouté des instructions
nouvelles. On parle donc de compatibilité ascendante.
Du fait de cette compatibilité, il est possible de programmer le 486, comme un processeur 16 bits. C'est ce que nous
ferons par souci de simplification. Ainsi, nous n'utiliserons (dans ce module) que des registres de 16 bits, avec un bus
d'adresses de 20 bits pour gérer jusqu'a 1Mo de mémoire.

Voici les caractéristiques du processeur simplifié que nous étudierons :


• Bus de données 16 bits;
• Bus d'adresse 20 bits;
• Registres :
o Accumulateur AX (16 bits);
o Registres auxiliaires BX , CX et DX (16 bits);
o Pointeur d'instruction IP (16 bits);
o Registres segments CS, DS, SS et EX (16 bits);
o Pointeur de pile SP (16 bits), et pointeur BP (16 bits).
Nous verrons plus loin que les registres de données de 16 bits peuvent parfois être utilisés comme
deux registres indépendants de 8 bits (AX devient la paire (AH, AL)).

Noter que nous évoquons ici uniquement les registres qui apparaissent explicitement dans l'écriture
des instructions, et pas les registres intermédiaires.

II. Structure interne du microprocesseur 8086


Le 8086 se présente sous la forme d’un boîtier DIP de 40 broches. Il adresse 1 Mo de mémoires et 64ko
d’entrées/sorties pour un bus d’adresse de 20 bits. La taille des registres est limitée à 16 bits. Avec un registre de 16 bits on ne
peut adresser que 64 ko de mémoire au lieu de 1 Mo adressable par le microprocesseur. Pour pouvoir adresser toute la
mémoire adressable, elle est divisée en 16 segments ou 16 pages de 64 ko. Le 8086 utilise aussi le multiplexage dans le
temps du Bus de Données et du Bus d’Adresse.
L’inconvénient du multiplexage est le ralentissement qu’il provoque car il ne peut y avoir chevauchement entre les
données et les adresses.
Le 8086 a un Bus de Données de 16 bits et peut fonctionner en 2 modes :
- Mode minimum ;
- Mode maximum.
En mode minimum le 8086 ne peut adresser que 64 ko. Dans ce cas le microprocesseur est associé à un contrôleur
de bus (8288) pour générer les signaux de contrôle.

Le 8086 se compose de deux parties (fig. 1) :


- L’Unité d’Exécution (Execute Unite EU) ;
- L’Unité d’Interface du Bus (Bus Interface Unité BIU).

II.1 L’Unité d’Exécution (Execute Unite EU).


Le rôle de l’Unité d’Exécution (EU) est d’exécuter les instructions. L’EU est constituée de :
a) Les registres généraux de données et d’adresses ;
b) Le registre d’états ;
c) L’Unité Arithmétique et Logique (UAL) ;
d) L’Unité de Contrôle.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 18


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

AH AL
BH BL
IP CS
CH CL
DS
DH DL SS
SI 16
ES
DI
BP + x
SP EU
Interface avec Bus
externe
BUS INTERNE (16 Bits)

Indicateurs ALU
UC
BIU
File d’attente
Fig. 1 : Organisation interne du 8086
a) Les registres généraux de données et d’adresses
Avec ces registres, on peut effectuer les opérations arithmétiques et logiques. Il y a 8 registres à 16 bits chacun (Fig.
2). Les 4 registres AX, BX, CX et DX sont scindés en deux registres de 8 bits chacun.

Les 4 registres de données :


AX : registre ACCUMULATEUR indispensable aux opérations de transferts et de calculs. Les opérations de multiplications, de
divisions et la conversion en BCD se font dans l’accumulateur. Ainsi que les opérations de traitement de chaînes de caractères.
BX : registre de BASE utilisé dans les calcules d’adresses.
CX : registre COMPTEUR, il sert de compteur pour les boucles, les décalages et les rotations. CX est le compteur à 16 bits
alors que CL est celui de 8 bits lors des décalages et rotations.
DX : registre qui reçoit les données lors des transferts en entrées/sorties. DX peut atteindre une extension de 32 bits pour les
multiplications et les divisions de mots.

15 8 7 0
AH AL
Accumulateur
AX
BH BL
Registres
généraux

Base
BX
CH CL
Compteur
CX
DH DL
Donnée
DX

SI Index Source
adressage
Registres

DI Index Destination

BP Pointeur de Base

SP Pointeur de Pile

IP Pointeur d’instructions
FLAGS Registre d’Etats

CS Segment de Code
segmentation
Registres de

DS Segment de Données
ES Segment « Extra »

SS Segment de Pile

Fig. 2 : Les Registres Internes du 8086

Les 4 autres registres sont des registres d’adressages à l’intèrieur d’un segment :
SI : (Source Index) sert comme pointeur pour les opérations sur les chaînes et aux calculs d’adresses.
DI : (Destination Index) sert comme pointeur pour les opérations sur les chaînes et aux calculs d’adresses.
BP : (Base pointer) il a la même fonction que BX. Il sert comme pointeur de base.
SP : (Stack Pointer) pointe le sommet de la PILE de sauvegarde des données de l’utilisateur.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 19


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

Les registres SP et BP pointent vers une adresse à l’intèrieur de la PILE.


Les registres d’Index contiennent une adresse d’une position à l’intèrieur du segment des données.
Les registres de données et d’adressages à l’intèrieur d’un segment forment ensemble les REGISTRES GENERAUX.
b) Le registre d’états
C’est un registre de 16 bits. Neuf (9) de ces bits (Flags i.e. indicateurs) sont utilisés et ont un nom particulier (Fig. 3).

O D I T S Z A P C
Fig. 3 : Registre d’Etat du 8086
C  CF (Carry Flag) Indicateur de Retenue : il prend la valeur 1 si le bit de haut niveau a été perdu, sinon il sera mis à zéro.
Exemple 1 : MOV AL, 82H soit 1000 0010
ADD AL,92 H + 1001 0010
1 0001 0100 soit : 14 H dans AL
CF et (CF) = 1 retenue.

Exemple 1 : MOV AX, 9A00H soit 1001 1010 0000 0000


ADD AX, 2 H + 0000 0000 0000 0010
1001 1010 0000 0010
CF soit : 9A02 H dans AL
et (CF) = 0 retenue.
P PF (Parity Flag) Indicateur de parité : lorsque nous effectuons la somme modulo 2 des 8 bits de poids faibles ; si le résultat
de la somme est nul alors la parité est paire PF =1, sinon la parité est impaire et PF = 0.
A  AF (Auxiliary Flag) Indicateur de retenue auxiliaire : la retenue auxiliaire est celle générée après une opération
arithmétique sur 1 octet par les 4 bits de poids faibles et par les 8 bits de poids faibles pour une opération sur 2 octets.

Z  ZF (Zero Flag) Indicateur de zéro : ZF sera mis à 1 si le résultat de l’opération est zéro et sera mis à 0 dans tous les autres
cas.
S  SF (Signe Flag) Indicateur de signe : SF=1 si le résultat est négatif est SF=0 si il est positif.

T  TF (Trap Flag) Indicateur de mode pas à pas (Trace) : TF fait effectuer au microprocesseur les instructions pas à pas.
Quant TF est positionné à 1, le 8086 génère une interruption après l’exécution de chaque instruction. TF est mis à 0 lorsque le
registre d’état est envoyé dans la pile.
I  IF (Interrupt Flag) Indicateur d’autorisation d’interruption : IF autorise ou interdit les interruptions masquables.

D  DF (Direction Flag) Indicateur de direction : il indique que la manipulation d’une chaîne de caractères s’effectue dans le
sens croissant ou décroissant.
O  OF (Overflow Flag) Indicateur de dépassement : OF est positionné chaque fois qu’il y’a dépassement avec un nombre
signé. OF = 1 dans le cas où une retenue sera placée dans le bit de haut niveau, mais ne sera pas perdue ; dans les autres cas
OF =0.
Remarque : DF, IF, TF sont des bits de contrôles et non d’états.
c) L’Unité Arithmétique et Logique :
l’UAL réalise le opérations suivantes :
Arithmétiques, Logiques, Incrémentations, Décrémentations, etc.
En plus l’UAL effectue les comparaisons et gère les indicateurs (Flags) qui donnent une idée sur les résultats des
opérations.
d) L’Unité de Commande.
Prend les instructions à partir de la liste d’attente est les transmet à l’unité d’exécution ; pendant ce temps l’Unité
d’Interface Bus continue à remplir la file d’attente de telle façon que la file d’attente soit toujours alimenté et contient toujours
des instructions à exécuter. Pendant que l’Unté d’Exécution exécute une instruction, l’Interface Bus cherche en mémoire les
instructions suivantes et les place dans la file d’attente de 6 octets de profondeur.

II.2 L’Unité d’Interface Bus.


Cette unité se compose de :
a) La logique d’interface avec le bus du 8086 ;
b) La file d’attente ;
c) Les registres de calcul d’adresses (IP et Segments).
a) La logique d’interface avec le bus du 8086.

Les données circulent entre la mémoire centrale (MC) et l’Unité d’Exécution à travers
l’interface de mémoire.
Le 8086 a un Bus de données de 16 bits. La lecture des mots d’instructions se fait dès qu’il y’a deux
places libres dans la file d’attente, et la lecture des octets se fait dès qu’il y’a une place vide dans la
file d’attente. Quand la file d’attente est vide, l’EU attend que l’Interface de Bus place des instructions
dans la file d’attente. Quand l’Unité d’Exécution effectue un saut dans le programme, le contenu de la
file d’attente est alors effacé et les instructions s’y trouvant ne sont plus à exécuter.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 20


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

Les Bus d’Adresses et de Données sont multiplexés dans le temps. Un Cycle d’Accès à la mémoire
ou à un Port d’E/S utilise au moins quatre périodes d’horloge (CLK).
Les instructions sont lues et placées avant exécution deux octets par deux octets dans la file d’attente.
A ce moment le bus est inoccupé. L’exécution d’une instruction peut être plus rapide que le
remplissage de la file d’attente.
b) La file d’attente.
Le 8086 dispose d’une file d’attente de 6 (six) octets permettent de stocker les instructions en attente d’exécution.
Cette technique, dite du QUEUE, permet d’augmenter les performances du système. C’est une structure « parallèle »,
permettant une vitesse de traitement appréciable.
c) Les registres de calcul d’adresses (IP et Segments).
Ces quatre registres permettent au microprocesseur d’adresser 256 ko de mémoire. Le 8086 accède aux autres
parties de la mémoire par le changement des contenus des registres segments. Ces registres sont chargés au travers de AX,
parce qu’il n’existe pas d’instructions qui permet de transférer directement les données immédiates dans ces registres. Les
registres de segments sont des registres à usages spéciaux. Le microprocesseur utilise un ou plusieurs registres de segment
pour accéder à la mémoire. Ces registres permettent au programmeur d’accéder simultanément à quatre zones d’adresses
différentes. Chaque zone d’adresse peut contenir jusqu’à 64 ko de données. Ces registres peuvent être lus et modifiés par
programmation.

Ces registres sont :

CS (Code Segment) Segment de Code :


Le contenu de ce registre définit le début du segment de la mémoire contenant du code. Lorsque le processeur
extrait les instructions, il combine l’adresse contenue dans le registre IP avec l’adresse de début de segment placée dans CS.
Les adresses des différentes instructions d’un programme sont relatives au contenu de CS.
CS est chargé avec FFFFH à l’initialisation. A cette adresse (IP = 0000H) une instruction de saut permet le chargement
de CS et IP avec l’adresse de début de programme.
IP (Instruction Pointer) Compteur Ordinal ou Pointeur d’instruction :
Indique la prochaine instruction à exécuter, relativement à CS.
DS (Data Segment) Segment de Données :
Indique le début du segment de données. Il est utilisé pour indiquer l’emplacement des
données ou comme opérande source pour les instructions de manipulation de caractères.
SS (Stack Segments) Segment de Pile :
Utilisé pour toutes les opérations sur la pile. Il définit le début de segment de la pile.
ES (Extra Segment) Segment de Données « Supplémentaire » :
Définit le segment « extra », qui peut être utilisé comme zone secondaire de données à usage
général. Il est également utilisé comme opérande de destination avec les instructions de manipulation
de caractères.
Lorsque les besoins de stockage sont minimes, le segment Extra n’est pas nécessaire.

III. Structure Externe du Microprocesseur 8086.


III.1 Brochage du microprocesseur 8086

GND 1 40 VCC
39 AD15
AD14 23 38 A16 /S3
AD13
AD12 4 37 A17 /S4
AD11 5 36 A18 /S5
AD10 6 35 A19 /S6
AD9 7 34 BHE /S7
AD8 8 33 NM/MX
AD7 9 32 RD
AD6 10 31 HOLD
11
8086 30 HOLDA
AD5
AD4 12 29 WR
AD3 13 28 M/IO /S2
AD2 14 27 DT/R /S1
AD1 15 26 DEN /SO
AD0 16 25 ALE
NMI 17 24 INTA
INTR 18 23 TEST
CLK 19 22 READY
GND 20 21 RESET

Fig. 4 : Brochage du 8086

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 21


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

AD0 – AD15 : (bidirectionnel), Bus multiplexé d’Adresses et de Données ; Bus de Données de 16 bits
et les 16 bits de poids faible du Bus d’Adresses.

A16/S3 – A19/S6 : (sortie), Partie haute du Bus d’Adresses (4 bits de poids forts) et 4 bits d’Etats
multiplexés du processeur.

CLK : (Clock) Entrée horloge.

RD : (Read) Sélection de lecture d’une donnée mémoire ou une donnée d’E/S.

BHE /S7 : (Byte High Enable) Sélection de l’octet le plus haut sur le bus de données (D8 – D15) et le
bit d’Etat S7. En mode lecture ou en mode écriture (que ce soit en configuration Minimum ou
Maximum) du microprocesseur sur des octets, le signal BHE valide l’octet de poids fort. Si
l’instruction porte sur un octet le microprocesseur indique s’il s’agit de l’octet de poids fort ; si
l’instruction porte sur un mot de 16 bits le microprocesseur lit deux octets.

RESET : Remise à l’état initial, ou entrée d’initialisation du 8086.

READY : Entrée/Sortie lente, indique aussi la fin de transfert et synchronise avec la périphérique.

NMI : (No Maskable Interrupt) demande d’interruption non masquable.

INTR : (Maskable Interrupt Request ) demande d’interruption masquable.

TEST : Broche de test utilisé par l’instruction WAIT pour la synchronisation avec les éléments
externes.

NM/ MX : Mode de fonctionnement du Bus de Contrôle : Minimum ou Maximum.


- Si NM/ MX =1 alors mode de fonctionnement Minimum.
o Génère sur les broches 24 à 31 tous les signaux de contrôle nécessaire à ce mode :
INTA , ALE, DEN , DT/ R , M/ IO , WR , HOLD , HLDA.

- Si NM/ MX =0 alors mode de fonctionnement Maximum.


o Le circuit de contrôle de Bus décode les signaux S0, S1, S2 élaborés sur les broches
26, 27 et 28, pour donner les signaux de contrôle destinés à un système de haut de
gamme.

S0, S1, S2 : Bits d’Etats. Le décodage de ces trois bits par le circuit 8288, fournit les signaux sur le
bus de contrôle (Tab. 1).
S0 S1 S2 Type de transfert
0 0 0 Prise en compte d’une interruption.
0 0 1 Sélection du mode lecture d’Entrée/Sortie.
0 1 0 Sélection du mode d’écriture d’E/S.
0 1 1 HALT.
1 0 0 Recherche d’une instruction.
1 0 1 Sélection du mode de lecture de la mémoire
1 1 0 Sélection du mode d’écriture de la mémoire
Tab. 1 : Signaux d’Etats caractérisant un type de transfert.

QS0, QS1 : (Queue Status) Etat de la file d’attente des instructions.

RQ/ GT0 , RQ/ GT1 : (Request / Grant) Demande d’accès au Bus et autorisation de
fonctionnement en multiprocesseurs.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 22


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

LOCK : Interdiction d’accès au Bus en fonctionnement multiprocesseur. Cela se traduit par un


verrouillage du Bus Commun d’un système multiprocesseurs pendant l’instruction préfixée par
« LOCK ».

GND : Masse (0 Volt).

Vcc : Tension d’alimentation +5V.

DT/ R : (Data Transmit/Receive) Contrôle de la direction des transferts pendant les temps T2, T3 et
T4 ; autrement dit : définit le sens de passage des buffers bidirectionnels placés sur le Bus de
Données.

DEN : (Data Enable) Validation du Latch des Données, et activation de ces buffers sur le Bus de
Données.
- DEN = 0 les buffers sont actifs.
- DEN = 1 les buffers sont en haute impédance. Le sens de passage est fixé par les conditions
suivantes :
o DT/ R = 1 le transfert se fait du microprocesseur vers l’extérieur.
Si
o Si DT/ R = 0 le transfert se fait de l’extérieur vers microprocesseur.

HOLD : Entrée de demande d’accès au Bus par un processeur.

HLDA : Sortie d’autorisation d’accès au Bus à un autre processeur.

INTA : (Interrupt Acknowledgement) Validation d’interruption. Signal d’acquittement d’une


interruption masquable.

WR : (Write) Ecriture, signale d’écriture de données mémoires ou Entrées/Sorties.

M/ IO : Demande d’opération avec les mémoires ou les E/S.

ALE : (Adress Latch Enable) Validation du Latch d’Adresses , pendant le temps T1 du Cycle
d’Horloge , il donne le signal de mémorisation de l’adresse dans le Latch.

Remarque : Utilisation des broches en fonction du mode de fonctionnement.


Broches 31 30 29 28 27 26 25 24
Mode
Minimum HOLD HLDA WR M/ IO DT/ R DEN ALE INTA
Maximum RQ/ GT0 RQ/ GT1 LOCK S2 S1 S0 QS0 QS1

III.2 Les Entrées /Sorties du microprocesseur 8086


Le 8086 dispose d’un espace de 64 ko de Ports d’E/S distinctes de l’espace mémoire. Les
entrées et les sorties s’effectuent par l’intermédiaire du registre Accumulateur à 16 bits (AX) ou à 8
bits (AL). Le signal M/ IO , situé sur la broche 28, est utilisé pour indiquer une opération d’E/S.
Les lignes AD16 – AD19 sont mis à zéro lors de l’opération d’E/S. le 8086 envoie sur la broche ALE
un signal de validation de l’adresse dans le registre « Tampon ».
En mode Maximum ( NM/ MX = 0), le 8086 peut adresser 256 ko. Pour fonctionner en mode
Maximum le 8086 a besoin d’un Système de Contrôle. Ce système reçoit du microprocesseur l’état
des signaux S0, S1, S2 (Tab. 1).
L’opération de transfert nécessite en général quatre (4) cycles.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 23


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

LECTURE :
Si le microprocesseur désire lire le contenu de la mémoire à une adresse précise, il émettra
cette adresse par les broches d’adressages. Des signaux de contrôle seront émis par d’autres
broches pour indiquer que la fonction est une lecture de la mémoire. Ces signaux sont décodés et la
demande est transférée à la puce appropriée en respectant une limite de temps (fig. 5).
Pendant le cycle T1 :
Le 8086 envoie une adresse sur 16 bits et active les signaux suivants :
• M/ IO : pour sélectionner la mémoire d’E/S.
• DT/ R : pour sélectionner les sens de transfert de l’amplificateur bidirectionnel
8286/8287.
• BHE : pour valider du Bus (poids fort).
Pendant ce cycle les poids d’adresses AD0 – AD15, ainsi que BHE seront stable ; ceci pour
conserver l’information d’adresse et de sélection pendant le transfert. Cette adresse est sauvegardée
dans les registres des puce 8282/8287 validées par le signal ALE.
Pendant le cycle T2 :
• Au début de cycle les lignes d’adresses passent à l’état Haute Impédance et BHE
prend la valeur de 1 ;
• Au même moment RD passe à l’état bas. ;
• En ce moment le microprocesseur sera prêt à recevoir une donnée.

Le signal DEN (validation du 8286/8287) passe ensuite à l’état bas autorisant le
chargement de la donnée qui apparaît sur le Bus au milieu du cycle T2, et reste stable
pendant les cycles T3 et T4.
Pendant le cycle T3 :
• Les circuits d’adresses indiquent par l’intermédiaire de la broche (READY) du 8086 que la
donnée est prête.
Pendant le cycle T4 :
• Les lignes DEN , RD , DT/ R reviennent à l’état haut indiquant la fin de la lecture.
ECRITURE :
L’opération d’écriture suit les même étapes que la lecture, à la seule différence que c’est la
ligne WR qui est utilisée à la place de la ligne RD .
Pendant le cycle T2 :
• WR passe à l’état bas et DT/ R reste à l’état haut, pour indiquer qu ‘à ce moment
le microprocesseur 8086 transfère des données vers l’extérieur par l’intermédiaire des
puce 8226 et 8287.
T1 T2 T3 T4 T1
CLK Du prochain cycle

M/IO

ALE

AD15-AD0

WR

Fig. 5a : séquence d’écriture

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 24


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

Vcc
MN/MX

M/IO
INTA Pour le Contrôle
RD
du bus
WR

8086 DT/R

DEN STB
ALE
OE
8282
BHE
AD0-AD15
A16-A19

STB

STB
8286

Fig. 5b : Configuration d’un système en mode minimum autour du 8086

III.3 Les interruptions


Les interruptions du 8086 sont vectorisées , c’est à dire que les adresses des sous-programmes
qui gèrent ces interruptions sont stockés à des emplacements mémoires organisés sous la forme
d’une colonne de vecteurs d’interruptions situés entre 0000H et 03FFH (fig. 6).
Le vecteur est formé de deux mots :
- CS (Segment de Code)  2octets ;
- IP (Compteur Ordinal)  2 octets.
Le 8086 possède 256 vecteurs d’interruptions. Chaque vecteur occupe 4 octets. Ces 256 vecteurs
occupent 1 ko et son connus par leur emplacement (Localisation).
On dit vecteur de type 0, vecteur de type 1,…, vecteur de type 255. les vecteurs de type 0 à 31
sont réservés par le constructeur.
Adresse mémoire Entrée de la Table Définition du vecteur
3FF CS 255 Vecteur 255
3FC IP 255
…………………. …………………. ………………
…………………. …………………. ………………
12 CS 4 Vecteur 4 (Overflow)
10 IP 4
0E CS 3 Vecteur 3 (Logicielle)
0C IP 3
0A CS 2 Vecteur 2 (NMI)
08 IP 2
06 CS 1 Vecteur 1 (Pas à Pas)
04 IP 1
02 CS 0 Vecteur 0 (ERREUR DIV / 0)
00 IP 0
Fig. 6 : organisation de la table d’interruptions.

Il y’a deux sources d’interruptions :


- Interruptions internes ;
- Interruptions externes.

1) les interruptions internes

Ces interruptions apparaissent suite à :


a) Division par zéro : ce qui provoque une interruption du microprocesseur et son
branchement à l’interruption de type 0.
b) En mode pas à pas : quand l’indicateur du mode pas à pas (TF) est positionné à
1, une interruption est généré e par le microprocesseur après chaque exécution
de chaque instruction. Le microprocesseur 8086 ne dispose pas d’une broche de

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 25


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

demande d’interruption pas à pas. Le fonctionnement en mode pas à pas se fait


par logiciel.
c) Les instructions d’interruption : ces interruptions naissent suite d’appel d’un
sous programme à une adresse située dans l’un des vecteurs d’interruptions.

2) les interruptions externes


Ces interruptions sont définies par trois broches :
a) NMI (No Maskable Interrupt) : ne peut être inhibée, elle intervient lors
d’évènements externes (perte d’alimentation, détection d’erreur). La logique de
détection d’erreurs a été incluse pour détecter les erreurs de parité dans la
mémoire vive. Ces erreurs sont communiquées à l’unité centrale via la ligne
d’interruption non masquable (NMI). NMI est le moins prioritaire des interruptions
externes. Le vecteur d’interruption NMI est placé à l’adresse 0008H.
b) INTR (Interrupt Request) : interruption masquable par l’indicateur d’interruption
(IF), fournie par un gestionnaire d’interruptions spécialisé (le contrôleur
d’interruption 8259A ). INTR est prioritaire par rapport à NMI.
c) RESET : elle est la plus prioritaire de ces trois interruptions. Toute opération
matérielle et logicielle sera abandonnée lors de l’activation de cette broche
RESET. Quand RESET est activée
 le registre d’indicateurs d’état est mis à zéro ;
 les registres DS, ES, SS et IP sont mis à zéro ;
 le registre CS est forcé à FFFFH.
A la demande d’une interruption :
Le 8086 force à zéro IF et TF car :
IF =0 interdit une nouvelle interruption par INTR.
TF =0 supprime le mode Pas – à – Pas.
Il empile le contenu du registre d’état et IP dans la pile après avoir invalidé les interruptions,
Et effectue le branchement à l’adresse désirée.

Après l’exécution d’un sous-programme d’interruption, l’instruction IRET restaure CS, IP et le registre d’états.
Les indicateurs IF et TF retrouvent leurs états d’origines.

III.4 Organisation de la mémoire


L’unité d’adressage de l’espace mémoire du 8086 est l’octet ; ce qui donne une taille d’espace
adressable de 1 Mo (1048576 octets). La zone d’adresses est comprise entre l’adresse 00000H et
l’adresse FFFFFH.
L’espace mémoire est divisé en segments de 64 ko (1 page). Le segment est physiquement implanté à une

adresse divisible par 16.

L’adresse sur 20 bits avec des nombres de 16 bits est réalisée par :

- Définition d’un segment (de 64 ko  une page).


- la position dans le segment peut être définie par un nombre de 16 bits.
- Le registre de segment fixe l’emplacement du Segment dans le Mega – octets. Chacun des
registres suivants définit une position d’un segment de 64 ko. :
o CS : référence à une instruction ;
o DS : référence à une donnée ;
o SS : référence à la pile ;
o ES : référence à une zone supplémentaire.
Cette position de segment peut être placée n’importe où dans la mémoire et les segments
peuvent se recouvrir (chevaucher partiellement).
- Les déplacements se font à partir du début du segment ; ce qui permet une relogeabilité totale
des programmes et des données.
Ces quatre segments sont adressables et donnent quatre segments courants ( CS, DS, SS, ES),
dont les adresses d’emplacement sont calculées à partir des contenus des registres des segments.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 26


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

Calcul de l’adresse physique à partir de l’adresse logique :


Adresse physique = Adresse du Segment + Déplacement
15 0 Déplacement dans le
Adresse Effective segment
15 0
Registre SEGMENT 0000

+
15 0
Adresse Physique Adresse envoyée sur le Bus

Exemple : CS = F2CA et IP = DA52


Adresse physique = F2CA0 + DA52 = 1006F2.

IV. Assembleur du 8086


IV.1 Présentation du langage l'assembleur

IV.1.1 Qu'est ce que le langage assembleur ?


L'assembleur est un langage de programmation (c'est-à-dire un moyen pour l'homme de communiquer
avec la machine) de très bas niveau (entendez par là "très près de la machine"). En effet, la plupart des langages
de programmation (C/C++, Pascal, Java, etc.) ont pour but de simplifier la tâche du programmeur en lui
proposant des instructions "prêtes à l'emploi" pour les tâches habituelles d'un programme. Par exemple, pour
afficher un texte à l'écran, en langage C, vous faites tout naturellement : printf ("Bonjour le Monde!\n");
Mais en assembleur, vous êtes obligé de comprendre comment ça ce passe au niveau du processeur
(sauf si vous utilisez les interruptions du DOS...). De plus, en général, il faut beaucoup de lignes de code pour
faire peu de chose... et le temps de programmation en est d'autant plus long. Mais alors, quels sont les avantages
de l'assembleur ? En fait, étant donné que vous programmez directement le processeur, vous pouvez vous-même
effectuer des optimisations sur votre code, suivant les cas ; ce que le compilateur ne fait pas.

IV.1.2 Avantages et inconvénients du langage assembleur


Si on compare l'assembleur aux langages de haut niveau, on peut citer comme inconvénients :
• beaucoup de code pour faire peu
• temps de programmation plus long
• bugs plus fréquents
• débogage plus difficile
Mais il n'y a pas que des points faibles :

• rapidité d'exécution
• code compact (peu d'octets)
• on peut absolument tout faire
• on peut optimiser les calculs

IV.2 Programmation du microprocesseur 8086

IV.2.1 Principes d’adressage

Le mode d’adressage caractérise la façon dont est obtenue l’adresse des opérandes d’une instruction. Plus un
microprocesseur offre de mode d’adressage, plus le programme sera puissant.

IV.2.2 Adressage registre ou (implicite, inhérent)


L’opération se fait entre registre et le registre concerné est contenu dans le code de l’instruction.
Exemple : MOV AX, BX ; AXBX
ADD AX, BX ; AXAX + BX
MOV AX, 7 ; AX7

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 27


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

IV.2.3 Adressage immédiat


Dans ce cas l’information à utiliser est directement donnée dans le code et spécifiée comme une constante en
fait partie.
Exemple : MOV BX, 6 ; BX6
MOV BYTE PTR [SI], 5 ; [SI]05 (1 octet)( relativement à DS)
MOV WORD PTR [SI], 6 ; [SI]0006 (2 octet)( relativement à DS)
Les expressions « BYTE PTR » et « WORD PTR » indique la taille de l’emplacement mémoire considérée.

IV.2.4 Adressage mémoire

IV.2.4.1 Adressage mémoire direct


L’adresse est donnée directement et se fait à l’intérieur du segment DS. L’adresse est ici un déplacement sur 1
octet. C’est un adressage direct mais il est relatif à l’adresse de début du segment.
Exemple : MOV AX, Variable ; AX [Variable].
Le contenu de l’adressa mémoire représentée ‘symboliquement’ par
Variable est placé dans AX.

IV.2.4.2 Adressage mémoire indirect


Exemple : MOV AX, [BX] ; AX[BX]
Le contenu du registre est interprété comme étant une adresse en
mémoire et le contenu de cette adresse mémoire est déplacé dans le
registre AX.
Chacun des registres BX, BP, SI et DI peuvent être utilisé pour l’adressage indirect.

IV.2.4.2.1 Adressage base


Le contenu de BX auquel est ajouté un déplacement dans le segment DS, nous permet d’obtenir l’adresse
effective.
Le contenu de BP auquel est ajouté un déplacement dans le segment SS, nous permet d’obtenir l’adresse
effective
(AX)  (BX) + déplacement (sur 1 ou 2 octets)
EA = (BX) : indirect base sur DS
EA = (BP) : indirect base sur SS
EA = (BX) + déplacement : indirect base et déplacement sur DS
EA = (BP) + déplacement : indirect base et déplacement sur SS
Exemple : MOV AX, [BX + 5] ; AX [BX+5]

IV.2.4.2.2 Adressage indexe

On ajoute le déplacement au contenu de SI ou DI. Ce déplacement est sur 5 ou 16 bits et se passe dans DS.
EA = (SI) : indirect indexé
EA = (DI) : indirect indexé
EA = (SI) + déplacement : indirect indexé et déplacement
EA = (DI)+ déplacement : indirect indexé et déplacement

IV.2.4.2.3 Adresse base – indexe


On ajoute au contenu de BX ou BP le contenu de SI ou DI, au résultat obtenu on ajoute un déplacement (dans
DS) sur 8 ou 16 bits.
EA = (BX) + (SI)
EA = (BX) + (SI) + déplacement
EA = (BX) + (DI)
EA = (BX) + (DI) + déplacement
EA = (BP) + (SI)
EA = (BP) + (SI) + déplacement
EA = (BP) + (DI)
EA = (BP) + (DI) + déplacement

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 28


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

IV.2.5 Adressage de pile


Le STACK POINTER (SP) pointe le sommet de la pile. SP se trouve toujours dans le segment de pile (SS).
La pile se remplie par adresses décroissantes et se vide par adresses croissantes.
Les données à empiler ou à dépiler sont des mots (16 bits). La source et la donnée de ces mots peuvent être un
registre ou un emplacement mémoire et adressés par un adressage : DIRECT, BASE, INDEXE – BASE,
INDEXE.
Exemple : PUSH AX ; effectue (SP) (SP)-2 puis [SP] (AX)
POP BX ; BX [SP] puis effectue (SP) (SP) + 2

En résumé pour le 8086 :


Exemple d’instruction Mode d’adressage
MOV AX, 5 Immédiat
MOV AX, BX Registre
MOV AX, DATA1 Direct mémoire
MOV AX, [BX] Indirect base MOV AX, [BX] base sur DS
MOV AX, [BP] base sur SS
MOV AX, [SI] Indirect index MOV AX, [SI] Indexé par SI sur DS
MOV AX, [DI] Indexé par DI sur DS
MOV AX, [BX + 5] Indirect base + déplacement
MOV AX, [SI + 5] Indirect index + déplacement
MOV AX, [BX][SI] Indirect base + index
MOV AX, [BX + DI]
MOV AX, [BX][DI] 5 Indirect base + index + déplacement
MOV AX, [BX + SI + 5]

IV.3 Quelques instructions du 8086

IV.3.1 Instructions de transfert de données

IV.3.1.1 Instruction MOV, XCHG déplace, échange


MOV destination, source
Destination : registre / case mémoire
Source : registre / case mémoire / valeur immédiate
Exemple :
MOV AX, CX ; charger dans AX le contenu de CX, le contenu de CX reste inchangé.
XCHG opérande1, opérande2
Opérande1 : registre de donnée / case mémoire
Opérande2 : registre de donnée
Exemple :
XCHG AX, somme ; échange des contenus de AX et somme.

IV.3.1.2 Instructions PUSH, POP Opérations sur les piles


PUSH source
Source : registre ou case mémoire dont le contenu doit être placé sur la pile.
POP destination
Destination : registre ou case mémoire dont la valeur sera affectée par la valeur retirée de la pile.
Exemple :
PUSH SI ; empile le contenu de SI

IV.3.1.3 Instructions IN, OUT Transfert avec les ports d'E/S


IN accumulateur, source
Lecture du port d'E/S source mis dans accumulateur
OUT destination, accumulateur
Ecriture port d'E/S source avec la donnée dans accumulateur
Exemple :
IN AL, 7F ; lecture d’un octet du port 7F
OUT 3, AL ; écriture d’un octet sur le port 3

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 29


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

IV.3.1.4 Instructions LEA Chargement registre ou pointeur


LEA registre, opérande
Registre : registre 16 bits
Opérande : « nom d’étiquette » (déplacement 16 bits)
Chargement registre avec adresse effective
Exemple :
LEA BX, Tableau ; charge l’adresse effective de Tableau

IV.3.2 Instructions arithmétique

IV.3.2.1 Instructions ADD, ADC, INC, AAA, DAA Additions


ADD Destination, source : Addition sans retenue (dest)  (dest)+(src)
ADC Destination, source : Addition avec retenue (dest)  (dest)+(src)+(CF)
Destination :registre / case mémoire
Source : valeur immédiate / registre / case mémoire (à condition que destination ne soit pas une case mémoire)
Exemple :
ADD AX, BX ; (AX) (AX)+(BX)
ADD AL, FA ; (AL) (AL)+FA
ADD DX, 1200 ; (DX) (DX)+1200
ADC AX, 800 ; AL) (AL)+800+(CF)
INC destination : incrémente destination (dest) (dest)+1
Destination : registre ou mémoire
Exemple :
INC AX ; (AX) (AX)+1
AAA (Pas d'opérande)
Corrige le résultat de l’addition de 2 chiffres ASCII en un nombre BCD
Exemple :
ADD AL,37H ; avec AX=0034H donne AX=006BH
AAA ; donne AX=0101H (soit 7+4=11 en décimal)
DAA (Pas d'opérande)
Ajuste en BCD le résultat AL d'une addition 2 nombres BCD

IV.3.2.2 SUB, SBB, DEC, NEG, CMP, AAS, DAS soustractions


SUB destination, source : Soustraction sans retenue (dest)(dest)-(src)
SBB destination, source : Soustraction avec retenue (dest)=(dest)-(src)-(CF)
Exemple :
SUB AX, BX ; (AX)(AX)+(BX)
SUB AL,4 ; (AL)(AL)+4
DEC destination : Décrémentation de 1 de l'opérande destination
NEG destination : Complément a 2 de destination
Exemple :
NEG AL ; si (AL) = 13H (soit 00010011) après exécution on aura –13H (11101101)
CMP opérande1, opérande2 : Comparaison des 2 opérandes
(Opérande1) – (opérande2) et positionne les indicateurs
Opérande1 : registre / Case mémoire
Opérande2 : registre/ case mémoire / valeur
AAS (Pas d'opérande) : Ajustement ASCII pour soustraction
Corrige le résultat d'une soustraction de 2 nombres ASCII en un nombre binaire
Exemple :
SUB AL,37H ; avec AX=3334H donne AX=33FDH
AAS ; donne AX=3207H (soit 34-7=27 en décimal)
DAS (Pas d'opérande) : Ajuste en BCD le résultat AL d'une soustraction de 2 nombres BCD

IV.3.2.3 MUL, IMUL, AAM multiplications


MUL Source : Multiplication non signée AX AL* (src) ou DX:AX  AX*(src)
Exemple :
MUL BH ; AX  AL * BH
MUL CX ; DX:AX  AX * CX
MUL WORD PTR [ABCD]
IMUL Source : Multiplication signée AX AL* (src) ou DX:AX  AX*(src)
AAM (Pas d'opérande.) Ajustement ASCII pour multiplication

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 30


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

Corrige le résultat binaire d'une multiplication en 2 nombres ASCII en un nombre décimal BCD
Exemple :
MUL AL, BL ;avec AL=37H et BL=39H donne AX=0C3FH
AAM ;donne AX=0603H (soit 7x9=63 en décimal)

IV.3.2.4 DIV, IDIV, AAD, CBW, CWD divisions


DIV dénominateur : Division non signée
AH:AL / dénominateur quotient  AL et reste  AH
DX:AX / dénominateur quotient  AX et reste  DX
Exemple :
DIV BP ; DX :AX / BP avec quotient  AX et reste  DX
IDIV dénominateur : Division signée
AH:AL / dénominateur quotient  AL et reste  AH
DX:AX / dénominateur quotient  AX et reste  DX
AAD (Pas d'opérande.) : Ajustement ASCII pour division
Convertit 1 nombre décimal ASCII contenu dans AX en 1 nombre binaire équivalent dans AX
Exemple :
AL = 33H et AH = 35H donne AL = 23H et AH = 00H
CBW (|Pas d'opérande) : Conversion d'un octet signe en un mot
Exemple :
CBW ; si AL = 4F (01001111) alors AH = 00 (00000000)
CWD (Pas d'opérande) : Conversion mot signe dans AX en double mot étendu dans DX

IV.3.3 Instructions logique

NOT, AND Complément, Et


OR, XOR Ou inclusif, exclusif
NOT destination : Opération logique NON (inverse tous les bits)
AND destination, source : ET logique entre 2 opérandes : (dest)(dest) ET (src)
OR Destination, source : Opération. logique OU inclusif (dest) (dest) OU (src)
XOR Destination, source : OU exclusif : (dest)(dest)XOR(src)
TEST Comparaison logique
TEST Destination, source : ET logique entre destination et source et positionne les indicateurs

SHL, SHR, SAL, SAR décalages


Décalage logique du contenu d’un registre ou d’une mémoire
SHL destination, (1 ou CL) : Décalage logique à gauche non signé de la donnée destination de n bits avec
retenue
CF 0

SHR destination, (1 ou CL) : Décalage logique à droite non signé de la donnée destination de n bits avec
retenue
0 CF
SAL destination, (1 ou CL) : Décalage arithmétique à gauche signé de la donnée destination de n bits avec
retenue (utilisez SHL à sa place même fonction)
SAR destination, (1 ou CL) : Décalage arithmétique à droite signé de la donnée destination de n bits avec
retenue
CF

ROL, ROR,.. Rotation


ROL destination, 1 (ou CL) : Rotation gauche de donnée destination de n bits sans retenue
CF

ROR destination, 1 (ou CL) : Rotation droite de donnée destination de n bits sans retenue
CF

RCL destination, compteur (ou CL) : Rotation gauche de donnée destination de n bits avec retenue
CF

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 31


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

RCR destination, compteur (ou CL) : Rotation droite de donnée destination de n bits avec retenu
CF

IV.3.4 Instructions de branchement (Ruptures de séquence)

IV.3.4.1 Sauts inconditionnels


JMP (JuMP)
Cette instruction effectue un saut sans condition. Le saut peut être sur un label, une adresse mémoire, ou un
registre (adressage direct ou basé).

IV.3.4.2 Les branchements conditionnels


Ces instructions permettent de sauter "une partie d'un programme" si une condition est vérifiée.
Toutefois si les conditions ne sont pas vérifiées, le programme saute cette instruction et suit son cours normal.
Toutes ces instructions ont la forme générale suivante : J… indent, où « J… » est le mnémonique de
l’instruction et « ident » est un label qui doit se trouver dans un intervalle de –127 à 128 autour de l’instruction.

IV.3.4.2.1 Les tests d’indicateurs


Instruction Condition Définition
JZ ZF = 1 Jump if Zero
JE Jump if Equal
JNZ ZF = 0 Jump if Not Zero
JNE Jump if Not Equal
JC CF = 1 Jump if Carry
JNC CF = 0 Jump if Not Carry
JS SF = 1 Jump if Sign
JNS SF = 0 Jump if Not Sign
JO OF = 1 Jump if Overflow
JNO OF = 0 Jump if Not Overflow

IV.3.4.2.2 Les tests de nombres non signés


Instruction Condition Indicateurs Définition
JA A>B CF = 0 et ZF = 0 Jump if Above
JNBE Jump if Not Below or Equal
JAE A >= B CF = 0 Jump if Above or Equal
JNB Jump if Not Below
JNC Jump if Not Carry
JBE A <= B (CF = 1 et ZF = 1) Jump if Below or Equal
JNA ou Jump if Not Above
(CF <> ZF)
JB A<B CF = 1 Jump if Below
JC Jump if Carry
JNAE Jump if Not Above or Equal
JE A=B ZF = 1 Jump if Equal
JZ Jump if Zero
JNE A <> B ZF = 0 Jump if Not Equal
JNZ Jump if Not Zero

IV.3.4.2.3 Les tests de nombres signés


Instruction Condition Indicateurs Définition
JG A>B ZF = 0 et OF = SF Jump if Greater
JNLE Jump if Not Lower or Equal
JGE A >= B SF = OF Jump if Greater or Equal
JNL Jump if Not Lower
JNG A <= B (ZF = 1) Jump if Not Greater
JLE ou Jump if Lower or Equal
(SF <> OF)
JNGE A<B SF <> OF Jump if Not Greater or Equal
JL Jump if Lower
JE A=B ZF = 1 Jump if Equal
JZ Jump if Zero
JNE A <> B ZF = 0 Jump if Not Equal
JNZ Jump if Not Zero

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 32


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

IV.3.4.3 Les Boucles


LOOP déplacement : Saut inconditionnel a IP + déplacement tant que CX <>0 +CX=CX-1
Cette instruction effectue une répétition tant que CX n'est pas égal à zéro; celle ci décrémente CX de 1 à chaque
saut. Elle est l'équivalent de :
Label1: DEC CX
CMP CX, 0
JNE Label1

LOOPx déplacement
Saut conditionnel a IP + déplacement tant que CX <>0 + CX=CX-1

LOOPE / LOOPZ et si ZF=1

LOOPNE / LOOPNZ et si ZF=0

IV.3.4.4 Appel de sous programme

CALL opérande Appel d'un sous-programme direct ou indirect avec retour sur RET
L’opérande est l’adresse qui indique où le contrôle doit être transférer. Le contexte (CS et IP ou IP) est empilé.

RET Retour d'un sous-programme

INT, INTO, Interruption


Une interruption est un genre de sous programme contenu dans le BIOS ou dans le système d'exploitation..

INT Type d'interruption (0 a 255) Interruption logicielle


INTO Pas d'opérande Validation d'interruption sur overflow OF=1 (correspondant a INT 04H)
IRET Pas d'opérande Retour d'interruption avec restitution IP , CS et FLAGS

IV.3.5 Instructions de manipulation de chaînes

MOVS Chaîne destination, chaîne source : déplacement, transferts


Transfert de donne et incrémentation de SI et DI(si DF=0) ou décrémentation de SI et DI(si DF=1) de 1 (si
MOVSB) ou de 2 (MOVSW)

CMPS Destination : Comparaison,


Compare 2 opérandes dans chaînes et incrémentation de SI et DI

SCAS Pas d'opérande : recherche


Comparaison de la donnée dans l’accumulateur a une chaîne de données pointée par ES:DI puis
(DI)=(DI)-1 si DF=1 ou (DI)=(DI)+1 si DF=0 de 1 (SCASB) ou 2 (SCASW)

LODS, STOS Chargement, rangement


LODS Source

Chargement d’une chaîne caractères dans AX ou AL et décrémentation de SI (si DF=1) ou


incrémentation (si DF=0) de 1 (LODSB) ou 2 (LODSW)
STOS Destination

Stockage d’une donnée de l’accumulateur dans une chaîne de données pointée par ES:DI et
décrémentation de DI (si DF=1) ou incrémentation de DI (si DF=0) de 1 (STOSB) ou 2 (STOSW)

REP, REPE, REPZ,.... Préfixe de répétition

REP Préfixe pour répéter l’instruction suivante tant que CX≠0


REP* Préfixe répétition conditionnel de l’instruction tant que CX≠0
REPNE / REPNZ et non zéro ou non égal (ZF=0)
REPE / REPZ et zéro ou égal (ZF=1)

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 33


SYSTEMES MICROPROGRAMMES – Ch-02 –Le Microprocesseur 8086 d’INTEL

IV.3.6 INSTRUCTIONS DE CONTROLE DU MICROPROCESSEUR

CLC, STC,.. Positionnement indicateur


CLC Pas d'opérande : Effacement de la retenue CF
STC Pas d'opérande : Positionnement de la retenue CF=1
CLD Pas d'opérande : Incrémentation automatique des opérations de chaîne (DF mis a 0)
STD Pas d'opérande : Positionnement de l'indicateur de direction DF=1
CLI Pas d'opérande : Suppression des interruptions externes (IF force a 0)
STI Pas d'opérande : Positionnement indicateur autorisation d'interruption IF=1

NOP, HLT, LOCK, ESC,.. Arrêt, ver. bus, extensions


NOP : No Opération : aucune opération.

HLT Pas d'opérande : Arrêt du microprocesseur; réactivé par une interruption INT (non masquée),NMI.

LOCK Pas d'opérande : Préfixe d'activation du signal LOCK pour verrouillage l’accès externe aux bus durant
l'instruction suivante.

ESC : Opérande externe, adresse : Transmission d'une instruction a un coprocesseur

WAIT Pas d'opérande : Met le microprocesseur en attente tant qu'il est occupé.

GND 1 40 VCC
AD14 2 39 AD15
AD13 3 38 A16 /S3

AD12 4 37 A17 /S4

5 36 A18 /S5
AD11
6 35 A19 /S6
AD10
34 BHE /S7
AD9 7
AD8 8 33 NM/MX

AD7 9 32 RD

AD6 10 8086 31 HOLD

AD5 11 30 HOLDA

AD4 12 29 WR

AD3 13 28 M/IO /S2

AD2 14 27 DT/R /S1


AD1 15 26 DEN /SO
AD0 16 25 ALE

NMI 17 24 INTA

INTR 18 23 TEST

CLK 19 22 READY

GND 20 21 RESET

Brochage du 8086

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 34


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

Chapitre 03 - Le Microprocesseur MC68000 de Motorola


I. Présentation du 68000 de Motorola
Le microprocesseur que nous étudions est le 68000 de Motorola, Bien que désuet aujourd’hui. L’architecture de
ce composant et sa programmation reste une référence dans l’étude des microprocesseurs c’est un
microprocesseur de 32 bits à prix réduit. Le 68000 est un composant électronique de 64 broches, qui possède un
bus de données sur 16 bis et un bus d’adressage sur 23 bits, ce qui détermine une région mémoire maximum de 8
Mega-octets. La fréquence de l’horloge est de 10Mhz, ce qui correspond à un cycle d’horloge de 100 ns. Notons
que la plus petite opération nécessite 4 cycles d’horloge.

Caractéristiques du MC68000 :
• Registres de données et d’adresses de 32 Bits
• 8 Mo de mémoires adressable directement
• 56 Instructions Puissantes
• Entrées/ sorties par instructions mémoires
• 14 modes d’adressages
• 2 MIPS (million d’instructions par seconde) à 20MHz
• Existant dans les fréquences suivantes 8, 10, 12, 16 & 20 MHz (MC68HC000 et MC68EC000)
• Existant dans les fréquences suivantes 10, 16 & 20 MHz (MC68SEC000)
• Existant dans les fréquences suivantes 8, 10, 12 & 16 MHz (MC68HC001)

II. Architecture Interne du 68000


Le 68000 représente du point de vue interne les caractéristiques d’un processeur 32 bits. Il se compose de :

• 8 registres de données, 32 bits : D0 - D7


Ces registres peuvent être manipulés soit comme des bytes (8 bits), soit comme des word(16 bits), soit comme
des long (32 bit).
Types de données
Bits
bytes 8 bits .B
words 16 bits .W
Long words 32 bits .L
31 16 15 8 7 0
D0
Registre de données

D1
D2
D3
D4
D5
D6
D7

8 registres d’adresses2, 32 bits : A0 … A7 et A7 bis


On peut manipuler des adresses longues (long) ou des adresses courtes (word). Notons que les adresses réelles
du 68000 sont codés sur 23 bits, par conséquent les 9 derniers bits d’une adresse longue ne sont pas significatifs !
31 16 15 0
A0
Registre d’Adresses

A1
A2
A3
A4
A5
A6
POINTEUR DE PILE UTILISATEUR A7
POINTEUR DE PILE SYSTEME A’7

Notons également le rôle particulier des deux registres d’adresse A7 et A7 bis, encore appelé USP (user stack
pointer) et SSP (supervisor stack pointer). SP ou A7 contient l’adresse du pointeur de pile relatif au mode
courant, c’est-à-dire utilisateur ou superviseur.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 35


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

• Pointeur de pile utilisateur ( A7) (USP : User Stack Pointer). Le microprocesseur utilise le registre A7,
comme pointeur de pile. Lorsque le bit S=0, le pointeur de pile est utilisé comme pointeur de pile
superviseur.

• Un registre de pile système (superviseur) de 32 bits (A7) (SSP : Supervisor Stack Pointer). Quand le bit
S du registre d’état vaut 1, le pointeur de pile est utilisé comme pointeur de pile superviseur. Le rôle du
pointeur de pile est de contenir l’adresse du début de la zone mémoire dans laquelle les informations
sont rangées. Cette zone de mémoire peut être utilisée par le système comme par l’utilisateur.

• PC ou program counter
Il contient l’adresse de la prochaine instruction à exécuter.
31 23 0

COMPTEUR ORDINAL

• SR ou status register, et CCR ou condition code register


Un registre d’états se compose de deux octets. Le premier octet (poids faible) est l’octet utilisateur : (0–7)
bits, et on l’appelle Registre des Codes Conditions (CCR : Code Conditions Register). Il renseigne l’utilisateur
sur l’état du processeur, seuls les bits 0, 1, 2, 3, 4 sont significatifs. L’autre octet (8 – 15) permet le masquage
des interruption, le fonctionnement en mode Trace et le choix du mode superviseur ou utilisateur. On l’appelle
registre système, seul les bits 8, 9, 10, 13 et 15 sont significatifs.
Registre 16 bits : SR au format word (16 bits) ou CCR au format byte (8 bits)
15 8 7 0
SR CCR

15 8 7 0
T S I2 I1 I0 X N Z V C
Fig. Registre d’Etats

C’est le registre d’état (CCR), qui comporte des bits indicateurs ou flags. Seuls les cinq premiers bits de l’octet
utilisateur sont significatifs pour le programmeur. Ces indicateurs (Flags) renseignent le programmeur sur l’état
du processeur et par conséquent sur le résultat après traitement d’une instruction arithmétique ou logique.

X, N, Z, V, C : indicateurs arithmétiques qui peuvent avoir des sens différents selon les opérations…

Z Zero zéro
N negative bit de poids fort ou de signe
C Carry retenue
X Extend retenue non signée
V pverflows overflow signé

Exemple : pour un move, seul N et Z sont affectés mais pas C et V. Pour une opération arithmétique N, Z, C, V
sont affectés.

C : Carry (retenue) : ce bit est positionné lors d’une opération arithmétique. Les manipulations de données et
opérations logiques n’affectent pas C.
V : Overflow (débordement) : ce bit est l’indicateur de débordement. Il est positionné à 1 si le résultat (en
complément à 2) d’une opération arithmétique déborde.
Lors de manipulation d’instructions de chargement, stockage et opérations logiques, l’indicateur V sera
positionné à 0.
Z : Zero (Zéro: résultat nul) : Z est mis à 1, si le résultat de l’opération exécutée est nul. Si le résultat de
l’opération n’est pas nul, Z est positionné à 0.
N : Négatif : si N est positionné à 1, le résultat de l’opération exécutée est négative.
X : Extension : cet indicateur est sollicité par le processeur lors d’opérations d’addition et soustraction en
décimal.
S : Status (état du processeur) : S = 1 (mode superviseur) autorise le programmeur à accéder à toutes les
ressources logicielles et matérielles. Il peut utiliser toutes les instructions du 68000, adresser les mémoires de
données et de programme et solliciter les pointeur de pile superviseur et utilisateur.
S = 0 : fige le processeur en mode utilisateur.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 36


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

T : mode Trace (ou Pas – à – Pas) : après chaque instruction, le microprocesseur teste de manière interne le bit
T du registre d’états.
Si T = 0, le microprocesseur passe à l’instruction suivante.
Si T = 1, le microprocesseur exécute un programme dont le début est pointé par le vecteur TRACE, de
plus par combinaison du mode TRACE et l’instruction HALT, l’exécution du programme peut se faire pas à pas
(cycle par cycle).
I0, I1, I2 : masque d’interruption : l’utilisateur peut masquer une demande d’interruption jusqu’à un certain
niveau grâce aux 3 bits : I0, I1, I2. La priorité se fait dans le sens ascendant.
Exemple : I0 =0, I1=0 et I2=1 soit I2I1I0  100 qui correspond à la valeur décimale 4.
Une interruption de nivaux inférieur ou égal sera ignorée, par contre une interruption de niveau 5,6 et 7 sera prise
en considération.
Le mode de fonctionnement du processeur 68000 est déterminé par l’état logique du bit S.
Si S = 1 , le processeur fonctionne en mode superviseur.
Si S = 0 , le processeur fonctionne en mode utilisateur.
Les privilèges réservés au mode superviseur sont plus importants que ceux du mode utilisateur.

Remarque : il reste 6 bits non exploités dans le registre d’états.

III. Brochage du MC68000


Le 68000 est présenté sous forme d’un boîtier à 64 broches. Dispose un bus d’adresse de 23 bits, ce qui lui
permet d’adresser directement 8 Mo , et dispose d’un bus de données de 16 bits et d’un bus de contrôle complet.
Les broches sont réparties dans les classes suivants suivantes, suivant leurs fonctions :
a) Lignes d’adresses A1 – A23
b) Lignes des données D0 – D15
c) Contrôle de bus asynchrone : AS , R/ W , UDS , LDS , DTACK
d) Contrôle d’arbitrage du bus : BR , BG , BGACK
e) Entrée de demande d’interruption : IPL0 , IPL1 , IPL2
f) Contrôle du système : BERR , RESET , HALT
g) Contrôle de bus synchrone : E , VPA , VMA
h) Sorties d’états du processeur : FC0, FC1, FC2
i) Alimentation et horloge : VCC, GND, Horloge

Vcc A1-A23 Bus d’Adresses


GND
Horloge D0-D15 Bus de Données

Sortie FC0 AS
d’état FC1 R/W Contrôle
du µp FC2 UDS de bus
LDS Asynchrone
68000 DTACK
Contrôle E
de bus VMA
BR Contrôle
synchrone VPA
BG d’arbitrage
BGACK du bus

Contrôle BERR IPL0 Entrée de


Système RESET IPL1 demande
HALT IPL2 d’interruption

Synoptique des différents types de contrôles et de bus

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 37


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

• A1 – A23 : lignes d’adresses (sortie) : le bus d’adresses est non multiplexé, permet d’adresser 8 Mo de
mémoire .
• D0 – D15 : lignes de données (bidirectionnelles, trois états) : 16 lignes bidirectionnelles non
multiplexées, assurant le transfert des données de 16 ou de 8 bits ( D0-D7). D0-D7 étant utilisé aussi
pour véhiculer le numéro du vecteur d’interruption.
• AS : Adress Strobe (sortie , trois états) : indique la validation de l’adresse, informe la périphérie que
l’adresse présente sur le bus d’adresse est électriquement stable.
• R/ W : Read/ Write (sortie, 3 états) : lecture ou écriture, fixe la voie d’échange sur le bus de données.
• UDS : Upper Data Strobe (sortie) : identifie l’octet haut de données de 16 bits.
• LDS : Lower Data Strobe (sortie) : identifie l’octet bas de données de 16 bits.
UDS LDS RW D15–D8 D7–D0
Haut Haut — Pas données valides Pas données valides
Bas Bas Haut Données Bits 15–8 valides Données Bits 7– 0 valides
Haut Bas Haut Pas données valides Données Bits 7– 0 valides
Bas Haut Haut Données Bits 15–8 valides Pas données valides
Bas Bas Bas Données Bits 15–8 valides Données Bits 7– 0 valides
Haut Bas Bas Données Bits 15–8 valides Données Bits 7– 0 valides
Bas Haut Bas Données Bits 15–8 valides Données Bits 7– 0 valides

Upper et Lower Data Strobe Control du Bus de Données

• DTACK : Data Transfer Acknowledge (sortie) : le processeur est informé qu’il y’a transfert de
données sur le bus.
• BR : Bus Request (entrée) : indique au processeur qu’un dispositif externe réclame le bus.
• BG : Bus Grant (sortie) : fournie l’accord du 68000 pour q’un dispositif externe prenne possession du
bus. Le 68000 prévient son environnement qu’il va céder le bus à la fin du cycle en cours.
• BGACK : Bus Grant Acknowledge : confirme au 68000 que le dispositif externe est en possession du
bus.
• IPL0 , IPL1 , IPL2 : Interrupt Priority Level (entrées) : permettent au processeur de connaître le
niveau de priorité d’une interruption.
Niveau Etat de la ligne de Niveau d’interruption
d’interruption contrôle masquée demandée
demandée IPL2 IPL1 IPL2
0 Haut Haut Haut Pas d’interruption demandée
1 Haut Haut Bas 0–1
2 Haut Bas Haut 2–0
3 Haut Bas Bas 3–0
4 Bas Haut Haut 4–0
5 Bas Haut Bas 5–0
6 Bas Bas Haut 6–0
7 Bas Bas Bas 7–0
Niveaux d’interruptions et valeur du masque

• BERR : Bus Error (entrée) : Bus erreur déclenche la Trap « BUS ERROR » dans le cas d’un anomalie
matérielle. Ce signal est généré par un circuit MMU (Memory Management Unit) . Elle informe le
processeur de l’anomalie lors de l’exécution du cycle en cours.
• RESET : (bidirectionnelle) :
o En entrée, il permet d’initialiser le processeur et son environnement. Le STACK système et le
compteur de programme sont chargés
o En sortie, initialise exclusivement l’environnement du processeur. Le traitement de ce signal
n’affecte pas les registres internes du processeur
• HALT : (bidirectionnelle )
o En entrée, indique l’arrêt du processeur et son initialisation.
o En sortie, indique une anomalie qui provoque l’arrêt du processeur.

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 38


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

• E : Enable (sortie) : permet la synchronisation de l’organe externe avec le processeur. Ce signal est
généré à partir d’un horloge interne au 68000 et représente une référence temps pour synchronisation
des circuits.
• VPA : Valid Peripheral Adress : indique au processeur qu’il est en communication avec un
périphérique synchrone.
• VMA : Valid Memory Adress : en sortie, indique l’adresse sur le bus est valide en fonctionnement
synchrone.
• FC0, FC1, FC2 : Function Code (sortie, 3 états) : l’état de fonctionnement du processeur superviseur
ou utilisateur, et utilisateur, et si l’information est de type donnée ou programme. Ces sorties
permettent de multiplier les capacités d’adressages.
Code de la fonction sortie Temps du cycle
FC2 FC1 FC0
Bas Bas Bas Réservé / Non défini
Bas Bas Haut Donnée utilisateur
Bas Haut Bas Programme utilisateur
Bas Haut Haut Réservé / Non défini
Haut Bas Bas Réservé / Non défini
Haut Bas Haut Donnée superviseur
Haut Haut Bas Programme superviseur
Haut Haut Haut Confirmation d’interruption
Sorties des Codes Fonctions

• VCC : (2 broches) 5 Volts.


• GND : (2broches) 0 Volt.
• Horloge : 8 Mhz .

Vue du
dessous

IV. Programmation du microprocesseur 68000


IV.1 Le mode d’adressage du 68000
L’adressage peut être explicite, implicite, ou le résultat d’un calcul.
Le 68000 utilise (comme le 8086) la notion d’adresse effective (EA).

IV.1.1 Adressage direct de registre


IV.1.1.1 Registre de données
EA = Dn ; Dn est l’un des registres du 68000 (D0 – D7)
La taille peut être :
- Long mot MOV.L (Adresse paire)
- Mot MOV.W (Adresse paire)
- Octet MOV.B (Adresse paire ou impaire)

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 39


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

Exemple :
MOV.W D1, $0020 * D1 : source et $0020 : destination . les 16 bits de poids faible du registre
de donnée D1 sont transférés vers l’emplacement de destination dont l’adresse est $0020.
NOT D1 * Complémente à 1 le contenu du registre D1
EXG D1, D2 * Echange les contenus de D1 et D2.

IV.1.2 Registre d’adresse


EA = An ; An est l’un des registre d’adresses (A0 – A7, A’7) du 68000.

Taille possible : Long mot, mot et octet.

Exemple :
MOV.W A1, $21FE * A1 : source et $21FE : destination (AE). Le mot de poids faible du registre
d’adresse est transféré vers l’emplacement destination dont l’adresse est $21FE.
Le registre d’adresse peut spécifier la destination ; dans ce cas la taille ne peut être que le mot ou le long mot,
mais pas l’octet.
Exemple :
MOV.W $1000, A1 * transfert du contenu de l’emplacement dont l’adresse est $1000
vers l’emplacement destination.

IV.1.3 Adressage indirect


IV.1.3.1 Registre d’adresse
EA = (An) ; l’opérande à transférer vers la destination se trouve à l’adresse indiquée par le contenu du registre
(An)
La taille peut être : L, W, B
Exemple : MOV.W (A3), D2 ; (A3) : adresse indiquée par le registre source A3 et D2 est la destination.
IV.1.3.2 Registre d’adresse avec post – incrémentation
EA = (An) puis An = An + k (k incrément )
Exemple :
MOV.W (A3)+, $1600 * transfert du contenu de l’adresse spécifiée par le registre d’adresse vers
l’emplacement destination dont l’adresse est $1600.
Le registre est incrémenté de 1, 2 ou 4 suivant la taille octet , mot ou long mot.
L’adresse est paire dans le cas d’un mot et long mot et est paire ou impaire dans le cas d’un octet.
IV.1.3.3 Registre d’adresse avec pré – décrémentation
An = An – k puis EA = (An)
Exemple : MOV.W -(A3), $35A9
IV.1.3.4 Adressage indirect avec déplacement
EA = (An) + déplacement (sur 16 bit signé)
Exemple : MOV.L $2000(A3), D3 * D3 est chargé avec l’adresse effective dont la valeur est la somme
du contenu de A3 et le déplacement sur 16 bit.
IV.1.3.5 Adressage avec index et déplacement
EA = An + INDEX + déplacement.
Exemple : MOV.W $08(A1, A3), D1 * transfert du contenu de l’adresse effective
(source) vers le registre D1. $08 est le déplacement.
IV.1.4 Adressage immédiat
Ce mode d’adressage concerne 3 instructions : ADDQ, SUBQ et MOVEQ.
EA = Donnée.
Exemple :
MOVEQ #$2A, D1 * 2A est l’opérande immédiat et D1 est la destination
ADDQ #6, D0
IV.1.5 Adressage relatif au compteur de programme
IV.1.5.1 Mode relatif avec déplacement
EA = (PC) + déplacement (sur 16 bits)

IV.1.5.2 Mode relatif avec index et déplacement (sur 16 bit)


EA = (PC) + INDEX + déplacement (sur 16 bits)

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 40


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

IV.1.6 Adressage mémoire absolu (ou direct)


IV.1.6.1 Absolu court
EA = mot d’adresse
IV.1.6.2 Absolu long
EA = mot long d’adresse
IV.1.7 Adressage implicite (ou inhérent)
Instructions Registres implicites
JMP, BRA EA = PC Compteur programme
TRAPV, DIV EA = SSP Pointeur de pile superviseur
MOVE EA = USP Pointeur de pile utilisateur
RTE, RTR EA = SR Registre d’état

Les instructions du 68000


Instructions Commentaire
Les instructions de référence à la mémoire
LEA Source, An Chargement de source dans An
PEA Source Sauvegarde source dans -(SP)
MOVE Source , destination Copie de source dans destination
MOVEP Dn, destination Chargement de Dn dans destination
MOVEP Destination, Dn Chargement de destination dans Dn
MOVEM Registre, destination Chargement de registre dans destination
MOVEM Destination, registre Chargement de destination dans registre

BEST Numéro Bit, destination Test et mise à 1 du numéro du bit


BCLR Numéro Bit, destination Test et mise à 0 du numéro du bit
BCHG Numéro Bit, destination Test et chargement du numéro de bit
BTST Numéro Bit, destination Test du numéro de bit dans destination
CMPM Source, destination Destination – Source puis positionnement de CCR
CMP Source, destination Destination – Source puis positionnement de CCR
CMPI Source, destination Destination – Source puis positionnement de CCR
CHK Source, Dn Si Dn <0 ou Dn > Source alors TRAP
TAS Destination Si MSB de destination = 0 alors MSB = 1
CLR Destination Mise à zéro de destination
TST Destination Les indicateurs Z et N affectés suivant la valeur de destination
Les instructions spéciales
SWAP Dn Permutation mot MSB avec LMS
EXT Dn Extension de signes
EXG Xn, Xm Echange Xn avec Xm
Les instructions arithmétiques
ADDI Immédiat, destination Destination + opérande  destination
SUBI Immédiat, destination Destination - opérande  destination
ADDQ Immédiat, destination Destination + opérande  destination
SUBQ Immédiat, destination Destination - opérande  destination
ADD Source, destination Destination + source  destination
SUB Source, destination Destination - source  destination
ADDA An, source An + source  An
SUBA An, source An - source  An
ADDX Source, destination Destination + source + X  destination
SUBX Source, destination Destination - source - X  destination
ABCD Source, destination Destination + source + X  destination
NBCD Source, destination Destination - source - X  destination
NEG Destination Complément à deux de destination
NEGX Destination Complément à deux avec X de destination
NOT Destination Complément à 1 de destination
MULU Source, Dn Dn * source  Dn (non signé)
MULS Source, Dn Dn * source  Dn (signé)
DIVU Source, Dn Dn (32 bits) / source (16 bits)
DIVS Source, Dn Dn (32 bits) / source (16 bits)
Les instructions logiques
AND Source, Dn Source AND Dn  Dn
ANDI Immédiat, Dn Immédiat AND Dn  Dn
OR Source, Dn Source AND Dn  Dn
ORI Immédiat, Dn Immédiat AND Dn  Dn
EOR Source, Dn Source AND Dn  Dn
EORI Immédiat, Dn Immédiat AND Dn  Dn

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 41


SYSTEMES MICROPROGRAMMES – Ch-03 –Le Microprocesseur MC68000 de Motorola

Les instructions de décalages et rotations


ASL Compteur Décalage arithmétique à gauche
ASR Compteur Décalage arithmétique à droite
LSL Compteur Décalage logique à gauche
LSR Compteur Décalage logique à droite
ROL Compteur Rotation à gauche
ROR Compteur Rotation à droite
ROXL Compteur Rotation à gauche avec X
ROXR Compteur Rotation à droite avec X
Les instructions de contrôle de programme
Rupture de séquence
NOP Pas d’opération
JMP Adresse Saut inconditionnel à l’adresse
BRA Déplacement Branchement inconditionnel
Sous programme et allocation
JSR Adresse Saut à un sous programme
BSR Déplacement Branchement à un sous programme
RTS Retour de sous programme
RTR Retour avec restitution de CCR
LINK An, DPL Lien avec la pile
UNLK An Déconnexion avec la pile
Traitement conditionnel
Bcc Déplacement Branchement conditionnel
DBcc Dn, déplacement Décrémentation et Débranchement conditionnel
Scc Destination Mise à 1 d’une opérande suivit une condition
Traitement de registre CCR et SR
MOVE Source, CCR Copie source dans CCR
ORI Immédiat , CCR OU inclusif entre CCR et immédiat
ANDI Immédiat , CCR ET logique entre CCR et immédiat
EORI Immédiat , CCR OU exclusif entre CCR et immédiat
MOVE SR, destination Copie de SR dans destination
ORI Immédiat , SR OU inclusif entre SR et immédiat
ANDI Immédiat , SR ET logique entre SR et immédiat
EORI Immédiat , SR OU exclusif entre SR et immédiat
MOVE An, USP Copie de An dans USP
MOVE USP, An Copie de USP dans An
RTE Retour d’exception
RESET Mise à l’état bas de la ligne RESET
STOP Immédiat Chargement de SR avec immédiat puis arrêt
Trappes logicielles
TRAP N° vecteur Exception logicielle
TRAPV Exception si V = 1 (débordement)
Les conditions ‘’cc’’
MNEMONIQUE CONDITION ‘’CC’’ EQUATION LOGIQUE
T Toujours vrai 1
F Jamais vrai 0
HI Supérieur C+Z=0
LS Inférieur ou égal C+Z=1
CC Retenue à zéro C=0
CS Retenue à un C=1
NE Différent Z=0
EQ Egal Z=1
VC Pas dépassement V=0
VS Dépassement V=1
PL Positif ou nul N=0
MI Négatif N=1
GE Supérieur ou égal N XOR V = 0 (XOR OU exclusif)
LT Inférieur N XOR V = 1
GT Supérieur Z + (N XOR V) = 0
LE Inférieur ou égal Z + (N XOR V) = 1

V.0.3 - [email protected] © 10/2004 - Support de Cours «SYSTEMES MICROPROGRAMME» 42

Vous aimerez peut-être aussi