Справочник по языку Ассемблера IBM PC

       

IRET/IRETD


(Interrupt RETurn)

Возврат из прерывания

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

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


Алгоритм работы:


Работа команды зависит от режима работы микропроцесссора:

в реальном режиме команда iret последовательно извлекает из стека и затем восстанавливает в микропроцессоре содержимое следующих регистров: eip/ip, cs, eflags/flags. Далее прерванная программа продолжается с точки прерывания;

в защищенном режиме действия команды зависят от состояния флага NT (вложенной задачи) в регистре флагов:



если NT=0, то производятся действия по возврату управления прерванной программе, при этом характер этих действий зависит от соотношения уровней привилегированности прерванной программы и программы обработки прерывания;

в случае NT=1 производятся действия по переключению задач.

Состояние флагов после выполнения команды:

11 10 09 08 07 06 04 02 00
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 и команды ,



Содержание раздела