Le Little Man Computer (LMC) est un microprocesseur et un système informatique très simples conçus pour enseigner la programmation assembleur aux débutants. Pour simplifier les choses, il n'est pas présenté comme un ordinateur binaire mais décimal. Il contient 100 cellules mémoire, numérotées de 0 à 99. Vous pouvez placer ici les instructions et les données du programme.
Chaque cellule peut contenir un nombre décimal à 3 chiffres. Ici, nous pouvons stocker des instructions que l'ordinateur doit exécuter ou des données sur lesquelles opérer. Le processeur possède un seul accumulateur qui est utilisé lors des opérations arithmétiques. Il existe également une entrée et une sortie où vous pouvez lire les entrées de l'utilisateur et écrire des sorties pour l'utilisateur.
Voici un aperçu simple du jeu d’instructions. Chaque instruction n’est en réalité qu’un nombre à 3 chiffres. Mais généralement, lors de la programmation, on utilise des abréviations de lettres plus faciles à retenir. Voici un conseil pour lire la description ci-dessous. Par exemple, l'instruction Add
est décrite comme ayant le numéro 1xx
. Ce que cela signifie réellement, c'est que les xx
sont l'endroit où vous placez votre opérande (argument). Ainsi, 142
est l'instruction pour ajouter le contenu de la cellule mémoire 42 au contenu de l'accumulateur.
ADD
1xx ajoute du contenu à l'adresse xx
en mémoire à l'accumulateur.SUB
2xx soustrait le contenu de l'adresse xx
de ce qui est stocké dans l'accumulateur. Stocker le résultat dans l'accumulateur.STA
3xx stocke l’accumulateur à l’adresse xx
en mémoire.LDA
5xx avec contenu à l'adresse xx
en mémoire.BRA
6xx saute à l'emplacement xx
dans le programme.BRZ
7xx saute si l'accumulateur est à zéroBRP
8xx saute si l'accumulateur est nul ou supérieur (positif).INP
901 remplit l'accumulateur avec le numéro de l'entrée.OUT
902 pousse la valeur de l'accumulateur dans la file d'attente de sortie.HLT
000 Dans le dossier d'exemples, vous trouverez d'autres exemples de programmes. Voici un exemple de programme qui lit un nombre à partir de l'entrée puis compte à rebours. Donc, s’il lit un 4 en entrée, alors il écrira 4, 3, 2, 1 et 0 en sortie.
INP
OUT
LOOP BRZ QUIT // Jump to QUIT if accumulator is 0
SUB ONE // Subtract from accumulator what is stored in ONE
OUT
BRA LOOP // Jump (unconditionally) to the memory address labeled LOOP
QUIT HLT // Label this memory address as QUIT
ONE DAT 1 // Store 1 in this memory address.
Vous pouvez prendre un programme écrit comme exemple, le stocker dans un fichier et donner ce nom de fichier à la fonction assemble(file)
qui produira une liste d'entiers à 3 chiffres représentant votre programme et vos données. Vous pouvez transmettre cela à la fonction simulate!(program, inputs)
pour exécuter votre programme. Cela videra la sortie.
Vous pouvez également copier-coller ceci et placer le code dans l'un des simulateurs LMC Web décrits ci-dessous.
Vous pouvez trouver en ligne plusieurs simulateurs basés sur un navigateur pour le processeur LMC. Où vous pouvez parcourir les programmes et regarder en direct comment fonctionne l'ordinateur virtuel.
Il existe plusieurs jeux auxquels vous pouvez jouer, basés sur de légères variations de l'idée LMC. C’est potentiellement une bonne façon d’impliquer les enfants dans l’apprentissage des programmes.