Cette page décrit deux additionneurs automatisés. Le premier stocke des octets en mémoire et les additionne. La somme est enfin rangée dans la première adresse mémoire contenant une valeur nulle.
Le second circuit est un additionneur triple octets. Il sait additionner et soustraire des valeurs sur 3 octets trouvées en mémoire, chaque triplet étant précédé d'un code d'opération sur 1 octet.
La zone de mémoire à accès direct RAM de 1024 octets est représentée par le bloc rectangulaire MEMOIRE 1Ko à gauche du circuit. Pour changer une valeur, cliquez dans une ligne de la colonne d'adresses pour faire apparaître une zone de saisie. Entrez dans la zone de saisie par clic (ou la touche TAB) et saisissez le nouveau nombre en hexadécimal puis validez par clic du bouton d'écriture Changer.
Les schémas étant assez étendus (surtout le second), pensez à dézoomer le contenu de la fenêtre du navigateur, par exemple avec Ctrl-(signe moins) ou Ctrl-(Molette).
Les valeurs présentes dans le bloc mémoire de 1 Ko, à gauche, sont les mêmes que dans le livre. Le compteur génère l'addresse 0000h, et le premier octet est l'entrée A de l'additionneur.
Pour démarrer une addition, vous sollicitez le bouton de top d'horloge (Clock). La somme du premier octet en mémoire et de la valeur 00h est sauvée dans le verrou (latch).
Cliquez à nouveau Clock pour faire progresser le Compteur vers l'adresse suivante 0001h, ce qui permet de lire l'octet suivant en mémoire. Un autre appui sur Clock stocke le nouveau sous-total accumulé dans le verrou.
En continuant ainsi, vous finissez par stocker la somme depuis le Verrou dans la 1ère adresse mémoire contenant 00h.
MEMOIRE 1Ko
Saisissez une valeur hexadécimale entre 00 et FF
Addr
DO
DI
Write
Utilisez le bouton de remise à zéro Clear pour réinitialiser les Bascules (flip-flop), le Compteur et les Verrous. Cet effacement n'a pas d'effet sur le contenu du bloc Mémoire à gauche. Pour restaurer l'état initial de la mémoire, rechargez/actualisez la page web (F5).
Vous remarquerez que la configuration des deux bascules flip-flops est un peu différente de celle du livre. Celle du livre est plus intelligible du fait que le premier signal d'horloge Clock fait avancer le Compteur alors que le second génère le signal d'impulsion.
Le problème est que cet enchaînement ne fonctionne pas tout à fait lorsque le Compteur est à l'adresse 0000h. Dans ce cas particulier, le premier signal Clock doit produire le signal d'impulsion Pulse pendant que le second fait avancer le Compteur. C'est pour cette raison que les deux bascules commencent dans l'état armé (set), donc avec les sorties Q à 1, et que le bouton Clear est relié aux entrées Preset des bascules.
La même configuration basée sur deux bascules va servir dans le prochain programme puis encore dans le schéma de Décodeur d'instruction dans le Chapitre 23.
Les valeurs présentes dans le bloc Mémoire de 1 Ko, à gauche, sont les mêmes que dans le livre. Le Compteur produit d'abord la valeur d'addresse 0000h, ce qui permet d'accéder au premier octet en mémoire. Cet octet est celui du code opération d'une instruction (ADD).
Pour démarrer l'additionneur, vous sollicitez le bouton Clock, ce qui entraîne le stockage de l'octet d'instruction dans le Verrou d'instruction. Un deuxième clic fait progresser le Compteur puis un troisième stocke l'octet dans le Verrou de l'octet Bas.
Les quatre appuis suivants sur Clock font progresser l'adresse à 0002h afin de stocker l'octet de donnée suivant (le médian) dans le verrou. L'adresse passe ensuite à 0003h ce qui permet de récupérer le troisième octet, celui de poids fort.
On continue ainsi pour traiter les nombres suivants. L'octet d'instruction valant 04h fait stocker les trois octets du résultat en mémoire. Enfin, l'octet d'instruction 08h entraîne l'arrêt du processeur.
MEMOIRE 1Ko
Saisissez une valeur hexadécimale entre 00 et FF !
Addr
DO
DI
Write
Utilisez le bouton de remise à zéro Clear pour réinitialiser les Bascules (flip-flops), le Compteur et les Verrous. Cet effacement n'a pas d'effet sur le contenu de la zone Mémoire. Pour restaurer l'état initial de la mémoire, rechargez/actualisez la page web (F5).