.
POP AX ;восстанавливаем регистры
MOV AL,20H ;эти две строки надо использовать
OUT 20H,AL ;только для аппаратных прерываний
IRET
ROUT ENDP
В конце кода каждого из Ваших аппаратных прерываний Вы должны
включить следующие 2 строчки кода:
MOV AL,20H
OUT 20H,AL
Это просто совпадение, что числа (20H) одни и те же в обеих
строках. Если аппаратное прерывание не заканчивается этими стро-
ками, то микросхема 8259 не очистит информацию регистра обслужи-
вания, с тем чтобы была разрешена обработка прерываний с более
низкими уровнями, чем только что обработанное. Отсутствие этих
строк легко может привести к краху программы, так как прерывания
от клавиатуры скорее всего окажутся замороженными и даже
Ctrl-Alt-Del окажется бесполезным. Отметим, что эта добавка не
нужна для тех векторов прерываний, которые являются расширениями
существующих прерываний, таким как прерывание 1CH, которое добав-
ляет код к прерыванию времени суток [2.1.7].
Когда программа завершается, должны быть восстановлены ориги-
нальные вектора прерываний. В противном случае последующая прог-
рамма может вызвать данное прерывание и передать управление на то
место в памяти, в котором Вашей процедуры уже нет. Функция 35
прерывания 21H возвращает текущее значение вектора прерывания,
помещая значение сегмента в ES, а смещение в BX. Перед установкой
Предыдущая страница 39 Следующая страница
1867078
|