04.07.2015 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!