Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Сервисы и другие векторы прерываний BIOS
При инициализации таблицы прерываний BIOS отвечает за корректное заполнение части векторов, имеющих отношение к аппаратным средствам компьютера и сервисам BIOS. На некоторые из них могут быть просто установлены заглушки: вектор ссылается на код обработчика, содержащего единственную инструкцию возврата из прерывания — IRET. BIOS инициализирует векторы прерываний различных назначений: ♦ внутренних прерываний процессора (исключений), которые могут возникнуть в реальном режиме работы (об исключениях защищенного режима в основном заботится соответствующая операционная система); ♦ аппаратных прерываний, маскируемых и немаскируемых; ♦ вызовов функций ROM BIOS (16-битных сервисов); ♦ указателей на системные таблицы.
Внутренние прерывания: ♦ Int OOh — деление на 0; ♦ Int Olh — пошаговый режим; ♦ Int 03h — точка останова; ♦ Int 04h — переполнение; ♦ Int 06h — недопустимая команда 286+; ♦ Int 07h — вызов отсутствующего математического сопроцессора (Numeric Processor Unit, NPU). ♦ Int 02h — немаскируемое прерывание; ♦ Int 08h - таймер 8253/8254; ♦ Int 09h — клавиатура; ♦ Int OAh - IRQ2/9; ♦ Int OBh - IRQ3; ♦ Int OCh - IRQ4; ♦ Int ODh - IRQ5; ♦ Int QEh — IRQ6 (контроллер гибких дисков); ♦ Int OFh - IRQ7; ♦ Int 70h - CMOS-таймер; ♦ Int 71h — IRQ9 (перенаправлено на Int OAh); ♦ Int 72h - IRQ10; ♦ Int 73h - IRQ11; ♦ Int 74h — IRQ12 (контроллер мыши PS/2); ♦ Int 75h — IRQ13 (исключение сопроцессора); ♦ Int 76h — IRQ14 (контроллер жестких дисков); ♦ Int 77h - IRQ15. Функции ROM BIOS (16-битные сервисы): ♦ Int 05h (F000:FF54h) - печать экрана; ♦ Int 10h — видеосервис (см. 10.6); ♦ Int llh — чтение списка оборудования (слово из BDA 0040:0010h), возвра
• биты 15:14 — число обнаруженных LPT-портов (00 — 0,..., 11 — 3); • бит 13 — резерв; • бит 12 — обнаружен игровой адаптер; • биты 11:9 — число обнаруженных СОМ-портов (000 — 0,..., 111 — 7); • бит 8 — наличие контроллера DMA; • биты 7:6 — число обнаруженных НГМД (00 — 1,..., 11 — 4); • биты 5:4 — активный видеорежим (00 — резерв, 10 — 80-колоночный • биты 3:2 — размер ОЗУ на системной плате (теперь обычно 00); • бит 1 — присутствие математического сопроцессора; • бит 0 — присутствие дисководов; ♦ Int 12h — размер непрерывной памяти; ♦ Int 13h — дисковый сервис (блочный ввод-вывод, см. 9.11); ♦ Int 14h — обслуживание СОМ-портов (см. 16.1); ♦ Int 15h — АТ-функции (системный сервис, функции определяются значени
• 00-03h — управление и обмен данными с кассетным магнитофоном (были • 4fh — перехват событий клавиатуры (см. 11.1); • 53xxh — сервисы расширенного управления энергопотреблением (АРМ); • 8300h — запуск таймера, устанавливающего флаг в заданной ячейке • 830 lh — сброс того же таймера; • 84h — джойстик (см. 11.6); • 86h — программируемая задержка (см. 4.6); • 87h — перемещение блока расширенной памяти; • 88h — получение размера расширенной памяти; • 89h — переключение в режим V86; • COh — получение системной конфигурации, при успешном выполнении (CF = 0, АН = 0) ES:BX указывает на таблицу данных конфигурации(табл. 5.3); • 80-82h, 85h, 90h, 91h — функции многозадачных ОС (BIOS устанавливает заглушки);
♦ Int 16h — клавиатурный ввод-вывод (см. 11.1); ♦ Int 17h — обслуживание LPT-портов (см. 15.4); ♦ Int 18h — процедура восстановления при неудаче начальной загрузки (преж ♦ Int 19h — начальная загрузка; ♦ Int lAh — системное время, дата, будильник (см. 4.6) и 16-битные вызовы ♦ Int lBh — обработчик нажатия клавиш Ctrl+Break; ♦ Int ICh — процедура User Timer Interrupt, вызываемая обработчиком Int 08h ♦ Int 33h — поддержка мыши; ♦ Int 4Ah — обработчик будильника пользователя, установленного функцией ♦ Int 67h — EMS-функции. Указатели на таблицы: ♦ Int lDh — видеопараметры; ♦ Int lEh — параметры дискет; ♦ Int lFh — знакогенератор CGA; ♦ Int 41h — параметры HDD 0; ♦ Int 46h — параметры HDD 1; ♦ Int 43h — знакогенератор EGA. Как видно из приведенных списков, большинство векторов BIOS накладывается на область векторов ОО-lFh, зарезервированную фирмой Intel под внутренние прерывания и исключения процессоров. Во времена 8086 из них использовалось совсем малое количество, зарезервированной была объявлена вся указанная область. Тем не менее творцы IBM PC «влезли» в эту область, что осложнило жизнь системных программистов, работающих с более щедрыми на исключения современными процессорами. Таблица 5.3. Параметры системы Смещение Длина, байт Поле_________________________________________________ Длина таблицы, в байтах Модель: FF - PC, FE или FB - XT, FD - PCjr, FC - AT, FF -неизвестная Подмодель: PC, XT, PCjr, AT = 00; AT = 01, XT-286 = 02 Ревизия BIOS Свойства: - бит 0 — резерв; - бит 1=0- PC-type I/O channel; - бит 2 = 1- Extended BIOS area allocated; - бит 3 - поддержка функций ожидания Int 15h(83xx, 86h); - бит 4 - вызов Int 15h (4Fh) обработчиком Int 09h; - бит 5 — наличие RTC; - бит 6 — наличие второго контроллера 8259А; - бит 7 - использование жестким диском канала DMA#3 6_______ 4_____________ Резерв__________________________________________________
|