43
Ecole des Mines de l’Industrie et de la Géologie EMIG S S Y Y S S T T E E M M E E S S M M I I C C R R O O - - P P R R O O G G R R A A M M M M E E S S Alkassoum Nabil [email protected] # octobre 2004 #

Cours Systemes Micro-programmes Parti1

Embed Size (px)

DESCRIPTION

Cours d'introduction sur les systèmes à base de microprocesseurs

Citation preview

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

SSYYSSTTEEMMEESS

MMIICCRROO--PPRROOGGRRAAMMMMEESS

Alkassoum Nabil [email protected] # octobre 2004 #

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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.

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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

ei sj

i j

ei sj

i j

n

Tableau de commande

Automatisme à logique câblée

Processus

Actionneurs

Capteurs

Tableau de commande

Automatisme à logique câblée

Processus

Actionneurs

Capteurs

Interface

Interface

Microprocesseur Mémoire (instruction)

Les premiers automatismes étaient réalisés à partir de la logique câblée selon le synoptique suivant : Les systèmes à logique câblée sont conçus à l'aide de circuits intégrés logiques. Certains de ces circuits font appel à :

La logique combinatoire (les sorties sont définies uniquement à partir des variables d'entrée)

la logique séquentielle (les sorties dépendent toujours des entrées mais aussi des états antérieurs).

Le microprocesseur donne naissance au principe de la logique programmée. Le fonctionnement n'est plus défini par un ensemble de 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 :

Critères de choix avantage inconvénient logique câblée rapidité spécificité logique programmée souplesse lenteur

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

Bus du système

I/O

CPU

Registres

Mémoire

Machine universelle

Unité Arithmétique et Logique

Interconnexion interne du CPU

Unité de contrôle

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) ;

� Facilité de mise au point ;

� Consommation et encombrement réduits ;

� Durée courte pour l’étude du système.

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 données ;

� Une unité arithmétique et logique (UAL ou ALU) ;

� Une unité permettant l’échange d’information avec les périphériques : unité d’entrée / sortie (E/S ou I/O) ;

� Une unité de commande (UC).

La plupart des machines actuelles s’appuient sur le modèle Von 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.

Figure 1 : Machine de Von Neumann

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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.

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)

Circ

uits

d’e

ntré

es /

sort

ies

Mém

oire

s

Pér

iphé

rique

s

Bus de commandes

Microprocesseur

UAL

Section des REGISTRES

Section de COMMANDE et de

SYNCHRONISATION

Bus de données

Bus d’adresses

Figure 2 : Microprocesseur et son environnement

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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 calculateu r

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 :

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

• 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

UAL Reg. D’instruction Registre d’état

Unité de COMMANDE et de TEMPORISATION

Décodeur

Bus de commande externe

RESET RD WR IO/R

B C E F H L

PC SP

Bus de donnée externe

Buffer d’adresse

Bus d’adresse externe

Buffer d’adresse

Figure 3 : Architecture interne d'un microprocesseur

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

• 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 :

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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

$FFFE

$FFFF

adresse haute

adresse basse

Exécution

5

Unité de Séquencement

et de commande

4

Décodeur

3

2

Registre d’Instruction

Pointeur d’Instruction

Instruction Instruction

Instruction Instruction

1 Adresse

Contenu

Programme en code machine en mémoire

Prochaine instruction à exécuter

Figure 5 : Contenu du PC (cas du 6809)

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

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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

Retenue

Parité

Demi-retenue

Masque d’interruption

Résultat négatif

Résultat nul

Débordement

P H I S Z O C

Figure 7 : Exemple de registre d'état

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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.

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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)

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

256

Horloge

Déc

odeu

r &

S

éque

nceu

r

Reg. D’instruction

8

8 256

sorties

256 sélections

pour les différents circuits

de l’UAL

(verrouillage)

1er instruction 2ème instruction

Figure 8 : Unité de commande

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

