QUESTION 1 : Après avoir assemblé le programme mais avant son exécution, regardez dans
le dossier du travail et ouvrez le fichier <nom_programme>.lst. Quelle est la taille du
programme dans l’exemple utilisé ? Vérifiez le résultat obtenu à l’aide du fichier
<nom_projet>.map.
QUESTION 2 : Toujours avec le fichier <nom_projet>.map , à quelle adresse sera placée la
première instruction du programme de notre exemple ?
QUESTION 3 : Selon les indications dans le tutoriel, lancez l’exécution du programme en
mode pas à pas et observez les contenus des registres R0-R12, xPSR, PC (R15)
Quelle est l’adresse de la première instruction de la fonction __main (réponse de la
précédente question)
Quelle est la valeur du PC avant exécuter cette première instruction ?
Quelle est la valeur du PC après son exécution et à quoi cela correspond ?
Quel est l’état des indicateurs N,Z,X,C après l’instruction ADDS r1,r2 ?
Opérations arithmétiques et logiques : donner pour chacune des opérations ci-dessous,
l’instruction en langage assembleur ARM Cortex – M3. On traitera le cas des données
codées 32 bits. Pour ces exercices, les registres seront initialisés à l’aide des constantes
définies avec la directive EQU. Les résultats sont rangés dans un registre.
Donner pour chacune de ces opérations le résultat attendu, ainsi que l’état des indicateurs
N, Z, V et C positionnés à 1. Vérifier à l’aide du simulateur µVISION4que le résultat observé
correspond à celui attendu.
254 + 1
(-3) + (-127)
28+30
0x80000000 + 0x80000000
0xFFFFFFFF ET 0x0000FFFF
0xFFFF0000 OU 0x0000FFFF
En partant de l’exemple suivant, complétez-le pour réaliser les exercices ci-dessous. Pour
chaque opération, donner le contenu de registre modifié ou de la mémoire modifiée.
On suppose que le contenu de la mémoire en octet à partir de l’adresse indiquée par
l’étiquette TAB est le suivant : 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA,
0x01, 0x02,0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09.
Chaque exercice sera réalisé a) avec un mode d’adressage indirect et b) mode d’adressage
indirecte avec décalage.
Partie 3 : Exercices – Accès aux données
Partie 2 : Exercices – Opérations arithmétiques et logiques