0% ont trouvé ce document utile (0 vote)
238 vues98 pages

Cours sur le Microprocesseur MC68000

Transféré par

Ay Oub45
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
238 vues98 pages

Cours sur le Microprocesseur MC68000

Transféré par

Ay Oub45
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Polycopié de Cours :

Le Microprocesseur 16 bits "MC68000"

Lakhdari Fethi

Département d’Electronique
Université des Sciences et de la Technologie d’Oran
(USTO)
ii
Table des matières

1 Introduction et Rappel 1
1.1 La représentation numérique . . . . . . . . . . . . . . . . . . . . 1
1.2 La représentation des entiers . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Les entiers positifs . . . . . . . . . . . . . . . . . . . . . . 2

1.2.2 Les entiers signés . . . . . . . . . . . . . . . . . . . . . . . 3

1.3 La représentation des réels . . . . . . . . . . . . . . . . . . . . . . 5


1.3.1 La représentation virgule …xe . . . . . . . . . . . . . . . . 5
1.3.2 La représentation virgule ‡ottante . . . . . . . . . . . . . 5
1.4 Le code ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5 Les circuits mémoire . . . . . . . . . . . . . . . . . . . . . . . . . 6


1.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Description du microprocesseur MC68000 11

2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Système à microprocesseur de base . . . . . . . . . . . . . . . . . 11


2.3 Description du MC68000 . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.1 Architecture interne . . . . . . . . . . . . . . . . . . . . . 14
2.3.2 Architecture externe . . . . . . . . . . . . . . . . . . . . . 16
2.4 Les cycles de lecture/écriture de base . . . . . . . . . . . . . . . . 22
2.4.1 Le transfert asynchrone . . . . . . . . . . . . . . . . . . . 22
2.4.2 Le transfert synchrone . . . . . . . . . . . . . . . . . . . . 24

3 L’assembleur du MC68000 27

3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Les modes d’adressage . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.1 L’adressage registre . . . . . . . . . . . . . . . . . . . . . 29
3.2.2 L’adressage absolu . . . . . . . . . . . . . . . . . . . . . . 29

3.2.3 L’adressage immédiat . . . . . . . . . . . . . . . . . . . . 29

iii
iv TABLE DES MATIÈRES

3.2.4 L’adressage indirect simple . . . . . . . . . . . . . . . . . 30


3.2.5 L’adressage indirect post-incrémenté . . . . . . . . . . . . 31
3.2.6 L’adressage indirect pré-décrémenté . . . . . . . . . . . . 31
3.2.7 L’adressage indirect avec déplacement . . . . . . . . . . . 32
3.2.8 L’adressage relatif PC . . . . . . . . . . . . . . . . . . . . 32

3.3 Le jeu d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3.1 Les instructions de transfert . . . . . . . . . . . . . . . . . 33


3.3.2 Les instructions arithmétiques . . . . . . . . . . . . . . . 34
3.3.3 Les instructions logiques . . . . . . . . . . . . . . . . . . . 38

3.3.4 Les instructions de comparaison . . . . . . . . . . . . . . 39

3.3.5 Les instructions de branchement . . . . . . . . . . . . . 40

3.3.6 Les instructions de décalage . . . . . . . . . . . . . . . . . 43


3.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4 La pile et les exceptions 49


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 La notion de pile . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.2.1 L’appel et le retour d’un sous programme . . . . . . . . . 49


4.3 La notion d’interruption . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.1 Les interruptions du MC68000 . . . . . . . . . . . . . . . 55
4.3.2 La table des vecteurs d’exceptions . . . . . . . . . . . . . 57
4.3.3 Le traitement du RESET . . . . . . . . . . . . . . . . . . 59
4.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5 Le décodage d’adresses 61

5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2 Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.3 Décodage avec un circuit décodeur . . . . . . . . . . . . . . . . . 63
5.4 La génération du signal DT ACK /(V P A-V M A) . . . . . . . . . 67

6 Les Interfaces d’entrée-sortie numériques 69

6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2 Le DUART 68681 . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.3 L’interface parallel-Timer PI/T 68230 . . . . . . . . . . . . . . . 70
6.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
TABLE DES MATIÈRES v

7 Bibliographie 75

A Annexe 79

A.1 Code ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79


A.2 Boitiers du MC68000 . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.3 Jeu d’instructions du MC68000 . . . . . . . . . . . . . . . . . . . 81
A.4 DUART 68681 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

A.5 PI/T 68230 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88


vi TABLE DES MATIÈRES
Introduction Générale

Ce document est destiné aux étudiants de la graduation du département


d’électronique pour être un support de cours du module de microinformatique
consacré aux systèmes à microprocesseur 16 bits. Le document traite d’une
manière plus ou moins détaillée le cas du MC68000 de Motorola.
Après un chapitre introductif, consacré aux notions de base relative à la
représentation numérique ainsi que la terminologie de base, le document est
reparti en cinq chapitres distincts :

Le premier chapitre donne une description du coté hardware, allant de la


description du brochage du microprocesseur, au principales caractéristiques et
fonctionnalités, ainsi que le la présentation des cycles relatifs aux opérations de
lecture et d’écriture de base.

Dans le second chapitre une description assez détaillée du software du mi-


croprocesseur est donnée, où une grande partie du jeu d’instructions est décrite
avec un ensemble d’exemples et d’exercices.

Les interruptions et les techniques de décodage d’adresse dans les systèmes à


base du MC68000 sont décrites respectivement dans les chapitres trois et quatre.

Des exemples de circuits périphériques d’entrées/sorties numériques sont


donnés dans un dernier chapitre pour servir en particulier comme exemple d’im-
plémentation de di¤érents types d’applications.
Le document est doté d’annexes regroupant des résumés d’informations rela-
tives en particulier au jeu d’instructions du microprocesseur, et à certains détails
techniques des circuits intégrés utilisés et décrits dans ce documents.

En…n je tiens à remercier vivement mes collègues et chers enseignants, Mon-


sieur Bouchiba Bahari, et Monsieur Sahari Mohamed qui ont accepté de faire
une première lecture et correction de ce document, Qu’ils trouvent ici l’expres-
sion de ma profonde gratitude.

vii
viii TABLE DES MATIÈRES
Chapitre 1

Introduction et Rappel

Ce chapitre introduit en bref les notions de base relatives à la représentation


numérique, ainsi qu’une certaine terminologie couramment utilisées en micro-
informatique.
L’objectif est de faciliter l’assimilation et l’utilisation des chapitres suivants
de ce document.

1.1 La représentation numérique


Dans un système à base de microprocesseur ou microcontrôleur tel que les
cartes d’acquisition et/ou de commande, le traitement d’un signal donné néces-
site impérativement sa quanti…cation numérique.
En considérant une représentation pondérée à base ’b’, un nombre N peut
être écrit sous la forme :

n
X1
N= ai bi = a0 + a1 b + ::: + an 1b
n 1
N [an 1 ; :::; a0 ] (1.1)
;
i=0

où les paramètres de la représentation véri…ent la condition .

Remarque
En microinformatique la base 2 est utilisée, car elle permet l’utilisation de
deux nombres {0,1}, qui sont pratiquement implémentés via deux niveaux élec-
triques ( exemple 0 et 5v en technologie TTL).
Pour une compression importante et une meilleure lisibilité de l’information
numérique, La base 16 est très souvent utilisée.
Dans ce cas l’ensemble de la représentation est : {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}.

1
2 CHAPITRE 1. INTRODUCTION ET RAPPEL

1.2 La représentation des entiers


1.2.1 Les entiers positifs

Une division euclidienne successive par 2 permet la conversion d’un entier


positif N de la base 10 à la base 2.
Une représentation sur n bits (base 2) couvre un interval de nombre N donné
par :
0 N bn 1

Exemple

sur 8 bits :
0 N 28 1 = (255)10 = (F F )16

(a7 ; :::; a0 )8 (h1 h0 )16 (N )10


00000000 00 00
00000001 01 01
00000010 02 02
00000011 03 03
... ... ...
10000000 80 128
10000001 81 129
... ... ...
11111111 FF 255

sur 16 bits :
0 N 216 1 = (65535)10 = (F F F F )16

Remarque

Dans la représentation numérique ,généralement la terminologie anglo-saxonne


est la plus couramment utilisée :
- Bit : est la compression de l’expression "binary digit".
- MSB (Most Signi…cant Bit) : est le bit de poids fort d’une séquence binaire
donnée
- LSB(Least Signi…cant Bit) : est le bit de poids faible d’une séquence
binaire donnée
- Byte (ou octet en français ) représente 8 bits.
- Word (ou mot en français) représente16 bits.
1.2. LA REPRÉSENTATION DES ENTIERS 3

1.2.2 Les entiers signés

La représentation module-signe
il s’agit de la méthode la plus simple pour la représentation des entiers signés.
Elle consiste à utiliser le MSB d’un nombre donné comme signe, et le reste des
bits comme module.

Un MSB= 1 implique que le nombre est négatif,


sinon (MSB= 0) le nombre est positif
sur 8 bits :
(11111111)2 N (01111111)2
(F F )16 N (7F )16
( 127)10 N (+127)10

(a7 ; :::; a0 )8 (h1 h0 )16 (N )10


00000000 00 00
00000001 01 01
00000010 02 02
00000011 03 03
... ... ...
01111111 7F 127
10000000 80 00
10000001 81 -01
10000010 82 -02
... ... ...
11111111 FF -127

L’inconvénient majeur du codage ’module-signe’est le fait que le zéro pos-


sède deux représentations di¤érentes (un zéro positif est un autre négatif), chose
qui complique l’utilisation de ce codage, en particulier son implémentation ma-
térielle.

La représentation complément à 2
Dans ce cas un entier N est représenté avec une pondération base 2, où le
MSB possède une contribution négative :
4 CHAPITRE 1. INTRODUCTION ET RAPPEL

n
X2
n 1 n 2 n 1
N= an 1b + an 2b + ::: + a1 b + a0 = an 1b + ai bi (1.2)
i=0

Si dans ce cas le zéro possède une seule représentation, le nombre le plus


négatif n’a pas de complément.
sur 8 bits :
(10000000)2 N (01111111)2
(80)16 N (7F )16
( 128)10 N (+127)10

(a7 ; :::; a0 )8 (h1 h0 )16 (N )10


00000000 00 00
00000001 01 01
00000010 02 02
00000011 03 03
... ... ...
01111111 7F 127
10000000 80 -128
10000001 81 -127
10000010 82 -126
... ... ...
11111111 FF -01

sur 16 bits
([Link])2 N ([Link])2
(8000)16 N (7F F F )16
( 32768)10 N (+32767)10

Remarque
- De même que la représentation module-signe, le MSB indique le signe :
si le MSB=1 l’entier est négatif,
sinon (MSB=0) l’entier est positif
- L’avantage majeur de ce codage (comparé au module-signe), est le fait que
matériellement l’implémentation d’un circuit soustracteur peut être réduite a
l’exploitation du circuit additionneur.
car :
N M = N + ( M)
= N + Mc2 = N + (1 + Mc1 )

Mc2 et Mc1 sont respéctivement le complément à 2 et à 1 de M.
1.3. LA REPRÉSENTATION DES RÉELS 5

1.3 La représentation des réels


Dans le cas des nombres réels deux représentations sont utilisées avec dif-
férentes variantes liées en particulier à la taille des intervalles couverts et à la
précision désirée ou obtenue..

1.3.1 La représentation virgule …xe


Dans ce cas le nombre réel est représenté avec deux entités ; où la première
indique sa partie entière, et la seconde sa partie fractionnelle.

n
X2
n 1
La partie entière peut être donnée en complément à 2 sur n bits ( an 1b + ai bi ),et
i=0

m
X
la partie fractionnelle sur m bits ( ai b i )
i=1

1.3.2 La représentation virgule ‡ottante


Dans ce cas un nombre réel NR s’écrit sous la forme :

