Instruction assembleur | Signification |
---|---|
copier la valeur (15 ( 'l ' = litteral ) vers l'adresse mémoire 20 ( 'r ' = register ) |
|
copier la valeur 27 vers l'adresse 21 | |
copier l'adresse 20 vers l'accumulateur | |
additionner le contenu de l'accumulateur et celui de l'adresse 21 | |
copier le contenu de l'accumulateur vers l'adresse 22 | |
copier l'adresse 22 vers le registre d'affichage |
Ce programme fait donc ( simplement ! 😅) l'addition des deux valeurs placées aux adresses 20 et 21...
Vérification : Les LEDs affichent bien : 00101010(2)
= 42(10)
.
On remplace simplement l'instruction d'addition par celle de soustraction; comme la machine ne gère pas les nombres en complément à 2, le résultat, lorsqu'il est théoriquement négatif, peut parfois surprendre...
Faire le produit de deux valeurs stockées aux adresses 20 et 21 :
Dans le cours sur la représentation binaire, vous avez vu que pour multiplier un nombre binaire par 2, il suffit de décaler tous ses bits d'une position vers la gauche; il existe une instruction
qui réalise ceci, l'instruction shiftrl
:
Les LEDs affichent bien : 00011110(2)
= 30(10)
.
C'est plus délicat...
On a besoin, en plus de l'accumulateur, de 3 emplacements mémoires :
Et attention, le programme commence à être assez long : on choisira donc des adresses suffisamment "loin" du début de la mémoire pour ne pas venir "empiéter" sur les instructions ( architecture de von Neumann ! )