Treinta pequeños pasos dentro de un ordenador

El curso de OpenKernel

Comprende una idea, pruébala en una CPU visible y resuelve un reto comprobado por la máquina. Empieza con tres instrucciones y termina con tus propios programas.

Sin cuenta ni instalación. Una lección se completa cuando tu programa supera todos los casos del reto. Progreso e insignias quedan en este navegador.

Empezar la lección 1 → Abrir el laboratorio libre

Tu progreso

El progreso se carga en tu navegador.

Completa una unidad para obtener su insignia. Las insignias reflejan retos superados, no visitas.

Navegar en privado, borrar los datos del sitio o cambiar de dispositivo puede eliminar el registro local. Puedes estudiar las lecciones en cualquier orden.

Unidad 1 · unos 20 minutos

Conoce la máquina

Explica la búsqueda y ejecución, los registros, el PC, la salida y la detención.

0 de 3 retos comprobados completos

  1. Tu primer programa con emoji · 5 minutos

    Carga un número en la CPU, imprímelo y detén el programa.

  2. Comprender los registros · 8 minutos

    Usa los ocho espacios de trabajo rápidos sin perder un valor.

  3. Seguir el contador de programa · 7 minutos

    Lee una traza y distingue las líneas de código de las direcciones de instrucción.

Unidad 2 · unos 28 minutos

Aritmética y entrada

Construye cálculos con enteros, entradas guardadas y casos de prueba.

0 de 3 retos comprobados completos

  1. Matemáticas con emoji · 9 minutos

    Combina suma, resta y multiplicación en pasos ordenados.

  2. División y restos · 9 minutos

    Explica el redondeo hacia menos infinito y el resto con signo, también con negativos.

  3. Una calculadora de dos entradas · 10 minutos

    Construye una calculadora reutilizable en lugar de una respuesta fija.

Unidad 3 · unos 28 minutos

Memoria de bytes

Distingue valores y direcciones, y lee y escribe almacenamiento de bytes.

0 de 3 retos comprobados completos

  1. Memoria: el cuaderno del ordenador · 10 minutos

    Guarda un byte y recupéralo de verdad después de sobrescribir R0.

  2. Direcciones en registros · 9 minutos

    Usa una dirección como dato y lee una tabla de consulta.

  3. Bytes y límites · 9 minutos

    Observa por qué la memoria reduce valores y los registros no.

Unidad 4 · unos 29 minutos

Decisiones e indicadores

Usa comparación, resto y caminos etiquetados para expresar decisiones.

0 de 3 retos comprobados completos

  1. Lógica condicional: tomar decisiones · 10 minutos

    Compara valores y elige un camino con un indicador guardado.

  2. Par o impar · 9 minutos

    Usa el resto y una bifurcación para clasificar una entrada.

  3. Una decisión basada en memoria · 10 minutos

    Decide a partir de datos guardados y registra el resultado.

Unidad 5 · unos 34 minutos

Repetición y contadores

Usa bucles acotados, casos de cero, contadores y acumuladores.

0 de 3 retos comprobados completos

  1. Bucles: repetir acciones · 10 minutos

    Empareja LOOP con RETURN y trata correctamente las cero repeticiones.

  2. Construir un contador · 12 minutos

    Imprime del 1 al 10 y generaliza el recuento.

  3. Sumar de uno a N · 12 minutos

    Mantén el acumulador separado del contador del bucle.

Unidad 6 · unos 42 minutos

Algoritmos con estado

Describe y examina invariantes del factorial, Fibonacci y la copia invertida.

0 de 3 retos comprobados completos

  1. Factorial e invariantes de bucle · 12 minutos

    Usa un acumulador multiplicativo y explica por qué 0! es 1.

  2. La sucesión de Fibonacci · 15 minutos

    Conserva dos valores anteriores y actualízalos en un orden seguro.

  3. Invertir un búfer de memoria · 15 minutos

    Copia un búfer al revés con punteros de origen y destino.

Unidad 7 · unos 39 minutos

La pila y las funciones

Usa datos LIFO, marcos de llamada y convenciones de guardar y restaurar.

0 de 3 retos comprobados completos

  1. La pila: último en entrar, primero en salir · 12 minutos

    Guarda valores en la pila de datos y recupéralos en orden inverso.

  2. Llamar a una subrutina · 12 minutos

    Reutiliza código y vuelve a la instrucción posterior a CALL.

  3. Conservar el estado de quien llama · 15 minutos

    Usa una convención de guardar y restaurar cuando una función necesita espacio temporal.