NR = M:bE (1.3)

Où :
M est la mantisse sur n bits
b : la base
E : l’exposant
A…n d’assurer une portabilité des produits, une normalisation du codage à
été nécessaire, et une première norme (IEEE754) est proposée depuis 1985, où
quatre formats sont proposés pour la base 2.
D’autres révisions de la norme originale sont proposées, dont la dernière est
celle de 2008.
La version d’origine de la norme IEEE 754, datant de 1985, dé…nit quatre
formats pour représenter les nombres à virgule ‡ottante en base 2 :
6 CHAPITRE 1. INTRODUCTION ET RAPPEL

Nom Taille Signe Exposant Mantisse Observation

Simple 32 bits 1bit 8 bits 24 bits -


précision (-126 à
127)
Double 64 bits 1bit 11 bits 53 bits -
précision (-1022
à+1023)
Double 79 bits 1bit 15 bits 64 bits mis en
précision (-16382 à œuvre avec
étendue 16383) 80 bits

1.4 Le code ASCII

Dans le cas général, une séquence numérique n’est pas toujours un nombre,
et peut être une information non-numérique.
Le code ASCII (American Standard Code for Information Interchange) pro-
posé depuis le début des années soixante est pratiquement la norme de codage
de l’information non-numérique.
Ce code a été étendu à plusieurs reprises (principalement par IBM en 1981)
pour comprendre outre les lettres, le symbole, les di¤érentes commandes.
En annexe A.1, est donnée la table du code ASCII 8 bits contenant en tout
256 caractères.
"A" = (41)16 = (65)10 ; "B" = (42)16 = (66)10
"a" = (61)16 = (97)10 ; "b" = (62)16 = (98)10
"1" = (31)16 = (49)10 ; "2" = (32)16 = (50)10
"stx" = (02)16 = (02)10 (start of text)
"etx" = (03)16 = (03)10 (end of text)
"ack" = (06)16 = (02)10 (Acknowledge accuse de reception )

1.5 Les circuits mémoire


Dans les systèmes microinformatiques, l’information numérique est stockée
sous forme binaire dans des circuits mémoire, de di¤érents types et de techno-
logies de conception.
L’objectif de cette partie est d’introduire la terminologie de base relative à
ces circuits, avec une description succincte des pins d’un boitier mémoire de
base.
Une première classi…cation des mémoires peut être faite relativement à la
volatilité de l’information stockée, et au processus de reprogrammation :
1.5. LES CIRCUITS MÉMOIRE 7

- Les mémoires RAM (Random Access Memory) : sont des mémoires à lec-
ture/écriture appelées improprement ainsi.
Il s’agit d’un type volatile de mémoire, dont le contenu est perdu dès qu’elles
ne sont plus alimentées
- Les mémoires ROM : sont des mémoires à lecture seule (Read Only
Memory), dont le contenu est …xé lors de la fabrication en usine. Son contenu
est non volatile, et reste même sans alimentation.
- Les mémoires EPROM est un type de mémoire intermédiaire entre les
deux types précédents, vu qu’il permet une non-volatilité des données, et une
possibilité d’e¤acer le contenu par une exposition du circuit aux rayons ultra-
violets.
- Les mémoires EEPROM : sont des EPROM reprogrammables et e¤a-
çables électriquement.
- Les mémoires FLASH : sont une classe d’EEPROM, dont le processus
de reprogrammation est très rapide.

Fig1.1 : Boitier de base d 0 un circuit RAM

Dans sa forme standard un boitier mémoire présente les pins suivantes :


- les pins d’alimentation VCC (où Vdd) et GND
- une pin de sélection du boitier CS (chip select) où EN (enable)
-des pins …xant le sens du transfert R/W (Read/W rite)
- Le bus de donnée : qui regroupe les lignes véhiculant la donnée (générale-
ment 8 bits)
- Le bus d’adresse : qui …xe l’adresse de la donnée concernée par le transfert
en cours.
8 CHAPITRE 1. INTRODUCTION ET RAPPEL

La taille du bus d’adresse …xe en …n de compte la taille du circuit mémoire.


Par exemple :
- pour 12 lignes, la taille de la mémoire=212 =4.210 = 4K octets
- pour 23 lignes, la taille de la mémoire= 223 =8.220 = 8M octets

Remarque
1K=210 =1024
1M =220 =1048576

1.6 Exercices
Exercice 1 :
1) Convertir en base 2 puis en base 16 les nombres décimaux suivants :
1789 , 2048 , 0.375 , 17.150
2) Convertir en base 10 les nombres binaires suivants :
1011 , 10110 , 101.1

Exercice 2 :
4
1) Convertir le nombre en binaire avec une précision de 10
2) Comment faut il arrondir le résultat pour obtenir :
a) l’arrondi par défaut
b) l’arrondi par excès

Exercice 3 :
Soit un nombre décimal ayant D chi¤res à droite de la virgule .
Combien faut il de chi¤res dans la partie fractionnaire pour écrire ce nombre
avec la même précision en base 2,en base 8,et en base 16.

Exercice 4 :
Convertir les nombres :
19 ,-52 , +127 , -127 , -128
1) Suivant la représentation module et signe sur un format de 8 bits
(signe compris).
2) Suivant la représentation complément à 2 sur un format de 8 bits
(signe compris).

Exercice 5 :
E¤ectuer les opérations suivantes , sachant que les nombres sont représentés
en complément à 2 (format 8 bits) :
A+B, A=10110110, B=01001010
A+B, A=10000010, B=11111111
1.6. EXERCICES 9

A-B, A=10110110, B=01001010


A+A, A=11111111
A+A, A=01000000

Exercice 6 :
On considère la représentation suivante des nombres en virgule ‡ottante :
N = S . 0,M.2E
Où S est le signe du nombre , M est sa mantisse exprimée à l’aide de 15 bits
et E l’exposant .
Si l’exposant comporte 8 bits en représentation module et signe ,
1) Quel est le nombre le plus grand représentable (en représentation norma-
lisée) ?
2) Quel est le nombre positif minimum représentable (en représentation nor-
malisée) ?
3) Quel est le plus petit écart entre deux nombres di¤érents ?
4) Exprimer dans ce format le nombre (arrondi au plus proche).
5) Exprimer dans ce format le nombre 1515.
10 CHAPITRE 1. INTRODUCTION ET RAPPEL
Chapitre 2

Description du
microprocesseur MC68000

2.1 Introduction

Un microprocesseur peut être dé…ni simplement comme étant un processeur


intégré dans une puce électronique, où on retrouve les éléments de la logique
combinatoire et séquentielle (portes, bascules, registres,...).
L’objectif de cette intégration qui dépasse actuellement facilement les cen-
taines de millions de transistors, est de permettre la réalisation des di¤érentes
opérations arithmétiques et logiques, ainsi que les opérations de base de transfert
et de branchement.
Depuis le premier microprocesseur d’Intel réalisé en 1971, la …nalité était
de remplacer la logique câblée par un système permettant l’exécution d’un en-
semble d’instructions stockées en mémoire, chose qui facilite l’implémentation
d’algorithmes plus ou moins complexes.
Apres une brève introduction sur les systèmes à microprocesseurs de base, ce
chapitre étalera sur une description relativement détaillée d’un microprocesseur
16 bits (le MC68000 de Motorola), qui présente des modes de fonctionnement,
et des fonctionnalités de base qu’on retrouve pratiquement dans la majorité des
microprocesseurs. La première partie de la description concernera le hardware
du circuit, suivi d’une seconde sur le software.

2.2 Système à microprocesseur de base


Un système à microprocesseur de base comprend outre l’unité de traitement
qui est le microprocesseur un ensemble de circuits et d’étages dont certains
sont impératifs pour son fonctionnement tels que le circuit mémoire, et d’autres

11
12 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000

dépendant des exigences de l’application elle même telles que les circuits d’in-
terfaces.
Un microprocesseur est un circuit intégré numérique pouvant exécuter une
suite d’instructions (un programme) stockées en mémoire. Ces instructions comptent
parmi d’autres des opérations de transfert, des instructions arithmétiques/logiques,
et des instructions de branchement.

Une instruction peut être un simple cycle d’écriture ou lecture en mémoire,


ou une opération plus complexe constituée de plusieurs cycles élémentaires. Dans
tous les cas de …gure, un signal d’horloge est nécessaire pour cadencer l’accom-
plissement de l’opération.

Fig2.1 : Schém a blo c de base d’un systèm e à m icropro cesseur

Par conséquent, un système à microprocesseur de base comprend pratique-


ment les blocs suivants :

Une mémoire morte :


Dont le rôle est généralement le stockage du programme (ainsi que les don-
nées) relatives à la mise en fonctionnement de l’ensemble du système.

Une mémoire vive :


Destinée au stockage des données (volatiles) issues de l’exécution du pro-
gramme du système au cours de son exploitation.

Circuit d’horloge :
Chaque instruction est exécutée par le microprocesseur dans un nombre pré-
cis de cycles d’horloge. Ce signal d’horloge est généré par un étage oscillateur,
2.3. DESCRIPTION DU MC68000 13

dont la fréquence est dé…nie par le concepteur du système, tout en respectant


les limites imposées par le constructeur du circuit intégré.

Circuit de reset (ou de réinitialisation) :

il s’agit généralement d’un étage simple permettant le redémarrage du sys-


tème.
Pour un microprocesseur donné une telle opération peut être une simple mise
à zéro d’une pin particulière du circuit intégré, et la principale conséquence sera
le chargement du compteur programme avec une adresse donnée.

Circuits d’interface :

Il s’agit d’un ensemble de circuits spécialisés destinés en particulier à assurer


des taches pouvant conduire à une exploitation optimale du [Link]
interfaces peuvent être regroupées en deux grandes classes :
- Les interfaces numériques : telles que les circuits destinés à la gestion
de la communication série, ou parallèle.
- Les interfaces analogiques : qui sont principalement les convertisseurs
numérique- analogique (DAC), et analogique-numérique (ADC).

2.3 Description du MC68000


Le MC68000 de Motorola est l’un des premiers microprocesseurs 16 bits, il
est même considéré comme un faux 32 bits vu que son bus interne permet des
transferts sur 32 bits.
Parmi caractéristiques que présente ce microprocesseur, et qui seront dé-
taillées par la suite :
- Une fréquence d’horloge qui allant à 16 Mhz
- Un espace mémoire direct de 16 M octets
- Deux modes de fonctionnement (Superviseur, Utilisateur)
- Sept (7) niveaux de priorité d’interruptions, qui peuvent être logicielles,
outre les interruptions matérielles.
- Une possibilité de fonctionnement en mode multi-processing
- Un jeu d’instructions plus ou moins complet sur trois tailles mémoire dif-
férentes (8, 16, et 32 bits)
Le circuit a été commercialisé sous des formes de boitiers di¤érentes telles
14 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000

que DIP (DIL), ou PLCC (voire annexe A.2)

Fig[Link] Le MC68000 (boitierDIL64)

2.3.1 Architecture interne


L’architecture interne du MC68000, est pratiquement une architecture 32
bits, ou même les registres d’adresse sont des 32 bits malgré que le bus d’adresse
externe soit un 24 bits.

Fig2.3 : Les registres internes,et regroup em ent fonctionnel des pins du M C 68000
2.3. DESCRIPTION DU MC68000 15

Registres de donnée
Le MC68000 dispose de 8 registres de donnée (D0,..., D7) utilisés comme
accumulateurs de données de 8, 16, ou 32 bits.
La taille de l’opérande (Byte, Word, Long word) est spéci…ée par l’ajout
d’un su¢ xe (B, W, L) à la mnémonique de l’instruction

Registres d’adresse
Le processeur dispose de 8 registres d’adresse, dont 7 registres (A0,.., A6)
sont des registres à usage général, et un registre A7 utilisé comme pointeur de
pile

