adaptación de la wdr papiercomputer; modelo sencillo de una arquitectura computacional común.
para la versión bailada, ve danza papier
materiales
necesitamos una hoja de papel, algún instrumento para marcarla, y múltiples objetos de una misma clase (frijoles, palillos, canicas, fichas, etc).
memoria(s)
la hoja la dividiremos en dos partes:
- memoria de programa
- memoria de datos (registros)
cada una de esas partes estará dividida en múltiples recuadros numerados. en esta primera versión, numeremos del 0 al 9.
cada recuadro está dividido a la mitad.

el objeto que usamos para marcarla nos puede servir para indicar nuestra posición actual en la memoria de programa.
lista de instrucciones
la computadora cuenta con los 5 siguientes códigos de operación. el código es su identificador numérico único, y entre paréntesis se muestra su mnemónico
- 0: Fin del programa (FIN)
- 1: Condicional (CND)
- 2: Salta a instrucción (SLT)
- 3: Incrementa registro (INC)
- 4: Decrementa registro (DEC)
una instrucción completa consiste de ese código de operación, acompañada de un número llamado argumento u operando.
operandos
ese operando tiene un significado distinto según la instrucción:
- FIN: argumento ignorado
- CND: el argumento es el número de Registro a consultar: si los contenidos de ese registro son 0, hay que saltarse una instrucción, y si no, hay que continuar normalmente con la siguiente.
- SLT: el argumento es el número de línea a la cual saltar a continuación
- INC: el argumento es el número de Registro que ha de incrementarse
- DEC: el argumento es el número de Registro que ha de decrementarse
descripción
podemos expresar a las instrucciones de la siguiente manera:
- FIN: termina la ejecución del programa
- CND Rx: si el registro Rx tiene un valor igual a 0, salta una instrucción; si no, continúa normalmente
- SLT x: salta a la instrucción del programa número x
- INC Rx: súmale 1 al registro Rx
- DEC Rx: réstale 1 al registro Rx
ciclo de instrucción
iniciamos con nuestro apuntador en la instrucción número 0.
el ciclo que seguiremos será:
- fetch: lee la instrucción almacenada en donde está el apuntador
- execute: ejecuta la instrucción correspondiente, y actualiza la posición del apuntador.
en las instrucciones INC y DEC, el apuntador siempre avanza a la siguiente casilla.
en la instrucción SLT, el apuntador se mueve a la casilla indicada como argumento.
en la instrucción CND, el apuntador se mueve a la casilla siguiente, o una más abajo, dependiendo de la condición indicada.
ejemplo de programa
este programa suma los números que están en R0 y R1, colocando el resultado en R0
lista de números
este es el programa en formato de lista de números a colocar en la memoria de programa.
- 0: 2 3
- 1: 4 1
- 2: 3 0
- 3: 1 1
- 4: 2 1
- 5: 0 0
el primer dígito en la lista es el número de línea.
los dos dígitos siguientes son el primer y segundo números de instrucción
lenguaje ensamblador
usando las palabras clave (mnemónicos) para indicar los códigos de operación, el programa se vería así:
- 0: SLT 3 (salta a la línea 3)
- 1: DEC 1 (decrementa R1)
- 2: INC 0 (incrementa R0)
- 3: CND 1 (¿R1 es 0? si sí, salta una instrucción, si no, continúa)
- 4: SLT 1 (salta a la línea 1)
- 5: FIN 0 (fin del programa)
(esta forma de programar, en lenguaje ensamblador, es a la que se refiere la práctica de s-camino)