1

Что я знаю, это следующее

После запуска BIOS проходит следующую последовательность:

1.Самотестирование при включении питания (POST)
2.Определите BIOS видеокарты (чипа) и выполните его код для инициализации видеооборудования.
3.Обнаружение любых других BIOS устройств и вызов их функций инициализации
4.Отобразить начальный экран BIOS
5.Выполните краткий тест памяти (определите, сколько памяти находится в системе)
6.Установите параметры памяти и привода
7.Настройка устройств Plug & Play (традиционно устройства с шиной PCI)
8.Назначить ресурсы (каналы DMA и IRQ)
9.Определить загрузочное устройство

Когда BIOS идентифицирует загрузочное устройство (обычно один из нескольких дисков, который был помечен как загрузочный диск), он считывает блок 0 с этого устройства в ячейку памяти 0x7c00 и переходит туда.

Но что происходит после этого, т.е. как BIOS дает управление загрузчику на этом этапе

2 ответа2

1

Как упомянуто в посте выше, BIOS просто дает управление загрузчику, выполняя инструкцию перехода к 0x7C00.

Не загружаемое устройство может иметь инструкцию INT 18 (0xCD 0x18) в первых двух байтах (и 55aa в байтах 511, 512), что затем просто заставит BIOS перейти к следующему устройству в порядке загрузки.

0

Так как вы упомянули 0x7C00, я сосредоточусь на загрузке MBR (GPT - другое дело).

Как вы сказали, как только BIOS определит, что устройство является загрузочным (то есть имеет 0x55AA в качестве последних двух байтов первого сектора), он считывает этот первый сектор с диска и загружает его в память, начиная с 0x7C00. Как только он выдает команду перехода, ЦПУ начинает выполнять любой код.

Затем загрузчик должен выяснить, что загружать и выполнять дальше. Код, выполняющий загрузку и переход к следующему этапу, должен умещаться в 510 байтов, оставшихся в этом первом секторе, фактически меньше, поскольку на жестких дисках также имеется таблица разделов.

Дальнейшее чтение: последовательность загрузки, переход на собственный загрузчик

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .