Ключевые адреса программ BIOS

Программы, находящиеся в BIOS, используют ряд ресурсов компьютера для хранения данных, полученных в ходе инициализации оборудования, тестирования и для работы служебных подпрограмм. На рис. показано распределение оперативной памяти компьютера PC.

Наиболее важная служебная зона адресов размером в 1 Кбайт начинается с нулевого адреса. В ней находятся векторы аппаратных и программных прерываний, с которыми работают процессор и программное обеспечение. Сами векторы представляют собой инструкцию безусловного перехода на подпрограмму обработки прерывания. Каждый вектор занимает 4 байта, соответственно, всего может быть всего 256 прерываний.

С прерываниями связана одна из проблем персональных компьютеров, которая осложняет жизнь системным программистам. Дело в том, что зону векторов, расположенную с нулевого адреса, используют как сами процессоры семейства х8б, так и различные устройства компьютера, в чем виноваты разработчики IBM PC. Вначале это не особенно осложняло жизнь программистам, поскольку у процессора было не так много аппаратных прерываний, но в дальнейшем, по мере совершенствования процессоров, 256 векторов стало маловато.

Ниже, только для иллюстрации использования таблицы векторов приведено назначение нескольких прерываний компьютера IBM PC AT (для современных процессоров назначение ряда векторов несколько иное):

  • INT 00h — деление на 0;
  • INT 01h— пошаговый режим;
  • INT 02h— немаскируемое прерывание;
  • ТХТТ ATI INT ОЗh — точка останова;
  • INT 04h — переполнение;
  • INT 08h — таймер;
  • INT 09h — клавиатура;
  • INT 33h — поддержка мыши;
  • INT 4Ah — будильник пользователя.

После зоны векторов прерываний идет область, называемая BIOS Data Area, где размещаются данные, полученные в ходе тестирования оборудования, буфера системных устройств, например буфер клавиатуры, и различные служебные регистры. Эта область данных имеет размер не менее 256 байтов и начинается с адреса 0000:0400h или 0040:0000h. Назначение наиболее интересных для пользователя зон в области BIOS Data Area приведено в табл.

Назначение ячеек BIOS Data Area
Адрес Размер, байт Назначение
040:000 4x2 Базовые адреса портов СОМ 1— COM4
040:008 3x2 Базовые адреса портов LPT1— LPT3
040:010 040:017 2x39 Установленное оборудование Область флагов и буфер клавиатуры
040:049 Текущий видеорежим
040:04А Ширина экрана (число колонок символов)
040:050 Позиция курсора (младшая половина — колонка, старшая — ряд)
040:060 Размер курсора (в младшем байте — последняя строка, в старшем — первая)
040:067 Область данных POST

 

Для работы с видеоадаптером BIOS использует область видеопамяти, расположенную выше 640 Кбайт. Видеопамять занимает 128 Кбайт, начиная с адреса A0000h и до C0000h, но для конкретного режима работы видеоадаптера (монитора) используется строго определенная часть памяти. Например, в текстовом режиме могут использоваться только 4 Кбайт