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
.
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 registroSI
, 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 registroSI
.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 etiquetashell
, 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.