TD N°0 – Système de numération

publicité
Ecole centrale d’Electronique
INGE3 / PREPA-MASTER
Année 2006
Ecole centrale d’Electronique
INGE3 / PREPA-MASTER
Année 2006
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.
Architectures des Microprocesseurs
INGE 3 et Prépa-Master
Généralités
Cahier de TD et de TP
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.
Mini-Projet
Quel est le nombre de chiffres nécessaires pour exprimer (1152)10 en base :
1. binaire
2. octale
3. hexadécimale
Auteurs : J. FRANCOMME
J.-M. HENRI
Sujets de TD:
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
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
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
J. FRANCOMME [email protected] - [email protected][email protected]
Website : http://francomme.fr.fm/ (courses and codes)
1 / 14
J. FRANCOMME [email protected] - [email protected][email protected]
Website : http://francomme.fr.fm/ (courses and codes)
2 / 14
Ecole centrale d’Electronique
INGE3 / PREPA-MASTER
Année 2006
Ecole centrale d’Electronique
INGE3 / PREPA-MASTER
Année 2006
TD N°1 – Premiers pas en assembleur
Addition
Effectuer les opérations suivantes :
1. %00101011 + % 01001110
2. $4B3 + $F7F
Objectif : Comprendre le fonctionnement du microprocesseur 68000, les instructions assembleur, les
modes d’adressages.
Calculer les expressions suivantes par addition du complément à 2 :
1. %11011011 - %01101011
2. %1011 - %0011
3. %01101011 - %11011011
4. $A30F - $1234
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.
1. Première partie.
*
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
T
13
S
10
I2
I1
8
I0
7
4
X
3
N
2
Z
1
V
0
C
Code Condition Register
Status Register
Avec :
C: Carry
V: Overflow
Z: Zero
N: Negative
E: Extended
J. FRANCOMME [email protected] - [email protected][email protected]
Website : http://francomme.fr.fm/ (courses and codes)
3 / 14
START
Instructions
ORG
DC.L
DC.L
$0
$8000
START
ORG
nop
$5000
movea
movea.L
#$9000,a1
#$9000,a2
a1=
a2=
move.L
add.w
move
#$87654321,d1
#$F111,d1
d1,$01B000
d1=
d1=
move.L
move
move
add
#$87654321,d1
#$F111,d2
d2,$01B000
d1,$01B000
d1=
d2=
move.L
neg.B
#$5AB23FE4,d1
d1
d1=
d1=
move.L
neg.W
#$5AB23FE4,d1
d1
d1=
d1=
move.L
neg.L
move.L
move.L
neg.B
#$5AB23FE4,d1
d1
#$5AB23FE4,d1
d1,$01B000
$01B000
d1=
d1=
d1=
move.L
move.L
neg.W
#$5AB23FE4,d1
d1,$01B000
$01B000
d1=
move.L
move.L
neg.W
#$5AB23FE4,d1
d1,$01B000
$01B000
d1=
* Stack pointer value after a reset
* Program counter value after a reset
Registre
Espace mémoire
indicateurs d’état
N Z V C
($01B000)=
($01B000)=
($01B000)=
($01B000)=
($01B000)=
($01B000)=
($01B000)=
($01B000)=
($01B000)=
J. FRANCOMME [email protected] - [email protected][email protected]
Website : http://francomme.fr.fm/ (courses and codes)
4 / 14
Ecole centrale d’Electronique
INGE3 / PREPA-MASTER
Année 2006
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
d1=
move.L
move.L
#$34B10002,d1
d1,$01B000
move.L
move.L
#$FFFFFFFF,d1
d1,$01B004
d1=
move.W
muls
move.L
$01B002,d0
$01B000,d0
d0,$01B004
d0=
d0=
Ecole centrale d’Electronique
INGE3 / PREPA-MASTER
Année 2006
9 Indiquez la validité de l’instruction et l'adresse effective de la donnée sachant que
a0=$01B000 et d2=$00000010.
Contenu mémoire
($01B000)=
neg.L
neg
$8000
$7001
($01B004)=
neg.W
neg.W
neg.B
neg.W
$4(a0)
$f60(a0)
10(a0,d2)
$2D0(a0,d2)
Instruction valide
OUI
Adresse effective
$8000
$01B000 + $4 => $01B004
($01B004)=
9 Pour chacune des instructions suivantes du 68000, donnez :
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
DC.L
DC.L
ORG
START nop
$0
$7FFF
START
le type d'adressage (source, destination)
le résultat
l'état des drapeaux après l'exécution
les anomalies éventuelles
Instructions
* Stack pointer value after a reset
* Program counter value after a reset
conditions initiales
move.W
move.L
#$9000,a1
#$9000,a2
lea
move.W
$8000,a5
#$7000,a4
move.B
d0,(a0)
d0 = $87654321
a0 = $01B000
move
move.L
d0,(a0)+
d0,(a0)+
idem
idem
move.B
(a0),$100(a0)
a0 = $01B000
($01B000) = 00
move.B
(a0),3(a0,d0)
idem
d0 = $02
clr
clr
asl.B
$100(a0,d0)
3(a0,d0)
#3,d0
idem
idem
d0 = $12345678
$5000
Instruction valide
OUI
OUI
OUI
OUI
movea.L
move.W
move.W
move.W
#$01B002,a0
#$FE36,(a0)
#$2C34,-2(a0)
#$59DC,2(a0)
neg.w
a0
movea.L
neg.B
#$01B004,a0
-(a0)
neg.W
-(a0)
movea.L
neg.W
#$01B004,a0
-(a0)
OUI
movea.L
neg.B
#$01B004,a0
-(a0)
OUI
movea.L
neg.W
#$01B004,a0
-1(a0)
OUI
registre
a0=$0001B002
a0=$0001B002
a0=$0001B002
a0=$0001B002
($01B000)
XX XX XX XX XX XX
XX XX FE 36 XX XX
2C 34 FE 36 XX XX
2C 34 FE 36 59 DC
OUI
J. FRANCOMME [email protected] - [email protected][email protected]
Website : http://francomme.fr.fm/ (courses and codes)
5 / 14
J. FRANCOMME [email protected] - [email protected][email protected]
Website : http://francomme.fr.fm/ (courses and codes)
6 / 14
Téléchargement