Compteur programme PC
Ce registre appelé aussi compteur ordinal est aussi un registre 32 bits, dont
le rôle est de contenir l’adresse de l’instruction en cours d’exécution, est qui est
automatiquement mis à jour après chaque instruction.

Registres d’état (SR)


Le rôle de ce registre est d’indiquer l’état du processeur au cours de son
fonctionnement. Dans le cas du MC68000, il est implémenté en deux octets
distincts :

Fig2.4 : Le registre d’état (SR) du M C 68000

- L’octet système
Dont les di¤érents indicateurs (‡ags) sont plutôt liés aux événements sys-
tèmes tels que :
- le bit S :
Qui dé…nit le mode de fonctionnement :
Si S=1 : le microprocesseur est en mode superviseur, où tout l’espace mé-
moire est pratiquement accessible, ainsi que tout l’ensemble du jeu d’instruction,
y compris celle dites de privilège.
16 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000

Si S=0 le mode est UTILISATEUR, où lES instructionS de privilège (par


exemple l’instruction reset) ne sont plus possibles, avec une possibilité de limiter
l’espace mémoire accessible
- les bits I0 -I1 -I2 :
Qui dé…nissent le masque d’interruption, où toute demande d’interruption
d’un niveau inferieur à la valeur du masque sera ignorée.

I0 I1 I2 Niveau dinterruption
1 1 1 7 (le plus élevé)
1 1 0 6
. . . .
. . . .
0 0 1 1 (le plus bas)
0 0 0 pas d’interruption
Tab2.1 :Le m asque d’interruption du registre d’etat

- le bit T :
Si le ‡ag du mode Trace est activé (T=1),
le microprocesseur est dérouté après chaque instruction vers un programme
d’interruption, qui peut par exemple être la visualisation des contenus des re-
gistres internes.
Un tel mode permet l’implémentation facile d’une exécution pas à pas des
programmes, chose très utile dans les systèmes de développement.

- L’octet utilisateur
Cette partie du registre d’état nommée aussi CCR (condition code register)
contient les cinq (5) ‡ags indicateurs des conséquences de chaque instruction
exécutée par le microprocesseur
- le bit C (carry) :
Mis à 1, si une retenu est générée après une instruction
- le bit Z (zero) :
Mis à 1, s i le résultat est nul.
- le bit N (negative) :
Mis à 1, si le résultat est négatif
- le bit V (over‡ow) :
Mis à 1, si un dépassement de taille se produit.
- le bit X (extend) :
Ce ‡ag est le même que le bit de retenue C, mais n’est activé que dans le
cas des opérations arithmétiques.

2.3.2 Architecture externe


Le bus de donnée et d’adresse
Le MC 68000 e¤ectue les échanges de donnée avec les circuits et les périphé-
riques d’interfaces sur un bus de donnée de 16 bits (D0 -D15 )
2.3. DESCRIPTION DU MC68000 17

IL possède aussi 24 lignes d’adresse, dont 23 lignes sont explicites (A1 -A23 ),
et une ligne A0 implicite remplacée par deux lignes : U DS, et LDS.
Les deux lignes U DS (upper data strobe), et LDS (lower data strobe) in-
diquent sur quelle octet du bus de donnée est deposé la donnée concernée par
le transfert en cours :
- si U DS = 0, et ,LDS = 1 le transfert s’e¤ectue sur les 8 bits de poids fort
(D8-D15)
- si U DS = 1, et , LDS = 0 le transfert s’e¤ectue sur les 8 bits de poids
faible (D0-D7)
- si U DS = 0, et , LDS = 0 le transfert s’e¤ectue sur les 16 bits (D0-D15)
Dans le modèle (Big Indian) adopté par Motorola l’octet de poids fort est
placé avant l’octet de poids faible.

Exemple
- MOVE.B #$44, $4000
implique que la donnée (44)16 sera déposée sur (D8-D15) vu que l’adresse
est paire et le transfert sur un seul octet.
- MOVE.B #$72, $4001
implique que la donnée (72)16 sera déposée sur (D0-D7) vu que l’adresse est
impaire et le transfert sur un seul octet.
- MOVE.W #$4472, $4000
peut remplacer les deux instructions précédentes avec un dépôt de la donnée
(4472)16 sur (D0-D15) vu qu’il s’agit d’un transfert de deux octets (dans ce cas
l’adresse est impérativement paire).

Les signaux d’état du processeur


Les pins F C0 -F C2 (Function Code) indiquent l’état interne du microproces-
seur, et la nature du cycle en cours.

F C0 F C1 F C2 Type de cycle
0 0 0 Réservé
0 0 1 Donnée utilisateur
0 1 0 Programme utilisateur
0 1 1 Réservé
1 0 0 Réservé
1 0 1 Donnée superviseur
1 1 0 Programme superviseur
1 1 1 interruption
Tab2.2 : Les bits de fonctions du registre d’état

L’utilisation de ces signaux permet d’une part la séparation physique entre les

zones mémoire données et programme, ainsi que l’espace mémoire superviseur


et utilisateur, augmentant ainsi la sécurité de fonctionnement.
18 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000

Par conséquent l’espace mémoire adressable du MC68000 (limité à 16Mo par


le nombre de lignes d’adresse), peut être ainsi augmenté par un facteur de 4.

Fig2.5 : Schém a de princip e de la séparation des zones m ém oire du M C 68000

Les signaux de transfert Asynchrone

En plus du bus de données et d’adresses, la gestion temporelle des opérations


de transfert entre le microprocesseur et les circuits périphériques nécessite un
ensemble de lignes de contrôle :

- Le passage de la pin AS(Adress Srobe) à l’état bas indique qu’une adresse


valide est déposée sur le bus.

- La pin R=W (Read/Write) indique le sens de transfert.

si R=W = 0, il s’agit d’une opération de lecture (un transfert du périphérique


vers le microprocesseur)

si R=W = 1, le microprocesseur e¤ectue une opération d’écriture ( un trans-


fert vers le périphérique).

- la pin DT ACK joue le rôle de l’accusé de transfert au cours d’un cycle de


transfert asynchrone.

- les pins U DS,et LDS sont pratiquement aussi des lignes de contrôle, puis-
qu’elles spéci…ent sur quelle partie du bus est déposée la donnée.
2.3. DESCRIPTION DU MC68000 19

Fig2.6 : Schém a de base d’un interfacage asynchrone du M C 68000

Les signaux de transfert synchrone

En plus des lignes de contrôle de transfert asynchrone, le MC68000 de Mo-


torola est aussi muni des lignes de contrôle de transfert dit synchrone.
La …nalité était de garantir une compatibilité entre cette génération de mi-
croprocesseur 16 bits elle celle des 8 bits (MC68xx) en particuliers avec les
di¤érents circuits d’interface déjà réalisés par le constructeur.
Dans une opération de lecture/écriture synchrone, le transfert dure un nombre
précis de cycles, et il est cadencé avec une horloge de fréquence égale au dixième
de la fréquence d’horloge du microprocesseur.
Les lignes de transfert synchrone sont :
- V M A : une ligne activée par le périphérique, pour signaler qu’il s’agit
d’un transfert synchrone.
- V P A : une sortie activée par le microprocesseur, comme accusé de
réception en réponse à V M A.
- E : signal d’horloge synchronisant le transfert (E=CLK/10)
20 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000

Fig2.7 : Schém a de base d’un interfacage synchrone du M C 68000

Les pins de requête d’interruption


Les pins IP L0 -IP L2 sont simultanément des lignes de requête d’interruption
et de gestion de matérielle de la priorité
Un niveau haut sur les 3 lignes (valeur6=(111)2 ) implique l’absence de de-
mande d’interruption, et le microprocesseur continue l’exécution du programme
de la tache en cours.
Le cas inverse implique la présence d’une interruption, qui ne sera prise en
considération que sauf si le niveau de priorité est supérieur à celui du programme
en cours d’execution.

IP L2 IP L1 IP L0 Niveau d’interruption
1 1 1 Aucune requête
1 1 0 1 (le plus bas)

0 0 1 6
0 0 0 7 (le plus élevé)
Tab2.3 : Etat des pins de requête d’interruption

Les pins d’arbitrage de bus


Le MC 68000 est conçu pour une possible utilisation dans un système mul-
tiprocesseurs, d’où la nécessité de signaux de gestion des requêtes de contrôle
du bus. Tout un protocole est à suivre en exploitant les trois signaux :
2.3. DESCRIPTION DU MC68000 21

- BR : Une transition du niveau haut au niveau bas, implique qu’un autre


système demande le contrôle du bus
- BG : un niveau bas implique que le microprocesseur libérera le bus à la …n
du cycle
- BGACK : un passage au niveau bas implique que le contrôle du bus est
pris par un autre système (le demandeur)

Les pins de contrôle du système

Les broches ( RESET ,HLT ,BERR ) sont utilisées pour générer des inter-
ruptions liés à des problèmes tels que les erreurs d’adressage, ou à la réinitiali-
sation du système.
- Si un cycle de transfert n’est pas achevé correctement, une circuiterie ex-
térieure conçue pour la détection du problème produira le signal d’interruption
(sur la pin BERR), qui déroutera le microprocesseur vers
l’exécution du programme relatif aux erreurs bus.
Dans le cas ou BERR est activée simultanément avec la ligne HLT , alors
le microprocesseur exécute une nouvelle fois le cycle bus
- Les pins RESET , et HLT , sont des lignes bidirectionnelles à collecteur
ouvert.
Pour une réinitialisation (le reset) du MC68000, le constructeur impose la
mise à zéro des lignes RESET , et HLT pendant au moins 100ms. Cette opé-
ration est impérative à la mise sous tension, mais aussi en cas de blocage du
système au cours de fonctionnement.
Un simple circuit monostable, peut assurer le reset matériel du microproces-
seur, mais aussi le reset manuel (par bouton poussoir).
En réponse à l’instruction ’RESET ’, le MC68000 active la pin RESET pour
réinitialiser les circuits périphériques sans être a¤ecté.

Fig2.8 : Exem ple d’un circuit de reset duM C 68000


22 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000

2.4 Les cycles de lecture/écriture de base


L’accomplissement d’une instruction par un microprocesseur revient à exécu-
ter une séquence de cycles bus. Ces cycles durent un nombre de périodes d’hor-
loge durant lesquelles des opérations fondamentales (telles que l’écriture, ou la
lecture) sont e¤ectuées. Les deux modes de transfert que permet le MC68000
sont déjà introduits dans la section (2.2.1) et (2.2.2) lors de la description des
pins du microprocesseur.
Dans les deux cas de …gure le MC68000 exploitent des lignes de contrôle
commune telles que AS (pour la validation d’adresse sur le bus), ou R=W (pour
designer le sens du transfert).
Dans le cas d’un transfert synchrone , V M A et V P A sont utilisées pour
con…rmer de la part du microprocesseur et du périphérique qu’il s’agit d’un
transfert synchrone.
La cadence du transfert est synchronisée avec le signal de la pin E (égale à
clk/10).
Dans le cas d’un transfert asynchrone, outre les signaux communs ( AS ,
R=W , U DS , LDS ), le DT ACK (Data Transfer Acknowledge) est le signal
de poignée de main (handshaking) généré par le circuit adressé, et via lequel il
con…rme, soit que la donnée sur le bus est mémorisé (cycle d’écriture), ou soit
que la donnée est sur le bus (cycle de lecture).

Remarque
Par la suite, la description des chronogrammes des opérations de transfert,
la demi-période d’horloge (state ou état) est utilisée comme unité de base de
temps.

2.4.1 Le transfert asynchrone


