Premiers tests
Programmer en langage assembleur
La partie de gauche permet de saisir des programmes en langage assembleur.
Dans la partie "éditeur" ("Assembly Language") saisissez les lignes de codes suivantes:
MOV R0,#42 STR R0,150 HALT |
Signification:
MOV R0,#42 : copie la valeur 42 dans le registre R0
STR R0,150 : stocke le contenu du registre R0 à l'adresse 150 de la mémoire
Une fois la saisie terminée, cliquez sur le bouton "submit".
L'assembleur a fait son travail, il a converti les 3 lignes de notre programme en instructions machines, la première instruction machine est stockée à l'adresse mémoire 000 (elle correspond à "MOV R0,#42" en assembleur), la deuxième à l'adresse 001 (elle correspond à "STR R0,150" en assembleur) et la troisième à l'adresse 002 (elle correspond à "HALT" en assembleur)
Vous devriez obtenir ceci :
Nous pouvons donc affirmer que :
- l'instruction machine "11100011 10100000 00000000 00101010" correspond au code assembleur "MOV R0,#42"
- l'instruction machine "11100101 10001111 00000010 01001100" correspond au code assembleur "STR R0,150"
- l'instruction machine "11101111 00000000 00000000 00000000" correspond au code assembleur "HALT"
Au passage, pour l'instruction machine "11100011 10100000 00000000 00101010", vous pouvez remarquer que l'octet le plus à droite, (00101010) base2, est bien égal à (42) base10 .
Vous pouvez repasser à un affichage en base 10 avec bouton "OPTION" puis "signed". Passez à un affichage en base 10 vous facilitera la lecture des données présentes en mémoire. Dans le cas présent du contenu de la Ram vous obtenez des nombres bizarres parce que les instructions sont des nombres négatifs ( 1 complètement à gauche).
Une première exécution
Pour exécuter notre programme, il suffit maintenant de cliquer sur le bouton "RUN".
Vous allez voir le CPU "travailler" en direct grâce à de petites animations.
Si cela va trop vite (ou trop doucement), vous pouvez régler la vitesse de simulation à l'aide des boutons "<<" et ">>". Un appui sur le bouton "STOP" met en pause la simulation, si vous rappuyez une deuxième fois sur ce même bouton "STOP", la simulation reprend là où elle s'était arrêtée.
Une fois la simulation terminée
Vous pouvez constater que le registre R0 a bien stocké le nombre 42. |
vous pouvez constater que la cellule mémoire d'adresse 150, contient bien le nombre 42 (en base 10) |
Remarques : pour relancer la simulation, il est nécessaire d'appuyer sur le bouton "RESET" afin de remettre les registres R0 à R12 à 0, ainsi que le registre PC (il faut que l'unité de commande pointe de nouveau sur l'instruction située à l'adresse mémoire 000). La mémoire n'est pas modifiée par un appui sur le bouton "RESET", pour remettre la mémoire à 0, il faut cliquer sur le bouton "OPTIONS" et choisir "clr memory". Si vous remettez votre mémoire à 0, il faudra cliquer sur le bouton "ASSEMBLE" avant de pouvoir exécuter de nouveau votre programme.
Quelquefois le programme plante lors d'une deuxième exécution. Actualiser la page pour réinitialiser ou touche F5, et coller à nouveau le programme assembleur.
Created with the Personal Edition of HelpNDoc: Full-featured Help generator