Команды и механизм прерываний
Прерывание – это приостановка выполнения программы с целью выполнения какой-то более важной или нужной в данный момент другой программы или процедуры, после завершения которой продолжается выполнение программы с того места, где она была прервана. Прерывание позволяет компьютеру приостановить любое свое действие и временно переключиться на другое, как заранее запланированное, так и неожиданное, вызванное непредсказуемой ситуацией в работе машины или ее компонента. Каждое прерывание вызывает загрузку определенной программы, предназначенной для обработки возникшей ситуации – программы обработки прерываний. Команды прерывания позволяют воспользоваться встроенными системными ресурсами (программами обработки прерываний) из программы пользователя. Функциональные возможности и выполняют команды прерывания, которые описаны в таблице 6 [5]. В команде прерывания INT тип_прерывания представляет собой номер прерывания, которых в ЭВМ IBM насчитывается 256 (типы прерываний имеют номера 0-255): При выполнении команды INT микропроцессор производит следующие действия: а) помещает в стек регистр флагов; б) обнуляет флаг трассировки TF и флаг включения-выключения прерываний IF для блокировки других действий, кроме обработки вызванного прерывания; в) помещает в стек значение регистра CS; г) вычисляет адрес вектора прерываний, умножая номер_прерывания на 4 (т.к. вектор прерывания занимает 4 байта или 32 бита); д) обращается ко второму слову из вычисленного адреса вектора прерываний и помещает его в регистр CS; е) помещает в стек значение указателя команд IP; ж) загружает в IP первое слово вектора прерываний. Команда INTО представляет собой команду условного прерывания. Она инициирует прерывание в том случае, когда флаг переполнения OF равен 1. Команда IRET, является командой возврата после прерывания. Она извлекает из стека значения регистров CS и IP и регистра флагов (считывает три ячейки стека), а затем микропроцессор по новому содержанию регистров команд продолжит выполнение программы пользователя.
|