Le cycle d’écriture
Au cours d’un transfert asynchrone (Fig 2.6), le chronogramme d’un cycle
d’écriture est illustré sur la …gure 2.9, pour les trois cas possibles (16 bits, 8 bits
adresse paire, et 8 bits adresse impaire).
Dans le cas 16 bits, l’adresse est impérativement paire et U DS , LDS sont
simultanément activés (mis à zero).
La séquence du transfert (16 bit) peut être décomposée comme suit :
Etat S0 :Le microprocesseur dépose le code fonction sur les pins FC0 -FC2,
et le bus d’adresse est initialement à l’état haute impédance.
Etat S1 :Le microprocesseur dépose l’adresse sur le bus d’adresse.
Etat S2 : Sur le ‡anc montant de S2, la ligne AS est mise à zéro pour
indiquer qu’il y a une adresse valide sur le bus.
La ligne R=W passe aussi à zéro pour indiquer qu’il s’agit d’une opération
d’écriture (un transfert vers le circuit périphérique)
Etat S3 : Le microprocesseur dépose la donnée sur les pins D0 -D15 .
Etat S4 : Activation des pins U DS ,et LDS.
2.4. LES CYCLES DE LECTURE/ÉCRITURE DE BASE 23

Si le microprocesseur reçoit le signal DT ACK d’acquittement (sinon BERR


, ou V P A ) avant l’état S7, il le synchronise à l’état S7, sinon il génère des états
d’attente Sw.
Etat S5- S6 : Période inactive.
Etat S7 : synchronisation du signal DT ACK.
Le microprocesseur désactive les signaux AS, U DS ,et LDS , et le périphé-
rique désactive le signal DT ACK.

Fig2.9 : C hronogram m e d’un cycle d’écriture asynchrone (16, et 8bits)

Les bus d’adresse et de donnée sont remis à l’état haute impédance, et la ligne
R=W retourne à l’état [Link] le cas d’un transfert 8 bits le chronogramme

est pratiquement le même, sauf que si l’adresse est paire, la donnée est déposée
sur D8 -D15 est seulement le signal U DS est activé.
Par contre si l’adresse est impaire, la donnée est déposée sur D0 -D7 est c’est
le signal LDS qui est activé.

Le cycle de lecture
La …gure 2.10 illustre le chronogramme d’un cycle de lecture asynchrone (16
bits, 8 bits adresse paire, et 8 bits adresse impaire).
La séquence des transfert peut être décomposée comme suit :
Etat S0 :Le microprocesseur dépose le code fonction sur les pins FC0 -FC2 ,
et La ligne R=W est a l’état haut (lecture : un transfert de donnée vers le
microprocesseur).
Etat S1 :Le microprocesseur dépose l’adresse sur le bus d’adresse
Etat S2 : Sur le ‡anc montant de S2, la ligne AS est mise à zéro pour
indiquer qu’il y a une adresse valide sur le bus, avec une activation des pins
U DS ,et/ou LDS .
24 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000

Etat S3-S4 :
Le microprocesseur est en attente du signal d’acquittement DT ACK (sinon
BERR , ou V P A ).
Si rien n’est reçu, alors des états d’attente Sw sont générés.
Etat S5 : Période inactive.
Etat S6 : La donnée est prélevée sur le bus (8 ou 16 bits)
Etat S7 : Le microprocesseur désactive les signaux AS, U DS ,et LDS; et
par la suite le périphérique désactive le DT ACK.
Les bus d’adresse et de donnée sont remis à l’état haute impédance au ‡anc
montant de S7, et la ligne R=W reste à l’état haut.

Fig2.10 : C hronogram m e d’un cycle de lecture asynchrone (16,et8 bits)

2.4.2 Le transfert synchrone


Dans le cas d’un schéma d’interfaçage synchrone (…gure 2.7), les chrono-
grammes de lecture et d’écriture sont donnés sur la …gure 2.11.
L’état des lignes LDS ,et U DS marquera la di¤érence entre un transfert 16
bits (remise à zéro simultanée), et les transferts 8 bits (remise à zéro d’une seule
ligne)
Comparé à un transfert Asynchrone, les chronogrammes débutent de la
même façon.
Si le microprocesseur reçoit un niveau bas sur V P A au lieu de DT ACK à
l’état S4, alors le transfert est cadencé avec le signal d’horloge E.
Le microprocesseur con…rme que le transfert est synchrone en activant V M A,
pour soit déposer ou récupérer la donnée sur le bus.
2.4. LES CYCLES DE LECTURE/ÉCRITURE DE BASE 25

Fig2.11 : C hronogram m e d’un cycle de lecture/écriture synchrone (32its)


26 CHAPITRE 2. DESCRIPTION DU MICROPROCESSEUR MC68000
Chapitre 3

L’assembleur du MC68000

3.1 Introduction
Les instructions exécutées par un microprocesseur sont en réalité un code
machine sous forme binaire. Une telle représentation est très di¢ cile à utiliser
et à manipuler.
Le langage assembleur est en …n de compte une représentation lisible du code
machine sous forme de mnémoniques et symboles, o¤rant ainsi à l’utilisateur une
grande facilité et simplicité de programmation.
Un logiciel (dit généralement aussi assembleur) permet la conversion du pro-
gramme rédigé en assembleur en code machine.
Dans ce chapitre on décrira les di¤érents modes d’adressage que permet le
MC68000, ainsi qu’une description plus ou moins détaillée du jeu d’instructions.
Ce dernier est donné sous forme de tableaux dans l’annexe A.3.

Language assembler Code machine


MOVE.B #$FF,D0 (103C 00FF)16
MOVE.B #$44,D0 (103C0044)16

Le MC 68000 possède un jeu d’instructions dit CISC (Complex Instruction


Set Computer ), avec un ensemble de 56 mnémoniques (ADD, SUB, MOVE...),
14 modes d’adressage di¤érents, et une possibilité d’exécution des instructions
sur di¤érentes tailles (8, 16, 32 bits).
Dans sa forme générale une instruction peut avoir un ou deux opérandes et
s’écrit :
Label <code instruction>.T <Opérande source> < Opérande destination>
Label : est un mot alphanumérique (une étiquette) qui représente l’adresse
de l’instruction.
T : est la taille sur laquelle est exécutée l’instruction.

27
28 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

8
< B : 8 bits
W : 16 bits
:
L : 32 bits

Exemple
Syntaxe générale d’un programme en assembleur 68000

En plus des instructions, un programme comprend aussi des directives, qui


sont l’ensemble des ordres destinés au logiciel assembleur :
ORG : indique au logiciel à partir de quelle adresse placer le code machine.
EQU : est une directive d’équivalence.
END : indique la …n du …chier à assembler.
DC :(de…ne constant) directive d’initialisation de la mémoire avec des constante
pendant la phase d’assemblage (sur 8,16, ou 32 bits).
DS : (de…ne space) directive de réservation de zone mémoire pendant l’as-
semblage (sur 8,16, ou 32 bits)

3.2 Les modes d’adressage


Le mode d’adressage dé…nit la façon avec laquelle est exprimée l’opérande
dans une instruction donnée.
3.2. LES MODES D’ADRESSAGE 29

Le MC68000 permet 14 modes d’adressage, dont les principaux sont dé…nis


dans cette section avec des exemples illustratifs.
La majorité des instructions utilisées dans les exemples se limitent à des
opérations simples, de transfert (MOVE) , de mise à zéro (CLR), ou d’opérations
arithmétiques (ADD, SUB,...).

3.2.1 L’adressage registre


L’opérande dans ce cas est un registre d’adresse ou de donnée.

Exemple
CLR.B DO Remise à zéro (8 bits) du registre D0
ADD.W D1, DO Addition 16 bits de D1, et D0 (résultat dans D0)
MOVEA.L A7, A2 Transfert 32 bits du contenu de A7 vers A2

3.2.2 L’adressage absolu

Dans ce cas l’opérande est spéci…é dans l’instruction par son adresse mé-
moire.

Exemple

CLR:B$5000 Remise à zéro (8 bits) de la case mémoire(5000)16


ADD:W D1; $4000 Addition 16 bits de D1,et des cases mémoire (4000-4001)16
M OV E:L$2000; $2600 Transfert 32bits des cases (2000-2003)16 vers (2600-2603)16

3.2.3 L’adressage immédiat


Dans ce cas la valeur est spéci…ée directement dans l’instruction précédée
par le symbole #.

Exemple
MOVE.B #100,D0 D0 (100)10
MOVE.B #$64,D0 D0 (100)10
MOVE.B #%01100100,D0 D0 (100)10

Le pré…xe de chaque donnée spéci…e au compilateur assembleur dans quelle


base est exprimée la valeur :
- #% ) base 2
- #@ ) base 8
- # ) base 10
- #$ ) base 16
Le mode immédiat accepte aussi le code ascii
30 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

Exemple
MOVE.L #’face’,D1 D1 (66616365)16
MOVE.L #’FACE’,D1 D1 (46414345)16

L’adressage immédiat court


Certaines instructions de l’assembleur du MC68000 possèdent des variantes
plus rapideS, mais avec des limites concernant la taille des opérandes :
- Transfert rapide : MOVEQ #data,Dn
l’opérande source est une donnée 8 bits,
la destination est impérativement un registre de donnée
le résultat dans le registre subit une extension de signe sur 32 bits
- Addition rapide : ADDQ #data,Dn
l’opérande source est une donnée entre 1 et 8,
la destination est un registre de donnée
- Soustraction rapide : SUBQ #data,Dn
l’opérande source est une donnée entre 1 et 8,
la destination est un registre de donnée.

Exemple
MOVEQ #$72,D2 Résultat dans D2 (00000072)16
MOVEQ #$8B,D3 Résultat dans D3 (FFFFFF8B)16
ADDQ #2,D1 Incrémentation par 2 du contenu de D1
SUBQ #5,D7 Décrémentation par 5 du contenu de D7

3.2.4 L’adressage indirect simple


Dans ce cas la l’opérande est spéci…é par son adresse mémoire contenu dans
un registre d’adresse.
Une mise entre parenthèses du registre d’adresse di¤érencie ce mode du mode
registre.
l’Adresse E¤ective = (An).

Exemple
3.2. LES MODES D’ADRESSAGE 31

3.2.5 L’adressage indirect post-incrémenté

Il s’agit d’un mode d’adressage indirect, où le registre pointeur An est incré-


menté (apres l’exécution de l’instruction) par un nombre n.
- n=1 si l’opérande est un 8 bits.
- n=2 si l’opérande est un 16 bits.
- n=4 si l’opérande est un 32 bits.

Exemple

3.2.6 L’adressage indirect pré-décrémenté

Dans ce cas l’adresse de l’opérande est déterminée après une décrémentation


du registre d’adresse pointeur avec une valeur n (qui dépend de la taille de
l’opération) :
- n=1, dans le cas 8 bits.
- n=2, dans le cas 16 bits.
- n=4, dans le cas 32 bits.
32 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

Exemple

3.2.7 L’adressage indirect avec déplacement


L’adresse de l’opérande est la somme du contenu d’un registre d’adresse An
et d’un déplacement d signé codé sur 16 bits (-32768 d +32767).
l’opérande est exprimé : d(An).

Exemple

3.2.8 L’adressage relatif PC

Dans ce type d’adressage l’adresse e¤ective est obtenue en ajoutant un o¤set


(un déplacement) à la valeur en cours du compteur programme PC.
L’o¤set est calculé par le logiciel assembleur pendant la compilation du pro-
gramme.

Exemple

Dans l’exemple suivant deux constantes 32 bits sont dé…nies à la …n du


programme avec la directive DC.L, et une zone mémoire 32 bit est réservée avec
la directive DS.L L’accès aux trois zone mémoire est réalisé relativement au
contenu du PC.
3.3. LE JEU D’INSTRUCTIONS 33

3.3 Le jeu d’instructions

Les paragraphes suivants présentent une description minimale des instruc-


tions de base de l’assembleur du MC68000.
Des détails supplémentaires sont tabulés et résumés dans l’annexe A.3.

3.3.1 Les instructions de transfert


