Página 1 de 1

Bootloader en Ensamblador

Publicado: Dom, 01 Mar 2026, 22:17
por h0ax
Aqui les dejo un bootloader mínimo en ensamblador x86 (16-bit) que puede colocarse en el sector de arranque (MBR, 512 bytes). Al iniciar el equipo desde ese medio, muestra un mensaje en pantalla usando la BIOS y se queda en un bucle.

Es código educativo. Escríbelo en una imagen de disco/USB de prueba dentro de una VM (por ejemplo, QEMU/VirtualBox), no en tu disco real.

Código: Seleccionar todo

; Bootloader mínimo x86 (16-bit real mode)
; Ensamblar con: nasm -f bin boot.asm -o boot.bin

org 0x7C00              ; Dirección donde la BIOS carga el boot sector

start:
    cli                 ; Deshabilitar interrupciones
    xor ax, ax
    mov ds, ax
    mov es, ax
    mov ss, ax
    mov sp, 0x7C00      ; Inicializar stack
    sti                 ; Habilitar interrupciones

    mov si, message     ; SI apunta al mensaje

print_loop:
    lodsb               ; AL = [SI], SI++
    cmp al, 0
    je hang             ; Si es 0 (fin de cadena), terminar
    mov ah, 0x0E        ; Función teletipo BIOS
    mov bh, 0x00        ; Página 0
    mov bl, 0x07        ; Color gris claro
    int 0x10            ; Interrupción de video
    jmp print_loop

hang:
    jmp $               ; Bucle infinito

message db "Bootloader cargado correctamente!", 0

times 510 - ($ - $$) db 0   ; Rellenar hasta 510 bytes
dw 0xAA55                   ; Firma de arranque obligatoria