13. Bucles: repetir acciones
Empareja LOOP con RETURN y trata correctamente las cero repeticiones.
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 8 LOOP 4 PRINT RETURN HALT
Añadir entradas a la cola: Ninguno
Inicializar memoria: Todos los bytes empiezan en cero
Solución de la predicción
Salida: 8, 8, 8, 8
| Instrucción | PC antes | PC después | R0 antes | R0 después | Estado relevante | Salida |
|---|---|---|---|---|---|---|
| LOAD | 0 | 1 | 0 | 8 | {"registers":[8,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | Ninguno |
| LOOP | 1 | 2 | 8 | 8 | {"registers":[8,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[{"start":1,"end":3,"remaining":4,"callDepth":0}],"memoryReads":[],"memoryWrites":[]} | Ninguno |
| 2 | 3 | 8 | 8 | {"registers":[8,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[{"start":1,"end":3,"remaining":4,"callDepth":0}],"memoryReads":[],"memoryWrites":[]} | 8 |
2. Construir y comprobar
Lee un número de repeticiones entre 0 y 5. Imprime 8 exactamente ese número de veces y detente.
Tipos de instrucción requeridos: INPUT, LOOP, PRINT, RETURN
Ejemplo de solución del reto
INPUT COPY R0 R1 LOAD 8 LOOP R1 PRINT RETURN HALT
Casos reales del comprobador
Caso 1
- Entrada
0- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
Ninguno
Caso 2
- Entrada
1- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
8
Caso 3
- Entrada
4- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
8, 8, 8, 8
3. Explicar la máquina
¿Cuántas veces ejecuta LOOP 0 su cuerpo?
Razonamiento y nota docente
Cero: omite el cuerpo y RETURN emparejado. Un número negativo provoca error.