Assembler - язык неограниченных возможностей


Команды передачи управления - часть 5


  • Команда:
  • IRET
    IRETD
  • Назначение:
  • Возврат из обработчика прерывания
  • Процессор:
  • 8086

    Возврат управления из обработчика прерывания или исключения. IRЕТ загружает из стека значения IP, CS и FLAGS, a IRETD — EIP, CS и EFLAGS соответственно. Единственное отличие IRET от RETF состоит в том, что восстанавливается значение регистра флагов, из-за чего многим обработчикам прерываний приходится изменять значение EFLAGS, находящегося в стеке, чтобы, например, вернуть флаг CF установленным в случае ошибки.

  • Команда:
  • INT3
  • Назначение:
  • Вызов прерывания 3
  • Процессор:
  • 8086

    Размер этой команды — один байт (код 0CCh), что делает ее удобной для отладки программ отладчиками, работающими в реальном режиме. Такие отладчики записывают этот байт вместо первого байта команды, перед которой требуется точка останова, и переопределяют адрес обработчика прерывания 3 на соответствующую процедуру внутри отладчика.

  • Команда:
  • INTO
  • Назначение:
  • Вызов прерывания 4 при переполнении
  • Процессор:
  • 8086

    INTO — еще одна специальная форма команды INT. Эта команда вызывает обработчик прерывания 4, если флаг OF установлен в 1.

  • Команда:
  • BOUND индекс, границы
  • Назначение:
  • Проверка выхода за границы массива
  • Процессор:
  • 80186

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

  • Команда:
  • ENTER размер, уровень
  • Назначение:
  • Вход в процедуру
  • Процессор:
  • 80186
    <


    Начало  Назад  Вперед