Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


sdima85, Питер Абель. Ассемблер и программирование для IBM PC
(текст не форматировал)
ГЛАВА 23. Прерывания BIOS и DOS
------------------------------------------------------------
Прерывания BIOS и DOS
читать дальше »
Цель: Описать функции, доступные через прерывания BIOS и
DOS.

ВВЕДЕНИЕ
------------------------------------------------------------

Прерывание представляет собой операцию, которая приоста
навливает выполнение программ для специальных системных
действий. Необходимость прерываний обусловлено двумя
основными причинами: преднамеренный запрос таких действий,
как операции ввода-вывода на различные устройства и
непредвиденные программные ошибки (например, переполнение
при делении).
Система BIOS (Basic Input/Output System) находится в ROM
и управляет всеми прерываниями в системе. В предыдущих
главах уже использовались некоторые прерывания для вывода на
экран дисковых операций ввода-вывода и печати. В этой главе
описаны различные BIOS- и DOS-прерывания, резидентные
программы и команды IN и OUT.

ОБСЛУЖИВАНИЕ ПРЕРЫВАНИЙ
------------------------------------------------------------

В компьютерах IBM PC ROM находится по адресу FFFF0H. При
включении компьютера процессор устанавливает состояние
сброса, выполняет контроль четности, устанавливает в
регистре CS значение FFFFH, а в регистре IP - нуль. Первая
выполняемая команда поэтому находится по адресу FFFF:0 или
FFFF0, что является точкой входа в BIOS. BIOS проверяет
различные порты компьютера для определения и инициализации
подключенных устрой ств. Затем BIOS создает в начале памяти
(по адресу 0) таблицу прерываний, которая содержит адреса
обработчиков прерываний, и выполняет две операции INT 11H
(запрос списка присоединенного оборудования) и INT 12H
(запрос размера физической памяти).
Следующим шагом BIOS определяет имеется ли на диске или
дискете операционная система DOS. Если обнаружена системная
дискета, то BIOS выполняет прерывание INT 19H для доступа к
первому сектору диска, содержащему блок начальной загрузки.
Этот блок представляет собой программу, которая считывает
системные файлы IBMBIO.COM, IBMDOS.COM и COMMAND.COM с диска
в память. После этого память имеет следующее распределение:

Таблица векторов прерываний
Данные 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 из стека и
передает управление на команду, следующую за выполненной
командой прерывания.


ПРЕРЫВАНИЯ BIOS
читать дальше »
------------------------------------------------------------

В данном разделе представлены основные прерывания BIOS.

INT 05H (Печать экрана). Приводит к передаче содержимого
экрана на печатающее устройство. INT 05H применяется для
внутренних целей, т.е. из программ, клавиши Ctrl/PrtSc
активизируют печать с клавиатуры. Данная операция маскирует
прерывания и сохраняет позицию курсора.

------------------------------------------------------------

Адрес Функция прерыаний
(шест) (шест)
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. Таблица адресов прерываний.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:47, 14-08-2009 | #8