O Little Man Computer (LMC) é um microprocessador e sistema de computador muito simples projetado para ensinar programação de montagem para iniciantes. Para simplificar as coisas, ele não é apresentado como um computador binário, mas sim como um computador decimal. Ele contém 100 células de memória, numeradas de 0 a 99. Você pode colocar instruções e dados do programa aqui.
Cada célula pode conter um número decimal de 3 dígitos. Aqui podemos armazenar instruções para o funcionamento do computador ou dados para operar. A CPU possui um único acumulador que é usado para realizar operações aritméticas. Há também uma entrada e uma saída onde você pode ler a entrada do usuário e gravar as saídas para o usuário.
Aqui está uma visão geral simples do conjunto de instruções. Cada instrução é na verdade apenas um número de 3 dígitos. Mas geralmente, ao programar, lidamos com abreviações de letras que são mais fáceis de lembrar. Aqui vai uma dica de como ler a descrição abaixo. Por exemplo, a instrução Add
é descrita como tendo o número 1xx
. O que isso realmente significa é que xx
é onde você coloca seu operando (argumento). Portanto, 142
é a instrução para adicionar o conteúdo da célula de memória 42 ao conteúdo do acumulador.
ADD
1xx adiciona conteúdo no endereço xx
na memória ao acumulador.SUB
2xx subtrai o conteúdo do endereço xx
do que está armazenado no acumulador. Armazene o resultado no acumulador.STA
3xx armazena o acumulador no endereço xx
da memória.LDA
5xx com conteúdo no endereço xx
na memória.BRA
6xx salta para a localização xx
no programa.BRZ
7xx salta se o acumulador for zeroBRP
8xx salta se o acumulador for zero ou superior (positivo).INP
901 preenche o acumulador com o número da entrada.OUT
902 envia o valor do acumulador para a fila de saída.HLT
000 Na pasta de exemplos você encontra mais exemplos de programas. Aqui está um exemplo de um programa que lê um número da entrada e depois faz uma contagem regressiva. Portanto, se ler 4 na entrada, escreverá 4, 3, 2, 1 e 0 na saída.
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.
Você pode pegar um programa escrito como exemplo, armazená-lo em um arquivo e fornecer esse nome de arquivo para a função assemble(file)
que produzirá uma lista de números inteiros de 3 dígitos representando seu programa e dados. Você pode alimentar isso com a função simulate!(program, inputs)
para executar seu programa. Ele irá despejar a saída.
Alternativamente, você pode copiar, colar e colocar o código em um dos simuladores LMC baseados na web descritos abaixo.
Você pode encontrar vários simuladores baseados em navegador para a CPU LMC online. Onde você pode percorrer os programas e assistir ao vivo como o computador virtual funciona.
Existem vários jogos que você pode jogar com base em pequenas variações da ideia do LMC. Esta é potencialmente uma boa maneira de envolver as crianças no aprendizado da programação.