Программы 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 |