Vous êtes sur la page 1sur 5

NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER

Prnom : Groupe : Dure : 2 heures - Mars 2006 Prnom : Groupe : Dure : 2 heures - Mars 2006

Contrle 2. Questions de cours (4 points)

Architecture des microprocesseurs a. Dcrire la fonction de la ligne suivante issue dun programme crit en langage
assembleur 68000. Dire galement sil sagit dune instruction assembleur.
Dure 2 heures DS.L 1


La machine calculer minimale (les oprations de bases) est autorise.
Tous les documents personnels (cours, TD, projets) sont autoriss. b. Montrer que linstruction BRA est quivalente linstruction JMP .
La qualit de la prsentation sera prise en compte dans le barme de notation.
Les trois parties de ce contrle peuvent tre abordes sparment. Il est nanmoins conseill
de les rsoudre dans lordre alphabtique.
Vous rpondrez uniquement sur ce document que vous remettrez dans son intgralit la fin
du devoir. Noubliez pas dindiquer votre nom sur chacun de ces documents.


Partie A


Numration et Architecture des microprocesseurs 68xxx de
c. Ecrire le mot (16 bits) reprsentant linstruction MOVE.W #$12, D2 obtenu
MOTOROLA aprs assemblage (appel aussi le code opration).
Piste : consulter le format de cette instruction dans le document annexe/jeu
1. Exercices de numration. (3 points) dinstructions.
a) Complter le tableau de conversion suivant :

Valeur en dcimal Valeur en binaire Valeur en hexadcimal
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
133 ---------------------- ----------------------
---------------------- % 01 0101 0110 ----------------------
d. Donner la fonction du registre A7 du microprocesseur 68000.

b) Donner le complment deux du nombre suivant :

Valeur en dcimal Complment deux (sur 1 octet)

88 -----------------------------------------------------------------
----------------------------------------------------------------- e. Dcrire le contenu du registre 32 bits aprs excution de linstruction :
Contenu du registre aprs excution
MOVEA.W #$E000, A0 A0 =
c) Effectuer les additions suivantes :

En binaire En hexadcimal
f. Que provoque lexcution de linstruction suivante ?
% 1101 0110 $ 4 B F 7
+ % 0110 1001 + $ 9 6 4 E MOVE.W #$97FF, $1011

= % -------------- = $ ---------------

J. FRANCOMME francom@ece.fr J. FRANCOMME francom@ece.fr


1/10 2/10
NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER
Prnom : Groupe : Dure : 2 heures - Mars 2006 Prnom : Groupe : Dure : 2 heures - Mars 2006

Partie B Partie C
Analyse de programme assembleur
Synthse dun programme assembleur (10 points)
1. Les modes dadressage du microprocesseur 68000. (1 point)
Dfinir les modes dadressage source et destination pour chacune des lignes du programme Le contexte : Vous disposez dune application crite en assembleur 68000. Vous trouverez le code
ci-dessous. complet de celle-ci dans lannexe : dune part commente et dautre part sans aucun commentaire.
Vous disposez galement pour chaque portion de code de lalgorithme complet.
Mode dadressage de Mode dadressage de
loprande source loprande destination Remarques concernant le code : la longueur de certaines tiquettes proposes dans ce devoir nest
ORG Compte_EL -----------------------
pas compatible avec la syntaxe du logiciel dassemblage. Afin de pouvoir tester votre solution
aprs le devoir (sil vous prenait cette envie), il vous est galement propos des tiquettes
MOVE.B (A0,D0), D3 ----------------------- ------------------------- comportant un maximum 8 caractres (vous retrouverez la correspondance dans la partie
CMP.B #Val_Blanc, D3 ----------------------- ------------------------- algorithme de chaque portion de code). Cette syntaxe a t choisie ici, dans votre intrt, pour des
BEQ El_Suivant -----------------------
raisons videntes de clart de lecture du problme.
El_Suivant ADDI.B #1, D1 ----------------------- ------------------------- Cette application utilise une image en noir et blanc de format 16*16 soit 256 pixels. Elle est
ADDI.B #1, D0
issue de la camra dun robot mobile. La valeur $00 correspond un pixel blanc et $FF correspond
----------------------- -------------------------
un pixel noir.
CMPI.B #Nb_El_Lignes,D0 ----------------------- -------------------------
Limage reprsente une boule dans un espace deux dimensions. Une reprsentation de
BEQ Fin_CPT_EL ----------------------- cette image et sa reprsentation mmoire sont donnes sur la figure 1.
BRA Compte_EL -----------------------
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Fin_CPT_EL RTS ----------------------- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2. Analyse dun programme assembleur 68000 (2 points). 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Soit le code du programme ci-dessous : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ORG $1100 (1) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Adr_LME DS.L 1 (2)
00 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00
Val_MENL DC.B 1 (3)
00 00 00 FF FF FF 00 00 00 00 00 00 00 00 00 00
00 00 FF FF FF FF FF 00 00 00 00 00 00 00 00 00
ORG $8042 (4)
00 00 00 FF FF FF 00 00 00 00 00 00 00 00 00 00
MOVEA.L #$1090, A0 (5) _ _ _ _ _ _ _ _ _ _ _ _
MOVE.B #3, D1 (6) _ _ _ _ _ _ _ _ _ _ _ _ 00 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Select_Plus_Noire CMP.B Val_MENL, D1 (7) _ _ _ _ _ _ _ _ _ _ _ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
BMI No_change (8) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
MOVE.B D1, Val_MENL (9) _ _ _ _ _ _ _ _ _ _ _ _
MOVE.L A0, Adr_LME (10) _ _ _ _ _ _ _ _ _ _ _ _ Figure 1 : Image 16x16 traite par l'application
No_Change BRA No_Change (11)
Objectif : Expliquer le principe de lapplication propos et proposer un exemple possible dapplication de
a) Quelle est ladresse en mmoire de la variable Adr_LME , puis celle de Val_MENL . ce code dans un contexte de robotique.

