Mode d’emploi utilisateur
, par
Le langage assembleur amil repose sur l’idée d’utiliser les numéros de lignes d’un programme assembleur (un simple fichier texte) comme numéros d’adresses mémoires. Ainsi, chaque ligne contient une instruction ou une donnée et toutes les lignes comptent. Un programme commence à la première ligne, numérotée 1 et le simulateur commencera par exécuter l’instruction sur cette ligne. Les numéros de lignes ne doivent pas être composés dans le fichier texte. La taille de la mémoire disponible pour un programme est exactement le nombre de lignes du fichier texte contenant le programme. Il faut donc insérer dans le fichier texte autant de lignes que nécessaire (une ligne peut être vide).
Le programme suivant lit une donnée x à l’adresse 10, écrit 3x + 1 à l’adresse 11 et termine.
Le voici dans amil, juste après avoir réalisé la multiplication :
Le programme suivant trouve le maximum parmi deux données, x d’adresse 15 et y d’adresse 16, et écrit son résultat à l’adresse 17.
Le voici dans amil, au moment où le résultat vient d’être écrit.
Et juste après avoir réalisé un saut.
Le petit film muet suivant montre amil en fonctionnement pas à pas sur ces deux programmes.
mnémonique | action |
---|---|
stop | Arrête l’exécution du programme. |
noop | N’effectue aucune opération. |
saut i | Met le compteur ordinal à la valeur i. |
sisaut ri j | Si la valeur contenue dans le registre i est positive ou nulle, met le compteur ordinal à la valeur j. |
init x ri | Initialise le registre i avec la valeur x. |
lecture i rj | Charge, dans le registre j, le contenu de la mémoire d’adresse i. |
lecture *ri rj | Charge, dans le registre j, le contenu de la mémoire dont l’adresse est la valeur du registre i. |
ecriture ri j | Écrit le contenu du registre i dans la mémoire d’adresse j. |
ecriture ri *rj | Écrit le contenu du registre i dans la mémoire dont l’adresse est la valeur du registre j. |
inverse ri | Inverse le signe du contenu du registre i. |
add x rj | Ajoute x au contenu du registre j. |
add ri rj | Ajoute la valeur du registre i à celle du registre j. |
mult, div, et | Même syntaxe que pour add mais pour la multiplication, la division entière et le et bit à bit. |