Exercices - Assembleur
Les exercices précédés du symbole sont à faire sur machine, en sauvegardant le fichier si nécessaire.
Les exercices précédés du symbole doivent être résolus par écrit.
Assembleur
Exercice 2
Expliquez brièvement par une phrase, les instructions suivantes :
- ADD R0, R1, #42
- LDR R5,98
- CMP R4, #18
- BGT 77
- STR R0,15
- B 100
Écrire les instructions en assembleur correspondant aux phrases suivantes :
- « 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 »
- « Place la valeur stockée à l’adresse mémoire 878 dans le registre R0 »
- « Place le contenu du registre R0 en mémoire vive à l’adresse 124 »
- « La prochaine instruction à exécuter se situe en mémoire vive à l’adresse 478 »
- « 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
On considère le programme Python donné à la fin du cours et sa traduction en Python.
x = 4
y = 8
if x == 10:
y = 9
else :
x=x+1
z=6et voici maintenant voici son équivalent en assembleur :
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- À quoi sert la ligne B endif ?
- À quoi correspondent les adresses mémoires 23, 75 et 30 ?
Exercice 4
Le module dis de Python permet de “désassembler” du code Python, c’est-à-dire d’afficher les instructions machines correspondant à des instructions Python.
En console interactive, entrer les lignes suivantes et interpréter le résultat.
>>> import dis >>> code = """ a = 5 a = a + 3 """ >>> dis.dis(code)Recommencer en remplaçant le code analysé par le code de l’exercice précédent. Expliquer les différences entre l’assembleur Python et l’assembleur utilisé dans l’exercice précédent.