Вы должны использовать эти 512 байт для загрузки остальной части вашего кода. Это его цель, отсюда и название «загрузочная запись».
Если вы пишете код своей операционной системы в MBR, вы делаете это не в том месте. То, как это делают большинство операционных систем, происходит в три (или более) этапа. Во-первых, ваш код MBR загружает простой загрузчик с диска в оперативную память. Затем код MBR переходит в то место, куда он загрузил загрузчик, и начинает выполнение загрузчика. загрузчик выполняет некоторую инициализацию системы, затем загружает в память загрузчик второго уровня или операционную систему и затем переходит в эту память, чтобы начать загрузку операционной системы.
MBR загружается B IOS по физическому адресу 0x7c00, с DL, установленным на "номер диска", с которого MBR был загружен. Затем B IOS переходит к самому началу загруженной MBR (0x7c00), потому что эта часть MBR содержит исполняемый код "bootstrap".
Типичный код MBR bootstrap сделает следующее:
- переместить себя от физического адреса 0x7c00 (используя копию памяти и, как правило, дальний переход)
- определить, с какого раздела (или жесткого диска) загружаться (либо путем поиск активного раздела или предоставление пользователю выбора из установленных операционных систем на выбор)
- если пользователь выбрал «неактивный» раздел, затем установите для выбранной записи раздела «активный», и очистите «активные» биты других записей раздела
- используйте команды B IOS INT 13h для перезаписи MBR, если записи таблицы разделов были изменены
- используйте B IOS INT 13-часовые команды для загрузки загрузочной записи тома (VBR, «загрузочный сектор» загрузчика) с начала выбранного раздела
на физический адрес 0x7c00
-s et DS: SI, указывающая на выбранную запись таблицы разделов
- скачок до 0x7c00 (с CS, установленным на 0, и DL, установленным на "номер диска")
Примечание: он предназначен для значение DL и указатель DS: SI, который должен быть полностью передан в ядро для использования ядром. Это также означает, что перемещенная MBR не должна перезаписываться во время процесса загрузки - поскольку указатель DS: SI предназначен для записи таблицы разделов внутри этой MBR и должен оставаться действительным.