Académique Documents
Professionnel Documents
Culture Documents
Le langage machine est le langage natif du processeur et le seul qui soit reconnu par celui-ci. Un
processeur ne peut comprendre un langage rentré par l’utilisateur, un programme python ou java par
exemple. Entre les langages que l’on connait et que l’on implante et le langage machine, il existe des langages
intermédiaires et notamment le langage assembleur qui est le langage de plus bas niveau qu’un
humain peut encore appréhender et que le processeur sait traduire en langage machine. Il existe plusieurs
langages assembleurs. On va travailler avec un simulateur et donc de fait utiliser sa syntaxe.
En langage assembleur, on peut rencontrer des calculs simples (addition, soustraction, multiplication), des
affectations (placer telle valeur de la mémoire vive dans tel registre et vice versa) et enfin des instructions de
saut qui permettent de coder des instructions conditionnelles par exemple. Il y a trois possibilités pour accéder
à un opérande (valeur sur laquelle va être opérée une opération) :
• Il est directement saisi
• Il est dans un registre : il faut alors indiquer le nom de ce registre
• Il est dans la mémoire vive : il faut indiquer son adresse.
Comparaison :
CMP Comparaison CMP R0 , #10 : compare 10 et la valeur du registre R0 puis…
BEQ BEQ 20 : Va à l’adresse 20 en mémoire si R0 =10
BNE BNE 20 : Va à l’adresse 20 en mémoire si R0 ≠10
BGT BGT 20 : Va à l’adresse 20 en mémoire si R0 >10
BLT BLT 20 : Va à l’adresse 20 en mémoire si R0 <10
Remarque : Pour les instructions de saut, on donnera un Label et non un nombre.
Exemple : BEQ test.... Si l’égalité est vraie, le programme sautera les lignes jusqu’à rencontrer dans le
programme le mot test: (Attention : les 2 points doivent être collés au mot test dans la syntaxe).
Vous pouvez tester vos programmes assembleur dans le simulateur à l’adresse suivante :
http://www.peterhigginson.co.uk/AQA/
Exercice 1 : Quelques instructions de base
Ecrire en langage assembleur les instructions suivantes :
• Affecter la valeur 5 au registre R2 MOV R2, #5
• Additionner 20 avec la valeur du registre R2 et stocker le résultat à l’adresse mémoire ADD R2,R2,#20
• Placer la valeur stockée à l’adresse mémoire 30 dans le registre R1, lui soustraire 10 et affecter le STR R2,30
résultat à l’adresse mémoire 31. LDR R1,30
SUB R1,R1 #10
Exercice 2 : un calcul simple STR R1,31
Exercice 3 : Un calcul simple avec saisie des valeurs au clavier et affichage à l’écran
Voici une suite d’instruction :
INP R0, 2 Place la valeur entre au clavier dans le registre R0
STR R0, 100 Stock la valeur Du registre R0 A l’adresse mémoire 100
INP R1, 2 Place la valeur entrée au clavier dans le registre R1
STR R1, 150 Stock la valeur du registre R1 à l'adresse mémoire 150
ADD R2, R1, R0 Ajouter la valeur du registre R0 a la valeur du registreR1 et
stock dans e registre R2.
OUT R2, 4
HALT Fin
1. Indiquer la signification de cette suite d’instructions.
2. Proposer un programme en langage python qui traduit le code assembleur précédent (après avoir
travaillé l’activité 3.1).