Professional Documents
Culture Documents
Contrle
Architecture des microprocesseurs
Dure 2 heures
Tous les documents personnels (cours, TD, TP) sont autoriss.
La machine calculer est autorise.
La qualit de la prsentation sera prise en compte dans le barme de notation.
Les trois parties de ce contrle sont totalement indpendantes.
Il vous est demand de rdiger chacune des parties sur une copie spare.
Pensez rappeler le numro des questions auxquelles vous rpondez.
Noubliez pas de joindre tous les documents rponses votre copie.
Partie A
Architecture du microprocesseur 68000 de MOTOROLA
Dcodage dadresses
Bus dadresse U2
A0 D0
A1 D1
U1 A2 D2
A0 D0 A3 D3
A1 A4 D4
D1
A2 A5 D5
D2
A3 D3 A6 D6
A4 A7 D7
D4
A5 A8
D5
A6 D6 A9
A7 A10
A8 D7 A11
A9 A12
A10 A13
A11 A14
U3
A 15
E1 CE E2
OE 1 CE
VPP
WE
74LS04 0V
RAM: 6132
EPROM: 2764
(D0D7)
Bus de donnes
Partie B
Programmation dans le langage assembleur du microprocesseur 68000 de
MOTOROLA
B.1. Gnralits (3 points / 14mn)
B.1.1) Donnez le nom dune mmoire volatile.
B.1.2) Quels sont les diffrents bits du registre de code condition ?
B.1.3) Proposez une solution permettant de mettre zro le cinquime bit du registre de code
condition en partant de la droite. Dcrivez convenablement votre solution.
B.1.4) Convertir la valeur $EF en binaire.
B.1.5) Dcrire la fonction de la ligne suivante dans un programme crit en langage assembleur
68000.
DC.L 2
B.1.6) Quel est le rle du registre PC du processeur 68000 ?
B.1.7) Montrez que linstruction, dbf est quivalente linstruction dbra
Info: consulter la description de linstruction DBcc dans le document annexe/jeu
dinstructions.
B.1.8) Indiquer de manire simplifie les diffrentes tapes pour lenregistrement dune donne
dans la pile.
B.1.9) Dcrire les modes dadressages mis en uvre dans les deux instructions suivantes pour
chacun des oprande s et donner le contenu de chacun des registres 32 bits et de la mmoire
aprs excution :
MOVEA #$9123, A0
MOVE A0, (A0)
B.2.1) En quelques mots, indiquer une mthode permettant de dterminer si un nombre est pair ou
impair en utilisant la notion de dcalage.
B.2.2) Sur quel indicateur dtat, le test doit-il agir pour dfinir la parit du nombre ?
En dduire le nom en langage assembleur des 2 tests quil est possible de mettre en uvre.
B.2.3) Ecrire le programme en langage assembleur 68000 partir de ladresse $1000,
correspondant au cahier des charges dcrit ci-dessus.
Vous considrerez un tableau VAL de 8 octets dfini comme suit :
VAL DC.B $12, $C9, $5F, $FC, $A2, $52, $3B, $FD
Partie C
Analyse dun programme en langage assembleur pour le microprocesseur 68000
de MOTOROLA
Le programme suivant ralise une opration sur deux oprandes de deux digits cods en BCD.
Remarque : Vous considrerez donc pour ces deux oprandes la reprsentation BCD et pas
hexadcimale : Oubliez le $ marqu devant loprande mais ne lenlevez pas.
Si on ne met pas le $ , le logiciel dassemblage fait la conversion dcimal? hexadcimal
************************************* *************************************
* ECE Mars 2003 * Bibliothque de sous-programmes
* INGE3 - PREPA MASTER *************************************
* Contrle Architecture des microprocesseurs DOFOISD5
* J. FRANCOMME - http://francomme.fr.fm CLR.W D6
* Etat initial du registre des flags : X N Z V BRA NEXT
C tous 0. SUITE ANDI #efface_X,CCR
************************************* ABCD D0,D6
************************************* BCC NEXT
* Assignations ADD.W #$0100,D6
************************************* NEXT DBF D5,SUITE
DEBPROG EQU $1000 RTS
VAL1 EQU $35
VAL2 EQU $11 D6PLUSD7
efface_X EQU $EF ANDI #efface_X,CCR
ABCD D7,D6
************************************* ROR.W #8,D6
* Initialisation des vecteurs de dmarrage ROR.W #8,D7
************************************* ABCD D7,D6
ORG $0 ROR.W #8,D6
DC.L $8000 Pointeur de pile RTS
aprs un reset
DC.L DEBPROG Compteur de END
programme (PC) aprs un reset
*************************************
* Programme principal
*************************************
ORG DEBPROG
MOVE.W #VAL1,D0
MOVE.W #VAL2,D1
MOVE.W D1,D5
ANDI #$0F,D5
BSR DOFOISD5
MOVE.W D6,D7
MOVE.W D1,D5
LSR.B #4,D5
ANDI.W #$0F,D5
BSR DOFOISD5
LSL.W #4,D6
BSR D6PLUSD7
FIN BRA FIN
C.1.1) Compltez les documents rponses joints pages 5 et 6 en vous aidant des remarques
suivantes ;
Aide pour complter les documents rponses :
Vous remarquerez que le sous-programme D0FOISD5 est appel deux fois et que le
sous-programme D6PLUSD7 est appel une seule fois la fin de lapplication.
Vous trouverez donc le groupe dinstructions de chaque sous-programme autant de fois
que celui-ci est appel , sur les documents rponses.
Aprs lexcution de chaque instruction, donnez le contenu de tous les registres cits
dans le tableau, sur la mme ligne ; c'est--dire : D0, D1, D5, D6, D7, les bits X et C
du registre de code condition puis le contenu du registre PC.
Comme cela est indispensable, le fichier listing vous est fourni en annexe 1.
Toutes les valeurs ngatives du tableau seront notes en complment 2.
C.1.2) Aprs avoir complt les documents rponses joints, il vous est demand de dduire
lopration effectue par cette application sur les deux oprandes.
C.1.3) Pour vrification, posez lopration sur votre copie et dcrivez le processus pour obtenir le
rsultat.
C.1.4) Quelle sera la diffrence dans lexcution du sous-programme D0FOISD5 si loprande
VAL2 = 12 (ie : nombre de boucle) ?
C.1.5) La procdure D6PLUSD7 est constitue dun certain nombre dinstructions de rotation
ROR
C.1.5.1) Expliquez ce que fait linstruction ROR sur la donne dont le format est celui
donn dans ce sous-programme (.W).
C.1.5.2) Indiquez la raison de cette manipulation en utilisant le rappel sur les oprations en
BCD donn ci-dessous.
C.1.6) Justifier la valeur $FFF0 de la ligne 103C du fichier listing donn en annexe 1.
C.1.7.synthse) Ne rpondre cette question que si vous avez rpondu toutes les questions
prcdentes ;
Proposez une modification du programme donn dans cette partie C afin de pouvoir faire la
mme opration sur des oprandes de 32 bits
Remarque : Le rsultat tient sur un format plus grand que celui dorigine que vous
considrerez afin de toujours obtenir un rsultat valide.
RTS aprs
RTS aprs
RTS aprs