1. En vous aidant des documents en annexe, compltez chacune des lignes du code du listing non
comment (page 10/10) avec des commentaires courts et explicites sur la fonction ralise en
b) Quel doit tre le rsultat de la comparaison (ligne 7) pour que les deux instructions (ligne 9 et relation avec lalgorithme propos (3pt).
10) soient excutes. Justifiez votre rponse (utilisez votre jeu dinstructions pour CMP et
BMI). 2. Indiquez le rle du registre D3 dans le sous-programme Compte_EL (2pt).



J. FRANCOMME francom@ece.fr J. FRANCOMME francom@ece.fr


3/10 4/10
NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER
Prnom : Groupe : Dure : 2 heures - Mars 2006 Prnom : Groupe : Dure : 2 heures - Mars 2006

3. Comprhension du sous-programme Compte_EL (4pt). Annexe


Conditions initiales :
Le registre A0 contient ladresse $10A0 et pointe la zone de donnes suivantes :
Listing complet de lapplication
ORG $10A0 ***************************************************************
DC.B $00,$00,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00 ** Devoir Architecture des microprocesseurs
Les registres D0, D1 contiennent la valeur 0. ** Ecole Centrale d'Electronique - ECE PARIS
** J. FRANCOMME - Mars 2006
Les tiquettes utilises dans ce sous-programme : ** francom@ece.fr
Nb_El_Lignes EQU 16 **
VAL_Blanc EQU 0 ** Code de l'application programme en langage assembleur 68000
a. Indiquez le nombre de fois que sera excute la boucle du sous-programme Compte_EL. ** dont le principe est dcouvrir par l'tudiant.
***************************************************************

***************************************************************
* Dclarations
***************************************************************
b. Indiquez ensuite le contenu de chacun des registres modifis du microprocesseur DebProg EQU $8000
68000 pour chacune des instructions du sous-programme Compte-EL, et en considrant Tab_Vecteur EQU 0
toutes les itrations entre le moment o lon rentre dans ce sous-programme et le moment Pile_Init EQU $D000
o lon en sort. Adr_IMG EQU $1000
Nb_Lignes EQU 16
Ici le code Ici le contenu du registre modifi chaque itration Nb_Colonnes EQU 16
Compte_EL MOVE.B (A0,D0),D3 D3 Nb_El_Lignes EQU 16
VAL_Blanc EQU 0
CMP.B #Val_Blanc,D3
Val_Noir EQU $FF
BEQ El_Suivant ***************************************************************
ADDI.B #1,D1 D1 * Rservations mmoire
El_Suivant ADDI.B #1,D0 D0 * Image originale (Adr_IMG) : 256 octets
CMPI.B #Nb_El_Lignes,D0 * Adr_Ligne_avec_Max_Elements (Adr_LME) : 4 octets
* Valeur_Max_Elements_Noir_sur_Ligne (Val_MENL) : 1 octet
BEQ Fin_CPT_EL ***************************************************************
BRA Compte_EL * Dbut zone de donnes
Fin_CPT_EL RTS ***************************************************************
ORG Adr_IMG
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
c. Lorsque vous arrivez linstruction RTS, indiquez ce que contient le registre D1 et DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
prcisez sa signification. Que pouvez-vous obtenir comme autre valeur sur une autre DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
ligne de cette image ? DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
4. Daprs ce que vous avez compris de la fonction ralise par lensemble de cette application, DC.B $00,$00,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00
proposez deux exemples dutilisation possible de ce programme dans un contexte de robotique DC.B $00,$00,$00,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
(1pt). DC.B $00,$00,$00,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00

