Voir le doc à distribuer (odt - pdf) et les tableaux vierges (odt - pdf).
Présentation sur un premier exemple
Après avoir vu :
- le binaire et l’hexadécimal,
- quelques circuits électriques implémentant les fonctions logiques ET et OU,
- quelques montages avec des transistors implémentant d’autres fonctions logiques comme NOT et XOR, des bascules, des compteurs et des mémoires…
…on montre un diagramme séquentiel trouvé « dans la nature », afin d’expliquer ce qu’est une horloge et de donner quelques exemples de fréquences.
À chaque clic d’horloge, en combinant des opérations logiques élémentaires, le processeur effectue les opérations suivantes :
- lecture de la valeur dans le registre PC (pour Program Counter), qui vaut
00
à l’initialisation ; - chargement de l’instruction située à l’adresse PC depuis la mémoire vive (RAM) dans le registre CI (pour Current Instruction) ;
- « décodage » de l’instruction, ici ProkPap décode les trois quartets de l’instruction, notés I, J et K : I indique le type d’opération à effectuer et le couple JK représente souvent un emplacement dans la RAM (voir le tableau ci-dessous) ;
- exécution de cette instruction (ne pas passer à l’étape 5 s’il faut s’arrêter !) ;
- si l’instruction ne résulte pas par un saut ou un arrêt, ajouter 1 à PC.
Plus simplement :
- où en est-on ?
- que doit-on faire (récupération) ?
- que doit-on faire (décodage) ?
- faisons-le !
- passons à la suite !
Voici une représentation schématique de la RAM avec un premier programme, sans doute le plus simple que l’on puisse écrire. Chaque « case mémoire » est repérée par l’abscisse K et l’ordonnée J (dirigée vers le bas) et peut stocker 12 chiffres binaires (donc 3 quartets).
Questions
- Combien y a-t-il d’emplacements dans la RAM ?
- Quelle est la taille de la mémoire en octets ?
Voici une représentation des registres. Chacun peut stocker 12 bits, sauf O
qui en stocke un seul et PC
qui en stocke 8.
Les trois quartets de CI
sont notés IJK
, le I
correspondant à une des instructions du tableau ci-dessous (chercher dans la colonne I
) et le J
et le K
servant souvent à désigner une adresse dans la RAM (ligne J
et colonne K
).
LD
pour « load », STO
pour « store », MOV
pour « move », ADD
et SUB
pour addition et soustraction, JMP
ou JP?
pour « jump », IN
et OUT
pour « entrée » et « sortie » et END
pour « fin » (ou arrêt).
Exécutons le premier programme !
- Combien vaut PC ?
00
. - À l’adresse
00
(J=0 et K=0) on trouve l’instructionA00
que l’on charge dans CI. - On a pour cette instruction I=A, J=0 et K=0, et d’après le tableau ci-dessous (dans la dernière ligne) il faut arrêter le programme.
Note
- Un registre est un type de mémoire rapide et « proche » du processeur.
- PC est aussi parfois appelé IC pour Instruction Counter.
- Le « décodage » se fait « mécaniquement » ou plutôt électroniquement avec les fonctions logiques qui ont été combinées.
- Techniquement l’étape 4 fait partie de l’étape 3 car elle est réalisée directement.
- Pour I=7 (
IN
) on peut imaginer que le processeur fait une pause pour qu’on ait le temps de lui communiquer la valeur.
Pour donner une image simplifiée d’un processeur qui « décode », on peut imaginer un circuit intégré branché de cette façon :
À vous d’écrire vos premiers programme :
- afficher zéro et s’arrêter,
- afficher « HELLO » et s’arrêter,
- demander une valeur à l’utilisateur et afficher cette valeur plus un.
Deuxième exemple
Note
Liste de tous les
MOV
:
- 201 : R → A
- 202 : R → B
- 210 : A → R
- 212 : A → B
- 220 : B → R
- 221 : B → A
Exécutez ce programme :
Idem en remplaçant 042 et 013 par 036 et 036.
Quel est le rôle de ce programme ?
Exercices
- Afficher la plus grande de deux valeurs dans la RAM.
- Compte à rebours de la valeur à l’adresse
FF
jusqu’à zéro.
TODO
Assembleur, assemblage, organise la mémoire à partir des mnémoniques, des labels…
Parler un peu de calculabilité.
V2, processeur de plus haut niveau, avec :
- Boutons
- PWS
- ALU
Origine et remerciements
BB-Proc est le digne successeur d’OrdiPapier, qui avait quelques défauts. BB-Proc a des entrées et sorties plus simples et utilise de l’hexadécimal.
Merci à Bordeaux (Philippe?), stagiaire et formation NSI.