Little Man Computer (LMC) es un microprocesador y un sistema informático muy simple diseñado para enseñar programación ensambladora a principiantes. Para simplificar las cosas, no se presenta como una computadora binaria sino decimal. Contiene 100 celdas de memoria, numeradas del 0 al 99. Puede colocar instrucciones y datos del programa aquí.
Cada celda puede contener un número decimal de 3 dígitos. Aquí podemos almacenar instrucciones para que la computadora funcione o datos para operar. La CPU tiene un único acumulador que se utiliza al realizar operaciones aritméticas. También hay una entrada y una salida donde puede leer la entrada del usuario y escribir salidas para el usuario.
Aquí hay una descripción general simple del conjunto de instrucciones. Cada instrucción es en realidad solo un número de 3 dígitos. Pero normalmente cuando se programa se trabaja con abreviaturas de letras que son más fáciles de recordar. A continuación se ofrece un consejo sobre cómo leer la descripción a continuación. Por ejemplo, se describe que la instrucción Add
tiene el número 1xx
. Lo que esto realmente significa es que xx
es donde colocas tu operando (argumento). Entonces 142
es la instrucción para sumar el contenido de la celda de memoria 42 al contenido del acumulador.
ADD
1xx agrega contenido en la dirección xx
en la memoria al acumulador.SUB
2xx resta el contenido de la dirección xx
de lo que está almacenado en el acumulador. Almacene el resultado en el acumulador.STA
3xx almacena el acumulador en la dirección xx
de la memoria.LDA
5xx con contenido en la dirección xx
en memoria.BRA
6xx salta a la ubicación xx
en el programa.BRZ
7xx salta si el acumulador está a ceroBRP
8xx salta si el acumulador es cero o superior (positivo).INP
901 llenar acumulador con número de entrada.OUT
902 empuja el valor del acumulador a la cola de salida.HLT
000 programa de parada En la carpeta de ejemplos puedes encontrar más ejemplos de programas. A continuación se muestra un ejemplo de un programa que lee un número de la entrada y luego cuenta atrás. Entonces, si lee un 4 en la entrada, escribirá 4, 3, 2, 1 y 0 en la salida.
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.
Puede tomar un programa escrito como ejemplo, almacenarlo en un archivo y darle ese nombre de archivo a la función assemble(file)
que producirá una lista de números enteros de 3 dígitos que representan su programa y sus datos. Puede enviar esto a la función de simulate!(program, inputs)
para ejecutar su programa. Volcará la salida.
Alternativamente, puede copiar, pegar esto y poner el código en uno de los simuladores LMC basados en web que se describen a continuación.
Puede encontrar en línea varios simuladores basados en navegador para la CPU LMC. Donde podrás recorrer programas y ver en vivo cómo opera la computadora virtual.
Hay varios juegos a los que puedes jugar basándose en ligeras variaciones de la idea de LMC. Esta es potencialmente una buena manera de involucrar a los niños en el aprendizaje de la programación.