Correction du contrôle 2004 - Bienvenue sur la page de Jack
Correction du contrôle 2004 - Bienvenue sur la page de Jack
Correction du contrôle 2004 - Bienvenue sur la page de Jack
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
NOM : Prénom : ECE – INGE3 / PREPA MASTER<br />
Groupe : Architecture <strong>de</strong>s microprocesseurs Durée : 2 heures - Mars <strong>2004</strong><br />
Contrôle<br />
Architecture <strong>de</strong>s microprocesseurs<br />
Durée 2 heures<br />
Tous les documents personnels (cours, TD, projets) sont autorisés.<br />
La machine à calculer est autorisée.<br />
La qualité <strong>de</strong> <strong>la</strong> présentation sera prise en compte dans le barème <strong>de</strong> notation.<br />
Les quatre parties <strong>de</strong> ce contrôle sont totalement indépendantes.<br />
Il vous est <strong>de</strong>mandé <strong>de</strong> rédiger chacune <strong>de</strong>s parties <strong>sur</strong> une copie séparée.<br />
Pensez à rappeler le numéro <strong>de</strong>s questions auxquelles vous répon<strong>de</strong>z.<br />
N’oubliez pas <strong>de</strong> joindre les documents réponses à votre copie.<br />
Partie A ( pour gagner <strong>de</strong>s points – plus ça avance et plus c’est difficile)<br />
Architecture <strong>du</strong> microprocesseur 68000 <strong>de</strong> MOTOROLA<br />
1. Question <strong>de</strong> cours. (2 points)<br />
a. Donner <strong>la</strong> (ou les) différences qui existe(nt) entre un circuit RAM et un circuit<br />
ROM.<br />
Un circuit RAM est accessible en lecture et écriture. Son contenu est per<strong>du</strong> en<br />
cas <strong>de</strong> coupure d’alimentation<br />
Un circuit ROM est accessible uniquement en lecture. Le contenu <strong>de</strong> <strong>la</strong> ROM<br />
est préservé en cas <strong>de</strong> coupure d’alimentation.<br />
b. Donner <strong>la</strong> taille d’un circuit RAM possédant 8 lignes <strong>de</strong> données (D0 à D7) et<br />
15 lignes d’adresses ( <strong>de</strong> A0 à A14).<br />
Taille = 2 nombre <strong>de</strong> lignes d’adresse x nombre <strong>de</strong> lignes <strong>de</strong> données<br />
= 2 15 x 8 = 32 K octet<br />
c. Indiquer <strong>la</strong> (ou les) différence(s) qui existe(nt) entre les instructions suivantes :<br />
NEG.B -(A0) NEG.B -1(A0)<br />
Dans les 2 cas, l’instruction NEG ( complément à <strong>de</strong>ux) s’effectue <strong>sur</strong> le<br />
contenu <strong>de</strong> l’adresse pointée par le registre (A0 – 1) .<br />
Par contre pour <strong>la</strong> 1 ière instruction, le registre est décrémenté <strong>de</strong> 1 suite à<br />
l’é<strong>la</strong>boration <strong>du</strong> complément à 2 et dans le 2 ième cas, le registre reste à <strong>la</strong> même<br />
valeur.<br />
d. Donner <strong>la</strong> fonction <strong>du</strong> registre A7 <strong>du</strong> microprocesseur 68000.<br />
Le registre A7 est un pointeur <strong>de</strong> pile. Il est utilisé en mo<strong>de</strong> Utilisateur et<br />
s’appelle USP.<br />
e. Sur un octet, quel est l’intervalle dans lequel un nombre négatif « z » peut être<br />
représenté en complément à <strong>de</strong>ux?<br />
L’intervalle est :<br />
-128 < z < -1 soit 1000 0000 < z < 1111 1111<br />
J. FRANCOMME francom@ece.fr - J.M. HENRI henri@ece.fr - 1/6
NOM : Prénom : ECE – INGE3 / PREPA MASTER<br />
Groupe : Architecture <strong>de</strong>s microprocesseurs Durée : 2 heures - Mars <strong>2004</strong><br />
2. Exercices <strong>de</strong> numération. (3 points)<br />
a) Compléter le tableau <strong>de</strong> conversion suivant :<br />
Valeur en décimal Valeur en binaire Valeur en hexadécimal<br />
181 % 1011 0101 $ B 5<br />
109 % 0110 1101 $ 6 D<br />
217 % 1101 1001 $ D 9<br />
b) Donner le complément à <strong>de</strong>ux <strong>de</strong>s nombres suivants :<br />
Valeur en décimal Complément à <strong>de</strong>ux ( <strong>sur</strong> 1 octet )<br />
181 0100 1011<br />
36 1101 1100<br />
c) Effectuer les additions suivantes :<br />
en binaire<br />
en hexadécimal<br />
% 0101 0110 $ 3 C D F<br />
+ % 0001 1101 + $ 8 9 7 D<br />
= % 0111 0011 = $ C 6 5 C<br />
J. FRANCOMME francom@ece.fr - J.M. HENRI henri@ece.fr - 2/6
NOM : Prénom : ECE – INGE3 / PREPA MASTER<br />
Groupe : Architecture <strong>de</strong>s microprocesseurs Durée : 2 heures - Mars <strong>2004</strong><br />
Partie B<br />
Analyse <strong>de</strong> programme assembleur<br />
1. Les mo<strong>de</strong>s d’adressage <strong>du</strong> microprocesseur 68000. ( 3 points)<br />
Définir les mo<strong>de</strong>s d’adressage source et <strong>de</strong>stination pour chacune <strong>de</strong>s lignes <strong>du</strong><br />
programme ci-<strong>de</strong>ssous.<br />
Mo<strong>de</strong> d’adressage source Mo<strong>de</strong> d’adressage <strong>de</strong>stination<br />
ORG $1000 ----------- -----------<br />
LEA $2500,A0 Absolu court Direct par registre d’adresse<br />
MOVE.L #32,D0 Immédiat Direct par registre <strong>de</strong> donnée<br />
Boucle MOVE.B #$E7,(A0)+ Immédiat Indirect avec post incrémentation<br />
SUB #1,D0 Immédiat Direct par registre <strong>de</strong> donnée<br />
BNE Boucle Re<strong>la</strong>tif<br />
Fin BRA Fin Re<strong>la</strong>tif<br />
2. Analyse d’un programme écrit en <strong>la</strong>ngage assembleur 68000. (4 points)<br />
2.1 Après avoir analysé le programme ci-<strong>de</strong>ssous, il vous est <strong>de</strong>mandé <strong>de</strong> trouver le<br />
contenu <strong>de</strong>s registres <strong>de</strong> donnée D6 et D7 en fin d’exécution <strong>du</strong> programme.<br />
2.2 En dé<strong>du</strong>ire <strong>la</strong> re<strong>la</strong>tion existante entre le résultat se trouvant dans le registre D7 et<br />
le valeur : nbre. Re<strong>la</strong>tion mathématique sous <strong>la</strong> forme D7 = f ( nbre).<br />
Programme source<br />
ORG 0<br />
DC.L $7000<br />
DC.L start<br />
ORG $1000<br />
nbre DC.B 5<br />
ORG $2000<br />
start CLR.L D6<br />
CLR.L D7<br />
<strong>de</strong>but ADD.B #1,D6<br />
CMP.B nbre,D6<br />
BEQ fin<br />
ADD.W D6,D7<br />
BRA <strong>de</strong>but<br />
fin ADD.W D6,D7<br />
fin2 BRA fin2<br />
contenu après exécution <strong>du</strong><br />
programme<br />
registre D6 5<br />
registre D7 15<br />
Re<strong>la</strong>tion<br />
mathématique<br />
D7 = [ nbre x ( nbre + 1 )] / 2<br />
il faut indiquer le nom : suite<br />
arithmétique<br />
J. FRANCOMME francom@ece.fr - J.M. HENRI henri@ece.fr - 3/6
NOM : Prénom : ECE – INGE3 / PREPA MASTER<br />
Groupe : Architecture <strong>de</strong>s microprocesseurs Durée : 2 heures - Mars <strong>2004</strong><br />
Partie C<br />
E<strong>la</strong>boration d’un programme en <strong>la</strong>ngage assembleur<br />
Création <strong>de</strong> programme. (4 points)<br />
Ecrire un programme <strong>de</strong> quelques lignes qui permet <strong>de</strong> détecter le début d’une phrase par<br />
<strong>la</strong> détection <strong>du</strong> point <strong>de</strong> ponctuation.<br />
Votre programme se basera <strong>sur</strong> l’algorithme suivant :<br />
Si le co<strong>de</strong> ASCII correspond au point (.)<br />
Si le co<strong>de</strong> ASCII suivant correspond au symbole ‘$’ alors<br />
Mettre fin à l’exécution <strong>du</strong> programme<br />
Sinon mettre <strong>la</strong> lettre suivant le point en majuscule.<br />
Sinon passer au caractère suivant<br />
Pour <strong>de</strong>s raisons <strong>de</strong> simplification dans l’é<strong>la</strong>boration <strong>du</strong> programme, cet algorithme<br />
suppose que l’on ne teste pas <strong>la</strong> première lettre <strong>du</strong> texte ( effectivement, un texte ne<br />
commence pas par un point) et qu’il n’y a pas d’espace entre le caractère point et <strong>la</strong> lettre<br />
suivante.<br />
On vous rappelle un extrait <strong>de</strong> <strong>la</strong> table <strong>de</strong>s co<strong>de</strong>s ASCII ci-<strong>de</strong>ssous :<br />
‘ ’ = $ 20 (espace) ‘A’ = $ 41 ‘a’ = $ 61<br />
‘$’ = $ 24 ‘B’ = $ 42 ‘b’ = $ 62<br />
‘.’ = $ 2E ‘C’ = $ 43 ‘c’ = $ 63<br />
‘0’ = $ 30 ‘D’ = $ 44 ‘d’ = $ 64<br />
………….. ………….. …………..<br />
‘9’ = $ 39 ‘Z’ = $ 5A ‘z’ = $ 7A<br />
Vous pouvez résoudre le problème en complétant le programme donné ci-<strong>de</strong>ssous.<br />
ORG $0<br />
DC.L $8000 * Stack pointer value after a reset<br />
DC.L start * Program counter value after a reset<br />
ORG $2000<br />
texte DC.B 'Le <strong>de</strong>voir est sympa.il <strong>du</strong>re 2 heures.'<br />
DC.B 'je pense avoir une bonne note.a condition <strong>de</strong> me concentrer.$'<br />
ORG $5000<br />
start LEA texte,A0<br />
suite MOVE.B (A0)+,D0<br />
CMP.B #$2E,D0<br />
BNE suite<br />
MOVE.B (A0)+,D0<br />
CMP.B #$24,D0<br />
BEQ fin<br />
AND.B #$DF,D0<br />
MOVE.B D0,-1(A0)<br />
BRA suite<br />
fin bra fin<br />
Remarque : Les co<strong>de</strong>s ASCII <strong>de</strong>s<br />
lettres constituant le texte sont<br />
p<strong>la</strong>cés les uns après les autres à<br />
partir <strong>de</strong> l’adresse $2000<br />
J. FRANCOMME francom@ece.fr - J.M. HENRI henri@ece.fr - 4/6
NOM : Prénom : ECE – INGE3 / PREPA MASTER<br />
Groupe : Architecture <strong>de</strong>s microprocesseurs Durée : 2 heures - Mars <strong>2004</strong><br />
Partie D<br />
Compréhension d’un programme<br />
en <strong>la</strong>ngage assembleur 68000 (4 points)<br />
On donne <strong>la</strong> structure <strong>de</strong> programme suivante :<br />
ORG $0<br />
DC.L $7FFF * Stack pointer value after a reset<br />
DC.L START * Program counter value after a reset<br />
ORG $1000<br />
valeur dc.b 9,5,4,7,3<br />
nbre dc.b 5<br />
ORG $2000<br />
start LEA valeur,A0<br />
LEA<br />
nbre,A1<br />
CLR.L D1<br />
CLR.L D2<br />
CLR.L D3<br />
CLR.L D4<br />
CLR.L D5<br />
MOVE.B (A1),D1<br />
SUB.B #1,D1<br />
MOVE.B D1,D2<br />
encore MOVE.B (A0)+,D3<br />
MOVE.B (A0),D4<br />
CMP.B D3,D4<br />
BGE suite * Branchement si D4 est plus grand ou égal à D3<br />
MOVE.B D3,(A0)<br />
MOVE.B D4,-(A0)<br />
ADD.L #1,A0<br />
MOVE.B #1,D5<br />
suite SUB.B #1,D2<br />
BNE<br />
encore<br />
CMP.B #0,D5<br />
BEQ<br />
fin<br />
CLR.B D5<br />
SUB.B #1,(A1)<br />
MOVE.B (A1),D2<br />
SUB.B #1,D2<br />
LEA<br />
valeur,A0<br />
SUB.B #1,D1<br />
BNE<br />
encore<br />
fin BRA fin<br />
J. FRANCOMME francom@ece.fr - J.M. HENRI henri@ece.fr - 5/6
NOM : Prénom : ECE – INGE3 / PREPA MASTER<br />
Groupe : Architecture <strong>de</strong>s microprocesseurs Durée : 2 heures - Mars <strong>2004</strong><br />
1) Après avoir analysé ce programme, vous définirez le rôle <strong>de</strong> chacun <strong>de</strong>s<br />
registres utilisés dans le tableau ci-<strong>de</strong>ssous.<br />
La notation tiendra compte <strong>de</strong> <strong>la</strong> c<strong>la</strong>rté et <strong>de</strong> <strong>la</strong> pertinence <strong>de</strong> vos réponses.<br />
Rôle <strong>de</strong>s registres<br />
Registres<br />
d’adresse<br />
A0<br />
A1<br />
A0 pointe les valeurs à ordonner<br />
A1 pointe le nombre <strong>de</strong> valeurs à ordonner<br />
D1 nombre <strong>de</strong> passages ( égal à 4 dans notre cas )<br />
Registres <strong>de</strong><br />
données<br />
D2<br />
D3<br />
D4<br />
D5<br />
Nombre courant <strong>de</strong> tests à effectuer lors d’un passage.<br />
Ce nombre diminue à chaque passage.<br />
Contient un octet <strong>de</strong> <strong>la</strong> chaine: valeur<br />
Contient l'octet suivant <strong>de</strong> <strong>la</strong> chaine: valeur<br />
C’est un drapeau.<br />
Indique par 1 ou 0 si le tableau est trié ou pas<br />
2) Le registre D5 est-il indispensable ? Justifier son intérêt.<br />
Non, ce registre n’est pas indispensable.<br />
Sans l’utilisation <strong>de</strong> ce registre, le tri <strong>du</strong> tableau se fera avec un nombre <strong>de</strong> passage<br />
automatiquement égal à nbre-1.<br />
Avec l’utilisation <strong>de</strong> ce registre, dès que le tableau est trié, le registre D5 le signale (tel<br />
un drapeau ) en restant à <strong>la</strong> valeur 0.<br />
That’s all Folks …<br />
La correction <strong>de</strong> ce contrôle sera <strong>sur</strong> Internet dans <strong>la</strong> partie cours à partir <strong>du</strong><br />
lundi 22 mars <strong>2004</strong> à l’adresse suivante : http://www.francomme.fr.fm.<br />
Bon courage …<br />
J. FRANCOMME francom@ece.fr - J.M. HENRI henri@ece.fr - 6/6