Skip to main content

Kernel

Explicación del Kernel en Ensamblador (NASM 16 bits)

Este documento describe el funcionamiento del kernel de DariOS. Este kernel está diseñado para ser cargado por un bootloader en la dirección de memoria 0x1000.

Kernel


Encabezado

org 0x1000
bits 16
  • org 0x1000: Indica que este código se cargará en la dirección 0x1000 de memoria, donde lo ha colocado el bootloader.
  • bits 16: Define que el código trabaja en modo real de 16 bits.

Flujo principal del kernel

start:
call limpiar_pantalla
xor si, si
jmp inicio
  • call limpiar_pantalla: Llama a una subrutina que limpia la pantalla.
  • xor si, si: Pone a cero el registro SI, que se usará para recorrer cadenas de texto.
  • jmp inicio: Salta a la sección de inicio.
inicio:
mov si, Mensaje_shell
call imprimir_cadena
  • mov si, Mensaje_shell: Carga la dirección del mensaje de la shell en el registro SI.
  • call imprimir_cadena: Imprime la cadena en pantalla.
shell:
call leer_comando
jmp shell
  • call leer_comando: Llama a una función que espera y procesa el comando del usuario.
  • jmp shell: Salta de nuevo a la etiqueta shell, creando un bucle infinito que mantiene la shell en ejecución.

Inclusión de librerías

%include "libs/variables.inc"
%include "libs/comandos.inc"
%include "libs/funciones.inc"
%include "libs/funciones_globales.inc"
%include "comandos/random.inc"

Estos archivos externos contienen:

  • variables.inc: Definición de variables como cadenas de texto.
  • comandos.inc: Lógica para interpretar y ejecutar comandos.
  • funciones.inc / funciones_globales.inc: Funciones reutilizables como imprimir_cadena, leer_comando, etc.
  • random.inc: Posiblemente una función para generar números aleatorios.

Resumen

Este kernel proporciona una shell básica funcional que:

  • Limpia la pantalla al inicio.
  • Muestra el mensaje del prompt
  • Espera comandos del usuario en un bucle infinito.

Ideal para sistemas operativos educativos o demostraciones de sistemas en modo real.