Académique Documents
Professionnel Documents
Culture Documents
Informatique Générale
TP n° 10
Langage assembleur
Le but de ce TP est d’étudier un langage dit de bas niveau, c’est à dire très proche des instructions
élémentaires du processeur. Ce langage, appelé assembleur, est exécuté par le processeur après de
très légères modifications. Il peut être écrit par un humain (comme ici) mais en pratique c’est très
rare, il est plutôt généré à partir de langages de plus haut niveau comme C, Java ou Scheme.
Un langage assembleur est spécifique à une famille de processeur et relativement complexe. Nous
allons donc utiliser un langage simplifié qui sera exécuté sur un processeur simplifié, écrit en Java.
Ce processeur ne possède qu’un seul registre. Vous le trouverez à
http://www.cse.yorku.ca/~peterc/simulator/simulator.html
Attention c'est une applet Java, peut être un peu long à charger et nécessite d'avoir le plugin (en
théorie, les machines des étudiants l'ont).
Dans le « code builder », on choisit une instruction à gauche et on l'insère dans le code par ►.
Mettre l'adresse avant de cliquer sur ► si l'instruction a besoin d'une adresse. Puis « compile ».
Ensuite passez à « Little Man Computer »
On peut changer la partie adresse d'une instruction par un clic droit sur l'instruction, et changer une
instruction de place par les flèches haut et bas
Notre langage sera composé dans un premier temps des instructions suivantes
STOP : arrête l’exécution du programme
LOAD : charge l’adresse mémoire passée en paramètre dans un registre du
processeur
STORE : sauvegarde le contenu du registre dans la zone mémoire passée en paramètre
ADD/SUBSTRACT : ajoute/soustrait le contenu du registre à l’adresse mémoire passée en
paramètre et stock le résultat dans le registre
READ : lit une information entrée par l’utilisateur et la place dans le registre
On range les 2 valeurs lues en 20 et 21. On se sert de 22 comme variable tampon pour
faire l'échange.
Exercice 2 : Branchements
Notre langage assembleur fournit une série d’instructions de branchement (également appelées
saut) qui permettent de continuer l’exécution du programme à une adresse passée en paramètre
1. Reprenez le programme 1.4. et insérez une instruction BRANCH qui aura comme
paramètre l’adresse de l’instruction STOP. Placez cette instruction en deuxième position
de votre programme et exécutez le. Que constatez vous ? Observez l’instruction counter
On saute donc on n'exécute pas le reste du programme. L'IC prend pour valeur l'adresse
du saut
2. Ecrire un programme qui lit un entier de l’utilisateur, le place dans une zone mémoire,
effectue les opérations suivantes en boucle : lire l’entier de la mémoire, l’ajouter à lui
même, l’écrire en mémoire à la place de l’ancien.