Académique Documents
Professionnel Documents
Culture Documents
re
anne.
Plan du cours
Introduction Architecture du microprocesseur architecture externe architecture interne le schma fonctionnel l'UAL l'accumulateur le compteur d'instructions le registre d'adresses le registre d'instructions le registre d'tat les registres temporaires de l'UAL les registres gnraux la logique de contrle
Historique
Le microprocesseur est l'aboutissement de progrs technologiques tant dans les domaines mcanique, informatique et lectronique. Quelques dates :
1690 : Pascal invente la machine calculer entirement mcanique (addition et soustraction) 1800 : Jacquart invente le mtier tisser avec cartes perfores. 1810 : Invention de l'orgue de barbarie (succession de cartes perfores). 1940 : Premier ordinateur relais mcaniques (Navy) 1946 : Premier ordinateur tubes vide (1800). (grande dissipation : 150 kw, problme de rendement et de fiabilit) 1948 : Progrs de la physique quantique avec dcouverte de l'effet transistor. 1950 : Ralisation des premires mmoires ferrites. 1958 : Dveloppement du premier circuit intgr (4 5 tr/puce). 1964 : Ordinateur transistors ( base de circuits TTL : 50 transistors dans une puce) 1970 : Premiers circuits L.S.I.- naissance du premier microprocesseur 4 bits avec 1000 transistors sur une puce. 1975 : Naissance du microprocesseur Motorola 6800 (8 bits) . 1980 : Apparition du microprocesseur 16 bits avec 50000 transistors sur la puce. 1984 : Apparition du microprocesseur 32 bits avec un million de transistor sur la puce. 1994 : Apparition du Pentium avec 3,5 millions de transistors.
3
C'est en 1971 que le premier microprocesseur est sorti des laboratoires d'Intel. Travaillant sur 4 bits et d'une puissance faible l'intrt de ce nouveau composant lectronique ne fut pas vident jusqu' ce que l'ide de le transformer en calculatrice fut trouve. Sept ans plus tard, l'arrive du 8088 multiplie dj cette puissance de calcul par 200 ! Cette date correspond la naissance des vritables micro-ordinateurs. Arrivent ensuite les microprocesseurs 68000 et 80286 (16 bits) avec les Macintosh et P.C. que nous connaissons. Ils ont introduisent l'image et le son. Ensuite, tout n'est plus qu'une question de course la puissance de calcul. Chaque bond technologique apporte sont innovation. Aujourd'hui, le multimdia puis le 3 D et le temps rel. Demain, le monde virtuel !
Principes de base
Les premiers automatismes taient raliss partir de la logique cable selon le synoptique suivant :
Tableau de commande
les systmes logique cable sont conus l'aide de circuits intgrs logiques. Certains de ces circuits font appel :
La logique combinatoire
i j
ei
sj
la logique squentielle
n j
ei
sj
(les sorties dpendent toujours des entres mais aussi des tats antrieurs)
5
Le microprocesseur donne naissance au principe de la logique programme. Le fonctionnement n'est plus dfini par un ensemble de circuits logiques, cbls entre eux, mais par une suite ordonne d'instructions stockes en mmoire et gres par cet lment.
Nouveau synoptique :
Tableau de commande
Interface
Mmoire (instructions)
Microprocesseur
Interface
A B A A
A B B
A B
rsultat AB AB AB
B AB
AB
AB
1re tape
A
2me tape
AB
3me tape
B
4me tape
AB
5me tape A B + AB
7
Ralisation
E remplac C P S Buffer command
A B + AB
PP
PP
P P
P P
P P
NON
OU
ET
M3
M2
M1
La notion de programme
Un programme qui ralise une fonction particulire comprend : Une suite d'instructions. Chaque instruction est constitue de plusieurs microinstructions. Chaque micro-instruction gnre plusieurs micro-commandes destines aiguiller correctement les informations.
Dans l'exemple du ou exclusif, le programme comprend une instruction constitue de 5 micro-instructions ou phases. Chaque phase gnre des micro-commandes qui, au travers des 12 fils, aiguillent correctement les informations.
Remarques : les phases sont commandes par une logique squentielle synchrone. Les micro-instructions sont stockes sous forme de mots dans une mmoire.
Choix entre les deux logiques Courbe d'volution du cot par rapport la complexit.
Cot logique cble logique programme
Critres de choix :
avantage
inconvnient
logique cable
rapidit
spcificit
logique programme
souplesse
lenteur
logique cble : Pour une configuration hardware donne, nous avons une fonction donne. Il y a ncessit de modifier le hardware pour changer de fonction. logique programme Le hardware est fig. C'est le programme qui cre la fonction. Pour une suite d'instructions donne, nous avons une fonction donne. Il y a ncessit de modifier le programme pour une nouvelle fonction
10
Le microprocesseur
Dfinition le microprocesseur, not aussi M.P.U. (Microprocessor unit) ou encore C.P.U. (Central Processing Unit) est un circuit intgr complexe appartenant la famille des VLSI (Very large scale intgration) capable d'effectuer squentiellement et automatiquement des suites d'oprations lmentaires.
Son rle Ce circuit remplit deux fonctions essentielles : le traitement des donnes On parle d'unit de traitement. Cette fonction est ddie l'U.A.L. Elle concerne la manipulation des donnes sous formes de transfert, oprations arithmtiques, oprations logiques.... le contrle du systme Cette fonction se traduit par des oprations de dcodage et d'excution des ordres exprims sous forme d'instruction.
11
Dfinition :
La notion de puissance est la capacit de traiter un grand nombre d'oprations par seconde sur de grands nombres et en grande quantit. Intrinsquement la puissance se joue donc sur les trois critres suivants: La longueur des mots : donnes et instructions (on parle de largeur du bus des donnes). Le nombre d'octets que le microprocesseur peut adresser (on parle de largeur du bus des adresses). La vitesse d'excution des instructions lie la frquence de fonctionnement de l'horloge de synchronisation exprime en MHZ. l'aspect dimensionnel renseigne assez bien de la puissance du composant.
12
Autre s priphriques :
Contrleur de disque Contrleur d'accs mmoire Circuit de gestion M.M.U.
n 11
n'
i 2
3 PIA 6821
i' 1
3 ACIA 6850
p s
t e
b z
c 6840
O1
Compteur O2 programmable O3
13
et Des registres que l'on nomme couramment : Le Compteur d'Instructions (C.I.) Le Registre d'tat Le Registre d'Instructions (R.I.) Le Registre d'Adresses (R.A.) Le Registre temporaire des donnes De base, il existe 6 registres fondamentaux dans une architecture de microprocesseur 8 bits. (Des registres supplmentaires sont ajouts pour rendre la vie plus facile aux programmeurs) Cet ensemble est interconnect au travers de diffrents bus. On trouve trois types de bus :
Le bus des donnes (bi-directionnel) Le bus des adresses (uni-directionnel) Le bus de contrle (bi-directionnel)
Remarquer le bus interne de donnes qui relie tous les diffrents lments du micro-processeur.
14
Son rle : Ce circuit permet de traiter et tester les donnes. Toute instruction qui modifie une donne fait toujours appel l'UAL.
L'entre de L'UAL est connecte au bus interne via p des registres "temporaires" p un registre particulier appel "accumulateur". La sortie de l'accumulateur. Noter : les deux entres sont prcdes par une mmoire tampon. On les appelle encore des registres tampons ou verrou. Ces registres permettent de stocker des octets aux entres de l'U.A.L. L'UAL tant constitu d'une logique combinatoire, elle est dpourvue de moyen propre de stockage. Ce type de registre ne peut tre manipul par le programmeur. Il lui est totalement transparent. l'UAL est connecte uniquement l'entre de
15
L'accumulateur
C'est le registre le plus important du microprocesseur, il sert systmatiquement lorsque le p a besoin de "manipuler" des donnes. La plupart des oprations logiques et arithmtiques sur les donnes font appel au couple "UAL - accumulateur" selon la procdure suivante:
alu
Il en est de mme pour les dplacements et transferts des donnes d'un endroit un autre comme : de mmoire mmoire. de mmoire units d'entre-sortie (I/O). Cette action se fait en deux temps : source vers Accumulateur et ensuite Accumulateur vers destination. Les instructions supportes par un accumulateur sont trs nombreuses. Au niveau de la programmation, il reprsente une grande souplesse d'utilisation! Les autres registres ne permettent que des oprations limites. Certains microprocesseur, possdent des accumulateurs de longueur double tel D chez Motorola et HL chez Intel - dissocis en deux et gnralement baptiss individuellement A et B ou H et L respectivement. Gros avantage prsent par un p possdant plusieurs accumulateurs : les oprations logiques et arithmtiques se font entre accumulateurs limitant ainsi les accs (transferts) avec l'extrieur.
16
Le Compteur d'Instructions
Appel encore Compteur Programme (P.C.) ou Compteur Ordinal (C.O.) Son rle Pointer TOUJOURS le premier octet d'une instruction. Commentaires : Le programme excuter est une succession d'instructions ordonnes (chaque instruction pouvant prend plusieurs octets!) qui se trouve rang dans une zone mmoire, gnralement des adresses successives. le P.C. "repre" le premier octet de chaque instruction du programme. La taille du PC a une longueur de 16 bits ce qui lui permet d'adresser 65536 adresses mmoire soit 64 k octets (le champ mmoire). Notons qu'il est connect au bus interne des donnes. A la mise sous tension, une valeur particulire est dpose sur le bus d'adresses (Dans le cas du 6809, cette valeur est $FFFE). Le contenu des cases mmoires ($FFFE-$FFFF) reprsente en gnral l'adresse o se trouve le premier octet de la premire instruction du programme.
$FFFE $FFFF adresse haute adresse basse
Cette adresse est transmise aux circuits mmoires par l'intermdiaire du bus d'adresse via le Registre d'Adresses. Le P.C. pointe toujours l'adresse du dbut de l'instruction suivante. (A retenir, car parfois il est utile de connatre l'adresse prsente.) Il est possible de recharger le [P.C.] avec une adresse qui ne correspond pas au droulement squentiel du programme. On trouve les dtournements conditionnel et inconditionnel.
17
Le registre d'adresses
Son rle : Le Registre d'adresses ou (R.A.) sert d'interface entre le bus des donnes interne et le bus des adresses. Il "pilote" le bus d'adresses du microprocesseur. Commentaires : D'une longueur de 16 bits, il est constitu de deux registres 8 bits (partie haute et partie basse). Son contenu provient de diffrentes sources : Le Compteur d'instruction Un registre gnral Un emplacement mmoire Le contenu du registre d'adresse pointe la zone mmoire utile au microprocesseur. Une fois que le premier octet de l'instruction en cours est dcod ... Le contenu du Compteur d'Instructions est chang (contient l'adresse du dbut de l'instruction venir). Le contenu du Registre d'adresses change! donc [C.I.] [R.A.] Ce changement correspond... soit une incrmentation du contenu afin de lire l'information complmentaire de l'instruction en cours. soit un chargement d'une nouvelle valeur correspondant une nouvelle zone mmoire utilise temporairement par le microprocesseur (zone diffrente de celle o se trouve le programme).
d'une lecture en mmoire indirectement selon les modes d'adressage utilils) d'un calcul (addition, ...)
(directement
ou
19
Le Registre d'instructions
Commentaires : Le registre est charg pendant le cycle de base extraction-excution. Il reoit l'information (octet) grce au bus de donnes auquel il est connect. L'information qu'il "capture" sur le bus des donnes est utilis par le dcodeur d'instructions. Suivant le protocole ci-dessous : La donne extraite de la mmoire est stocke dans le R.I. (c'est la phase extraction). Ensuite ce contenu est interprt par le dcodeur d'instructions qui agit alors sur la logique de contrle (c'est la phase excution). Cet octet indique au microprocesseur deux choses : Une action (une lecture, une criture ou autre ...) Un lieu d'action (un registre, un accumulateur, une case mmoire...) Le rsultat de cette interprtation se traduit par des niveaux logiques sur le bus de contrle.
20
Le registre d'tat
L'existence de ce registre permet de distinguer le simple calculateur du vritable ordinateur. Son rle Stocker les rsultats des tests effectus par l'U.A.L. aprs traitement sur les donnes Commentaires : L'existence de ces rsultats permet d'crire des programmes avec des branchements conditionnels (nouvelle adresse dans le C.I.). En fonction de l'tat des bits de ce registre le microprocesseur peut, alors, excuter des programmes diffrents. le microprocesseur prend en quelque sorte des "dcisions". Les bits les plus couramment utiliss sont : a- Le bit de retenue Ce bit est dans l'tat actif lorsque le huitime bit du rsultat de l'opration gnre une retenue.` b- le bit de zro Ce bit est actif lorsque l'opration a pour effet de mettre tous les bits d'un accumulateur ou d'un registre la valeur logique 0 (trs utilis pour raliser des compteurs). c- Le bit de signe Information qui indique que le bit le plus significatif (MSB) du contenu de l'accumulateur est un 1 logique.
21
Exemples d'application Pour une soustraction - Selon les rgles de l'arithmtique du complment 2 cela signifie que le nombre est ngatif. Ces 3 bits de base sont parfois complts par des bits supplmentaires choisis par le constructeur.
22
En plus des 6 registres de base que possdent tous les microprocesseurs 8 bits, il peut en exister d'autres destins faciliter la tche du programmeur. On les nomme registres gnraux.
Sur notre schma fonctionnel type, nous avons 3 registres gnraux B, C et D. Ce ne sont pas des registres puissants (tel un accumulateur) puisqu'ils n'ont pas de liaison directe avec la sortie de l'U.A.L. Ces registres peuvent nanmoins affecter le Registre d'Etat.
Parfois, ils peuvent constituer un registre 16 bits - appel paire de registre (ex : BC chez Intel ou D chez Motorola). Ainsi, il est possible de raliser des oprations sur un mot (ex : incrmentation de la paire).
23
La logique de contrle
Appel encore Squenceur ou Unit de contrle (U.C.) Son rle : Permet tous les lments constitutifs du microprocesseur de travailler ensemble et dans l'ordre. Commentaires : La logique de contrle est pilote par le Registre d'Instruction via le dcodeur d'instruction. Cette unit joue en quelque sorte un rle d'intendance puisqu'elle dcide de la disponibilit du bus tel ou tel lment logique. La logique de contrle possde une architecture complexe et trs spcialise. L'lment central est reprsent par le dcodeur d'instructions qui dcode les informations (premier octet) stockes dans le R.I. pour gnrer les signaux ncessaires l'excution de l'instruction . La logique de contrle gnre sur les lignes de contrle des niveaux logiques qui activent les diffrents circuits environnant tels que mmoires et circuits I/O. Cette unit fournit, partir d'un signal de rfrence qui est l'horloge, tous les signaux de synchronisation utiles au bon fonctionnement de l'ensemble. Cette horloge est cre partir d'un oscillateur interne qui utilise un signal en provenance d'un quartz externe.
24
Deux actions complmentaire noter : Cette unit assure : le contrle de mise sous tension du microprocesseur (initialisation des registres). le traitement des interruptions.
25
OV
+5V
Horloge
Bus de commande
{
{
39 38 35 34 33 5 6 2 3 4 40 37 36 32
XTAL EXTAL Q E DMA/BREQ BS BA NMI IRQ FIRQ HALT RESET MRDY R/W D0 D7
24
A0
8 23
A15
31
Signaux mmoire
Brochage du MC 6809
OV
+5V
Horloge
35 34 39 33 5 6 2 3 4 40 37 36 38
Q E TSC BUSY BS BA NMI IRQ FIRQ HALT RESET AVMA LIC R/W
A0
8 23
Bus de commande
{
Signal mmoire
A15
D0 D7
24
31
32
Brochage du MC 6809 E
26
Architecture du 6809
Le microprocesseur 6809 est un processeur 8 bits dont l'organisation interne est oriente 16 bits. Il est fabriqu en technologie MOS canal N et se prsente sous la forme d'un botier DIL 40 broches. Il est monotension(5V).
Il existe deux versions diffrencies par l'horloge. le 6809 est rythm par une horloge interne (f=1 MHZ, 1.5 MHZ et 2 MHZ). le 6809E est rythm par une horloge externe. Ce dernier est adapt aux applications multiprocesseur. Il prsente la particularit de pouvoir tre synchronis par une horloge extrieure. Compatibilit complte entre les 2 versions.
27
Prsentation du brochage
l'alimentation (Vss - Vcc) Le bus des donnes 8 bits (Do D7) Ces huit broches sont bidirectionnelles. Elles permettent la communication avec le bus des donnes interne du microprocesseur. Chaque broche peut "piloter" 1 charge TTL et 8 entres de circuits appartenant la famille 680 0. Bus en logique 3 tats. Le bus des adresses 16 bits (A0 A15 ) Ces broches unidirectionnelles transfrent l'adresse 16 bits fournie par le microprocesseur au bus d'adresse du systme. Mmes caractristiques lectriques que pour le bus des donnes. Bus en logique 3 tats.
Le bus de contrle La broche Read/ Write Cette broche indique le sens de transfert des donnes sur le bus des donnes. Ligne logique 3 tats lecture en cours (D0 - D7 sont des entres) R/ W = 0 criture en cours (D0 - D7 sont des sorties) R/ W = 1
28
Les lignes d'tat du bus BA (Bus available) et BS (Bus state) Information qui permet de connatre l'tat du microprocesseur tout moment. BA 0 0 1 1 BS 0 1 0 1 Etat normal reconnaissance d'interruption reconnaissance de synchronisation externe arrt bus disponible 1er cas : Le microprocesseur est en fonctionnement normal, il gre les bus d'adresses et de donnes. 2me cas : le microprocesseur est en phase de reconnaissance d'interruption pendant deux cycles. Cet tat correspond la recherche des vecteurs d'interruption : Reset, NMI, IRQ, SW1,2 et 3. 3me cas : Ce signal apparat lorsque le microprocesseur rencontre l'instruction de synchronisation externe (niveau bas sur SYNC). Il attend alors cette synchronisation sur une des lignes d'interruption. Les bus sont en haute impdance pendant ce temps. Dernier cas : Correspond l'arrt du microprocesseur (niveau bas sur HALT). Le microprocesseur laisse la gestion des bus des donnes et des adresses un circuit annexe (contrleur de DMA). Les bus sont en haute impdance. La ligne BA au niveau haut indique que les bus sont en haute impdance.
29
Broche d'initialisation RESET Un niveau bas sur cette broche entrane une rinitialisation complte du circuit. Consquences : l'instruction en cours est arrt le registre de pagination (DP) est mis zro les interruptions IRQ et FIRQ sont masques l'interrruption non masquable NMI est dsarme Pour tre active cette ligne doit tre maintenue un niveau bas durant un temps suffisamment long (plusieurs cycles d'horloge). schma adopt gnralement
Vcc Vcc Seuil Reset V 0 t min t V
Le P.C. est initialis avec le contenu des vecteurs d'initialisation qui se trouvent aux adresses $FFFE et $FFFF. Ce contenu reprsente l'adresse du dbut du programme qui sera excut par le microprocesseur.
15
$FFFE $FFFF
2 2
P.C.
30
la broche : HALT (Arrt du microprocesseur). Un niveau bas sur cette broche provoque l'arrt du microprocesseur (mais la fin de l'excution de l'instruction en cours). Il n'y a pas perte des donnes. (BA = BS = 1) Dans ce cas : les demandes d'interruption IRQ et FIRQ sont inhibes les demandes d'accs direct (DMA) la mmoire sont autorise. les demandes d'interruptions RESET et NMI sont prises en compte mais leur traitement est diffr. les broches d'interruption NMI (No Masquable Interrupt) IRQ (Interrupt Request) FIRQ (Fast Interrupt Request) Entres (actives sur un niveau bas) qui peuvent interrompre le fonctionnement normal du microprocesseur sur front descendant de Q. Entres d'horloge XTAL et EXTAL (Extension crystal)
EXTAL XTAL ou Horloge EXTAL XTAL
La frquence du quartz (horloge) est quatre fois la frquence du microprocesseur. Eout reprsente le signal d'horloge commun au systme. Il permet la synchronisation du microprocesseur avec la priphrie. Qout reprsente le signal d'horloge en quadrature avec Eout.
Les donnes sont lues ou crites sur le front descendant de Eout. Les adresses sont correctes partir du front montant de Qout.
31
Cette broche permet de suspendre l'utilisation des bus du microprocesseur, pour faire de l'accs direct ou du rafrachissement mmoire. fonctionnement : Pendant que Q est au niveau haut (si DMA/BREQ bas) cela entrane l'arrt du microprocesseur la fin du cycle en cours ... et non de l'instruction. (BA = BS = 1 ce qui veut dire que tous les bus sont en haute impdance). le circuit ayant gnr cette commande dispose de 15 cycles machines avant que le microprocesseur ne reprenne le contrle des bus.
32
TSC (Tree States Control). Cette broche a le mme rle que l'entre DMA/BREQ prcdente. Possibilit de faire du DMA afin de raliser des oprations de : rafraichissement partage de bus avec un autre microprocesseur LIC (Last Instruction Cycle). Cette broche de sortie est l'tat haut pendant le dernier cycle de chacune des instructions excutes par le microprocesseur. Le cycle qui suit ce signal est donc toujours un cycle de recherche de code opratoire d'une instruction.
AVMA (Advanced Valid Memory Access) (Contrle des ressources communes en multiprocesseur) C'est une broche de sortie qui signale un prochain accs au bus par le microprocesseur. Cette sortie au niveau haut signifie que le microprocesseur utilisera les bus au cours du cycle suivant. La nature prdictive de ce signal permet d'amliorer le fonctionnement d'un systme multiprocesseurs bus partag. Elle permet un contrle efficace des ressources communes d'un dispositif multiprocesseur.
33
BUSY : Occupation des bus : Sortie mise au niveau haut pendant les instructions du type : lecture, criture et excution du premier octet d'un oprande constitu de deux octets (une adresse par exemple). Dans un systme multiprocesseur, ce signal indique le besoin pour un microprocesseur de disposer des bus au cours du prochain cycle pour assurer l'intgrit de l'opration en cours. Cela vite l'adressage simultane d'une mme zone mmoire par 2 microprocesseurs.
Exemple d'application :
LIC BUSY AVMA LIC BUSY AVMA
TSC
TSC
LIC : fin d'excution de l'instruction BUSY : besoin du bus au prochein cycle AVMA : va utiliser les bus au prochain cycle
34
Les accumulateurs A, B ou D. Les registres A et B sont des accumulateurs. Ces registres sont interchangeables (mme rle/instruction) sauf pour les instructions ABX et DAA et les oprations sur 16 bits. Certaines instructions regroupent les registres A et B pour former un seul accumulateur D de 16 bits. Dans ce cas l'accumulateur A reprsente l'octet de poids fort. Les registres pointeurs les registres d'index (registres de 16 bits) Les registres d'index X et Y sont utiliss pour les modes d'adresse index. Les donnes - 16 bits- contenues dans ces registres servent de pointeur de donnes (adresses). Ces adresses "peuvent tre modifies" par une constante, prise comme valeur de dplacement (offset) qui permet alors de calculer une adresse effective. [le pivot + offset] cela revient [X] ou [Y] + le dplacement Le contenu de ces registres peut-tre incrment ou dcrment pour grer des donnes stockes sous forme de table.
les registres S et U (registres 16 bits). - le pointeur de pile S (Systme) est utilis automatiquement par le microprocesseur pour mmoriser l'tat de tous ces registres internes dans le cas o il doit excuter un sous programme (d'interruption ou non).
35
- le pointeur de pile U (Utilisateur) est gr exclusivement par le programmeur pour effectuer, avec facilit, le passage des paramtres entre programmes et sous programmes. (nanmoins, il peut-tre utilis pour sauvegarder un contexte mais cette fois, ce n'est pas automatique !) Les registre U et S peuvent faire office de pointeurs - registres d'index.
Gestion de ces pointeurs : Ces registres "pointent" toujours le haut de la zone mmoire qui leur est attribue. (haut dans le sens adresse la plus grande). On appelle cette zone une pile. Cette pile fonctionne en mode LIFO (Last In First Out) : Remarque : (Le fonctionnement type premier entr - premier sorti s'apparente plus au fonctionnement d'un pipeline appel pile FIFO (First In First Out)).
Le Compteur de Programme (PC) C'est le registre (16 bits) qui pointe la zone o se trouve les instructions devant tre excutes.
36
Le registre de codes condition (CCR) Ce registre donne tout instant l'tat des indicateurs (ou Flag) du microprocesseur. Il y a deux types d'indicateurs : Les indicateurs sur la nature des rsultats lis aux manipulations des donnes. Les indicateurs lis au fonctionnement en interruption. Prsentation des diffrents indicateurs CCRb0 (indicateur de retenue baptis : C) Indique l'existence d'une retenue lors d'une opration arithmtique effectue par l'ALU. CCRb1 (indicateur de dbordement baptis : V) Il est mis 1 si le rsultat en complment 2 d'une opration arithmtique dborde. CCRb2 (indicateur de rsultat nul baptis : Z) Il est mis 1 si le rsultat de l'opration est nul. Cet indicateur est affect par les instructions de chargement, de stockage, des oprations arithmtiques et logiques. CCRb3 (indicateur de rsultat ngatif baptis : N) Il recopie le bit de poids fort (MSB) de l'octet contenu dans le registre avec lequel on vient de travailler. (Un rsultat ngatif en complment 2 positionne ce flag 1). CCRb5 (indicateur de demi-retenue (Half curry) baptis : H). Il reprsente le bit de demi-retenue. Il est utilis par l'ALU comme indicateur de retenue entre les bits b3 et b4 (retenue du demi-octet le moins significatif) dans le cas d'une addition sur 8 bits. Ce flag est pris en compte dans l'instruction DAA pour raliser l'opration d'ajustement dcimal.1
1
Les bits CCRb4, CCRb6 et CCRb7 sont utiliss dans des cas trs particulier que l'on verra dans le chapitre "Interruption".
37
$0000
CCR
E F D
H I
N Z V C
CCR A B
SSSS - 12
{B
7 0
X Y S U PC DP
15 7 0 SSSS
38
Octet1 Octet2
Code opration
Octet1 Octet2
Octet1
Code opration
Octet2 Octet3
{ {
Ces instructions font rfrence des donnes ou a des adresses de diverses faons, ces rfrences tant les modes d'adressage dont dispose le microprocesseur.
Structure d'une instruction Octeti code opratoire ordre oprations : arithmtique logique transfert expression directe ou indirecte (modes d'adressage) facultatif adresse Octeti+1 post-octet Octeti+2 Octeti+3
code oprande
Dure d'une instruction L'excution complte d'une instruction n'est pas instantane! L'unit de mesure est la priode de l'horloge : T encore appel "Cycle Machine". ex: Frquence de l'horloge E= 1 MHz donc T = 1 ms.` La dure dpend de la complexit de l'instruction, son expression est :
extraction-excution
40
Registre d'Instructions
Dcodeur d'Instructions
logique de contrle mission de signaux vers les circuits R/W Registres Mmoires Priphriques Registre d'Adresses
extrieur
est
ncessaire
pour
raliser
La dure totale de l'excution d'une instruction est : m.TE +1.TE +1.TE soit (m+2)TE.
41
Le jeu d'Instructions
Les instructions sont rparties en groupes dtermins par leurs caractristiques. Classification
Instructions de traitement des donnes Instructions arithmtiques addition (DAA, ABX, ADC) multiplication (MUL) soustraction (SBC, SUB) Instructions logiques rotation droite et gauche (ROL, ROR) dcalage droite et gauche (ASR, LSR et ASL, LSL) les fonctions logiques de base (AND, OR, EOR) l'incrmentation/dcrmentation et complmentation (COM - NEG - NOP - INC - DEC - CLR) Instruction de transfert de donnes transferts internes entre registres (EXG - TFR) transferts externes avec la mmoire (LD - ST) Instructions de tests et de branchements instructions de tests sur un bit / un octet (BIT, TST) instruction de comparaison (CMP) instruction de branchement conditionnel (branchement les indicateurs du CCR sont actifs Instructions de branchement inconditionnel et de saut. (provoquent la rupture de la squence sans condition) saut relatif (BRA, BRN : 1 ou 2 octets) saut absolu (JMP : 2 octets)
42
si
Instructions dappel et de retour de sous-programme Appel : saut absolu (JSR) saut relatif (BSR) Retour : RTS le contenu (PC) sauvegard dans la pile est restitu dans le registre PC. Reprise du programme lendroit o il a t interrompu.
Instructions oprant sur les pointeurs U, S et X, Y. Load effective adress (in register) : LEA. Permet de manipuler des donnes sur 16 bits. Ces donnes reprsentent gnralement des adresses. Instructions oprant sur les pointeurs S et U Emplilement des registre dans la pile (PSH) Dpilement des registres de la pile (PUL) Aprs chaque sauvegarde/extraction, le pointeur est automatiquement dcrment/incrment de 1
Dfinition d'une pile : zone mmoire RAM gre par des pointeurs qui permettent de transfrer rapidement des donnes dans des cases mmoires selon un protocole bien tabli.
Ordre des actions : Toujours suivie de loprande qui permet de slectionner les registres :
b0 A CCR
43
Le microprocesseur 6809 possde 59 instructions de base. Combines avec le jeu des modes dadressage (9 au total), elles fournissent 1464 codes opratoires diffrents. (Pour le 6800 ou 6802, on avait 72 instructions de base et 193 codes opratoire)
ladressage inhrent ou implicite ladressage immdiat ladressage tendu ladressage tendu indirect ladressage direct ladressage par registre ladressage index direct ladressage index indirect ladressage relatif
Au moyen des signaux quil gnre sur le bus dadresses, le microprocesseur a la possibilit dadresser les divers circuits mmoires et interfaces, qui lui sont connects au travers des bus afin d'accder leur contenu.
44
Cette accs se traduit par une opration dadressage Cette opration peut se faire de plusieurs faons grce la prsence de diffrents modes dadressage.
Remarque : La puissance dun microprocesseur dpend de son jeu dinstructions mais aussi des ses modes dadressage.
45
Ladressage inhrent est utilis par les instructions qui agissent seulement sur les registres internes du microprocesseur. Ici, le code opratoire de linstruction contient toute linformation dadressage ncessaire (adresse source ou/et adresse destination).
46
Adressage par registre Le code opratoire est immdiatement suivi dans la mmoire dun octet qui dfinit un registre ou le jeu de registres devant tre utiliss par linstruction. Cet octet est appel post-octet. Le tableau ci-dessous prsente le codage de ce post-octet : b7 b4 Source Post-octet transfert/change code 0000 0001 0010 0011 0100 0101 1000 1001 1010 1011 Exemple : Registre D X Y U S PC A B CCR DP b3 b0 Destinataire
47
CCR E F H I N Z V C D X Y S U PC DP
15 7 0
{A B
1F 12
Adr Adr+1
Adr+2
48
Adressage immdiat
La donne se trouve immdiatement aprs le code opratoire de linstruction. La donne existe sous la forme de 1 ou 2 octets. (le code opratoire est immdiatement suivi en mmoire de la donne sur laquelle porte lopration) Cette adressage concerne tous les registres internes sauf le DP. Exemples : LDA #$35
CCR E F H I N Z V C D X Y S U PC
15
{A B
35
7 0
86 35
Adr Adr+1
DP
adr
7 0
Adr+2
LDY#$1997
CCR E F H I N Z V C D X Y S U PC
15
{A B
1997 adr
7 0
10 8E 19 97 Adr+4
DP
49
Adressage direct On exprime le lieu de l'action par l'expression de l'adresse effective. Le code oprande indique la partie basse de cette adresse. La partie haute de ladresse est fournie par le contenu du Registre Direct de Page (DP).
Intret : Ce mode ncessite moins de place mmoire (1 octet donc taille mmoire rduite) par consquent lexcution de linstruction est plus rapide. Remarque : Avec ce mode, la mmoire est dcoupe en 256 pages de 256 octets chacune. Ce mode est intressant dans le cadre des systmes dexploitation temps rel multitche, o on alloue chaque tche une page.
Exemples : LDA $97 Charge l'Accumulateur A avec le contenu dont l'adresse est forme par [DP] et l'oprande
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
37
7 0
96 97
Adr Adr+1
adr 19
0
Adr+2
37
1997
LDY $97 Charge le registre Y avec le contenu sur 16 bits dont les adresses sont [DP] et partie basse et partie basse+1.
50
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
10 9E 97
1960 adr 19
0
Adr+3
19 60
1997 1998
51
Adressage tendu(direct)
On exprime le lieu de l'action par l'expression de l'adresse effective. Le contenu des deux octets qui suivent immdiatement le code opratoire spcifi reprsente ladresse (16bits) de la donne. L'instruction occupe de 3 4 octets. exemples : LDA $1997 Charge laccumulateur A avec le contenu de ladresse 1997.
CCR E F H I N Z V C D X Y S U PC DP
15
A B
37
7 0
B6 19 97
adr
7 0
Adr+3 37 1997
52
CCR E F H I N Z V C D X Y S U PC
15
A B
10 BE 19 97
1960 adr
7 0
DP
Adr+4
19 60
1997 1998
53
Adressage tendu indirect Identique au mode dadressage tendu mais on accde la donne en passant par une adresse intermdiaire spcifie aprs le code opratoire. Les deux octets qui suivent le code opratoire pointent une adresse dont le contenu reprsente ladresse de la donne recherche. Le code opratoire est form de deux octets - le post-octet est toujours $9F. Exemples : LDA [$1997] Chargement de laccumulateur A avec le contenu dont ladresse se trouve en 1997-1998.
CCR E F H I N Z V C D X Y S U PC DP
15 7 0
{A B
37
7 0
37
1960
A6 9F 19 97
adr
Adr+4
19 60
1997 1998
LDY [$1997] Chargement du registre Y avec le contenu dont l'adresse (partie haute) se trouve en $1997.
CCR E F H I N Z V C D X Y S U PC
15
{A B
37 60
1960 1961
10 AE 9F 19 97
3760 adr
7 0
DP
Adr+4
19 60
1997 1998
54
Adressage index
Deux possibilits : adressage index direct et indirect Dans ce mode, les registres pointeurs (X, Y, U, S et PC) sont utiliss pour effectuer le calcul de ladresse effective de la donne recherche. Il existe 5 types dadressage index. l'adressage index avec dplacement nul l'adressage index avec dplacement constant (non nul). l'adressage index avec dplacement accumulateur l'adressage index avec auto-incrmentation/dcrmentation l'adressage index relatif au Compteur Programme (PC)
Loctet qui suit le code opratoire (le post-octet) spcifie : la nature de lindexation le type dadressage (direct ou indirect) le registre pointeur utilis. (le tableau ci-joint montre le format de ce post-octet.)
Constitution du post-octet. b7=1 b4 : indicateur d'indirection o non b4 = 1 : mode indirect b4 = 0 : mode direct b7=0 b4 reprsente le signe
55
b5 et b6 reprsente le registre concern b0,b1,b2 et b3 indiquent le mode dadressage. Remarquer loctet $9F dj vu dans le mode dadressage indirect.
56
Le registre pointeur contient ladresse effectivee (A.E.) de la donne. Un chargement pralable du registre est impratif.
A B
37
7 0
A6 84
1997
DP
adr
7 0
Adr+1
37
1997
57
Ladresse effective de la donne est la somme du dplacement (constante en complment deux) et du contenu du registre nomm pris comme base.
Syntaxe :
Un code opratoire + un post-octet + un oprande.
Trois formes sont possibles selon l'expression de la valeur de la constante qui suit le post-octet. Le dplacement s'exprime sur 4 bits + un bit de signe. Le dplacement est compris dans l'intervalle [-161O 151O] Le post-octet suffis. Exemple : LDA -2,X Code A6 1E soit 0 00 1 1110
Le dplacement s'exprime sur 7 bits + un bit de signe. Le dplacement est compris dans l'intervalle [-1281O 1271O] Un octet supplmentaire aprs le post-octet est ncessaire. Exemple : LDA 53,X Code A6 88 soit 1 00 0 1000 35 (5316)
Le dplacement est compris dans l'intervalle [-327681O +327671O] Deux octets supplmentaires aprs le post-octet sont ncessaires. Exemple : LDA $997,X Code A6 89 soit 1 00 0 1001 09 97
59
Ce mode est semblable au mode prcdent except que la valeur du dplacement (exprim en complment 2) se trouve dans un accumulateur afin dtre ajout au contenu du registre pointeur nomm pour former lA.E. de la donne.
Les contenus de laccumulateur et du pointeur ne sont pas modifis par cette addition.
Intret la valeur du dplacement est calcule par le programme en cours dexcution, en fonction des vnements.
60
Exemples :
LDA B,X
Chargement du registre A avec le contenu se trouvant l'adresse exprime par la somme des contenus des registres B et X.
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
00 37
7
A6 85
0
1960
+
adr
0
adr+2
00
1997
LDX D,Y
Charge le registre X avec le contenu se trouvant l'adresse exprime par la somme des contenus des registres D et X ainsi que D+1 et X.
CCR E F H I N Z V C D X Y S U PC DP
15 7
A B
09 97
7
AE AB
0
+
adr+2 20 00 1997 1998
61
62
Le registre concern contient ladresse de la donne. En plus de l'utilisation en mode index avec dplacement nul, il est possible de modifier le contenu du registre selon le mcanisme suivant : La pr-dcrmentation Le pointeur est dcrement de un ou deux avant utilisation. La post-incrmentation Le pointeur est incrment de un ou de deux aprs utilisation. Dans tous les cas, le contenu du registre est modifi. Intret : Une incrmentation/dcrmentation permet de grer des tables de donnes 8 bits (octets). Deux incrmentations/dcrmentations permettent de grer des tables de donnes de 16 bits (mots ou adresses) Les aspects pr-dcrementation et post-incrmentation sont trs utiles pour crer des piles logicielles supplmentaires dont le comportement est identique celui des piles S et U (hardware) (gestion efficace de blocs-mmoire organiss en donnes 8 bits ou 16 bits)
63
Exemples :
LDA 0,-X
Code
A6 82 soit 1 00 0 0010
Chargement de l'accumulateur A avec le contenu se trouvant l'adresse exprime par le contenu de X dcrment de 1.
LDY 0,--X
Code
10 AE 83 soit 1 00 0 0011
Chargement du registre Y avec le contenu se trouvant l'adresse exprime par le contenu de X dcrment deux fois.
LDA 0,X+
Code
A6 80 soit 1 00 0 0000
Chargement de l'accumulateur A avec le contenu se trouvant l'adresse exprime par le contenu de X. Aprs le chargement, le contenu de X est incrment de 1.
LDD 0,X++
Code
EC 81 soit 1 00 0 0001
64
Chargement de l'accumulateur D avec le contenu se trouvant l'adresse exprime par le contenu de X. Aprs le chargement, le contenu de X est incrment deux fois.
65
Un programme qui contient des instructions exprimes dans le mode tendu ou direct, faisant rfrence des adresses situes lintrieur de sa zone dimplantation en mmoire ne pourra pas tre excut si lon transfre son code objet dans une autre zone mmoire. On dit, dans ce cas, que le programme nest pas translatable. Cet inconvnient peut-tre vit en utilisant le mode dadressage index avec dpacement relatif au PC. Syntaxe : code opratoire destination-(adr+4), PC
l'expression de "destination-(adr+4)" est code en complment 2. Exemples : Chargement du registre A avec le contenu se trouvant l'adresse $1997. Code $1000 adr adr+1 adr+2 adr+3 A6 8D 09 93
soit 1 00 0 1101
Justification : Si adr=$1000 alors destination ($1997) est gale $1997-$1004 soit $993. Il faut tenir compte de la longueur de l'instruction puisque le PC pointe toujours l'instruction suivante. LDA $FO,PC
66
chargement de laccumulateur A avec le contenu mmoire dont ladresse est la valeur de PC + $FO. Code adr adr+1 adr+2 A6 8C F0
La donne se trouve l'adresse (adr+3)-$10 donc en amont du programme. Avantage du mode index relatif au PC : Si lensemble du programme est charg une autre adresse, le mme code objet permet toujours de retrouver la donne dans le corps du programme et dobtenir ainsi une excution correcte. Le mme traitement appliqu lensemble des instructions du programme, le rendra entirement translable et totalement indpendant de son implantation physique dans la mmoire. Les adresses des donnes tant toutes refrences par rapport la valeur relle du PC au moment de lexcution.
Illustration :
LEAX ETIQ, PC Chargement du registre X avec le contenu dont l'adresse est exprime par la valeur issue de l'opration ETIQ-(adr+4).
67
CCR E F H I N Z V C D X Y S U PC
15
A B
1122
30 8D 00 11
adr DP
7 0
Dans ce mode, lAdresse Effective est contenue lemplacement indiqu par le contenu du registre dindex utilis auquel on additionne le dplacement. Ici, lA.E. transite par une adresse intermdiaire. Syntaxe : A.E(H)={[Registre] + expression du dplacement}. A.E(L)={[Registre] + expression du dplacement+1}. Tous les modes dadressage index peuvent travailler en indirection sauf les modes : auto-incrmentation/dcrmentation par 1 dplacement constant cod sur 5 bits Illustration : LDA [$960,X]
68
Chargement de A avec le contenu mmoire dont ladresse est le contenu de [X+960, X +961].
CCR E F H I N Z V C D X Y S U PC
15
A B
37
7 0
1OOO
A6 99 09 60
adr DP
7 0
37
1997
69
Quelques exemples : 1- Adressage index indirect avec dplacement nul. LDA [0,X] Chargement de A avec le contenu mmoire dont ladresse est [X, X +1].
2- Adressage index indirect avec dplacement constant. LDA [$35,X] Chargement de A avec le contenu mmoire dont ladresse est [X+$35, X +$36].
3- Adressage index indirect avec dplacement accumulateur. Le dplacement exprim en complment deux est contenu dans A, B ou D. LDU [D, Y] Chargement du registre U avec le contenu mmoire dont ladresse est [Y+D] et [Y+D+1]
indirect
avec
double
auto-
Addition du contenu de A et du contenu-mmoire dont ladresse est [U] et [U+1], suivi de deux incrmentations.
70
5- Adressage index indirect relatif au compteur programme. Les dplacements sont cods sur 8 ou 16 bits en complment 2. LDA [$1997, PC] Chargement de A avec la valeur dont ladresse est la valeur issue de l'opration PC + $1997. Adressage relatif
Constitution
code opratoire code oprande adr. relatif court adr. relatif long 1 octet 1 octet + $10 1 octet 2 octets
Le code opratoire reprsente le test et le type de branchement (court ou long : $10) raliser. Le code oprande reprsente le dplacement sign qui est ajout au contenu du PC Dans le mode d'adressage relatif court, le dplacement est exprim sur un octet en complment deux -128 dplacement +127 Dans le mode d'adressage relatif long, le dplacement est exprim sur deux octets en complment deux -32768 dplacement +32767
71
Dans la syntaxe assembleur il faut rajouter un (L) comme prfixe dans le cas d'un saut long.
72
Quelques exemples :
Adressage relatif court avec un dplacement positif. BEQ LOOP branchement si Z=1
CCR E F H I N 1 V C D X Y S U PC DP
15 7 0
A B
27 33
7 0
adr
Adr+2
op
$1997
?
CCR E F H I N 1 V C D X Y S U PC DP
15 7 0
A B
10 26 16 7B
adr
Adr+4 op $3010
73
74
Principe de fonctionnement
Cellules mmoires
Compteur ordinal
code opratoire
Registre d'Instruction
Dcodage
Logique de contrle
Squenceur de commandes
Excution
75
Fonctionnement squentiel
La ralisation de toute instruction s'effectue selon le cycle extractionexcution qui se dcompose comme suit : 1er temps : Phase d'extraction Recherche de linstruction suivi du dcodage
2me temps : Phase d'excution Excution du code opratoire Cette tape est plus ou moins longue suivant la complexit de l'instruction.
Chaque opration lmentaire constituant ce cycle est valide par un signal dhorloge.
Illustration :
76
Excution
cycle machine dpot de l'adresse puis stockage du code dans le R.I. dcodage du code
77
Simulations
Premier exemple : $0000 $0002 $0004 Deuxime exemple : $0000 $0003 $0006 $0009 $000C $000F $0012 Commentaire :
#$10 #$29 12
86 8B
10 29
# 3 3 3 3 3 3 2
~ 5 5 5 5 5 5 3
PC H L 00 0C
00
15
00 00
0A 0B
Son architecture et ses diffrents modes dadressage permettent daborder des concepts logiciels tels que : La gnration de programmes translatales, rentrant et stucturs.
Prsentation de ces concepts 1- Dfinition d'un programme translatable Ce type de programme fonctionne quelque soit ladresse laquelle il est implant en mmoire. Possible grce aux modes dadressage relatif (BSR, BRA) et index par rapport au PC (LDA valeur, PC). L'avantage de ce mode de programme est qu'il est utilisable dans n'importe quelle application. Le principe du programme relogeable existe aussi. Dans ce cas, ( la diffrence du cas prcdent) les adresses relatives sont transformes en adresses absolues aprs dition des liens.
2- Dfinition d'un programme rentrant. Un programme rentrant est un programme qui peut-tre utilis nimporte quel niveau de priorit (Pour cela il doit tre interruptible).
79
Dans ce cas, le programme dinterruption peut utiliser la mme squence de programme que celle quil vient dinterrompre. Il ne doit pas perturber les informations et rsultats de la tche interrompue. ncessit dutiliser deux zones de sauvegarde des donnes. Le concept de rentrance est possible avec un microprocesseur possdant plusieurs pointeurs de pile pour grer plusieurs zones de sauvegarde. Rendu possible avec l'existence des instructions de manipulation de pile hardware PSH et PUL et logicielle STA, -X et LDA, X+.
Equivalence : LDX STX LDA STA ,U++ ,--U ,U+ ,-U quivalent quivalent quivalent quivalent PULU PSHU PULU PSHU X X A A
Illustration :
80
Appel procdure
Programme d'interruption
Sauvegarde du contexte dans la pile S
81
Les langages de programmation Un langage est un ensemble de rgles ou commandes utilises par un programmeur afin de raliser un programme crit tout d'abord sous la forme d'un algorithme et ensuite traduit par un organigramme. Le langage volu Les critres pris en compte lors du choix dun langage sont : le temps de programmation la maintenance la transportabilit Un programme crit dans un langage volu donn peut tre implant "facilement" sur diverses machines sans rcriture. (compilateurs appropris) Un programme crit dans un langage volu est traduit en binaire de deux manires diffrentes. En faisant appel soit un interprteur soit un compilateur. Tous deux sont des progammes puissants de traduction. Un interprteur agit pendant lexcution du programme. Chaque ligne du programme est traduite en instruction binaire juste avant son excution. A mesure quune ligne est excute, la traduction de la ligne suivante commence. Un compilateur traduit dabord le programme en langage hexadcimal et ensuite le code gnr est sauvegard sous la forme dun nouveau programme binaire. (ressemble beaucoup un assembleur). Le compilateur prsente linconvnient par rapport linterprteur, de ncessit beaucoup plus de mmoire mais par contre il est beaucoup plus rapide lexcution.
82
Lapprentissage dun langage volu rapporte strictement rien en ce qui concerne la connaissance de larchitecture fondamentale dun microprocesseur. Par contre la programmation langage machine ou assembleur ncessite une bonne connaissance de larchitecture du microprocesseur. Quelles sont les raisons pour lesquelles on choisit un langage moins volu? Deux raisons cela : Gain en place mmoire : Le langage volu ncessite pour effectuer la mme tche beaucoup plus dinstructions machines. Exemple : une simple instruction du type WRITELN peut faire appel une centaine dinstruction. Ainsi plus despace-mmoire est ncessaire. Gain de temps lexcution : Plus dinstructions de base implique un temps dexcution plus lent moins de disposer de microprocesseur puissant (rapide) avec un grand champ mmoire.
Le langage dassemblage Ce langage est lintermdiaire entre un langage volu comme C ou Pascal et le langage machine. Le langage dassemblage est li au microprocesseur.
83
Chaque processeur possde son propre ensemble dinstructions Ses avantages : minimise le code meilleur contrle sur le matriel. [bien adapt lcriture des routines dentres/sorties] Lassembleur est un petit compilateur ! Ce langage sappuie sur labrviation de terme anglais pour chaque instruction. Exemple de la fonction de remise zro (CLEAR) : CLR
84
Vocabulaire Le langage dassemblage C'est un langage constitu dinstructions et de pseudo-instructions. Un programme crit dans ce type de langage est une suite de lignes symboliques crites dans un ordre logique.
Lassembleur Cest un programme de traduction qui traite chaque ligne du programme source pour fournir le code machine. Il dtecte les erreurs. Le rsultat de son travail sappelle le programme objet.
Macro-assembleur Cest un assembleur qui permet de traiter des macro-instructions : ensemble dinstructions regroupes sous formes de fonction.
Cross-assembleur Cest un assembleur qui permet de dvelopper en langage dassemblage, une application utilisant un microprocesseur donn laide dun systme possdant un microprocesseur diffrent. Le systme, dit hte, engendre du code machine pour le microprocesseur cible. Intressant pour les petits systmes car dans ce cas, on bnficie des avantages dun systme plus important : Editeur, Systme dexploitation, etc...
Dsassembleur :
85
C'est un logiciel qui travaille linverse de lassembleur. A partir dun programme machine, il construit le langage mnmonique. Exemple : $86 traduction de LoaD accumulateur A
86
Lassembleur 6809 Le langage dassemblage est un langage de programmation utilise dans les systmes de dveloppement, dispositifs daide lcriture de programmes. Il permet de traduire un programme source crit en langage symbolique (ou mnmonique) en un langage binaire. Cette opration appele "Assemblage" est ralise par un programme appropri appel "Assembleur". Il gnre directement un programme excutable par le microprocesseur encore appel "programme objet".
Comme tout langage, ce dernier possde une syntaxe et un vocabulaire propres quil est indispensable de connatre afin dtablir le programme source.
Syntaxe du langage assembleur (rgles dcriture) Chaque ligne dinstruction du programme comporte quatre parties appeles "champs". Chaque champ est spar par un blanc (espace). Illustration :
Etiquette
Code
Code
Commentaire
87
88
Etiquette Ce champ nest pas obligatoire. Une tiquette est un symbole dau plus 6 caractres alpha-numriques, commenant obligatoirement par une lettre de lalphabet. Dans le cas, o le champ tiquette est vide au moins un blanc doit prcder le champ suivant. Si le 1er caractre de la ligne est une *, la ligne est alors considre comme un commentaire Le rle de ltiquette est de permettre de rprer la position dune instruction dans le programme.
Le champ opration Il contient soit un code mnmonique de lopration effectuer soit une directive dassemblage.
Le champ oprande Il complte le champ opration et contient la "donne" ncessaire lexcution de linstruction. Sa syntaxe est varie et dpend du mode dadressage attribu linstruction. On trouve : des tiquettes (des noms) des symboles (nom de registre) des nombres des expressions : Combinaison des 3 lments ci dessus.
89
Les nombres peuvent tre reprsents dans diffrentes bases dcimale, octale(@), hexadcimale ($) et binaire (%). Lidentificateur de la base seffectue grce un suffixe ou un prfixe dans le cas de certain assembleur (H). Sans indication particulire, un nombre est interprt comme un dcimal. Les expressions Elles se composent dune suite de nombres et de symboles spars par des oprateurs logiques, arithmtiques et des parenthses. Elles servent spcifier une valeur selon les rgles de la logique et de larithmtique. Le champ commentaire facultatif, il permet de documenter le programme. Tous les caractres dcriture disponibles dans l'diteur sont utilisables.
90
Une directive dassemblage (ou pseudo-instruction) est une commande que le programmeur utilise pour donner des directives lassembleur et qui agit sur le processus dassemblage. On distingue 5 catgories de directive. Affectation de symboles : EQU et SET Gestion de lespace mmoire : ORG et RMB Inscription de constantes en mmoire : FCB, FDB et FCC Assistance la programmation : END et OPT Prsentation des listings : TITLE et PAGE
EQU : affectation dune valeur un symbole ou tiquette Syntaxe : Symbole EQU Expression
Rle : Cette directive affecte au symbole situ dans le champ tiquette la valeur (8 ou 16 bits) de lexpression place dans le champ oprande. Les symboles utiliss avec EQU ne peuvent pas tre redfinis dans la suite du programme.
SET : affectation temporaire dune valeur un symbole. Rle : SET est semblable EQU except que laffectation est temporaire. Les symboles dfinis avec cette directive peuvent tre nouveau dfinis par la suite dans le mme programme.
91
Exemples : ARG ARG ARG SET SET SET $2 ARG*$2 ARG*ARG ARG=$2 ARG=$4 ARG=$10(1610)
Rle : Dfinition dune adresse dorigine. Charge le PC la valeur spcifie par lexpression situe dans le champ oprande. Remarque : Plusieurs ORG peuvent-tre utiliss dans un mme programme source. On stucture ainsi lespace mmoire en blocs : le programme principal les sous programmes la gestion des interfaces Chaque bloc est initialis par un ORG.
RMB : Reserve Memory Bytes (Rservation doctets en mmoire) Syntaxe : Symbole RMB Expression
Rle : Provoque lors de lassemblage un "saut" du PC, dun nombre doctets gal la valeur de lexpression. Le but tant de rserver une zone mmoire pour un usage particulier.
FCB : Form Constant Byte (dfinition dune constante dun octet) Syntaxe : Symbole FCB expr1, expr2...
92
Rle : Inscrit la valeur exprime sur 8 bits des expression du champ oprande dans les cases mmoires dfinies par la valeur du PC. Pour chaque criture en moire : PC = PC+1 Remarque : Les expressions peuvent tre numriques ou alphanumriques. Le symbole ' plac devant le caractre, le dsigne comme tant alphabtique, dans ce cas, le code ASCII est mis en mmoire. Exemples : ORG $4000 $4000 01 DATA FCB 1,$62+$48,'A,'B AA FCB $FF 41 FCB '4,$4 42 FCB DIX+2 FF DIX EQU $A 34 LDX DATA 04 END 0C 8E 40 00
FDB : Form Double Byte Constant (dfinition dune constante de deux octets) Syntaxe : Symbole FDB Exp1, Exp2,...
Rle : Identique FCB mais cette fois, lexpression (valeur numrique et symbole) reprsente une valeur sur 16 bits. le PC est incrment de 2 pour chaque mot crit. Exemples : DATA ORG FDB FDB $4000 $1997,$5432+$ABCD 'A,'B $4000 19 97 FF 00 05 00
93
DIX FIN
FF 00 41 00 42 00 35
0A 00 10 00 04 00 00
94
FCC : Forme Constant Character string (dfinition dune constante chane de caractres Syntaxe : Symbole FCC dlimiteur chane dlimiteur
Rle : Inscrit en mmoire le code ASCII des caractres situs dans le champ oprande entre les dlimiteurs. Et PC = PC+1 pour chaque caractre inscrit. RemarqueS : Les deux dlimiteurs doivent tre identiques et peuvent tre n'importe lequel des caractres imprimables (on prend en gnral //). L'expression FCC /A/ est quivalent FCB 'A Illustration :
MESS
$2000
46 49 4E 4C 55 4E 44
49 4D 41 52 44 49 35
Rle : Cette directive marque la limite du programme source. Les lignes situes aprs cette directive sont ignores par l'assembleur.
95
Rle : Fait avancer le papier de l'imprimante au dbut de la page suivante. NAME : nom du programme Syntaxe : NAME PMAK
Rle : Cette directive permet de donner un nom au programme qui apparait en tte de page.
Rle : Cette directive fournit des complments d'informations lors de l'assemblage. Les options sont crites dans le champ oprande et sont spares par des virgules. Diffrentes options : ABS : ABSolu, le programme est crit avec un adressage absolu. REL : RELogeable, le programme est crit avec un adressage relatif. CRE : permet d'obtenir la table dite des rfrences croises. L : demande l'impression du listing aprs opration d'assemblage termin.
96
Lopration dassemblage
Elle seffectue gnralement en deux tapes (2 passes). 1re passe : Consiste en une lecture de lensemble du programme source. Au cours de cette phase, 3 analyses sont effectues : Analyse lexicographique : Compare le code opratoire une table interne (fichier comprenant les codes). Analyse syntaxique : Cette analyse dtecte : les tiquettes manquantes les codes opratoires errons les oprandes manquants
Analyse smantique : Cette analyse permet de dire si une ligne syntaxiquement correcte un sens. Dtecte un symbole non dfini par ailleurs. Lassembleur construit la table des symboles employs. Il regroupe tous les symboles dfinis par le programmeur en leur donnant une valeur chacun deux (Cration de la table des rfrences croiss). Il gnre un code intermdiaire qui servira au second passage. Les directives dassemblage sont galement interprtes. 2me passe :
97
Lassembleur gnre le code objet en tenant compte des adresses et des donnes relles qui figurent dans la table des symboles. 3me passe : Cette phase fournit le listing avec son code objet.
98
OPT
ABS
Dfinition des variables DEBUT EQU $4000 TIRQ EQU $5000 TFIRQ EQU $6000 MEM EQU $2000 PIA EQU $EF20 Rservation des cases mmoires ORG MEM MEM1 RMB 1 MEM2 RMB 2 PILE RMB 100 PPILE EQU * Rservation des ports ORG PIA DDRA RMB 1 CRA RMB 1 Programme principal ORG DEBUT LDS #PPILE " " " " BRA * Traitement des interruptions IRQ ORG TIRQ " " RTI Traitement des interruptions FIRQ ORG TFIRQ " "
99
RTI Initialisation des vecteurs d'interruption ORG $FFF6 FDB TFIRQ FDB TIRQ FDB TSWI FDB TNMI FDB DEBUT END
100
Environnement :
Assembleur
Le systme dexploitation se charge en RAM aprs la commande g (ou MDOS) Toutes commandes KDOS doit comprendre la source et la destination du fichier concern (par dfaut 0). Deux lecteurs de disquette : disque 1 : On utilise le label 0, on y trouve la disquette systme, toujours protge en criture. disque 2 : avec le label 1, on y trouve la disquette des programmes utilisateurs : fichier.ASM et fichier.LO Exemples de commande systme : CAT (pour catalogue)
101
102
Q quivalent S(ave) : sauvegarde du programme lendroit prcis par la commande BUILD. Q (une deuxime fois) sortie de lditeur. Retour KDOS.
Une fois charg, on se trouve automatiquement dans le moniteur. Excution du programme excutable : G $adr
103
La programmation stucture
Ce type de concept facilite la mise au point et la maintenance dun programmme. Une bonne comprhension du programme est possible dans le cas o le programme est crit comme une suite de modules simples. Avec pour chaque module une entre et une sortie. Il peut tre vu comme un sous-programme ou comme une macroinstruction. Ainsi le programme principal apparat comme une suite dappels de sousprogramme dans lequel il ny a pas de rupture de squence ni saut systmatique.
104
module 2 entres
105
test A
Transformation
proc C
Avec Proc C : Ecriture du programme en langage pascal : Dfinition des procdures : Procdure PROC_A ; Procdure PROC_B ; Procdure PROC_C Le programme Begin if test_A then if test_C then begin BLOC PROC_C end else PROC_A else if test B then PROC_C else begin PROC_B
106
107
Stucture conditionnelle de base Organigramme de la stucture "Si alors sinon" [if then, else]
dpart
test ? S1 S2
fin
end if
non
fin
Une variante :
excuter S, jusqu C
[do until]
108
dpart
oui
Structure du case of :
dpart
fin
Avantages de la programmation structure : Squences des oprations simples Nombre de structures limit Terminologie standard Facilit de lecture
109
(description possible des organigrammes) Accrot la productivit du programmeur On dmontre que le jeu donn des structures est complet c.a.d que tout programme peut-tre rdig laide des structures de base vues ci-dessus.
Inconvnients : Excution lente et ncessit de beaucoup de mmoire. Obligation dune srie de boucles emboites.
bibliographie : Z80 (627) Programmation en langage assembleur - dition Radio SECF de Laure A. Levent hal
110
Le fonctionnement en interruption
Dfinition
Une interruption est une procdure qui permet de suspendre l'excution d'un programme au profit d'un autre, avec la possibilit de reprendre l'excution du programme initial l o il avait t suspendu.
Interruptions "matrielles"
Le microprocesseur est capable de rpondre des sollicitations extrieures. Ainsi peut-il traiter des informations en "temps rel". Pour cela, le microprocesseur est "coupl" au monde extrieur par des lignes sur lesquelles s'effectue, de faon indterministe, un change de messages sous forme de signaux logiques ! A partir des sollicitations extrieures, le microprocesseur doit changer "d'tat" en fonction des priorits relatives de l'opration en cours et de celle qui est demande. Selon le cas, il interrompt ou non le droulement "normal" du programme. Contrainte : Si la demande est prise en compte, le microprocesseur doit tre capable de traiter rapidement cette demande externe.
111
Le microprocesseur 6809 possde pour cela quatre lignes, baptises "entre d'interruption" matrielles qui sont par ordre de priorit : RESET NMI FIRQ IRQ R-initialisation du microprocesseur. Non Masquable Interrupt. Fast Interrupt Request. Interrupt Request.
a- Fonction du flag I
+ Masque concernant l'interruption IRQ.
Lorsque ce flag est mis 1, le microprocesseur ne prend pas en compte les demandes d'interruption arrivant sur le ligne IRQ. Avec ce type d'interruption, le contexte total microprocesseur (12 octets ) est sauvegard sur la pile S. du
112
b- Fonction du flag F + Masque concernant l'interruption FIRQ. Tableau Etat du flag F F=1 F=0 FIRQ Inhibe Autorise
Lorsque ce flag est mis 1, le microprocesseur ne prend pas en compte les demandes d'interruption arrivant sur le ligne FIRQ. Ici, le contexte partiel du microprocesseur (3 octets) est sauvegard sur la pile S. (seuls les contenus des registres PC et CCR sont concerns.
!
On peut forcer l'tat des deux bits l'aide des instructions suivantes : ANDCC d'une part et ORCC d'autre part ! Tableau Instruction
ANDCC #$EF ORCC #$10
Etat du flag
CCRb4=0 CCRb4=1 CCRb6=0 CCRb6=1
c- Fonction du flag E
113
Ce flag est positionn par le microprocesseur afin d'indiquer le type de sauvegarde devant tre ralise (partielle ou complte). Il fait office en quelque sorte de mmoire interne. Tableau Etat du flag E E=1 E=0 Etat de la sauvegarde complte partielle
Ce flag est utilis (sous forme de test), systmatiquement lors de l'instruction RTI, par le microprocesseur, pour dterminer quelle action mener afin de revenir proprement dans le programme suspendu ( nombre de registres a dpils).
114
Interruptions "logicielles
Hormis les demandes d'interruptions matrielles, il existe d'autres causes d'interruption de programme. Ce sont les interruption "soft". Elles se traduisent par des instructions par entire que l'on place dans les programmes. Elles reprsentent des vnement "dterministes".
On en dnombre trois, qui sont : SWI SWI2 SWI3 (SoftWare Interrupt) (SoftWare Interrupt n2) (SoftWare Interrupt n3)
115
Quelques remarques importantes Les lignes NMI, FIRQ, IRQ et RESET ainsi que l'instruction SWI positionnent automatiquement le flag CCRb4 1 (masquage de l'IRQ). Les lignes NMI, FIRQ et RESET ainsi que l'instruction SWI positionnent automatiquement le flag CCRb6 1 (masquage de la FIRQ). Rien n'empche de repositionner 0 ces flags si on le souhaite!
116
Les bits I et F tant positionns 1 lors de l'excution d'un programme d'interruption, il est possible, nanmoins d'autoriser la prise en compte de nouvelles interruptions en les repositionnant O. Illustration :
Programme principal ORG DEBUT Programme d'interruption (premier niveau)
I=1 et E=1 IRQ ANDCC #$EF
t1
t2
ti
BRA * END
RTI
RTI
SP t2
{ {
CCR
CCR
SP t1
SP t0
117
Tableau rcapitulatif
Interruptions
Nature Niveaux de priorit 1 Entre Instruc- Vecteur tion RESET $FFFE $FFFF 2 3 4 5 6 6 FIRQ IRQ SWI2 SWI3 NMI SWI $FFFC $FFFD $FFFA $FFFB $FFF6 $FFF7 $FFF8 $FFF9 $FFF4 $FFF5 $FFF2 $FFF3 Logicielle Logicielle Rapide et masquable Masquable Logicielle Non masquable Totale E=1 Totale E=1 Partielle E=0 Totale E=1 Totale E=1 Totale E=1 Aucun Aucun Aucun I=1 I=F=1 de l'interruption Initialisation Sauvegarde sur la pile Aucune Masquage ralise NMI I=F=1 I=F=1
118
Instructions d'interruption
Instruction
Dpilement
CWAI
SYNC
RTI
119
Le traitement dune interruption se fait selon un protocole bien tabli que nous allons dtaill. Ds la mise au niveau bas de la broche adhoc, ou bien ds la rencontre de linstruction SWI, le microprocesseur entame une "procdure implicite", programme dans la silice, dont les organigrammes respectifs sont reprsents plus loin. On remarque que chaque organigramme se termine par un chargement du PC avec la valeur contenue dans le vecteur de linterruption demande. Ceci provoque un saut ladresse correspondante. Dans un systme simple et fig, o la demande dinterruption ne peut provenir que dune seule source, et o lon nenvisage quun seul programme dinterruption, il est possible dimplanter directement le dbut de ce programme ladresse contenue dans le vecteur dinterruption. La sortie de la procdure implicite aboutira directement lexcution du programme. Dans ce cas gnral o plusieurs "utilisateurs" peuvent demander linterruption et o un "utilisateur" au moins veut pouvoir choisir entre plusieurs programmes dinterruption diffrents, la "procdure implicite" doit aboutir dabord un programme de gestion de linterruption. Le programme de gestion dune interruption IRQ par exemple, doit assurer les oprations suivantes :
120
demandeurs lorsquil y a des appels simultans. La priorit entre demandes simultanes de diffrentes interruptions est ralise en partie par le jeu des masques. brancher le microprocesseur (par un changement du PC) au programme dinterruption souhait par le demandeur.