Примерный код загрузчика:
[org 0x7C00] ; BIOS загружает загрузчик по этому адресу
[bits 16] ; Режим 16 бит
start:
cli ; Отключить прерывания
mov ax, 0x07C0 ; Установить сегментный регистр для стека
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
mov sp, 0xFFFF ; Установить указатель стека
sti ; Включить прерывания
; Установить сегмент данных
mov ax, 0x07C0
mov ds, ax
; Очистить экран
call ClearScreen
; Загрузить файл shell.bin в память
mov si, FileName ; Адрес строки с именем файла
call LoadFile
; Перейти к выполнению загруженного кода
jmp 0x1000:0x0000 ; Предполагается, что shell.bin загружен по адресу 0x1000:0x0000
LoadFile:
; Реализация функции загрузки файла shell.bin с диска.
; Это довольно сложная задача, которая требует чтения FAT12
; и поиска файла в корневом каталоге, а затем чтения его содержимого
; в память. Здесь должен быть ваш код для этой части.
ret
ClearScreen:
; Реализация функции очистки экрана
ret
FileName db 'BOOT/SHELL BIN', 0 ; Имя файла должно быть в формате 8.3
times 510-($-$$) db 0
dw 0xAA55 ; Сигнатура загрузочного сектора