7. Memoria: el cuaderno del ordenador
Guarda un byte y recupéralo de verdad después de sobrescribir R0.
1. Predecir y trazar
Antes de ejecutar el programa de prueba, predice su salida y traza las tres primeras instrucciones ejecutadas. Sigue los registros, indicadores o memoria relevantes. Después avanza paso a paso para comparar.
LOAD 42 STORE 0 LOAD 99 STORE 1 LOAD 0 LOAD [0] PRINT LOAD [1] PRINT HALT
Añadir entradas a la cola: Ninguno
Inicializar memoria: Todos los bytes empiezan en cero
Solución de la predicción
Salida: 42, 99
| Instrucción | PC antes | PC después | R0 antes | R0 después | Estado relevante | Salida |
|---|---|---|---|---|---|---|
| LOAD | 0 | 1 | 0 | 42 | {"registers":[42,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | Ninguno |
| STORE | 1 | 2 | 42 | 42 | {"registers":[42,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[0]} | Ninguno |
| LOAD | 2 | 3 | 42 | 99 | {"registers":[99,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | Ninguno |
2. Construir y comprobar
Lee una entrada de un byte (0–255), guárdala en la dirección de memoria 10, pon R0 en cero y después recupera el byte de memoria e imprímelo.
Tipos de instrucción requeridos: INPUT, STORE, LOAD
Ejemplo de solución del reto
INPUT STORE 10 LOAD 0 LOAD [10] PRINT HALT
Casos reales del comprobador
Caso 1
- Entrada
9- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
9- Memoria final esperada
10: 9- Lecturas de memoria requeridas
10
Caso 2
- Entrada
42- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
42- Memoria final esperada
10: 42- Lecturas de memoria requeridas
10
Caso 3
- Entrada
127- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
127- Memoria final esperada
10: 127- Lecturas de memoria requeridas
10
3. Explicar la máquina
¿Qué código lee la memoria 10 y qué código carga el número 10?
Razonamiento y nota docente
LOAD [10] lee el byte; LOAD 10 carga el literal. STORE y la lectura posterior conservan el byte aunque se sobrescriba R0.