Команды передачи управления
Команды прерывания. Включают три мнемокода: INT (прерывание), INTO (прерывание при переполнении) и IRET (возврат из прерывания).
Команда прерывания INTпри v = 1 имеет двухбайтовый формат, второй байт которого содержит 8-разрядное число, определяющее тип (type) или уровень прерывания. По команде INT type процессор переходит к выполнению программы обслуживания прерывания указанного уровня, причем автоматически выполняются действия, необходимые для обеспечения возврата в точку прерывания. Эти действия состоят в следующем: содержимое регистра флагов Fзаписывается в стек (PUSHF), сбрасываются флаги IF и TF, текущие значения регистра CS и указателя команд IP записываются в стек.
Для определения начального адреса программы обслуживания в соответствии со значением type используется таблица уровней прерывания. Для каждого из 256 уровней прерываний в этой таблице отведено по четыре байта: первые два байта определяют значение указателя команд IP, вторые - значение сегментного регистра CS. Эта четверка байтов определяет начальные адреса программ обслуживания (пары значений CS, IP), которые должны быть предварительно записаны в ячейки памяти по абсолютным адресам 0-3FFH. Адрес таблицы, соответствующий указанному в команде INT type уровню прерывания, определяется в ЦП следующим образом. После запоминания в стеке текущих значений CS и ГР осуществляются загрузки: CS = type x 4 + 2 и IP = type x 4. Новые значения CS и IP, взятые соответственно из ячеек с адресами type x 4 + 2 и typex 4, определяют начальный адрес требуемой программы обслуживания.
Рассмотренная выше команда прерывания INT при значении поля v = 0 имеет однобайтовый формат, т. е. не требует специального указания уровня прерывания. Эта команда автоматически воспринимается процессором как прерывание третьего уровня (type=3) и обычно используется в программах в качестве контрольной точки.
предыдущаяследующая© Copyright, 2009.
Для связи: info@dgs-srl.com.