0 1
B
* MOVE.@ W A source; destination
L
La destination appriori ne peut pas être un registre d’adresse.
Dans le cas ou la source est un registre d’adresse, la taille se limite à W et
L.
W
* MOVEA. source; An
L
Transfert vers registre d’adresse.
Dans le cas où la source est un mot, le résultat est étendu à 32 bits par une
extension de signe
* MOVEQ #data; Dn
La destination est un registre de donnée, et l’opérande source est une donnée
8 bits, qui 0
subit une
1 extension de signe sur 32 bits.
B
* CLR.@ W A destination
L
Remise à zéro de la destination.
* LEA < AE >; An
Chargement d’une adresse e¤ective dans un registre d’adresse.
34 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

Exemple

* EXG R1; R2
Permutation du contenu de deux registres (de donnée ou d’adresse)
* SWAP Dn
Permutation du mot de poids fort et de poids faible d’un registre de donnée.

Exemple

3.3.2 Les instructions arithmétiques


L’assembleur du MC68000 permet la réalisation des opérations arithmétiques
de base (+ , - , * , /, comparaison, calcul d’opposé. . . ) .
Des opérations telles que l’addition, la soustraction, ou la comparaison s’ef-
fectuent indi¤éremment sur des registres de donnée ou d’adresse.

- Les instructions d’addition

L’addition avec un registre


3.3. LE JEU D’INSTRUCTIONS 35

8 0 1
>
> B
>
>
>
> ADD: @ W A < AE >; Dn ; Dn [Dn] + (AE)
>
>
>
> 0 L 1
<
B
> ADD: @ W A Dn; < AE > ; AE
> [Dn] + (AE)
>
>
>
> L
>
>
>
> W
: ADDA: < AE >; An ; An [An] + (AE)
L
L’addition avec un adressage immédiat
0 1
B
ADDI: @ W A #data; < AE > ; AE data + (AE)
L
L’addition rapide
0 1
B
ADDQ: @ W A #data; < AE > ; AE data + (AE) (1 < data < 8)
L
L’addition avec prise en compte du bit d’extension x
0 1
B
ADDX: @ W A Dx; Dy ; Dy [Dx] + [Dy] + X
L
0 1 8
B < Ax Ax n
ADDX: @ W A (Ax); (Ay) ; Ay Ay n
:
L (Ax) (Ax) + (Ay) + X
Les opérations d’addition a¤ectent les indicateurs (X,N,Z,V,C) du registre
CCR à L’exception de de l’instruction ADDA vu qu’elle manipule des adresses.

Exemple

Addition 64 bits de deux données stockées respectivement aux adresses adr1,


et adr2, avec un stockage du résultat à partir de l’adresse adr3.
36 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

Les instructions de soustraction

Les instructions de soustraction du MC6800 sont pratiquement similaires à


celles d’addition :

8 0 1
>
> B
>
>
>
> SU B: @ W A < AE >; Dn ; Dn [Dn]-(AE)
>
>
>
> 0 L 1
>
>
>
> B
>
>
>
> SU B: @ W A Dn; < AE > ; AE (AE)-[Dn]
>
>
>
> L
>
>
>
> W
>
> SU BA: < AE >; An ; An [An]-(AE)
< 0 L 1
B
>
> SU BI: @ W A #data; < AE > ; AE
>
> (AE)-data
>
>
>
> 0 L 1
>
>
>
> B
>
>
>
> SU BQ: @ W A #data; < AE > ; AE (AE)-data (1 < data < 8)
>
>
>
> 0 L 1
>
>
>
> B
>
>
>
> SU BX: @ W A Dx; Dy ; Dy [Dy]-[Dx]-X
:
L

Les instructions de multiplication et de division

Dans le cas des opérations de multiplication et de division la taille des opé-


randes est …xe.
La multiplication signée
M U LS < AE >; Dn ; Dn_32 (Dn)16 (AE)16
La multiplication non signée
M U LU < AE >; Dn ; Dn_32 (Dn)16 (AE)16
Dans les deux cas, les opérandes source et destination sont codés sur 16 bits
(poids faibles de l’opérande), et le résultat tient sur 32 bits (d’un registre de
donnée).
Dans le cas où les opérandes sont codés sur 8 bits, il est nécessaire de les
représenter sur 16 bits avant l’opération de multiplication :
- par une extension de signe dans le cas signé.
- par une remise a zéro de l’octet de poids fort dans le cas non-signé.
3.3. LE JEU D’INSTRUCTIONS 37

Exemple

Exemple

Calcul de l’expression S = A2 + B 2 + C 2 , où A,B, et C sont des entiers


signés codés sur 16 bits

La division signée
DIV S < AE >; Dn ; Dn_32 (Dn)32 =(AE)16

La division non signée


38 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

DIV U < AE >; Dn ; Dn_32 (Dn)32 =(AE)16

Dans les deux cas l’opérande source est sur 16 bits, et l’opérande destination
sur 32 bits.
Le résultat dans le registre de donnée est réparti en deux mots :
- Les 16 bits de poids faibles : le quotient .
- Les 16 bits de poids forts : le reste de la division entière.

Exemple

Calcul de l’expression S = (1 + A:B)=C , où A,B, et C sont des entiers


signés codés sur 8 bits

3.3.3 Les instructions logiques

L’assembleur du MC68000 permet la réalisation des opérations logiques de


base (ET , OU , XOR , Complément).
Ces instructions logiques ne manipulent jamais des registres d’adresse.
Dans le cas du ’ET’logique les instructions disponibles sont :
8 0 1
>
> B
>
>
>
> AN D: @ W A < AE >; Dn ; Dn (AE) AND Dn
>
>
>
> 0 L 1
>
>
< B
AN D: @ W A Dn; < AE > ; AE (AE) AND Dn
>
>
>
> 0L 1
>
>
>
> B
>
>
>
> AN DI: @ W A #data; Dn ; Dn Dn AND data
:
L
3.3. LE JEU D’INSTRUCTIONS 39

- Des instructions de formes similaires réalisent le ’OU’ logique, et le OU


exclusif : OR; ORI; EOR; EORI
- N OT < AE > : réalise le complément à 1 du contenu de l’adresse e¤ective.

Exemple

3.3.4 Les instructions de comparaison

Les instructions de comparaison sont identiques à celle de soustraction, sauf


que le résultat n’est pas a¤ecté à l’opérande destination, mais uniquement les
‡ags (C, N,Z, et V) du registre CCR qui sont modi…és
Les instructions de comparaison du MC68000 permettent des opérations sur
des registres de donnée et d’adresse, des valeurs immédiates, et des données en
mémoire :

8 0 1
>
> B
>
>
>
> CM P: @ W A < AE >; Dn ; (Dn-(AE)) af f ecte le CCR
>
>
>
> 0L 1
>
>
>
> B
>
>
>
> CM P A: @ W A < AE >; An ; (An-(AE)) af f ecte le CCR
<
0 L 1
>
> B
>
> @ W A #data; < AE > ; ((AE)-data) af f ecte le CCR
>
> CM P I:
>
>
>
> 0L 1 8
>
>
>
> B < ((Ay)-(Ax)) af f ecte le CCR
>
> @ W A (Ax)+; ( Ay) +
>
> CM P M: Ax Ax + n
: :
L Ay Ay + n

Exemple

Mise à zéro d’une zone mémoire délimitée par deux pointeurs A0, et A1.
40 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

L’instruction BPL (Branch if plus) provoque un branchement vers l’étiquette


, si le bit N =0 (après le calcul de A1-A0 )

Remarque
Dans le programme la remise à zeo de la case mémoire pointée par par A0 est
e¤ectuée en deux étapes, avec une incrémentation du pointeur dans la deuxieme
instruction.

3.3.5 Les instructions de branchement

Le jeu d’instructions du MC68000 dispose de deux types de branchement :

Le branchement inconditionnel
BRA etiquette ; Saut à l’adresse pointée par l’étiquette.
JMP AE ; Saut à une adresse e¤ective.
3.3. LE JEU D’INSTRUCTIONS 41

l’instruction JMP est plus générale que BRA car elle permet plusieurs
modes d’adressage.

Le branchement conditionnel

La forme :BCC etiquette ; (CC : Condition Code)


La condition du branchement depend des indicateurs du registre CCR.
par exemple :
BCC : (branch if carry clear) branchement si la retenu est zéro (bit c=0)
BCS : (branch if carry set) branchement si la retenu est 1 (bit c=1)
BEQ : (branch if equal) branchement en cas d’égalité (bit z=1)
BN E : (branch if not equal) branchement en cas d’inégalité (bit z=0)
L’utilisation des instructions de branchement dépend aussi de la nature des
données traitées (annexe A.3) :

Le cas signé Le cas non signé


> BGT BHI
BLS BLE
< BLT BCS

Exemple

Détermination du nombre de caractère ’A’dans une chaine de 100 caractères


ascii situés en mémoire à partir de l’adresse MEM.
42 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

Le branchement conditionnel

La forme :DBCC Dn; etiquette ; (CC : Condition Code)


Tout d’abord la condition ’cc’est testée, puis le registre est décrémenté par
1.
La sortie de la boucle se produit si la condition est véri…é ou si le registre
atteint -1.
Ainsi pour une valeur initiale N, la boucle peut être e¤ectuée (N+1) fois (si
la condition ’cc’n’est jamais véri…ée).

- Généralement les instructions de la forme sont placées en …n de la séquence


à répéter
- L’instruction est un cas particulier de cette forme de branchement (condi-
tion cc= false), car la sortie de la boucle est contrôlée par la valeur du registre
Dn qui doit atteindre -1.
Par conséquent le nombre d’itération=N+1 (où N est la valeur initiale af-
fectée à Dn).

Exemple

Initialisation à zéro d’une zone mémoire de 256 octets pointée par le registre
A0
3.3. LE JEU D’INSTRUCTIONS 43

3.3.6 Les instructions de décalage


Les instructions de décalage sont largement utilisées en arithmétique pour
remplacer les instructions de multiplication et division par des puissance de 2,
vu qu’elles o¤rent un temps d’exécution plus rapide que les instructions (MULU,
MULS, DIVU, DIVS)

Rappel :

-Dans le cas des entiers non signés :


* la multiplication par 2 équivaut à un décalage gauche par un bit, en rem-
placant le bit manquant par un zéro.

* la division par 2 équivaut à un décalage droite par un bit, en remplaçant


le bit manquant par un zéro.
-Dans le cas des entiers signés (complément à 2) :
* La multiplication par 2 équivaux un décalage gauche par un bit, en rem-
plaçant le bit manquant par un zéro.

* La division par 2 équivaux un décalage à droit par un bit, en remplaçant


le bit manquant par le bit de signe (MSB).
L’assembleur du MC68000 dispose de deux types d’instructions de décalage :
- Le décalage logique (logical shift) : compatible à la division et la multipli-
cation non signées par 2 :
44 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

0 1
B
LSR: @ W A Dx; Dy ; décalage droite de Dy
0 L 1
B
LSRI: @ W A #N; Dy ; décalage droite de N bits du registre Dy (1 N 8)
0 L1
B
LSL: @ W A Dx; Dy ; décalage gauche de Dy
0 L 1
B
LSLI: @ W A #N; Dy ; décalage gauche de N bits du registre Dy (1 N 8)
L

- Le décalage arithmétique : compatible à la division et la multiplication


signées par 2 :

0 1
B
ASR: @ W A Dx; Dy ; décalage droite de Dy
0 L 1
B
ASRI: @ W A #N; Dy ; décalage droite de N bits du registre Dy (1 N 8)
0 L1
B
ASL: @ W A Dx; Dy ; décalage gauche de Dy
0 L 1
B
ASLI: @ W A #N; Dy ; décalage gauche de N bits du registre Dy (1 N 8)
L
3.3. LE JEU D’INSTRUCTIONS 45

Exemple

Remarque

La forme des instructions de rotation est similaire à celles des instructions


de décalage, et sont présentées dans l’annexe 1.
46 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

3.4 Exercices

