Пишем программу начальной загрузки компьютера

Процесс начальной загрузки

Будем говорить о персональных IBM-совместимых компьютерах на основе процессоров ix86.

Процесс начальной загрузки [по английски "Boot strapping", от фразы "Pull itself up by its own boot straps" (Поднять себя за шнурки собственных ботинок)] выполняется после включения компьютера. В официальных документах используется термин IPL (Initial Program Load).
В этот момент оперативная память (ОЗУ) пуста и управление передается программе загрузки, хранящейся в постоянном запоминающем устройстве (ПЗУ). Процессор ix86 при этом работает в незащищенном режиме. Программа загрузки входит в базовую систему ввода/вывода (BIOS), не зависящую от операционной системы. Начальный адрес этой программы FFFF:0000 (или F000:FFF0).
Программа загрузки вызывает подпрограмму начального тестирования компьютера POST (Power-On Self Test).
Затем осуществляется поиск и выполнение программ тестирования, записанных в ПЗУ контроллеров и плат расширения.
Далее программа загрузки распределяет ресурсы компьютера(IRQ, DMA, порты ввода/вывода). Данные, полученные в результате работы программы, заносятся в оперативную память компьютера для дальнейшего использования.
Первые 1024 байта памяти отводятся для 256 векторов прерываний. Программа загрузки устанавливает только те векторы, которые соответствуют входящим в состав BIOS подпрограммам обработки прерываний. Остальные векторы содержат адрес программы-заглушки. Вторая область ОЗУ, заполняемая программой загрузки, называется оластью данных BIOS (BIOS Data Area) и начинается с адреса 0040:0000 (или 0:400).
В завершение POST вызывает программу обработки прерывания INT 19, которая обычно пытается прочитать загрузочный сектор дискеты (считаем, что первым загрузочным устройством в SETUP определен дисковод A:).
Если загрузочный сектор найден, то его содержимое читается в оперативную память по адресу 0000:7C00, а после считывания выполняется переход к этому адресу.


Назад [↑] 
Hosted by uCoz