Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006
Website : http://francomme.fr.fm/ (courses and codes) 1 / 14
Architectures des Microprocesseurs
INGE 3 et Prépa-Master
Cahier de TD et de TP
Mini-Projet
Auteurs : J. FRANCOMME
J.-M. HENRI
Sujets de TD:
TD N°0 – Système de numération..............................................................................................2
TD N°1 – Premiers pas en assembleur.......................................................................................4
TD N°2 – Assembleur Avancé I ................................................................................................7
TD N°3 – Assembleur Avancé II...............................................................................................8
Consignes générales et barème ................................................................................................12
Séquence de TPs :
Prise en main du logiciel BSVC (simulateur 68000) …………………………… .10
Validation des sujets de TD N°2 et N°3.
Consignes générales et barème/ Bibliographie :………………………………………….......12
Annexe : Jeu d’instructions du microprocesseur 68000 …………………………………… 27
Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006
Website : http://francomme.fr.fm/ (courses and codes) 2 / 14
TD N°0 – Système de numération
Objectif : Les exercices de ce TD doivent être faits par l’étudiant avant de commencer les autres
TD de ce document. En effet il leur permettra de réviser toutes les notions nécessaires à la
compréhension et à l’utilisation des valeurs numériques utilisées lors de la programmation en
assembleur.
Généralités
Quel est le plus grand nombre que l’on peut exprimer avec 8 chiffres ? On l’exprimera dans sa
base
1. dans le système décimal.
2. dans le système binaire.
3. dans le système hexadécimal.
Quel est le nombre de chiffres nécessaires pour exprimer (1152)10 en base :
1. binaire
2. octale
3. hexadécimale
Conversion
Convertir les nombres décimaux suivants en binaire et en hexadécimal :
1. 18
2. 243
3. 356
Convertir les nombres binaires suivants en décimal et en hexadécimal :
1. %10010
2. %1010001
3. %111100100
Convertir les nombres hexadécimaux suivants en binaire et en décimal :
1. $10
2. $FA
3. $48D
4. $1C5
Complément à 2
Les nombres négatifs sont représentés dans le 68000 à l’aide de leur complément à 2. Le
complément à 2 est obtenu en calculant le complément à 1 et en rajoutant 1 au résultat. Le bit de
poids fort indique le signe du nombre.
Sachant que l’on dispose de 8 bits pour écrire les nombres avec leur signe, donner les
expressions en binaire et en hexadécimal des nombres suivants :
-35, -43, -56, -14, 0
Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006
Website : http://francomme.fr.fm/ (courses and codes) 3 / 14
Addition
Effectuer les opérations suivantes :
1. %00101011 + % 01001110
2. $4B3 + $F7F
Calculer les expressions suivantes par addition du complément à 2 :
1. %11011011 - %01101011
2. %1011 - %0011
3. %01101011 - %11011011
4. $A30F - $1234
Annexe
Dans chaque microprocesseur existe un registre d’indication appelé Registre de code condition.
Il sert à informer le programmeur que le résultat d’une opération est nul, négatif, s’il y a un
dépassement ou si une retenue a été générée.
Le registre de code condition du 68000 se présente ainsi :
15 13 10 8 7 4 3 2 1 0
T S I2 I
1 I
0 X N Z V C
Avec : C: Carry
V: Overflow
Z: Zero
N: Negative
E: Extended
Code Condition Register
Status Register
Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006
Website : http://francomme.fr.fm/ (courses and codes) 4 / 14
TD N°1 – Premiers pas en assembleur
Objectif : Comprendre le fonctionnement du microprocesseur 68000, les instructions assembleur, les
modes d’adressages.
1. Première partie.
9 Commentez le déroulement des instructions suivantes en complétant les champs libres correspondant
au contenu des registres de données ou d’adresse, au contenu de l’espace mémoire et à l’état des
indicateurs N, Z, V, C du registre d’état.
* Instructions
ORG $0
DC.L $8000 * Stack pointer value after a reset
DC.L START * Program counter value after a reset
ORG $5000
START nop Registre Espace mémoire indicateurs d’état
N Z V C
movea #$9000,a1 a1=
movea.L #$9000,a2 a2=
move.L #$87654321,d1 d1=
add.w #$F111,d1 d1=
move d1,$01B000 ($01B000)=
move.L #$87654321,d1 d1=
move #$F111,d2 d2=
move d2,$01B000 ($01B000)=
add d1,$01B000 ($01B000)=
move.L #$5AB23FE4,d1 d1=
neg.B d1 d1=
move.L #$5AB23FE4,d1 d1=
neg.W d1 d1=
move.L #$5AB23FE4,d1 d1=
neg.L d1 d1=
move.L #$5AB23FE4,d1 d1=
move.L d1,$01B000 ($01B000)=
neg.B $01B000 ($01B000)=
move.L #$5AB23FE4,d1 d1=
move.L d1,$01B000 ($01B000)=
neg.W $01B000 ($01B000)=
move.L #$5AB23FE4,d1 d1=
move.L d1,$01B000 ($01B000)=
neg.W $01B000 ($01B000)=
Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006
Website : http://francomme.fr.fm/ (courses and codes) 5 / 14
9 Indiquez le contenu des registres ou de la mémoire de façon à expliquer l'exécution des instructions
ci-dessous.
Registre de données Contenu mémoire
move.L #$34B10002,d1 d1=
move.L d1,$01B000 ($01B000)=
move.L #$FFFFFFFF,d1 d1=
move.L d1,$01B004 ($01B004)=
move.W $01B002,d0 d0=
muls $01B000,d0 d0=
move.L d0,$01B004 ($01B004)=
2. Deuxième partie.
9 Indiquez la validité des instructions ci-dessous, le contenu de l’espace mémoire et l’état des registres
associés à ces instructions.
Conditions initiales : a0=$01B004 et ($01B0000)=$2C34, ($01B0002)=$FE36, ($01B004)=$59DC
ORG $0
DC.L $7FFF * Stack pointer value after a reset
DC.L START * Program counter value after a reset
ORG $5000
START nop
Instruction valide registre ($01B000)
movea.L #$01B002,a0 OUI a0=$0001B002 XX XX XX XX XX XX
move.W #$FE36,(a0) OUI a0=$0001B002 XX XX FE 36 XX XX
move.W #$2C34,-2(a0) OUI a0=$0001B002 2C 34 FE 36 XX XX
move.W #$59DC,2(a0) OUI a0=$0001B002 2C 34 FE 36 59 DC
neg.w a0
movea.L #$01B004,a0 OUI
neg.B -(a0)
neg.W -(a0)
movea.L #$01B004,a0 OUI
neg.W -(a0)
movea.L #$01B004,a0 OUI
neg.B -(a0)
movea.L #$01B004,a0 OUI
neg.W -1(a0)
Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006
Website : http://francomme.fr.fm/ (courses and codes) 6 / 14
9 Indiquez la validité de l’instruction et l'adresse effective de la donnée sachant que
a0=$01B000 et d2=$00000010.
Instruction valide Adresse effective
neg.L $8000 OUI $8000
neg $7001
neg.W $4(a0) $01B000 + $4 => $01B004
neg.W $f60(a0)
neg.B 10(a0,d2)
neg.W $2D0(a0,d2)
9 Pour chacune des instructions suivantes du 68000, donnez :
¾ le type d'adressage (source, destination)
¾ le résultat
¾ l'état des drapeaux après l'exécution
¾ les anomalies éventuelles
Instructions conditions initiales
move.W #$9000,a1
move.L #$9000,a2
lea $8000,a5
move.W #$7000,a4
move.B d0,(a0) d0 = $87654321
a0 = $01B000
move d0,(a0)+ idem
move.L d0,(a0)+ idem
move.B (a0),$100(a0) a0 = $01B000
($01B000) = 00
move.B (a0),3(a0,d0) idem
d0 = $02
clr $100(a0,d0) idem
clr 3(a0,d0) idem
asl.B #3,d0 d0 = $12345678
1 / 3 100%