Adr_LME DS.L 1
Val_MENL DS.B 1
Thats all Folks ***************************************************************
La correction de ce contrle sera publie sur Internet dans la rubrique cours partir du lundi * Fin zone de donnes
15 mars 2006 ladresse suivante : http://lysjack.free.fr/jack ***************************************************************

J. FRANCOMME francom@ece.fr J. FRANCOMME francom@ece.fr


5/10 6/10
NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER
Prnom : Groupe : Dure : 2 heures - Mars 2006 Prnom : Groupe : Dure : 2 heures - Mars 2006
***************************************************************
* Initialisation partielle de la table des vecteurs d'interruption ***************************************************************
* Intressant pour l'utilisation du simulateur. Mais ne vous en souciez pas pour ce devoir. * Ma bibliothque de sous-programmes : il y en a deux !
*************************************************************** ***************************************************************
ORG Tab_Vecteur
DC.L Pile_Init ***************************************************************
DC.L DebProg * Sous-programme Compte_EL
***************************************************************
*************************************************************** * Paramtres d'entre :
* Algorithme du programme principal de lapplication * A0 : Adresse de dbut de la ligne traiter
*************************************************************** * D0 : Offset Position ligne initialis zro
* Initialisations * D1 : Compteur d'lment noir sur la ligne initialis 0
* Initialisation Pointeur_Numro_Ligne sur la premire ligne de limage (A0) * Paramtres de sortie :
* Initialisation Compteur_Elements_Noir_sur_Ligne 0 (D1) * D1 : Compteur d'lment noir sur la ligne
* Initialisation Valeur_Max_Elements_Noir_Ligne 0 (@Val_MENL) ***************************************************************
* Initialisation Compteur_Lignes 0 (D2) * Algorithme du sous-programme Compte_EL
***************************************************************
* Boucle : *
* Boucle_SP1 : lire lment courant de la ligne
* Initialisation Pointeur_Element_Ligne sur le premier caractre de la ligne courante : * si lment courant gal zro (blanc)
* offset par rapport au dbut de la ligne (Offset_Position_Ligne) (D0) * alors lment suivant
* Compter le nombre de caractres noir sur la ligne courante * sinon incrmenter Compteur_Elements_Noir_sur_Ligne
* (retourne le nombre de pixel noir sur la ligne courante). * Elment suivant :
* incrmenter Offset_Ligne
* Comparer Compteur_Elements_Noir_sur_Ligne avec Valeur_Max_Elements_Noir_Ligne * Si Offset_Ligne > 16
* Si Compteur_Elements_Noir_sur_Ligne > Valeur_Max_Elements_Noir_Ligne * alors fin sous programme
* Alors * sinon lment suivant de la ligne (boucle_SP1)
* Valeur_Max_Elements_Noir_Ligne = Compteur_Elements_Noir_sur_Ligne *
* Enregistrer ladresse de la ligne courante dans Adr_Ligne_avec_Max_Elements ***************************************************************
* FinSi
Compte_EL MOVE.B (A0,D0),D3
* Incrmenter le compteur de ligne CMP.B #Val_Blanc,D3
* Si Compteur_Lignes > 16 //car on commence zro BEQ El_Suivant
* Alors Fin de lapplication ADDI.B #1,D1
* Sinon ligne suivante (Boucle) El_Suivant ADDI.B #1,D0
*************************************************************** CMPI.B #Nb_El_Lignes,D0
BEQ Fin_CPT_EL
*************************************************************** BRA Compte_EL
* Dbut programme principal Fin_CPT_EL RTS
***************************************************************
ORG DebProg ***************************************************************
LEA Adr_IMG,A0 * Fin sous-programme Compte_EL
CLR.B Val_MENL ***************************************************************
CLR.L Adr_LME
CLR.L D2

