Я думаю, что комментарий в последней строке подводит итог:
buffer: ; Disk buffer begins (8k after this, stack starts)
Структура памяти выглядит следующим образом:
+-------------------+ <-- 07C0:0000, where the BIOS loads the boot sector
| 512 bytes of code |
+-------------------+
| 8KB set aside for |
| a disk buffer |
+-------------------+ <-- SS:0000
| 4KB of stack |
+-------------------+ <-- SS:1000 = SS:SP
Комментарий к абзацам немного тупой;Мне проще думать в байтах, где 16 байтов составляют один абзац.
Причина этих магических чисел:
- Начало в сегменте 07C0, где BIOS загружает код
- Пропустить последние 512 байт, чтобы учесть сам код (512 байт = 32 абзаца)
- Пропустить 8 КБ, чтобы выделить место для дискового буфера (8 192 байт = 512 абзацев)
- Поставьте SS в начале блока 4KB. 512 + 8192 = 8 704 байта = 544 абзаца
- Поставьте SP в конце этого блока.Поместите его в конец, потому что стек должен увеличиваться в памяти.
Обратите внимание, что число 4096 = 4 КБ в коде выглядит как обычно, поскольку регистру SP требуется значение в байтах.Все остальные значения в параграфах, потому что они относятся к SS, который является регистром сегментов.