IUT Informatique 1A - FI S2 Introduction à l’architecture 2014 – 2015 Sylvain Chevallier [email protected] TP 6 - Assembleur et C - groupe A Préambule Notions : Pointeurs, compilation Evaluation : Compte-rendu ramassé à la fin du TP Pour ce TP, vous utiliserez le logiciel DevMic11acps, en mode simulateur. Question 1 : Version C 1. Écrivez un programme en C permettant la saisie de 2 nombres entrés sur le PortE et le PortC, et affichant un résultat de comparaison identique à l’exercice 1 du TD6. 2. Observez le résultat de la compilation C (transformation du programme C en assembleur 68HC11). Expliquez l’architecture générale du programme (appel de la routine assembleur main). 3. Repérez les 4 fonctions de test (les 4 instructions assembleur) 4. Comment est faite la réservation d’une variable de type char ? 5. Ajoutez la déclaration d’un int et d’un float. Quel est la réservation effectuée ? 6. La déclaration d’un float entraı̂ne une réservation mémoire supplémentaire. Vérifiez-le en supprimant puis en ajoutant un float. Quelle est la taille de cette réservation mémoire supplémentaire ? 7. Quelle en est la raison d’après-vous ? Question 2 : Version assembleur 1. Écrivez le même programme en assembleur directement et testez-le. 2. Comparez la taille des deux programmes. Concluez. Question 3 : Adressage indexé L’adressage indexé utilise un registre d’index (16 bits, registre x ou y). Par exemple : 1 2 3 4 PORTB equ $04 ldx #$1000 lda #$12 sta PORTB, x ; s t o c k a g e a c c u m u l a t e u r à l ’ a d r e s s e x+PORTB = $1000+$04=$1004 1 L’adressage indexé est utilisé principalement comme équivalent C des pointeurs pour manipuler les tableaux. 1. Écrivez un programme assembleur qui : — Par une simple réservation, réserve N cases mémoires (N sera déclaré dans un equ) à partir de l’adresse $C400 — Pour N = 10, remplit par programmation ces N cases avec $02 2. Complétez ce programme pour faire la somme de ces 10 cases et affichez le résultat sur le PortB. 3. Écrivez le même programme en langage C 4. Comparez les 2 programmes : — assembleur direct — assembleur issu du C compilé 2