16. Factorial e invariantes de bucle
Usa un acumulador multiplicativo y explica por qué 0! es 1.
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 R1
LOAD 1 R2
LOOP 4
LOAD R2
MUL R1
COPY R0 R2
LOAD R1
SUB 1
COPY R0 R1
RETURN
LOAD R2
PRINT
HALT
Añadir entradas a la cola: Ninguno
Inicializar memoria: Todos los bytes empiezan en cero
2. Construir y comprobar
Lee N entre 0 y 6 e imprime N!. Usa un bucle y un acumulador de multiplicación.
Tipos de instrucción requeridos: INPUT, LOOP, MUL
Programa inicial
INPUT
COPY R0 R1
COPY R0 R3
LOAD 1 R2
LOOP R3
#
RETURN
LOAD R2
PRINT
HALT
Tu programa y notas
3. Explicar la máquina
¿Por qué empieza el acumulador de producto en 1?
17. La sucesión de Fibonacci
Conserva dos valores anteriores y actualízalos en un orden seguro.
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 1 R1
LOAD 1 R2
LOOP 8
LOAD R1
PRINT
ADD R2
COPY R2 R1
COPY R0 R2
RETURN
HALT
Añadir entradas a la cola: Ninguno
Inicializar memoria: Todos los bytes empiezan en cero
2. Construir y comprobar
Lee N entre 0 y 8. Imprime los primeros N valores de Fibonacci, empezando por 1, 1. No imprimas nada si N = 0.
Tipos de instrucción requeridos: INPUT, LOOP, ADD, COPY
Programa inicial
INPUT
COPY R0 R4
LOAD 1 R1
LOAD 1 R2
LOOP R4
#
RETURN
HALT
Tu programa y notas
3. Explicar la máquina
¿Por qué puede romper Fibonacci reemplazar demasiado pronto el primer valor anterior?
18. Invertir un búfer de memoria
Copia un búfer al revés con punteros de origen y destino.
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 1 0
STORE 2 1
STORE 3 2
STORE 4 3
LOAD 3 R1
LOAD 16 R2
LOOP 4
LOAD [R1]
STORE R2
LOAD R1
SUB 1
COPY R0 R1
LOAD R2
ADD 1
COPY R0 R2
RETURN
HALT
Añadir entradas a la cola: Ninguno
Inicializar memoria: 0: 1, 1: 2, 2: 3, 3: 4
2. Construir y comprobar
Hay cuatro bytes inicializados en las direcciones 0–3. Cópialos en orden inverso a las direcciones 16–19 y deja los originales sin cambios. Usa un bucle y direcciones en registros; no se requiere salida.
Tipos de instrucción requeridos: LOOP, LOAD, STORE
Programa inicial
LOAD 3 R1
LOAD 16 R2
LOOP 4
#
RETURN
HALT
Tu programa y notas
3. Explicar la máquina
¿Es una inversión en el mismo lugar? ¿Qué debe conservarse?