
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