Boucle CLR.L D0
CLR.L D1
BSR Compte_EL
BSR Select_Plus_Noire
ADDA.L #Nb_El_Lignes,A0
ADDI.B #1,D2
CMP.B #Nb_Lignes,D2
BNE Boucle
Fin BRA Fin

***************************************************************
* Fin programme principal
***************************************************************

J. FRANCOMME francom@ece.fr J. FRANCOMME francom@ece.fr


7/10 8/10
NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER NOM : Architecture des microprocesseurs ECE INGE3/PREPA MASTER
Prnom : Groupe : Dure : 2 heures - Mars 2006 Prnom : Groupe : Dure : 2 heures - Mars 2006
***************************************************************
* Sous-programme Select_Plus_Noire - Le mme programme, mais sans aucun commentaire -
***************************************************************
* Paramtres d'entre : DebProg EQU $8000
Tab_Vecteur EQU 0
* A0 : Adresse du dernier lment de la dernire ligne traite
Pile_Init EQU $D000
* D1 : Compteur d'lment noir sur la dernire ligne scrute Adr_IMG EQU $1000
* Paramtres de sortie : Nb_Lignes EQU 16
* Val_MENL : Valeur_Max_Elements_Noir_sur_Ligne mis jour Nb_Colonnes EQU 16
* Nb_El_Lignes EQU 16
*************************************************************** VAL_Blanc EQU 0
* Algorithme du sous-programme Select_Plus_Noire Val_Noir EQU $FF
***************************************************************
ORG Adr_IMG
* DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
* Comparer Compteur_Elements_Noir_sur_Ligne avec Valeur_Max_Elements_Noir_Ligne DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
* Si Compteur_Elements_Noir_sur_Ligne > Valeur_Max_Elements_Noir_Ligne DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
* Alors DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
* Valeur_Max_Elements_Noir_Ligne = Compteur_Elements_Noir_sur_Ligne DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
* Enregistrer ladresse de la ligne courante dans Adr_Ligne_avec_Max_Elements DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
* FinSi DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
* DC.B $00,$00,$00,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
*************************************************************** DC.B $00,$00,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Select_Plus_Noire CMP.B Val_MENL,D1 DC.B $00,$00,$00,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
BMI No_change DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
MOVE.B D1,Val_MENL DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
MOVE.L A0,Adr_LME
No_Change RTS Adr_LME DS.L 1 _______________________________
Val_MENL DS.B 1 _______________________________
***************************************************************
ORG Tab_Vecteur Inutile de commenter ces trois lignes
* Fin sous-programme Select_Plus_Noire DC.L Pile_Init
*************************************************************** DC.L DebProg

ORG DebProg
LEA Adr_IMG,A0 _______________________________
CLR.B Val_MENL _______________________________
CLR.L Adr_LME _______________________________
CLR.L D2 _______________________________
Boucle CLR.L D0 _______________________________
CLR.L D1 _______________________________
BSR Compte_EL _______________________________
BSR Select_Plus_Noire _______________________________
ADDA.L #Nb_El_Lignes,A0 _______________________________
ADDI.B #1,D2 _______________________________
CMP.B #Nb_Lignes,D2 _______________________________
BNE Boucle _______________________________
Fin BRA Fin _______________________________

Compte_EL MOVE.B (A0,D0),D3 _______________________________


CMP.B #Val_Blanc,D3 _______________________________
BEQ El_Suivant _______________________________
ADDI.B #1,D1 _______________________________
El_Suivant ADDI.B #1,D0 _______________________________
CMPI.B #Nb_El_Lignes,D0 _______________________________
BEQ Fin_CPT_EL _______________________________
BRA Compte_EL _______________________________
Fin_CPT_EL RTS

Select_Plus_Noire CMP.B Val_MENL,D1 _______________________________


BMI No_change _______________________________
MOVE.B D1,Val_MENL _______________________________
MOVE.L A0,Adr_LME _______________________________
No_Change RTS _______________________________

J. FRANCOMME francom@ece.fr J. FRANCOMME francom@ece.fr


9/10 10/10