Initiation à l'assembleur¶
Certains élémenst sont repris de : https://pixees.fr/informatiquelycee/n_site/nsi_prem_von_neu.html
Il n'est pas question d'apprendre à programmer en assembleur dans ce cours, mais voici tout de même quelques exemples d'instructions en assembleur :
Place la valeur stockée à l'adresse mémoire 78 dans le registre R1 (par souci de simplification, nous continuons à utiliser des adresses mémoire codées en base 10)
Place la valeur stockée dans le registre R3 en mémoire vive à l'adresse 125
Additionne le nombre 128 (une valeur immédiate est identifiée grâce au symbole #) et la valeur stockée dans le registre R0, place le résultat dans le registre R1
Additionne la valeur stockée dans le registre R1 et la valeur stockée dans le registre R2, place le résultat dans le registre R0
Soustrait le nombre 128 de la valeur stockée dans le registre R0, place le résultat dans le registre R1
Soustrait la valeur stockée dans le registre R2 de la valeur stockée dans le registre R1, place le résultat dans le registre R0
Place le nombre 23 dans le registre R1
Place la valeur stockée dans le registre R3 dans le registre R0
Nous avons une structure de rupture de séquence, la prochaine instruction à exécuter se situe en mémoire vive à l'adresse 45
Compare la valeur stockée dans le registre R0 et le nombre 23. Cette instruction CMP doit précéder une instruction de branchement conditionnel BEQ, BNE, BGT, BLT (voir ci-dessous)
Compare la valeur stockée dans le registre R0 et la valeur stockée dans le registre R1.
La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le registre R0 est égale à 23
La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le registre R0 n'est pas égale à 23
La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le registre R0 est plus grand que 23
La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le registre R0 est plus petit que 23
Arrête l'exécution du programme
Encore une fois, il n'est pas question d'apprendre à programmer en assembleur, les instructions ci-dessus sont uniquement des exemples.
On débute doucement
Que contient le registre R1
?
Expliquez brièvement ces instructions.
Exercice
Écrire les instructions en assembleur correspondant aux phrases données.
-
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 n'est pas égale à 42 alors la prochaine instruction à exécuter se situe à l'adresse mémoire 85.
Exercice
Expliquez brièvement (sur le même modèle que les exemples ci-dessus), les instructions suivantes :
Exercice
Voici un programme Python simple :
Et voici maintenant voici son équivalent en assembleur :
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 ?