logo

Execice 1

Expliquez brièvement (sur le même modèle que les exemples ci-dessus), les instructions suivantes :

  1. ADD R0, R1, #42
  2. LDR R5,98
  3. CMP R4, #18
    BGT 77
  4. STR R0,15
  5. B 100

Exercice 2

Écrire les instructions en assembleur correspondant aux phrases suivantes :

  1. Additionne la valeur stockée dans le registre R0 et la valeur stockée dans le registre R1, le résultat est stocké dans le registre R5
  2. Place la valeur stockée à l'adresse mémoire 878 dans le registre R0
  3. Place le contenu du registre R0 en mémoire vive à l'adresse 124
  4. la prochaine instruction à exécuter se situe en mémoire vive à l'adresse 478
  5. Si la valeur stockée dans le registre R0 est égale 42 alors la prochaine instruction à exécuter se situe à l'adresse mémoire 85

Exercice 3

Voici un programme Python très simple :

x = 4
y = 8
if x == 10:
	y = 9
else :
	x=x+1
z=6

et voici maintenant voici son équivalent en assembleur :

   MOV R0, #4
   STR R0,30
   MOV R0, #8
   STR R0,75
   LDR R0,30
   CMP R0, #10
   BNE else
   MOV R0, #9
   STR R0,75
   B endif
else:
   LDR R0,30
   ADD R0, R0, #1
   STR R0,30
endif:
   MOV R0, #6
   STR R0,23
   HALT

Après avoir analysé très attentivement le programme en assembleur ci-dessus, vous essaierez d'établir une correspondance entre les lignes du programme en Python et les lignes du programme en assembleur. À quoi sert la ligne "B endif" ? À quoi correspondent les adresses mémoires 23, 75 et 30 ?

Exercice 4

Voici un programme Python :

x=0
while x<5:
   x=x+1
   print(x)

Écrivez et testez un programme en assembleur équivalent au programme ci-dessus.

Voir une solution