Процессор получает прерывания из 2-х источников:
— Внешние (аппаратно генерируемые) прерывания(внешние прерывания получаются через контакты процессора или через локальный контроллер прерываний APIC);
— Программно-генерируемые прерывания.
Процессор обрабатывает обращения к обработчикам исключений и обработчиком прерываний способом очень похожим на обработку инстркции CALL к процедуре или задачи. Реагируя на исключение или прерывание, процессор использует вектор исключения или прерывания как индекс в таблице дескрипторов прерываний IDT.
Программы обработки прерываний относятся к важнейшим программным средствам персональных компьютеров. Запросы на обработку прерываний могут иметь различную природу. Прежде всего, различают аппаратные прерывания от периферийных устройств или других компонентов системы и программные прерывания, вызываемые командой int, которая используется, в частности, для программного обращения к функциям DOS и BIOS. Сигналы, возбуждающие аппаратные прерывания, могут инициироваться цепями самого процессора, например, при попытке выполнения операции деления на ноль, а могут приходить из периферийного оборудования (внешние прерывания).
Получив сигнал на выполнение процедуры прерывания с определенным номером, процессор сохраняет в стеке выполняемой программы текущее содержимое трех регистров процессора: регистра флагов, CS и IP. Два последних числа образуют полный адрес возврата в прерванную программу. Далее процессор загружает CS и IP из соответствующего вектора прерываний, осуществляя тем самым переход на ПОП. Программа обработки прерывания обычно заканчивается командой возврата из прерывания iret, выполняющей обратные действия - загрузку IP, CS и регистра флагов из стека, что приводит к возврату в основную программу в ту самую точку, где она была прервана. Большая часть векторов прерываний предназначена для выполнения определенных действий и автоматически заполняется адресами системных программ при загрузке системы; часть векторов зарезервирована для будущих применений, а часть (конкретно с номерами 60h...66h) свободна и может использоваться в прикладных программах. Для того чтобы прикладной обработчик получал управление в результате прерывания, его адрес следует поместить в соответствующий вектор прерывания. Хотя содержимое вектора прерываний можно изменить простой командой mov, однако предпочтительнее использовать специально предусмотренную функцию DOS 25h. При вызове функции 25h в регистр AL помещается номер модифицируемого вектора, а в регистры DS:DX - полный двухсловный адрес нового обработчика.
11. Система введення-виведення, тобто комплекс засобів обміну інформацією з зовнішніми пристроями, є найважливішою частиною архітектури процесора і машини в цілому. До системи введення-виведення можна віднести і способи підключення до системної шини різного устаткування, і процедури взаємодії процесора з цим обладнанням, і команди процесора, призначені для обміну даними з зовнішніми пристроями.
Введення символу з клавіатури
На вході: AH = 1.
На виході: AL - уведений символ.
Система чекає, поки з клавіатури не буде введений символ, потім символ виводиться на дисплей. Код введеного символу порівнюється з кодом Ctrl/Break і Ctrl/C. При збігові кодів виконується INT 23h. Для введення розширених кодів ASCII потрібно виконання двох викликів. Перший виклик повертає 00h, сигналізуючи про те, що наступним буде розширений код.
Приклад: mov ah,1
int 21h.