Системное программное обеспечение персональных ЭВМ


Пример 9



Пример 9

/*= ПРИМЕР 3.3 =*/ /*======== Маскирование аппаратных прерываний ============*/ #include <dos.h> #include <time.h> main() { unsigned char mask; /* Исходная маска прерываний */ int i; /* Индикация исходного состояния */ for (i=0; i

Из текста программы видно, что порт 0x21 доступен и для записи, и для чтения. Таким образом, для корректного запрета выбранного прерывания необходимо прочитать текущее состояние маски прерываний, и занести в него запрещающую единицу при помощи операции "логическое ИЛИ".

Для AT разряд 2 используется для каскадирования второго контроллера прерываний. Доступ к маске второго контроллера - через порт 0xA1. Назначения разрядов второй маски следующие:

0

- прерывание часов реального времени;

1

- прерывание контроллера EGA;

5

- прерывание математического сопроцессора;

6

- прерывание контроллера жестких дисков;

2,3,4,7 - зарезервированы.




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