Assembler для начинающих
Глава 9
Базовая система ввода/вывода
В предыдущей главе изучалась аппаратура IBM PC. Фирма IBM
поставляет стандартные управляющие программы для рассмотренных выше
аппаратных компонент. Эти программы находятся в ПЗУ на системной
плате и носят название BIOS (Basic Input/Output System, базовая
система ввода-вывода). В этой главе объясняются функции,
обеспечиваемые BIOS. Материалом этой главы нужно пользоваться
вместе с гл.3 и приложением A технического описания IBM PC. В гл.3
описана базовая системы ввода-вывода, в частности некоторые ее
функции, а в приложении A приведен полный ассемблерный листинг BIOS
IBM PC.
В данной книге программы BIOS изучаются по двум причинам: их
использование дает пример техники программирования на языке
ассемблера, особенно в случае управления системной аппаратурой, и
еще существенней то, что программы BIOS играют важную роль в
разработке программ на языке ассемблера для IBM PC. В предыдущих
главах уже использовались некоторые функции программы BIOS; и,
поскольку фирма IBM внесла эти функции в BIOS, дублировать их не
стоит. Их надо использовать всюду, где это возможно.
Вторая причина использования BIOS - это транспорта- бельность.
Фирма IBM, поставляя BIOS, диктует уровень системного интерфейса
программисту, работающему на языке ассемблера. Когда фирма IBM
разрабатывала свою персональную ЭВМ, системные конструкторы знали,
что не важно, насколько хорошо делается их работа первый раз, так
как ее всегда можно сделать лучше. Время идет, и эволюция
технологии позволяет делать ту же работу лучше.
По мере того, как разрабатывается новая аппаратура для
персональной ЭВМ, появляются и новые программные интерфейсы для
нее. И если вы пишите программы, используя непосредственно
аппаратуру, вам придется корректировать программы каждый раз, когда
изменяется системная аппаратура. Это не имеет особого значения в
случае индивидуального использования ваших программ, но важно, если
вы пишите программы, которые будут использоваться многими. Или,
если вы собираетесь тиражировать вашу программу, вам бы хотелось,
чтобы она использовалась длительное время; т.е. вы не захотите
поставлять новые версии программы всякий раз, когда кто-то создает
новую системную аппаратуру.
Интерфейс с BIOS - попытка разрешить эту проблему. Фирма IBM
определила интерфейс с различными компонентами системы.
Изготовители стараются поддерживать такой интерфейс для своей новой
аппаратуры, а это означает, что даже если аппаратура и изменится,
интерфейс с BIOS останется прежним. Ваша программа не потребует
изменений.
По мере того, как будут появляться новые аппаратные функции,
вам нужно будет изменять программу для того, чтобы воспользоваться
ими. В этом случае, вероятно, фирма IBM расщирит интерфейсы с BIOS.
Но ваши старые программы, которые хорошо работали на старых
машинах, будут продолжать работать и на новых машинах. Конечно, они
не будут использовать новые функции, но если раньше ваша программа
была полезной, весьма вероятно, что будет использоваться и далее.
Предположим теперь, что фирма IBM решила модифицировать плату
контроллера дисковода. Это могло бы потребоваться по разным
причинам. Или фирма захотела уменьшить стоимость изготовления
платы, или расширить возможности платы контроллера. В любом случае
программный интерфейс с платой, который мы рассматривали в
предыдущей главе, может оказаться другим. Но ПЗУ с BIOS, которое
фирма IBM будет поставлять с таким новым контроллером, будет иметь
тот же самый интерфейс. Это означает, что вызывающая
последовательность и передача параметров через интерфейс останутся
теми же. Если вы написали программу, использующую дискеты, и
обращаетесь к BIOS при всех видах доступа к дискете, ваша программа
будет выполняться правильно. Если же вы написали эту программу так,
что она непосредственно работает с контроллером дисковода, скорее
всего, она не будет работать с новым контроллером.
BIOS состоит из нескольких различных частей. Первая часть -
процедура самопроверки при включении питания POST. Эта программа
выполняется всякий раз, когда включается питание, или когда
делается системный сброс (одновременное нажатие клавиш
CTL-ALT-DEL). Программа POST проверяет аппаратуру системы и
инициализирует для нормальной работы некоторые узлы.
BIOS также содержит драйверы устройств. Эти программы управляют
работой устройств. Фирма IBM поставляет программы управления для
всех часто используемых устройств. Но вообще для всех устройств
фирмы IBM драйверы не поставляются. Кроме того, не все желательные
функции доступны. Просто в ПЗУ нет места, чтобы реализовать все
нужные вам функции.
И наконец, BIOS содержит ряд программ системного сервиса. Эти
программы непосредственно не управляют ни одним устройством, но они
многое делают для работы системы.
Эта глава описывает различные компоненты BIOS. Мы начнем с
программы POST, поскольку она - первая в листинге ассемблера и
первой выполняется при включении питания. Программы системного
сервиса все связаны с системной платой, и поэтому они будут
рассматриваться далее. И в конце мы рассмотрим, как фирма IBM
обеспечивает работу различных функций ввода-вывода системы.