Cours sur le Microprocesseur MC68000
Cours sur le Microprocesseur 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
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
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
iii
iv TABLE DES MATIÈRES
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.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
vii
viii TABLE DES MATIÈRES
Chapitre 1
Introduction et Rappel
n
X1
N= ai bi = a0 + a1 b + ::: + an 1b
n 1
N [an 1 ; :::; a0 ] (1.1)
;
i=0
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
Exemple
sur 8 bits :
0 N 28 1 = (255)10 = (F F )16
sur 16 bits :
0 N 216 1 = (65535)10 = (F F F F )16
Remarque
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.
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
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 )
Où
Mc2 et Mc1 sont respéctivement le complément à 2 et à 1 de M.
1.3. LA REPRÉSENTATION DES RÉELS 5
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
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
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 )
- 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.
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
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
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.
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
Circuits d’interface :
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.
- 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
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.
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).
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
- 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
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 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é.
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.
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.
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.
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
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
Dans ce cas l’opérande est spéci…é dans l’instruction par son adresse mé-
moire.
Exemple
Exemple
MOVE.B #100,D0 D0 (100)10
MOVE.B #$64,D0 D0 (100)10
MOVE.B #%01100100,D0 D0 (100)10
Exemple
MOVE.L #’face’,D1 D1 (66616365)16
MOVE.L #’FACE’,D1 D1 (46414345)16
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
Exemple
3.2. LES MODES D’ADRESSAGE 31
Exemple
Exemple
Exemple
Exemple
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
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
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
Exemple
Exemple
La division signée
DIV S < 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
Exemple
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
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.
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
Exemple
Le branchement conditionnel
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
Rappel :
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
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
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 :
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 :
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
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.
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.
49
50 CHAPITRE 4. LA PILE ET LES EXCEPTIONS
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
Passage d’arguments
Exemple
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)
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
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
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).
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.
Remarque
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 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
Fig 5.2 : Exem ple sim ple d’un schém a de déco dage (utilisation d’une seule ligne d’dresse)
=(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.
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 :
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).
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
Les Interfaces
d’entrée-sortie numériques
6.1 Introduction
69
70 CHAPITRE 6. LES INTERFACES D’ENTRÉE-SORTIE NUMÉRIQUES
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 :
Figure 2
Exercice 5 :
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
79
80 ANNEXE A. ANNEXE