Université de Nice – Sophia Antipolis Licence 1 Sciences Fondamentales 2013-2014
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
Exercice 1 : Programme simple
1. Écrire un programme qui lit une entrée de l’utilisateur (chiffre), le stocke dans l’adresse
mémoire 10.
READ
STORE 10
STOP
2. Compilez et testez votre programme. Quel est le rôle de l’instruction counter ?
L'adresse de l'instruction courante
3. Modifiez votre programme pour que la valeur soit stockée dans une adresse mémoire où
se trouve une instruction de votre programme. Que se passe-t-il ?
READ
STORE 0
STOP
le simulateur râle (il protège les instructions contre l'écriture)