Итак, я нашел следующий учебник по созданию простого загрузчика: http://mikeos.sourceforge.net/write-your-own-os.html#firstos
Вот начало его примера и область, в которой у меня возникли проблемы:
start:
mov ax, 07C0h ; Set up 4K stack space after this bootloader
add ax, 288 ; (4096 + 512) / 16 bytes per paragraph
mov ss, ax
mov sp, 4096
mov ax, 07C0h ; Set data segment to where we're loaded
mov ds, ax
Я понимаю, что Майк пытается собрать стек для своего загрузчика. Начало программы в 07C0h в памяти. Что я не понимаю, так это следующая строка «добавить топор, 288; (4096 + 512) / 16 байт на абзац '. Почему он берет общее количество стека и загрузочного сектора, а затем делит его на 16-битные регистры для начала стекового сегмента? Разве сегмент стека не должен начинаться в 20 часов, сразу после сектора загрузки? Наконец, не следует ли указатель стека установить в конце (512 + 4096)? Спасибо