VI.2 Architecture externe ( les signaux d’entrées s orties 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.

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.

Mic

ropr

oces

seur

Demande d’interruptions

Autorisation d’interruptions

Demande DMA

Autorisation DMA

RESET

CLK

Bus de données

Bus d’adresses

Lecture mémoire

Ecriture mémoire

Lecture périphérique

Ecriture périphérique

Figure 9 : Signaux d'entrées / sorties

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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 :

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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.

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

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

Horloge

CPU

RC Horloge

CPU

Quartz

CPU Oscillateur Horloge

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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.

SYSTEMES MICROPROGRAMMES – Ch-01 – Introduction aux microprocesseurs

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

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.

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.

Mic

ropr

oces

seur

Bus d’adresses

Bus de données

Bus de commandes

RAM ROM

I/O

Périphériques

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

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

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

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.

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

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

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

AX Accumulateur

BH BL BX

Base

CH CL CX

Compteur

DH DL DX

Donnée

Reg

istr

es

géné

raux

SI Index Source

DI Index Destination

BP Pointeur de Base

SP Pointeur de Pile

Reg

istr

es

adre

ssag

e

IP Pointeur d’instructions

FLAGS Registre d’Etats

CS Segment de Code

DS Segment de Données

ES Segment « Extra »

SS Segment de Pile Reg

istr

es d

e se

gmen

tatio

n

Fig. 2 : Les Registres Internes du 8086 Les 4 autres registres sont des registres d’adressa ges à 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.

AH AL BH BL CH CL DH DL

SI DI BP SP

Indicateurs ALU

UC

BUS INTERNE (16 Bits)

CS DS SS ES

IP

16

+ x

Interface avec Bus externe

File d’attente

BIU

EU

Fig. 1 : Organisation interne du 8086

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

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

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

O D I T S Z A P C Fig. 3 : Registre d’Etat du 8086

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

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

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 Pointe ur 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émenta ire » : 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

/SO

/S1 /S2

AD15 A16 A17 A18 A19 BHE

MXNM/ RD

HOLD HOLDA

WR M/IO DT/R

DEN ALE

INTA TEST

READY RESET

VCC

/S3 /S4 /S5 /S6 /S7

GND

AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND

1

23 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

40

8086

Fig. 4 : Brochage du 8086

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

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

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.

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

- Si MXNM/ =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 , RDT/ , IOM/ , WR , HOLD , HLDA .

- Si MXNM/ =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.

S2 ,S1 ,S0 : 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.

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

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

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

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.

RDT/ : (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 Si RDT/ = 1 le transfert se fait du microprocesseur vers l’extérieur.

o Si RDT/ = 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.

IOM/ : 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 IOM/ RDT/ DEN ALE INTA Maximum GT0/RQ GT1/RQ 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 IOM/ , 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 ( MXNM/ = 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 S2 ,S1 ,S0 (Tab. 1).

L’opération de transfert nécessite en général quatre (4) cycles.

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

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

T1 T2 T3 T4 T1 Du prochain cycle CLK

M/IO

ALE

AD15-AD0

WR

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

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 :

• IOM/ : pour sélectionner la mémoire d’E/S.

• RDT/ : 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 , RDT/ 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 RDT/ 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.

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

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

Vcc

Pour le Contrôle du bus

STB

OE

8282

8286

STB

STB

8086

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 3FC IP 255

Vecteur 255

…………………. …………………. ……………… …………………. …………………. ………………

12 CS 4 10 IP 4

Vecteur 4 (Overflow)

0E CS 3 0C IP 3

Vecteur 3 (Logicielle)

0A CS 2 08 IP 2

Vecteur 2 (NMI)

06 CS 1 04 IP 1

Vecteur 1 (Pas à Pas)

02 CS 0 00 IP 0

Vecteur 0 (ERREUR DIV / 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

MN/MX

M/IO INTA

RD WR

DT/R

DEN ALE

BHE AD0-AD15

A16-A19

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

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

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 00000 H et l’adresse FFFFF H.

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.

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

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

Adresse Effective Déplacement dans le segment

15 0

Registre SEGMENT 0000 15 0

Adresse envoyée sur le Bus Adresse Physique

15 0 +

Calcul de l’adresse physique à partir de l’adresse logique : Adresse physique = Adresse du Segment + Déplacement 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 ; AXBX ADD AX, BX ; AXAX + BX MOV AX, 7 ; AX7

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

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

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 ; BX6 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

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

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

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] base sur DS MOV AX, [BX] Indirect base MOV AX, [BP] base sur SS MOV AX, [SI] Indexé par SI sur DS MOV AX, [SI] Indirect index 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] MOV AX, [BX + DI]

Indirect base + index

MOV AX, [BX][DI] 5 MOV AX, [BX + SI + 5]

Indirect base + index + déplacement

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

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

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

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

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

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

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

SHR destination, (1 ou CL) : Décalage logique à droite non signé de la donnée destination de n bits avec retenue

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

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

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

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

0 CF

0 CF

CF

CF

CF

CF

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

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

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

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 Jump if Zero JE

ZF = 1 Jump if Equal

JNZ Jump if Not Zero JNE

ZF = 0 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 Jump if Above JNBE

A > B CF = 0 et ZF = 0 Jump if Not Below or Equal

JAE Jump if Above or Equal JNB Jump if Not Below JNC

A >= B CF = 0

Jump if Not Carry JBE Jump if Below or Equal JNA

A <= B (CF = 1 et ZF = 1) ou (CF <> ZF)

Jump if Not Above

JB Jump if Below JC Jump if Carry JNAE

A < B CF = 1

Jump if Not Above or Equal JE Jump if Equal JZ

A = B ZF = 1 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 Jump if Greater JNLE

A > B ZF = 0 et OF = SF Jump if Not Lower or Equal

JGE Jump if Greater or Equal JNL

A >= B SF = OF Jump if Not Lower

JNG Jump if Not Greater JLE

A <= B (ZF = 1) ou (SF <> OF)

Jump if Lower or Equal

JNGE Jump if Not Greater or Equal JL

A < B SF <> OF Jump if Lower

JE Jump if Equal JZ

A = B ZF = 1 Jump if Zero

JNE Jump if Not Equal JNZ

A <> B ZF = 0 Jump if Not Zero

CF

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

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

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)

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

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

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

/SO

/S1

/S2

AD15

A16

A17

A18

A19

BHE

MXNM/

RD

HOLD

HOLDA

WR

M/IO

DT/R

DEN

ALE

INTA

TEST

READY

RESET

VCC

/S3

/S4

/S5

/S6

/S7

GND

AD14

AD13

AD12

AD11

AD10

AD9

AD8

AD7

AD6

AD5

AD4

AD3

AD2

AD1

AD0

NMI

INTR

CLK

GND

1

2 3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

39

38

37

36

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

40

8086

Brochage du 8086

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

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

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 D1 D2 D3 D4 D5 D6 D7

Reg

istre d

e donné

es

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 A1 A2 A3 A4 A5 A6 POINTEUR DE PILE UTILISATEUR A7 POINTEUR DE PILE SYSTEME A’7

Reg

istre d

’Ad

resse

s

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.

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

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

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

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

31 23 0

COMPTEUR ORDINAL

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

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

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, WR/ , 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

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

Vcc GND

Horloge

E VMA VPA

Contrôle de bus synchrone

FC0 FC1 FC2

Sortie d’état du µp

BERR RESET HALT

Contrôle Système

AS R/W UDS LDS DTACK

Contrôle de bus Asynchrone

BR BG BGACK

Contrôle d’arbitrage du bus

IPL0 IPL1 IPL2

Entrée de demande d’interruption

68000

A1-A23 Bus d’Adresses

D0-D15 Bus de Données

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

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

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

• WR/ : 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.

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.

Etat de la ligne de contrôle

Niveau d’interruption masquée demandée

Niveau d’interruption

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.

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

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

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

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

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)

Vue du dessous

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

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

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)

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

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

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

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

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

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