Unidad 8 · unos 39 minutos

Bits y representación

Selecciona y alterna bits, y explica el comportamiento de 32 bits con signo.

0 de 3 retos comprobados completos

  1. Máscaras de bits e indicadores · 12 minutos

    Selecciona bits con AND y actívalos con OR.

  2. Alternar bits · 12 minutos

    Usa el cambio reversible de XOR para actualizar una opción guardada.

  3. Bits con signo y el valor mayor · 15 minutos

    Comprende NOT y comprueba una diferencia con una máscara de signo.

Unidad 9 · unos 45 minutos

Planificación, núcleos y eventos

Distingue políticas de planificación, reparto de trabajo y restauración del estado tras un manejador.

0 de 3 retos comprobados completos

  1. Planificación cooperativa · 15 minutos

    Alterna tareas y distingue las políticas de las instrucciones de CPU.

  2. Repartir trabajo entre núcleos · 15 minutos

    Divide trabajos independientes y combina sus resultados.

  3. Interrupciones y manejadores · 15 minutos

    Atiende un evento y restaura el valor de la tarea interrumpida.

Unidad 10 · unos 56 minutos

Construye pequeños programas

Combina las instrucciones en un juego, una utilidad de búfer y un despachador de trabajos.

0 de 3 retos comprobados completos

  1. Un pequeño juego de aciertos · 18 minutos

    Construye un juego de tres rondas con estado guardado y puntuación.

  2. Una utilidad de búfer con pila · 18 minutos

    Combina entrada, bucles, pila y almacenamiento por índices.

  3. Tu propio minisistema operativo · 20 minutos

    Despacha trabajos en cola a servicios reutilizables y registra sus resultados.

Bienvenidas las primeras experiencias de programación

Tres guías para principiantes

Sigue una receta breve y predice su salida. Abre ese mismo programa en el laboratorio y después resuelve el reto de la lección para comprobar tu propia solución.

Tu primer programa

Construye un programa que imprima 42 y sigue su traza.

  1. Inserta 📥 LOAD desde la paleta.
  2. Añade el número 42 después de LOAD.
  3. Añade 🖨️ PRINT en la siguiente línea.
  4. Añade ⏹️ HALT en la última línea.
  5. Ejecuta y confirma que la consola muestra realmente 42.
  6. Avanza por el programa y observa R0, PC y la salida.
📥 42
🖨️
⏹️

Salida esperada: 42

Abrir la guía en el laboratorio →

Resolver el reto de la lección →

Matemáticas con emoji

Calcula 10 + 5 y observa cómo cambia el acumulador.

  1. Inserta 📥 LOAD.
  2. Carga el número 10.
  3. Añade ➕ ADD en la siguiente línea.
  4. Usa 5 como operando de ADD.
  5. Añade 🖨️ PRINT para mostrar el resultado.
  6. Añade ⏹️ HALT para detenerte.
  7. Ejecuta y confirma que la consola muestra 15.
  8. Avanza otra vez y explica por qué PRINT recibe la suma.
📥 10
➕ 5
🖨️
⏹️

Salida esperada: 15

Abrir la guía en el laboratorio →

Resolver el reto de la lección →

Bucle de cuenta atrás

Cuenta de cinco a uno con una salida etiquetada.

  1. Inserta 📥 LOAD.
  2. Establece el contador inicial en 5.
  3. Nombra la instrucción PRINT con again: para dar al salto un destino claro.
  4. Añade ➖ SUB después de imprimir.
  5. Resta 1 en cada vuelta.
  6. Añade ❓ JUMP_IF_ZERO justo después de SUB.
  7. Usa la etiqueta done como destino de salida.
  8. Añade ⏭️ JUMP para el camino que sigue contando.
  9. Usa la etiqueta again para volver a PRINT.
  10. Añade done: ⏹️ HALT después del bucle.
  11. Ejecuta y confirma que la salida real es 5, 4, 3, 2, 1.
  12. Traza la última resta: se activa el indicador de cero y la ejecución llega a HALT.
📥 5
again: 🖨️
➖ 1
❓ done
⏭️ again
done: ⏹️

Salida esperada: 5, 4, 3, 2, 1

Abrir la guía en el laboratorio →

Resolver el reto de la lección →