(Interrupt RETurn)
Возврат из прерывания
Схема команды:
| iret
iretd
|
Назначение: используется в той точке программы обработки прерывания, откуда необходимо вернуть управление прерванной программе.
Синтаксис
Алгоритм работы:
Работа команды зависит от режима работы микропроцесссора:
- в реальном режиме команда iret последовательно извлекает из стека и затем восстанавливает в микропроцессоре содержимое следующих регистров: eip/ip, cs, eflags/flags. Далее прерванная программа продолжается с точки прерывания;
- в защищенном режиме действия команды зависят от состояния флага NT (вложенной задачи) в регистре флагов:
- если NT=0, то производятся действия по возврату управления прерванной программе, при этом характер этих действий зависит от соотношения уровней привилегированности прерванной программы и программы обработки прерывания;
- в случае NT=1 производятся действия по переключению задач.
Состояние флагов после выполнения команды:
|
|
|
|
|
|
|
|
|
OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
|
r
| r
| r
| r
| r
| r
| r
| r
| r
|
Применение:
Команду iret необходимо применять для восстановления сохраненных командой int регистров флагов, указателя команд и сегментного регистра кода. Число этих команд в программе обработки прерывания должно соответствовать количеству точек выхода из нее. Команда iretd используется в старших моделях микропроцессоров для извлечения из стека и восстановления 32-битных регистров.
my_int1c proc;программа обработки прерывания 1Ch... iret endp |
См. также: уроки 15, 17 и команды int, into