|
Чтобы
такой возврат мог быть выполнен, необходимо сохранить в стеке
текущие адреса прогрвммы до загрузки в регистры CS и IP
вектора прерывания.
Концепция прерывания была разработана для практического
решения проблемы взаимодействия компьютера с внешним миром.
Однако, тем не менее вскоре оказалось, что прерывания не
менее полезны для организации внутренней работы компьютера.
Это привело к разработке трех типов прерываний, которые
получили названия аппаратных, логических и программных. Между
ними нет принципиальной разницы, однако их использование
разделит их на три отдельных категории.
Аппаратные прерывания мы уже рассмотрели - они
вырабатываются устройствами, требующими внимания процессора.
В IBM/PC таких прерываний на удивление мало. Во-первых,
имеется так называемое немаскируемое прерывание, используемое
для сообщения об отказе питания, оно имеет номер 2. Далее,
прерывание 8 используется таймером, номер 9 - клавиатурой и
14 - контролером гибких дисков, всего четыре аппаратных
прерывания. Имеется также семь зарезервированных номеров
прерываний, 6, 7, с 10 по 13 и 15, которые могут быть
испоьзованы в дальнейшем, если возникнет необходимость в
дополнительных аппаратных прерываниях. Два из этих семи
прерываний уже нашли свое назначение, прерывание 12
зарезервировано для адаптера связи, а прерывание 15 - для
интерфейса устройства печати.
Логические прерывания формируются самим процессором
8088, когда он встречает какое-либо необычное условие. Таких
прерываний предусмотрено четыре. Прерывание 0 возникает при
попытке деления на ноль. Прерывание 1 используется для
управления пошаговым режимом работы микропроцессора, при
котором команды выполняются по одной. Это прерывание
выставляется отладчиками для пошагового выполнения программ.
Прерывание 3 вырабатывается командой установки "контрольных
точек", которая также используется при отладке.
|