Иллюстрированный самоучитель по Assembler


Организация приложений MS-DOS - часть 16


Функции обработчика прерываний зависят от решаемой задачи и назначения того устройства, от которого поступают сигналы прерываний. В случае прерываний от клавиатуры задача обработчика прерываний - принять и сохранить код нажатой клавиши. Прерывания от мыши свидетельствуют о ее перемещении, что требует обновления положения курсора на экране. Если обслуживаемым устройством является физическая установка, то сигнал прерывания может говорить о том, что в установке накоплен определенный объем данных, которые надо перенести из памяти установки в память компьютера. В любом случае обработчик прерываний должен быть программой несложной, для выполнения которой не требуется много машинного времени.

Рассмотрим структуру программы с обработкой аппаратных прерываний. Наиболее удобным аппаратным прерыванием, которое можно использовать в исследовательских целях, является прерывание от системного таймера, которое генерируется 18.2 раза в секунду и служит источником сигналов для хода системных часов, отсчитывающих время, истекшее после включения машины. Замена системного обработчика на прикладной не приводит к каким-либо неприятностям, кроме, возможно, остановки на некоторое время системных часов.

Будем считать, что наш программный комплекс представляет собой программу типа .ЕХЕ и что обработчик прерываний входит в общий с основной программой программный сегмент. Для определенности будем использовать вектор 08h, хотя, разумеется, для любого другого аппаратного вектора структура программы останется той же. Поначалу приведем текст программы с некоторыми купюрами.

Пример 3-3. Обработчик прерываний от таймера

code segment

assume CS:code,DS:data

;Главная процедура

main proc

mov AX,data   ; Инициализация сегментного 

mov DS,AX     ; регистра DS

;Сохраним исходный вектор

mov AH,35h    ; Функция получения вектора

mov AL,08h    ; Номер вектора

int 21h

mov word ptr old_08,BX ; Смещение исходного обработчика

mov word ptr old_08+2,ES ; Сегмент исходного обработчика




Начало  Назад  Вперед



Книжный магазин