Exercice 1 :
Préciser pourquoi les instructions suivantes sont illicites :
MOVE.L $FF001,D6 MOVE.B $FF,A1
CLR.B A1 MOVEA.L A0,D0
MOVEQ.W #01,S$4045 MOVEQ #$2C,D5
MOVE.B A0,A1 MOVE.B CCR

Exercice 2 :
Sachant que la mémoire est initialisée pendant la phase d’assemblage par :
ORG $1F264
DC.W $AB04,$5266,$FF11
Quel est le résultat de chacune des instructions suivantes :
MOVE.B $1F264,D0 MOVEQ #$AB,D1
MOVE.L $1F2C,D2 MOVE.W #$A164,A0
MOVE.L $0001f264,A1 MOVE.L (A1),D3
MOVE.W (A1)+,D4 MOVE.W -(A1),D4

Exercice 3 :
Quel est le contenu des registres après l’exécution des instructions suivantes :
MOVEQ #$1B,D1 MOVEQ #$A4,D0
MOVEA.W #$EA10,A0 MOVEA.W #$2A01,A2
Donner l’équivalent de ces instructions en utilisant « MOVE »

Exercice 4 :
Ecrire en langage assembleur les programmes suivants :
- un programme qui initialise les cases mémoire de $12002 ā $12002 par
la valeur $1c, et les 5 octets ā partir de $12003 par la valeur $ab
- un programme qui charge la mémoire par le message ’ELECTRONIQUE-
USTO’ā partir de l’adresse $3000 (utiliser ensuite une directive pour réaliser la
même opération)
- un programme réalisant la permutation des données de la zone mémoire
$12000- $12002 avec ceux de la zone $12001-$120003

Exercice 5 :
Donner l’état des ‡ags du registre CCR après chaque instruction :
MOVE.L #$F001,D6
MOVE.W #$F001,$14560
CLR.L D2
MOVEQ #129,D1
3.4. EXERCICES 47

MOVE .L #-2,D3
MOVE #$6F ,CCR

Exercice 6 :

Ecrire un programme qui additionne deux nombres non signés codés sur 16
bits, et rangés respectivement aux adresses mémoire adr1, adr2.
Le résultat de l’addition est sauvegardé à l’adresse mémoire adrs.

Exercice 7 :

A, B, deux nombres non signés codés sur 8 bits et rangés en mémoire res-
pectivement aux adresses adr1, adr2.
1) Développer un programme qui calcule l’expression :
S=(A/8)+B*2
(Avec le transfert du résultat dans le registre D2)
en utilisant les instructions de multiplication et de division
en utilisant les instructions de décalage
2) Refaire la question (a) dans le cas ou a et b sont signés codés sur 8 bits

Exercice 8 :

Ecrire un programme qui calcule le produit de deux nombres ’a’, et ’b’non


signés rangés respectivement aux adresses mémoire adr1, et adr2,
dans les deux cas suivants :
- multiplication 16bits x 16 bits, résultat sur 32 bits
- multiplication 32bits x 32 bits, résultat sur 64 bits
Le résultat de la multiplication est sauvegardé à partir de l’adresse mémoire
adrs.

Exercice 9 :

Soit à permuter deux zones mémoire de 1 K Octet l’une pointée par le registre
A1 , l’autre par A2.
Ecrire un programme assembleur qui e¤ectue cette opération.

Exercice 10 :

On désire calculer la somme et la moyenne de 100 nombres signés stockés en


mémoire à partir de l’adresse $2000 .
1) Quelle est la taille envisageable pour les résultats (Somme ,Moyenne)
2) Développer un programme assembleur qui permet de faire ce calcul .
48 CHAPITRE 3. L’ASSEMBLEUR DU MC68000

Exercice 11 :
Un ensemble de 1000 entiers signés se trouve en mémoire à partir de l’adresse
pointée par A2 . Développer un programme assembleur permettant de :
1. Compter le nombre d’éléments positifs (résultat dans D0) .
2. Compter le nombre d’éléments négatifs (résultat dans D1) .
3. Compter le nombre d’éléments nuls (résultat dans D2)
Chapitre 4

La pile et les exceptions

4.1 Introduction
Pratiquement le MC68000 peut être soit en état de fonctionnement normal
équivalent à l’exécution d’un programme donné, ou en état d’arrêt (Halt) qui
peut être par exemple la conséquence d’une erreur bus (double), ou …nalement
dans un état de traitement d’une exception.
Du point de vue dé…nition, l’exception est une généralisation de la notion
classique d’interruption pour inclure en plus des requêtes matérielles, les re-
quêtes de nature logicielle.
Avant de détailler le mécanisme d’interruption et son implémentation dans
le cas du MC68000, ce chapitre introduira tout d’abord la notion de mémoire
pile, ainsi que le processus d’appel de sous programme.
Des exemples d’applications seront exposés et traités dans le chapitre consa-
cré aux entrées-sorties numériques.

4.2 La notion de pile

Une pile est une zone mémoire de type LIFO (Last In First Out) pointée
avec un registre d’adresse (appelé pointeur de pile) dont le contenu est l’adresse
de la dernière donnée introduite.
Une opération d’écriture est précédée par une décrémentation du pointeur
pour assurer un empilement dans la mémoire.
En contre partie, une opération de lecture correspond à une incrémentation
du pointeur assurant ainsi un dépilement de la pile.
Dans le cas du MC68000 le pointeur de pile est le registre A7.

4.2.1 L’appel et le retour d’un sous programme


Deux instructions peuvent être utilisées pour un appel de sous programme :

49
50 CHAPITRE 4. LA PILE ET LES EXCEPTIONS

BSR etiquette ; identique a BRA


JSR < AE > ; identique a JM P

Dans les deux cas un branchement vers un sous-programme, implique la


séquence
8 d’opération suivantes :
< A7 [A7]-4 ; décrementation du pointeur pile
A7 P C ; sauvegarde de l’adresse de retour
:
PC adresse du sous-prog

Le A7 est décrémenté de 4 octets pour l’empilement de l’adresse de retour


dans la pile, et l’exécution du sous programme commence après le chargement
de son adresse de début dans le registre PC.
L’instruction RT S à la …n d’un sous-programme permet une récupération
de l’adresse de retour, ainsi qu’une incrémentation du pointeur A7 :

PC (A7) ; réstauration de l’adresse de retour


A7 A7 + 4 ; incrementation du pointeur pile

Fig4.1 :La pile et le p ointeur A7

Exemple
Un sous-programme qui calcule le carré d’un entier avec un passage d’argu-
ments et du résultat dans des registres de donnée (D0, D1)
4.2. LA NOTION DE PILE 51

Apres l’instruction BSR :


- A7 $5008-4=$5004 (décrémentation du pointeur pile)
- L’adresse de retour (PC+4=$100C), qui représente l’adresse de l’instruc-
tion suivante est sauvegardée dans la pile
- Le PC est chargé par l’adresse de début du sous-programme (PC $1012)
Apres l’instruction RTS :
- L’adresse que pointe le A7 est transférée au PC $100C (l’adresse de re-
tour)
- A7 $5004+4=$5008 (incrémentation du pointeur pile)

Fig4.2 :Contenu de la pile et du p ointeur A7

Passage d’arguments

Le passage d’arguments entre un programme et un sous-programme peut


etre e¤ectuée soit par valeurs ou adresses, en utilisant soit des registres, ou une
partie de la mémoire pile.

Exemple

Le sous-programme dans l’exemple suivant calcule l’expression S + x2 -5;


où la pile est utilisée pour une transmission de l’argument ’x’par valeur, et un
retour du résultat ’S’par adresse.
52 CHAPITRE 4. LA PILE ET LES EXCEPTIONS

Fig4.3 :Contenu de la pile et du p ointeur A7

Remarque
L’instruction PEA (push e¤ective address) permet une sauvegarde directe
d’une adresse dans la pile, avec une pré-décrémentation du pointeur A7. elle
remplace pratiquement l’instruction :
MOVE.l #adrS,-(A7)

Sauvegarde de registres dans la pile


Lors de l’appel d’un sous programme une sauvegarde temporaire du contenu
des registres (utilisés par ce S/P) dans la mémoire pile est possible.
L’instruction MOVEM est généralement utilisée vu quelle permet un trans-
fert multiple de registres avec di¤érent mode d’adressage :
W
M OV EM: liste de registres; AE
L
W
M OV EM: < AE >; liste de registres
L
Le mode indirect pré-décrémenté :
Ce mode est utilisé pour la sauvegarde multiple des registres dans la me-
moire.
4.2. LA NOTION DE PILE 53

par défaut l’ordre de sauvegarde des registre commence par les registres
d’adresse puis ceux de donnée (A7, A6, A5,....,A0, D7, D6,....,D0).
Le mode indirect post-incrémenté :
Ce mode est limité aux transferts de la mémoire vers les registres, et l’ordre
de restitution est :
(D0, D1,....,D7, A0, A1, A3,....,A7,).

Exemple

M OV EM:W D0; D4; =A1-A3;-(A0) , Les registres sauvegardés


en mémoire (pointée par A0) : A1,A2,A3,D0,D4

M OV EM:W (A5)+; A2-A4=D0; D7 , Les registres restitués de la


mémoire (pointée par A5) : A2,A3,A4,D0,D7

Fig4.4 :Etat initial et …nal de la pile et du p ointeur A7

Dans le cas des autres modes d’adressage, le transfert se fait à partir de


l’adresse spéci…ée vers les adresses mémoire croissantes.

Exemple
On considère l’exemple précédent (calcul de l’expression ) où la pile est
utilisée pour :
- Une transmission de l’argument ’x’par valeur.
54 CHAPITRE 4. LA PILE ET LES EXCEPTIONS

- Un retour du résultat ’S’par adresse.


- Une sauvegarde, et une restitution du contenu initial du registre de donnée
(D0).

Fig4.5 :Contenu de la pile et du p ointeur A7

4.3 La notion d’interruption


L’interruption est une procédure qui répond à un signal matériel externe
(IRQ : Interrupt Request), et qui permet d’interrompre le programme en cours
au pro…t d’un autre.
En d’autres termes, une interruption provoque le déroutement du processeur
de la tache en cours vers une autre qui peut être une tache d’urgence.
Dans un système à microprocesseur, l’implémentation matérielle d’interrup-
tion est équivalente à la mise en place d’une communication par poigné de main
4.3. LA NOTION D’INTERRUPTION 55

(handshaking). Car si le périphérique demandeur d’interruption active la ligne


de demande d’interruption, le microprocesseur doit signaler que la requête est
acceptée en activant une ligne de reconnaissance de la demande.

Fig4..6 : Schém a sim pli…é du m écanism e de base d’une interruption

Si l’interruption est acceptée, le microprocesseur doit impérativement :


- Terminer l’instruction en cours
- Sauvegarder l’adresse de retour (l’instruction suivante) ainsi que l’état
des di¤érents indicateurs (‡ags) a…n de pouvoir continuer correctement la tache
une fois le programme relatif à l’interruption terminé.
- Déterminer et charger dans le registre PC (program counter) l’adresse
du sous programme d’interruption.
Ainsi dé…nie la gestion des interruptions pose un ensemble de problèmes,
dont le premier est la détermination de l’adresse du sous programme d’interrup-
tion, et le second est relatif à la gestion de la priorité dans le cas où plusieurs
sources d’interruption sont possibles.

4.3.1 Les interruptions du MC68000


Dans le cas du MC68000, et tel qu’il a été décrit dans le premier chapitre,
la ligne de requête d’interruption est remplacé par trois pins ( IP L0 -IP L2 )
56 CHAPITRE 4. LA PILE ET LES EXCEPTIONS

qui servent en outre à la gestion matérielle de la priorité entre les di¤érents


demandeurs.

Fig4.7 : Exem ple d’un circuit de gestion des interruptions du M C 68000

Pratiquement dans un système à base du MC68000 une demande d’inter-


