5.1. Команда прерывания INT

Команда INT отличается от команды CALL.

Команда

INT n работает следующим образом:

· запоминает в стек регистр флагов (здесь и ниже будет предполагаться, что при запоминании в стек указатель SP предварительно уменьшается на 2, как в команде PUSH);

· очищает флаги TF и IF;

· запоминает в стек регистр CS;

· запоминает в стек регистр IP;

· передает управление на подпрограмму обработки прерывания n, адрес сегмента которой будет находиться по адресу 4n+2, а смещение – по адресу 4n.

Передача управления производится с помощью передачи в пару регистров CS:IP сегмента и смещения, которые находятся по адресу 4n. Подпрограмма обработки прерывания выполняет необходимые действия и возвращает управление на команду, следующую за командой INT. Управление передается с помощью команды IRET, которая не только восстанавливает значения CS и IP, но и восстанавливает регистр флагов.