Программы BIOS

Лекция 1

В персональном компьютере все основные программы, предназначенные для начальной загрузки, собраны в универсальную программу, которая записана в постоянном запоминающем устройстве, носящем название ROM BIOS или BIOS — Basic Input/Output System (базовая система ввода/вывода). Объем современной BIOS не менее 1—2 Мбайт.

Традиционно все программы, записанные в микросхеме BIOS, можно разделить по выполнению следующих функций:

  • инициализация и начальное тестирование всех основных (стандартных) узлов компьютера — расположенных на системной плате, подключенных к шине IDE и вставленных в слоты расширения. Для этого используется программа POST (Power On Self Test), также записанная в микросхеме BIOS. Отметим, что "нестандартные" платы расширения, например старые интерфейсы сканеров не тестируются;
  • загрузка операционной системы с внешнего устройства — гибкого диска, винчестера, компакт-диска или ПЗУ сетевой карты. В самых первых персональных компьютерах был вариант, когда можно было загрузить интерпретатор языка Basic, который находился в дополнительной микросхеме ПЗУ;
  • обслуживание аппаратных прерываний, например, от клавиатуры и таймера, обработка программных прерываний BIOS, которые предназначены для управления обменом данными между операционной системой компьютера и подключенными к нему периферийными устройствами, выполнение базовых функций, например, вывод на экран монитора символов и работа с дисковыми устройствами;
  • настройка и конфигурирование узлов системной платы и устройств, подключенных к ней, что выполняется с помощью программы BIOS Setup.

После включения питания или нажатия кнопки Reset у компьютера на адресной шине системной платы аппаратно устанавливается адрес точки входа в программу BIOS, которая в момент старта находится в самых старших ячейках адресуемой памяти. Например, в процессорах 8086/8088 по возникновении сигнала RESET прекращаются все текущие процедуры, а по окончании действия этого сигнала управление передается инструкции по адресу 0FFFF0h, в процессорах 386 — по адресу OFFFFFFOh и т. д.

Следует заметить, что первоначальный адрес загрузки искусственно формируется чипсетом системной платы, который принудительно устанавливает все адресные линии, кроме первых четырех, в единичное состояние. После передачи управления BIOS точка входа становится доступной по стандартному адресу 0FFFF0h, где ею может воспользоваться любая программа.

В персональных компьютерах с процессорами х86 принято, что данные из памяти читаются словами длиною два байта, причем первый байт — это младшая часть 16-разрядного слова, а второй байт — его старшая часть. То есть ячейки чередуются как 2, 1, 4, 3 и т. д. При этом следует помнить, что программисты стараются выравнивать данные и код по четным адресам, по границе 16-байтных параграфов и 64-килобайтных сегментов, что позволяет ускорить работу программ. Конечно, всегда можно прочитать или записать одиночный байт или бит, но этот режим не является оптимальным для процессора, памяти и чипсета. Заметим, что другие процессоры не придерживаются такого способа адресации.

Фиксированные ячейки BIOS
Адрес Размер, байт Назначение
Р000:0000 55h, признак ПЗУ
F000:0001 AAh, признак ПЗУ
F000:FFF0 команда перехода на POST по сбросу — FAR JMP
F000:FFF5 Дата выпуска BIOS, например "08/01/95"
F000:FFFE Тип компьютера (OFFh — для оригинального PC, 0FEh - XT, 0FCh - AT)
F000:FFFF Дополнение до 0 контрольной суммы BIOS