IUT GEII Rouen TP II2
2005 / 2006 TP n°3 - Page 1 / 2 -
TP 3 : Programmation en assembleur:
Adressage indexé et décalage de bits
PARTIE A : ADRESSAGE INDEXE
On souhaite avoir un programme qui affiche les motifs suivants sur les 8 dels connectées
sur le Port B du processeur.
*.......
.......* ('*': DEL allumée)
**...... ('.': DEL éteinte)
......**
***.....
.....***
****....
....****
Ces motifs seront stockés dans une table de 8 valeurs avec la directive assembleur DC :
;------------------------------------
; zone de données
org $2000
TABLE DC.B %01111111, %11111110,%00111111,%11111100
DC.B %00011111, (etc)
;------------------------------------
Ces lignes vont stocker dans la mémoire à l'adresse 'TABLE' les 8 valeurs
correspondants aux motifs désirés.
A1) Saisir la table ci-dessus dans un nouveau fichier, et enregistrez-le dans
"z:\tp_ii2" avec le nom "tp3_a1.asm". Assemblez-le, téléchargez-le dans le
processeur, et vérifier avec NoIce que les valeurs sont correctement placées en
mémoire.
A2) En vous inspirant de l'exemple de lecture dans une table en utilisant l'adressage
indexé (TD n°2), écrire un programme qui va envoyer ces valeurs sur les 8 dels, puis qui
s'arrête. Vous le testerez en pas à pas, puis en temps réel, après avoir inséré un appel à
un sous-programme 'TEMPO' après chaque affichage.
A3) Modifier le programme de façon à ce que le cycle se répète à l'infini.
A4) Enregistrer le programme avec le nom "tp3_a4.asm", et le modifier: en cas
d'appui sur le bouton poussoir, la table devra être lue dans l'ordre inverse.
On fera avant l'instruction une lecture du Port T (PTT), suivie d'un test: si la valeur est
différente de '3', alors, au lieu d'incrémenter, on va décrémenter. Il faudra également
s'assurer que l'index pointe toujours sur une valeur dans la table, et au besoin le
réinitialiser (voir algorigramme partiel ci-dessous)
Attention, la réinitialisation ne sera pas la même selon qu'on incrémente ou qu'on
décrémente !
O
PTT = 3 ?
Incrémenter l'index
Index sorti de
la table ?
O
N
Décrémenter l'index
O
Index sorti de
la table ?
N
Réinitialiser l'index Réinitialiser l'index
N
PARTIE B : DECALAGE ET ROTATIONS DE BITS
Il existe 3 types d'instructions de ce type:
- Les décalages logiques (
Logical Shift
)
- Les décalages arithmétiques (
Arithmetic Shift
)