Данные BIOS
IBMBIO.COM и IBMDOS.COM
Резидентная часть COMMAND.COM
Доступная память для прикладных программ
Транзитная часть COMMAND.COM
Конец RAM (ОЗУ)
ROM BASIC
ROM BIOS
Внешние устройства передают сигнал внимания через контакт INTR в
процессор. Процессор реагирует на этот запрос, если флаг прерывания IF
установлен в 1 (прерывание разрешено), и (в большинстве случаев)
игнорирует запрос, если флаг IF установлен в 0 (прерывание запрещено).
Операнд в команде прерывания, например, INT 12H, содержит тип
прерывания, который идентифицирует запрос. Для каждого типа система
содержит адрес в таблице векторов прерываний, начинающейся по адресу 0000.
Так как в таблице имеется 256 четырехбайтовых элементов, то она занимает
первые 1024 байта памяти от шест.0 до шест.3FF. Каждый элемент таблицы
указывает на подпрограмму обработки указанного типа прерывания и содержит
адрес кодового сегмента и смещение, которые при прерывании устанавливаются
в регистры CS и IP соответственно. Список элементов таблицы векторов
прерываний приведен на рис. 23.1.
Прерывание заносит в стек содержимое флагового регистра, регистра CS
и регистра IP. Например, для прерывания 12H (которое возвращает в регистре
AX размер памяти) адрес элемента таблицы равен шест.0048 (шест.12 х 4 =
шест.48). Операция выделяет четырехбайтовый элемент по адресу шест. 0048 и
заносит два байта в регистр IP и два байта в регистр SS. Адрес, который
получается в регистровой паре CS:IP, представляет собой адрес начала
подпрограммы в области BIOS, которая получает управление. Возврат из этой
подпрограммы осуществляется командой IRET (Interrupt Return), которая
восстанавливает флаги и регистры CS и IP из стека и передает управление на
команду, следующую за выполненной командой прерывания.
__________________________________________________________________________
Адрес Функция прерываний
(шест.) (шест.)
0-3 0 Деление на нуль
4-7 1 Пошаговый режим (трассировка DEBUG)
8-B 2 Немаскированное прерывание (NMI)
C-F 3 Точка останова (используется в DEBUG)
10-13 4 Переполнение регистра
14-17 5 Печать экрана
18-1F 6,7 Зарезервировано
20-23 8 Сигнал от таймера
24-27 9 Сигнал от клавиатуры
28-37 A,B,C,D Используются в компьютерах AT
38-3B E Сигнал от дискетного дисковода
3C-3F F Используется для принтера
40-43 10 Управление дисплеем (см.гл. 8, 9, 10)
44-47 11 Запрос оборудования (см.гл.9)
48-4B 12 Запрос размера памяти (см.гл.2)
4C-4F 13 Дисковые операции ввода-вывода (см.гл.18)
50-53 14 Управление коммуникационным адаптером
54-57 15 Кассетные операции и спец. функции AT
58-5B 16 Ввод с клавиатуры (см.гл.9)
5C-5F 17 Вывод на принтер (см.гл.19)
60-63 18 Обращение к BASIC, встроенному в ROM
64-67 19 Перезапуск системы
68-6B 1A Запрос и установка времени и даты
6C-6F 1B Прерывание от клавиатуры
70-73 1C Прерывание от таймера
74-77 1D Адрес таблицы параметров дисплея
78-7B 1E Адрес таблицы параметров дисковода
7C-7F 1F Адрес таблицы графических символов
80-83 20 Нормальное завершение программы (DOS)
84-87 21 Обращение к функциям DOS
88-8B 22 Адрес обработки завершения задачи (DOS)
8C-8F 23 Адрес реакции по Ctrl/Break (DOS)
90-93 24 Адрес реакции на фатальную ошибку (DOS)
94-97 25 Абсолютное чтение с диска (DOS)
98-9B 26 Абсолютная запись на диск (DOS)
97-9F 27 Создание резидентной программы (DOS)
AO-FF 28-3F Другие функции DOS
100-1FF 40-7F Зарезервировано
200-217 80-85 Зарезервировано для BASIC
218-3C3 86-F0 Используются BASIC-интерпретатором
3C4-3FF F1-FF Зарезервировано
Примечание: Прерывания 00-1F относятся к BIOS,
прерывания 20-FF относятся к DOS и BASIC.
__________________________________________________________________________
Рис.23.1. Таблица адресов прерываний.
ПРЕРЫВАНИЯ BIOS
________________________________________________________________
В данном разделе приведены основные прерывания BIOS.
INT 05H. П е ч а т ь э к р а н а. Выполняет вывод содержимого экрана
на печатающее устройство. Команда INT 05H выполняет данную операцию из
программы, а нажатие клавишей Ctrl/PrtSc - с клавиатуры. Операция
запрещает прерывания и сохраняет позицию курсора.
INT 10H. У п р а в л е н и е д и с п л е е м. Обеспечивает экранные
и клавиатурные операции, детально описанные в гл.9.
INT 11H. З а п р о с с п и с к а п р и с о е д и н е н н о г о
о б о р у д о в а н и я. Определяет наличие различных устройств в системе,
результирующее значение возвращает в регистре AX. При включении компьютера
система выполняет эту операцию и сохраняет содержимое AX в памяти по
адресу шест.410. Значения битов в регистре AX:
Бит Устройство
15,14 Число подключенных принтеров.
13 Последовательный принтер.
12 Игровой адаптер.
11-9 Число последовательных адаптеров стыка RS232.
7,6 Число дискетных дисководов, при бите 0=1:
00=1, 01=2, 10=3 и 11=4.
5,4 Начальный видео режим:
00 = не используется,
01 = 40х25 плюс цвет,
10 = 80х25 плюс цвет,
11 = 80х25 черно-белый режим.
1 Значение 1 говорит о наличии сопроцессора.
0 Значение 1 говорит о наличии одного или более дисковых
устройств и загрузка операционной системы должна
осуществляться с диска.
INT 12H З а п р о с р а з м е р а ф и з и ч е с к о й п а м я т и.
Возвращает в регистре AX размер памяти в килобайтах, например, шест.200
соответствует памяти в 512 К. Данная операция полезна для выравнивания
размера программы в соответствии с доступной памятью.
INT 13H. Д и с к о в ы е о п е р а ц и и в в о д а - в ы в о д а.
Обеспечивает операции ввода-вывода для дискет и винчестера, рассмотренные
в главе 16.
INT 14H. У п р а в л е н и е к о м м у н и к а ц и о н н ы м
а д а п т е р о м. Обеспечивает последовательный ввод-вывод через
коммуникационный порт RS232. Регистр DX должен содержать номер (0 или 1)
адаптера стыка RS232. Четыре типа операции, определяемые регистром AH,
выполняют прием и передачу символов и возвращают в регистре AX байт
состояния коммуникационного порта.
INT 15H. К а с с е т н ы е о п е р а ц и и в в о д а - в ы в о д а
и с п е ц и а л ь н ы е ф у н к ц и и д л я к о м п ь ю т е р о в AT.
Обеспечивает операции ввода-вывода для кассетного магнитофона, а также
расширенные операции для компьютеров AT.
INT 16H. В в о д с к л а в и а т у р ы. Обеспечивает три типа
команд ввода с клавиатуры, подробно описанные в гл.9.
INT 17H. В ы в о д н а п р и н т е р. Обеспечивает вывод данных на
печатающее устройство. Подробно рассмотрено в гл.19.
INT 18H. О б р а щ е н и е к BASIC, в с т р о е н н о м у в ROM.
Вызывает BASIC-интерпретатор, находящийся в постоянной памяти ROM.
INT 19H. П е р е з а п у с к с и с т е м ы. Данная операция при
доступном диске считывает сектор 1 с дорожки 0 в область начальной
загрузки в памяти (сегмент 0, смещение 7C00) и передает управление по
этому адресу. Если дисковод не доступен, то операция передает управление
через INT 18H в ROM BASIC. Данная операция не очищает экран и не
инициализирует данные в ROM BASIC, поэтому ее можно использовать из
программы.
INT 1AH. З а п р о с и у с т а н о в к а т е к у щ е г о
в р е м е н и и д а т ы. Считывает и записывает показание часов в
соответствии со значением в регистре AH. Для определения продолжительности
выполнения программы можно перед началом выполнения установить часы в 0, а
после считать текущее время. Отсчет времени идет примерно 18,2 раза в
секунду. Значение в регистре AH соответствует следующим операциям:
AH=00 Запрос времени. В регистре CX устанавливается старшая
часть значения, а в регистре DX - младшая. Если после последнего
запроса прошло 24 часа, то в регистре AL будет не нулевое значение.
AH=01 Установка времени. Время устанавливается по регистрам CX
(старшая часть значения) и DX (младшая часть значения).
Коды 02 и 06 управляют временем и датой для AT.
INT 1FH. А д р е с т а б л и ц ы г р а ф и ч е с к и х
с и м в о л о в. В графическом режиме имеется доступ к символам с кодами
128-255 в 1К таблице, содержащей по восемь байт на каждый символ. Прямой
доступ в графическом режиме обеспечивается только к первым 128
ASCII-символам (от 0 до 127).
ПРЕРЫВАНИЯ DOS
________________________________________________________________
Во время своей работы BIOS использует два модуля DOS: IBMBIO.COM и
IBMDOS.COM. Так как модули DOS обеспечивают большое количество разных
дополнительных проверок, то операция DOS обычно проще в использовании и
менее машиннозависимы, чем их BIOS аналоги.
Модуль IBMBIO.COM обеспечивает интерфейс с BIOS низкого уровня. Эта
программа выполняет управление вводом-выводом при чтении данных из внешних
устройств в память и записи из памяти на внешние устройства.
Модуль IBMDOS.COM содержит средства управления файлами и ряд
сервисных функций, таких как блокирование и деблокирование записей. Когда
пользовательская программа выдает запрос INT 21H, то в программу IBMDOS
через регистры передается определенная информация. Затем программа IBMDOS
транслирует эту информацию в один или несколько вызовов IBMBIO, которая в
свою очередь вызывает BIOS. Указанные связи приведены на следующей схеме:
Пользовательский Высший Низший ROM Внешний
уровень уровень уровень уровень
ЪДДДДДДДДДДД¬ ЪДДДДДДДДДД¬ ЪДДДДДДДДДД¬
¦Программный¦ ¦ DOS ¦ ¦ DOS ¦ ЪДДДД¬ ЪДДДДДДДДДД¬
¦запрос в/в ¦¦IBMDOS.COM¦¦IBMBIO.COM¦¦BIOS¦¦Устройство¦
АДДДДДДДДДДДЩ АДДДДДДДДДДЩ АДДДДДДДДДДЩ АДДДДЩ АДДДДДДДДДДЩ
Как показано выше, прерывания от шест.20 до шест.62 зарезервированы
для операций DOS. Ниже приведены наиболее основные из них:
INT 20H. З а в е р ш е н и е п р о г р а м м ы. Запрос завершает
выполнение программы и передает управление в DOS. Данный запрос обычно
находится в основной процедуре.
INT 21H. З а п р о с ф у н к ц и й DOS. Основная операция DOS,
вызывающая определенную функцию в соответствии с кодом в регистре AH.
Назначение функций DOS описано в следующем разделе.
INT 22H. А д р е с п о д п р о г р а м м ы о б р а б о т к и
з а в е р ш е н и я з а д а ч и. (см.INT 24H).
INT 23H. А д р е с п о д п р о г р а м м ы р е а к ц и и н а
Ctrl/Break. (см.INT 24H).