Опишите состав и назначение команд работы с прерываниями

INT (INTerrupt) Вызов подпрограммы обслуживания прерывания

Схема команды: int номер_прерывания

Назначение: вызов подпрограммы обслуживания прерывания с номером прерывания, заданным операндом команды. Алгоритм работы: записать в стек регистр флагов eflags/flags и адрес возврата. При записи адреса возврата вначале записывается содержимое сегментного регистра cs, затем содержимое указателя команд eip/ip;

сбросить в ноль флаги if и tf; передать управление на программу обработки прерывания с указанным номером. Применение: Как видно из синтаксиса, существуют две формы этой команды: int 3 — имеет свой индивидуальный код операции 0cch и занимает один байт. Это обстоятельство делает ее очень удобной для использования в различных программных отладчиках для установки точек прерывания путем подмены первого байта любой команды. Микропроцессор, встречая в последовательности команд команду с кодом операции 0cch, вызывает программу обработки прерывания с номером вектора 3, которая служит для связи с программным отладчиком. Вторая форма команды занимает два байта, имеет код операции 0cdh и позволяет инициировать вызов подпрограммы обработки прерывания с номером вектора в диапазоне 0–255. Особенности передачи управления, как было отмечено, зависят от режима работы микропроцессора.

IRET/IRETD (Interrupt RETurn) Возврат из прерывания

Схема команды: iret; iretd

Назначение: используется в той точке программы обработки прерывания, откуда необходимо вернуть управление прерванной программе. Алгоритм работы: Работа команды зависит от режима работы микропроцессора:

в реальном режиме команда iret последовательно извлекает из стека и затем восстанавливает в микропроцессоре содержимое следующих регистров: eip/ip, cs, eflags/flags. Далее прерванная программа продолжается с точки прерывания; в защищенном режиме действия команды зависят от состояния флага NT (вложенной задачи) в регистре флагов: если NT=0, то производятся действия по возврату управления прерванной программе, при этом характер этих действий зависит от соотношения уровней привилегированности прерванной программы и программы обработки прерывания; в случае NT=1 производятся действия по переключению задач.

Применение:
Команду iret необходимо применять для восстановления сохраненных командой int регистров флагов, указателя команд и сегментного регистра кода. Число этих команд в программе обработки прерывания должно соответствовать количеству точек выхода из нее. Команда iretd используется в старших моделях микропроцессоров для извлечения из стека и восстановления 32-битных регистров.

INTO (INTerrupt if Overflow) Прерывание, если переполнение

Схема команды: into. Назначение: инициирование прерывания с номером 4, если установлен флаг of. Алгоритм работы: Проанализировать состояние флага of: если of=0, то никаких действий производить не нужно — передать управление на следующую команду; если of=1, то дальнейшие действия, как при команде int, то есть: записать в стек регистр флагов eflags/flags и адрес возврата. При записи адреса возврата вначале записывается содержимое сегментного регистра cs, затем содержимое указателя команд eip/ip; сбросить в ноль флаги if и tf; передать управление на программу обработки прерывания с данным номером. Механизм передачи зависит от режима работы микропроцессора. Применение: Свойство этой команды инициировать вызов подпрограммы обработки прерывания с номером вектора 4 определяет варианты ее применения. Если предыдущая команда в программе может в результате своей работы установить флаг переполнения of (к примеру, арифметические команды), то для обнаружения и обработки такой ситуации можно использовать команду into. Особенности передачи управления и обработки (корректировки) результата зависят от режима работы микропроцессора.

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: