28. Un pequeño juego de aciertos
Construye un juego de tres rondas con estado guardado y puntuación.
Abrir esta lección →
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.
STORE 5 200
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
JUMP_IF_ZERO hit
JUMP next
hit: LOAD R2
ADD 1
COPY R0 R2
next: NOP
RETURN
LOAD R2
STORE 201
PRINT
HALT
Añadir entradas a la cola: 5, 2, 5
Inicializar memoria: 200: 5
2. Construir y comprobar
La memoria 200 contiene un byte objetivo. Lee exactamente tres intentos. Cuenta cuántos coinciden, guarda la puntuación en la memoria 201 e imprímela una vez.
Tipos de instrucción requeridos: INPUT, CMP, LOOP, STORE, JUMP_IF_ZERO
Programa inicial
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
#
RETURN
LOAD R2
STORE 201
PRINT
HALT
Tu programa y notas
3. Explicar la máquina
¿Qué cambia con un intento correcto y con uno incorrecto?
29. Una utilidad de búfer con pila
Combina entrada, bucles, pila y almacenamiento por índices.
Abrir esta lección →
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 3 R3
LOAD 10
PUSH
LOAD 20
PUSH
LOAD 30
PUSH
LOAD 0 R1
LOOP R3
POP
STORE R1
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALT
Añadir entradas a la cola: Ninguno
Inicializar memoria: Todos los bytes empiezan en cero
2. Construir y comprobar
Lee N (0–5) y después exactamente N bytes. Usa la pila de datos para invertirlos. Imprime la secuencia invertida y guárdala a partir de la dirección de memoria 0.
Tipos de instrucción requeridos: INPUT, LOOP, PUSH, POP, STORE
Programa inicial
INPUT
COPY R0 R3
LOOP R3
#
RETURN
LOAD 0 R1
LOOP R3
#
RETURN
HALT
Tu programa y notas
3. Explicar la máquina
¿Por qué usar dos fases y qué debe hacer N = 0?
30. Tu propio minisistema operativo
Despacha trabajos en cola a servicios reutilizables y registra sus resultados.
Abrir esta lección →
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 4
CALL double
STORE 64
PRINT
LOAD 3
CALL square
STORE 65
PRINT
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
Añadir entradas a la cola: Ninguno
Inicializar memoria: Todos los bytes empiezan en cero
2. Construir y comprobar
Lee N (0–3) y después N pares (operación, valor). La operación 0 duplica, la 1 eleva al cuadrado y la 2 suma uno. Despacha mediante subrutinas CALL. Imprime cada resultado completo y guarda su byte en las direcciones 64, 65, … en el orden de los trabajos.
Tipos de instrucción requeridos: INPUT, LOOP, CALL, CMP, STORE, RETURN
Programa inicial
INPUT
COPY R0 R3
LOAD 64 R2
LOOP R3
INPUT
COPY R0 R4
INPUT
COPY R0 R1
#
RETURN
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
increment: ADD 1
RETURN
Tu programa y notas
3. Explicar la máquina
¿Por qué puede una salida 260 coexistir con el byte de historial 4?