Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 24

Если в качестве адреса перехода указаны сегмент и смещение, происходит дальний вызов процедуры. А именно: в стек помещается текущее значение регистра CS и значение счётчика команд, соответствующее следующей за CALL команде, и загружаются в регистр CS и счётчик команд значения, указанные в операнде.

В ассемблерных программах вместо непосредственных адресов, как правило, указываются идентификаторы процедур, определённых соответствующей директивой. По общему правилу, ассемблер в процессе трансляции вместо идентификатора подставляет соответствующий адрес.

Вызов дальней процедуры в защищённом режиме имеет особенности, связанные с привилегиями сегмента вызывающей команды и сегмента вызываемой процедуры.

RETN         [число]                                возврат из ближней процедуры  8086

RETF         [число]                                возврат из дальней процедуры   8086

RET            [число]                                возврат из процедуры                 8086

Команда RETN извлекает значение из стека и его загружает в счётчик команд, выполняя действия, обратные вызову ближней процедуры командой CALL.

Команда RETF загружает из стека значения счётчика команд и регистра CS, выполняя возврат из дальней процедуры.

Команда RET в процессоре не существует, а ассемблер заменяет данную мнемонику на RETN или RETF соответственно описанию процедуры, в которой данная мнемоника встретилась.

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

INT            число                                   вызов прерывания                       8086

Помещает в стек содержимое регистра флагов, регистра CS и счётчика команд, после чего передаёт управление обработчику прерывания, номер которого задан в качестве операнда.

IRET         возврат из обработчика прерываний                                       8086

IRETD                                                   то же                                                    

IRET загружает из стека значения регистров IP, CS и FLAGS, а IRETD — EIP, CS и EFLAGS.

Примечание. Единственное отличие IRET от RETF состоит в том, что IRET восстанавливает значение регистра флагов.

INT3                                                      вызов прерывания 3                    8086

INTO         вызов прерывания 4 при установленном флаге OF                8086

BOUND       индекс, границы                  проверка: в пределах ли массива                   80186

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

Индекс должен быть регистром общего назначения.

Границы — два слова или два двойных слова, в зависимости от разрядности операндов, находящиеся в памяти подряд и рассматриваемые как числа со знаком. Первая граница считается нижней, вторая — верхней. Если индекс меньше нижней границы или больше верхней, вызывается прерывание 5 в режиме реальной адресации или исключение #BR — в защищённом, причём адрес возврата указывает не на следующую команду, а на BOUND, так что обработчик должен исправить значение индекса или границ, прежде чем выполнить команду IRET.

7.8.  Строковые операции

Смотри литературу.

7.9.  Команды управления флагами

Смотри литературу.

7.10.  Команды загрузки сегментных регистров

Смотри литературу.

7.11.  Другие команды

ENTER       размер, уровень                  вход в процедуру                      80186

Предназначена для автоматизированного создания так называемого стекового кадра в вызванной процедуре. Она используется, как правило, для выделения места под локальные данные процедуры.

Оба операнда — числа. Уровень вложенности может принимать значения от 0 до 31.

В частном случае, когда уровень равен нулю, команда выполняет следующие действия:

1)  записывает в стек значение регистра BP или EBP;