ruption suit un ensemble d’étapes :
Etape 1 :
Le périphérique demandeur d’interruption signale sa requête par le dépôt de
son niveau de priorité (complément à 1) sur les trois pins (IP L0 -IP L2 ). Par
conséquent, un circuit logique encodeur de priorité est su¢ sant pour assurer
à la fois la prise en compte de la demande d’interruption ainsi que la gestion
matérielle de la priorité entre les di¤érents circuits périphériques.

Etape 2 :
La requête d’interruption est prise en considération uniquement si le niveau
de priorité déposé sur ( IP L0 -IP L2 ) est supérieur a celui de la tache en cours
(les bit du masque d’interruption (I0-I1-I2) du registre d’état SR).

Si la condition est véri…ée, le microprocesseur dépose le niveau de priorité sur


la ligne d’adresse A1-A2-A3), et passe au mode superviseur (bit S=1, et FC0 -
FC1 -FC2 =111). La combinaison de ces signaux permet la génération des signaux
de validation des requêtes d’interruption (IACK : Interrupt acknowledge).
La valeur du masque d’interruption (I0 -I1 -I2 ) est modi…ée suivant le niveau
de priorité de la nouvelle tache validée.

Etape 3 :
Sauvegarde du contenu du registre PC (32 bits), et du registre d’état SR (16
bits) dans la pile.
4.3. LA NOTION D’INTERRUPTION 57

Etape 4 :
Détermination de l’adresse du sous programme d’interruption relatif à la
requête validée.
L’ensemble des adresses de sous-programmes d’interruption sont stockés en
mémoire dans une table nommé la table des vecteurs d’exceptions.
L’instruction RTE à la …n du sous-programme d’interruption permet une
récupération des valeurs du PC, et du SR stockées dans la pile.
Cette restitution permet une continuité normale de l’exécution du programme
qui était déjà en cours avant l’interruption.

4.3.2 La table des vecteurs d’exceptions

Dans un système à base du MC68000 la table des vecteurs d’exceptions est


une zone mémoire ou sont stockées les adresses de début des di¤érents sous-
programmes d’interruption.
Cette zone mémoire occupe le premier K octets de l’espace mémoire super-
viseur.
Pour déterminer l’adresse de la tache à exécuter, le microprocesseur a besoin
uniquement du numéro de vecteur pour identi…er l’adresse de début du sous
programme.
On distingue di¤érents types de sources d’interruptions :
- Les interruptions système : telles que le RESET, l’erreur bus, ou la
violation de privilège.
- Les interruptions logicielles (TRAP #n) : dont les numéros de vecteur
varient de 32 à 47.
- Les interruptions auto-vectorisées :
Dans ce cas le microprocesseur calcule le numéro de vecteur à partir du
niveau de priorité du périphérique (numéro de vecteur= niveau de priorité+24),
et par conséquent ce type d’interruption occupe les numéros de vecteur de 25 à
31.
Cette approche est adoptée par Motorola pour permettre un interfaçage
facile du MC68000 avec les circuits périphériques (auto-vectorisés) conçus ini-
tialement pour les microprocesseurs 8 bits du type : 68xx.
Une interruption est considérée auto-vectorisée si le périphérique accom-
pagne sa requête par activation du signal V P A .
58 CHAPITRE 4. LA PILE ET LES EXCEPTIONS

Tab4.1 :La table du vecteur d’exceptions du M C68000

- Les interruptions utilisateur :


Si lors de la requête le signal V P A n’est pas activé, alors l’interruption
est non-auto-vectorisée, et par conséquent le périphérique dépose un numéro de
vecteur sur le bus de donnée (D0-D7) et active le signal DT ACK .
Les interruptions utilisateurs occupent les numéros de vecteur de 64 à 255.
Multiplié par 4, un numéro de vecteur donne l’adresse où est stockée l’adresse
de début du sous-programme d’interruption.
- Si une interruption de niveau trois 3 est reçue avec une activation du si-
gnal V P A , alors l’interruption est auto-vectorisée (numéro de vecteur=3+24=27),
et par conséquent le PC reçoit les 32 bits à partir de l’adresse mémoire (27x4=108=$06C).
- Si l’interruption est de niveau trois 3 (sans l’activation de V P A ) avec
un dépôt de la valeur 65 sur les lignes de donnée D0-D7, alors l’interruption est
4.4. EXERCICES 59

vectorisée (numéro de vecteur =65), et par conséquent le PC est chargé par le


contenu mémoire à partir de l’adresse (65x4=260=$104).
- Si au cours de son fonctionnement normal, le microprocesseur exécute
l’instruction TRAP#02, alors une interruption logicielle se produit avec le bran-
chement vers une adresse (le nouveau contenu du PC) qui est la valeur stockée
à partir de $084

4.3.3 Le traitement du RESET


Le RESET (la réinitialisation) est l’exception du niveau le plus élevée (7),
est par conséquent elle présente une interruption non-masquable.
Pratiquement le reset du MC68000 est réalisé par une mise à zéro simultanée
des pins ( RESET , HLT ) pendant au moins 100ms (le processus est déjà
expliqué dans le chapitre 2 -Fig 2.7).
En plus du passage au mode superviseur (bit S=1), cette interruption par-
ticulière provoque :
- Le chargement du pointeur pile A7 avec les 32 bits de l’adresse mémoire
$0000 (le numéro de vecteur 0).
- Le chargement du compteur programme PC avec les 32 bits de l’adresse
mémoire $0004 (le numéro de vecteur 1), qui présente l’adresse de début du
programme.

Remarque

La pin RESET du MC68000 est une ligne bidirectionnelle (à collecteur ou-


vert), et l’instruction ’RESET ’provoque sa remise à zéro pendant 124 periodes
d’horloge, réinitialisant ainsi les circuits périphériques sans que le microproces-
seur ne soit a¤ecté.

4.4 Exercices

Exercice 1 :
Ecrire un programme qui calcule l’expression :
S=A2 +B2 +C2
Sachant que A, B, et C sont trois nombres signés codés sur 16 bits et rangés
en mémoire respectivement aux adresses adra, adrb, et adrc
Le résultat S est sauvegardé dans le registre D5

Exercice 2 :
Développer un programme qui calcule l’expression :
S=A3 +B3 +C3
Sachant que A, B, et C sont trois nombres signés codés sur 8 bits et rangés
en mémoire respectivement aux adresses adra, adrb, et adrc
60 CHAPITRE 4. LA PILE ET LES EXCEPTIONS

Le résultat S est sauvegardé à l’adresse adrs


Chapitre 5

Le décodage d’adresses

5.1 Introduction
Dans un système à microprocesseurs, au cours d’un cycle de lecture ou d’écri-
ture, il est nécessaire d’assurer l’activation du circuit concerné par le transfert,
tout en désactivant le reste des circuits périphériques connectés à ce micropro-
cesseur.
Un circuit logique exploitant une partie du bus d’adresse et des lignes de
contrôle peut être conçu de di¤érente façon pour assurer le décodage d’adresse
dans une carte à microprocesseur.
Dans le cas du MC68000, si le périphérique est un 8 bits, le choix de la
partie du bus de donnée du microprocesseur à connecté avec le circuit impose
implicitement une adresse impaire (si D0-D7 est utilisée) ou une adresse paire
(si D8-D15 est connectée)

Fig 5.1 :Schém a de princip e du déco dage d’adresses dans un systèm e à m icropro cesseur

61
62 CHAPITRE 5. LE DÉCODAGE D’ADRESSES

Il est important de noter, que la conception d’un circuit de décodage d’adresse


doit respecter outre, les chronogrammes de lecture/écriture des constructeurs,
certaines contraintes propres à chaque microprocesseur.
Par exemple dans le cas du MC68000, le premier K octets de l’espace mé-
moire adressable est réservé à la table du vecteur d’exceptions. Par conséquent
cette zone (ou une partie d’elle) doit être impérativement une mémoire non-
volatile. Une telle contrainte n’est pas respectée dans l’exemple introductif sui-
vant.
D’autre part, les circuits asynchrones -pouvant provoquer une interruption-
doivent déposer un numéro de vecteur sur le bus de donnée D0-D7, ce qui
implique que l’adresse est obligatoirement impaire.

5.2 Exemple introductif


Dans ce cas une seule ligne d’adresse A23 est utilisé pour di¤érencier entre
les deux circuits périphériques C1 (un registre 8 bits) et C2 (un registre 16 bits).
C1 est connecté à la partie de poids faibles du bus de donnée (D0-D7), est
par conséquent son adresse est impaire (A0=1), d’ou la nécessité de conditionner
l’activation du circuit par le passage à zéro du signal LDS.
C2 est connecté au 16 bits du bus de donnée (D0-D15), est son adresse est
par conséquent paire (A0=0).
D’après les chronogrammes de base de lecture/écriture (chapitre 2), l’acti-
vation d’un circuit donné doit être conditionnée par le passage à zero de la ligne
AS, qui indique qu’il y a e¤ectivement une adresse valide sur le bus.

Fig 5.2 : Exem ple sim ple d’un schém a de déco dage (utilisation d’une seule ligne d’dresse)

D’après le schéma proposé les adresses possibles de C1 et C2 sont :


C1 :
A23 A22 A21... A1 A0 =000....00)2 =(000000)16
=(000....10)2 =(000002)16
=(000...100)2 =(000004)16
=(000...110)2 =(000006)16
5.3. DÉCODAGE AVEC UN CIRCUIT DÉCODEUR 63

=(000..1000)2 =(000008)16
=(0xx......x0)2 =(xxxxx0)16
=(011......10)2 =(7FFFFE)16
C2 :
A23 A22 A21... A1 A0 =(100....00)2 =(800000)16
=(100....10)2 =(800002)16
=(100...100)2 =(800004)16
=100...110)2 =(800006)16
=100..1000)2 =(800008)16
=(1xx......x0)2
=111......10)2 =(FFFFFE)16

L’utilisation d’une seule ligne d’adresse A23 a permis une division en deux
de l’espace mémoire adressable par le microprocesseur (224 /2=223 =8 M).
Les adresses possibles pour le circuit 8 bits C1, sont uniquement les adresses
impaires de la première zone vu qu’il est connecté aux lignes de données D0-D7,
et conditionné par la ligne LDS.
Par conséquent C1 possède (223 /2=222 =4 M) adresses possibles.
Remarque :
Le circuit complet d’interfaçage d’un circuit périphérique à un microproces-
seur doit inclure aussi la ligne indiquant le sens de transfert R/W , si les deux
opérations (lecture/écriture) sont possibles.
Dans le cas du MC68000, une génération d’un signal accusé de réception est
aussi nécessaire telle qu’il est imposé par le constructeur dans les chronogrammes
de transferts.
Si le périphérique est asynchrone le transfert par poignée de main est com-
plété par la génération du signal DT ACK, ou par le couplé V P A/V M A dans
le cas d’un circuit synchrone.

5.3 Décodage avec un circuit décodeur


Si N lignes d’adresses sont utilisées pour la répartition de l’espace mémoire
adressable du MC68000 (16 Mo) on obtient des zones dont la taille de chacune
est égale à 16/2N (M octets) .
Dans l’exemple suivant un décodeur 1/8 permet la répartition de l’espace
adressable en 8 zones de 2Mo chacune (224 /23 ).
Les circuits périphériques sont considérés asynchrones, et les détails du cir-
cuit de génération du signal DT ACK ne sont donnés.
Dans le schéma proposé, il est supposé que les circuits mémoires possèdent
deux pins de sélection (Cs0-Cs1), et une seule pin (Cs) pour IC1 et IC2
64 CHAPITRE 5. LE DÉCODAGE D’ADRESSES

Fig 5.3 : Exem ple de déco dage d’adresses avec un circuit déco deur 1/8

La mémoire morte :

