Программирование на ассемблере персональных ЭВМ класса IBM/PC-XT в операционной системе MS/DOS. Евсеева О.Н - 27 стр.

UptoLike

- 27 -
Во втором случае маскируются только определенные аппаратные
прерывания. Это делается, когда некоторые определенные прерывания
могут взаимодействовать с операциями, критичными к временам. Нап-
ример, точно рассчитанная по времени процедура ввода/вывода не
может себе позволить быть прерванной длительным дисковым прерыва-
нием.
Написание собственного прерывания
Имеется несколько причин для написания собственного прерыва-
ния. Во-первых, большинство из готовых прерываний, обеспечиваемых
операционной системой, ничто иное, как обычные процедуры, доступ-
ные для всех программ, и можно пожелать добавить свое в эту биб-
лиотеку. Например, многие пользовательские программы могут ис-
пользовать процедуру, выводящую строки на экран вертикально.
Вместо того, чобы включать ее в каждую программу в качестве про-
цедуры Вы можете установить ее как прерывание, написав программу,
которая останется резидентной в памяти после завершения. Тогда Вы
можете использовать INT 80H вместо WRITE_VERTICALLY (имейте вви-
ду, что вызов прерывания несколько медленней, чем вызов процеду-
ры).
Второй причиной написания прерывания может быть использова-
ние какого-либо отдельного аппаратного прерывания. Это прерывание
автоматически вызывается при возникновении определенных условий.
В некоторых случаях BIOS инициализирует вектор этого прерывания
так, что он указывает на процедуру, которая вообще ничего не де-
лает (она содержит один оператор IRET).
Вы можете написать свою процедуру и изменить вектор прерыва-
ний, чтобы он указывал на нее. Тогда при возникновении аппаратно-
го прерывания будет выполняться Ваша процедура. Одна из таких
процедур - это прерывание времени суток, которое автоматически
вызывается 18.2 раза в секунду. Обычно это прерывание только об-
новляет показание часов, но можно добавить к нему любой код. Если
код проверяет показания часов и вступает в игру в определенные
моменты времени, то возможны операции в реальном времени.
Другие возможности - это написание процедур обработки
Ctrl-Break , Print Screen и обработки ошибочных ситуаций. Преры-
вания принтера и коммуникационные прерывания позволяют компьютеру