La mémoire morte dans cet exemple occupe les premiers K octets de l’espace
mémoire adressable.
Par conséquent elle est supposée contenir les adresses des tables du vecteur
d’exceptions, ainsi que le code machine du programme.
De ce fait, l’accès à la ROM s’e¤ectue en mode 16 bits, et au cours de chaque
cycle de lecture les deux circuits sont activés simultanément.
- Les circuits ROM (ROM1+ ROM 2), dont la taille totale est 4Ko, occupent
la première zone mémoire (la sortie O0, équivalente à (A23 A22 A21=000).
Cette zone délimite l’intervalle : $00 00 00-$1F FF FF
- La plage d’adresses de base des deux circuits ROM est :$00 00 00-00 0FFF.
- Les 9 lignes d’adresses libres (A12-A20) …xent le nombre de re‡ets ou
d’images de cette zone mémoire ROM : 29 =512 images.

Tab 5.1 : La prem ière im age d’adresses o ccup ée par les circuits RO M
5.3. DÉCODAGE AVEC UN CIRCUIT DÉCODEUR 65

La mémoire vive :

Dans le schéma proposé le ’ET’ logique entre le signal de sélection issu du


décodeur, et le signal U DS=LDS, o¤re à la fois une possibilité d’écriture/ lecture
en mode 8 bits (une seule RAM) et en mode 16 bits (RAM1+RAM2).
- Les circuits RAM (RAM1+ RAM 2) présentent aussi 4Ko de mémoire,
et occupent la deuxième zone mémoire (la sortie O1, équivalente à A23 A22
A21=001).
Cette zone délimite l’intervalle : $20 00 00-$3F FF FF
- La plage d’adresses de base est :$20 00 00-20 0FFF
- Le nombre de re‡ets ou d’images de cette zone mémoire est aussi : 29 =512
images.

Tab 5.2 : La prem ière im age d’adresses o ccup ée par les circuits RAM

Le circuit IC1 :

- IC1 occupe la quatrième zone mémoire (la sortie O3, équivalente à A23
A22 A21=011).
Cette zone délimite l’intervalle : $60 00 00-$7F FF FF
Ce circuit ne présente qu’une seule case mémoire, et puisqu’il est connecté
à la partie basse du bus de donnée (D0-D7), il n’aura comme adresses possibles
que les impaires de la zone occupée.8
>
> $600001 l’adresse debase
>
>
< $600003
- Les adresses possibles de IC1 : :::
>
>
>
> $7F F F F F
:
$7F F F F D
- Le nombre de re‡ets d’adresses de ce circuit est 221 /2=1M images (adresses
impaires).
66 CHAPITRE 5. LE DÉCODAGE D’ADRESSES

Le circuit IC2 :
- IC2 occupe la dernière zone mémoire (la sortie O7, équivalente à A23 A22
A21=111).
Cette zone délimite l’intervalle : $E0 00 00-$FF FF FF
Ce circuit présente aussi une seule case mémoire, connectée à la partie su-
périeur du bus de données (D8-D15), et par conséquent n’aura comme adresses
possibles que les paires de la zone occupée.
8
>
> $E00000 l’adresse debase
>
>
< $E00002
- Les adresses possibles de IC2 : :::
>
>
>
> $F F F F F C
:
$F F F F F E
- Le nombre de re‡ets d’adresses de ce circuit est 221 /2=1M images (adresses
paires).

Fig 5.4 : Répartition de l’espace m ém oire résultant du schém a de la …gure 4.3


5.4. LA GÉNÉRATION DU SIGNAL DT ACK /(V P A-V M A) 67

5.4 La génération du signal DT ACK /(V P A-V M A)

Les circuits périphériques conçus par Motorola pour le MC68000 (et ses
successeurs) tels que le MFP68901 sont des circuits asynchrones possédant une
sortie DT ACK permettant un interfaçage direct avec le microprocesseur.
L’exploitation des signaux générés par le microprocesseur au cours des cycles
de lecture/écriture (AS,U DS ,LDS...), ainsi que les signaux du périphérique
lui même, permet pratiquement un interfaçage adéquat même avec des circuits
réalisés par d’autres constructeurs.
Dans la …gure 5.5, deux circuits logiques 8 bits (74373) sont respectivement
connectés à une partie du bus de données du MC68000.
La génération du signal DT ACK résulte d’un ’ou’ logique entre U DS (ou
LDS) et le signal de sélection du boitier issu du circuit de décodage d’adresses.
La solution proposée, exploite d’une part le fait que le comportement des
signaux U DS/ LDS) est relativement similaire à celui du DT ACK, et d’autre
part le fait que le temps de réponse des circuits 74373 est assez rapide.
D’après les chronogrammes de transferts asynchrones (présentés au chapitre
2), le signal U DS (et/ou LDS) passe à zéro automatiquement après le dépôt
d’une adresse valide sur le bus (AS=0), pour revenir à l’état haut en …n de
cycle.

Fign 5.5 : Exem ple de génération de D TAC K p our deu xcircuits bu¤ers 74373
Dans le cas des circuits périphériques synchrones, le problème d’interfaçage
est solutionné, vu que les lignes V P A/V M A du MC68000 le rendent compatible
à ce type de circuits conçus initialement pour les microprocesseurs 8 bits (68xx).
La …gure 5.6 illustre l’exemple du circuit PIA6821, qui possède trois pins de
sélection CS0, et CS1, et CS2.
Si au cours d’un cycle donné, le circuit est sollicité, le ’ou’ logique entre
AS et le signal de sélection du boitier (issu du circuit de décodage d’adresses)
produira le signal V P A (voir le chronogramme dans le chapitre 2).
En réponse le microprocesseur générera le signal V M A, qui représentera (son
complément) le deuxième signal de sélection du PIA.
68 CHAPITRE 5. LE DÉCODAGE D’ADRESSES

Fig 5.6 : Exem ple d’un interfaçage synchrone (PIA6821)


Chapitre 6

Les Interfaces
d’entrée-sortie numériques

6.1 Introduction

Ce chapitre expose une description succincte de quelques circuits d’entrée-


sortie numérique.
L’objectif principal est de présenter des exemples et des exercices d’applica-
tions de ces circuits dans un système à base du MC68000, soit en mode scruta-
tion, ou en mode interruption.

6.2 Le DUART 68681

Le DUART est un circuit d’interface pour communication série, comportant


deux ports de transmission/réception asynchrone (UART).
Les deux ports sont indépendemment programmables avec la possibilité
d’une transmission/réception simultanée.
Le circuit comporte aussi 6 entrées, et 8 sorties parallèles, pouvant être
utilisées dans le cas d’une communication par poignée de main (handshacking).

69
70 CHAPITRE 6. LES INTERFACES D’ENTRÉE-SORTIE NUMÉRIQUES

Fig6.1 : Exem ple d’interfaçage du DUART68230 au M C68000

6.3 L’interface parallel-Timer PI/T 68230


Ce circuit comporte :
. Trois ports parallèles bidirectionnels (A, B, C), ou les ports A, et B peuvent
être utilisés comme un port 16 bits.
. Un timer de 24 bits, exploitable soit en mode décompteur, où en générateur
de signal carré.
. Cinq lignes (H1-H5) permettent un transfert par poigné de main (hand-
shacking) pour les ports A, B.

. 23 registres internes permettent la con…guration des di¤érentes fonctions


possibles
. Le circuit est interfaçable directement au MC68000 via une liaison asyn-
chrone, et peut être exploité en mode interruption.

Fig6.2 : Exem ple d’interfaçage du PI/T68230 auM C68000


6.4. EXERCICES 71

6.4 Exercices

Exercice 1 :
Développer un programme assembleur permettant la réception série (sur
le canal RxA d’un DUART) d’une chaîne de caractères se terminant par le
caractère @, sous le format : 8 bits + parité paire + 1 bit stop, et avec une
fréquence de 1200 bauds.
La chaîne reçue doit être sauvegardée en mémoire à partir de l’adresse $3000.

Exercice 2 :
On dispose d’un terminal connecté au canal A (émetteur / récepteur) d’un
DUART [Link] désire générer une interruption à chaque fois qu’un caractère
est validé par le clavier du terminal. Cette interruption a pour tâche : la sauve-
garde du caractère à l’adresse $4000, et l’a¢ chage du caractère reçu sur l’écran
du terminal (en utilisant le bloc émetteur A)
1) Donner la séquence d’initialisation du DUART sachant que le n de
vecteur est 65
2) Donner le sous programme d’interruption.
NB : format de donnée : 8 bits + parité paire + 1 bit stop.
- fréquence = 9600 bauds.

Exercice 3
Soit le montage de la …gure 1 .
- En utilisant une temporisation logicielle de 1s (sous programme ’time’).Développer
un programme assembleur permettant l’allumage séquentiel des leds connectés
au port A .
- Ce même programme doit permettre d’arrêter l’allumage après l’appui du
bouton poussoir « BP » .

Figure 1
72 CHAPITRE 6. LES INTERFACES D’ENTRÉE-SORTIE NUMÉRIQUES

Exercice 4 :

Soit le schéma de la …gure 2.


L’ADC utilisé commence une opération de conversion après un niveau bas
sur sa ligne Start , et indique la …n de conversion avec un niveau haut sur la
ligne EOC .
1- Développer un programme qui permet de prélever séquentiellement 100
mesures du signal d’entrée (Les données prélevées sont stockées à partir de
l’adresse adrs).
2- Refaire la question 1, en …xant une fréquence d’échantillonnage de 1khz
sachant que l’horloge du microprocesseur est de 4Mhz.

Figure 2

Exercice 5 :

Soit le schéma de la …gure 3.


On désire tracer une courbe y=f(x) ou y représente un vecteur de 1 K octets
stocké à partir de l’adresse adry, et x un autre vecteur de même dimension stocké
à partir de l’adresse adrx .
Développer un programme assembleur qui permet de tracer :
- L’axe des x et des y .
- La courbe y =f(x).
En supposant que les valeurs de x sont croissantes, et que les deux DAC
utilisés sont rapides.
6.4. EXERCICES 73

Figure 3

Exercice 6 :
Sachant que la fréquence du signal imposé à la pin TIN est de 50khz, et celle
du microprocesseur est de 8Mhz,
-développer un programme permettant la génération d’un signal carré d’une
fréquence de (2khz, 30khz, 200khz) au niveau de la pin TOUT.
-développer un autre programme permettant la génération d’un signal carré
et son complément au niveau des pins PA0 ,PA1 d’une fréquence de 25khz.
74 CHAPITRE 6. LES INTERFACES D’ENTRÉE-SORTIE NUMÉRIQUES
Chapitre 7

Bibliographie

75
76 CHAPITRE 7. BIBLIOGRAPHIE
Bibliographie

[1] M68000 8-/16-/32- Bit Microprocessors User’s Manual, Motorola inc., 1993.
[2] [Link], Microprocesseur 16 bits, édition Masson, 1985.
[3] [Link], Circuits périphériques de la famille 68000, Eyrolles, 1985.
[4] [Link], Assembly language programming for MC68000 family, John
Wiley & Sons,1988.
[5] MC68681,Dual Asynchronous Receiver/Transmitter (DUART) datasheet,
Motorola inc., 1983.
[6] MC68230 Parallel Interface/Timer (PI/T) Datasheet, Motorola inc., 1985.

77
78 BIBLIOGRAPHIE
Annexe A

Annexe

L’ensemble d’informations résumées dans cet annexe est principalement issu


des datasheets fournis par le constructeur.

A.1 Code ASCII

79
80 ANNEXE A. ANNEXE

A.2 Boitiers du MC68000


A.3. JEU D’INSTRUCTIONS DU MC68000 81

A.3 Jeu d’instructions du MC68000


82 ANNEXE A. ANNEXE
A.3. JEU D’INSTRUCTIONS DU MC68000 83
84 ANNEXE A. ANNEXE

A.4 DUART 68681


A.4. DUART 68681 85
86 ANNEXE A. ANNEXE
A.4. DUART 68681 87
88 ANNEXE A. ANNEXE

A.5 PI/T 68230


A.5. PI/T 68230 89
90 ANNEXE A. ANNEXE

Vous aimerez peut-être aussi