<<
>>

Условные переходы

В процессоре 8088 предусмотрены 15 разновидностей условных переходов, причем у некоторых из них сразу несколько имен (например, команды JUMP GREATER OR EQUAL и JUMP NOT LESS THAN эквивалентны).
Все они перечислены в табл. В.З. Максимальное расстояние перехода составляет 128 байт от текущей команды. Если объект перехода находится вне допустимого диапазона, приходится реализовывать составной переход (jump over jump). В этом случае для перехода через следующую команду применяется второй переход с противоположным условием. Если в следующей команде определен безусловный переход по целевому адресу, то сочетание этих двух команд приводит лишь к удлинению перехода указанного типа. К примеру:

JB FARLABEL

Эту команду следует заменить следующей конструкцией:

JNA If

JMP FARLABEL

1:

Иными словами, если выполнение команды JUMP BELOW невозможно, составляется конструкция, состоящая из команды JUMP NOT ABOVE с близлежащей меткой 1 в качестве объекта и безусловного перехода к FARLABEL. Результаты в обоих случаях одинаковы, различие заключается лишь в больших или меньших временных и пространственных затратах.

Если объект перехода находится слишком далеко, ассемблер автоматически организует составной переход. Правильно провести подобные вычисления довольно сложно. Предположим, что расстояние до объекта близко к максимально допустимому, и при этом некоторые промежуточные команды содержат условные переходы. Внешний переход может быть проведен только после определения расстояний внутренних переходов. В такой ситуации ассемблер предпринимает определенные меры предосторожности. К примеру, он может сформировать составной переход без строгой на то необходимости. Непосредственный условный переход формируется ассемблером только в том случае, если объект перехода совершенно точно находится на досягаемом расстоянии.
Таблица В.З, Условные переходы
Команда Описание Условие перехода
JNA, JBE Ниже или равно CF = 1 или ZF = 1
JNB, JAE, JNC Не ниже о

и

LL

О

JE, JZ Нуль, равно ZF = 1
t@tabl_body = JNLE, JG Больше чем SF = OF и ZF = 0
JGE, JNL Больше или равно Li.

О

II

LL

СО

JO Переполнение II

LL

О

JS Отрицательный знак II

LL

СО

JCXZ Значение СХ равно нулю О

X

II

о

JB, JNAE, JC Ниже CF = 1
JNBE, JA Выше CF = 0 и ZF = 0
JNE, JNZ Не равно нулю, не равно о

и

LL

N

JL, JNGE Меньше чем SF Ф OF
JLE, JNG Меньше или равно SF ф OF или ZF = 1
JNO Без переполнения о

и

LL

О

JNS Неотрицательно О

II

LL

СО

В большинстве своем условные переходы зависят от флагов состояния и предваряются командами сравнения или проверки. Команда СМР вычитает исходный операнд из целевого операнда, устанавливает коды состояния, после чего сбрасывает результат. Ни один из операндов при этом не меняется. При нулевом результате или установленном знаковом бите (обозначающем отрицательный результат) устанавливается соответствующий флаговый бит. Если результат не представляется возможным выразить допустимым числом битов, устанавливается флаг переполнения. Если старший бит сопровождается переносом, устанавливается флаг переноса. При условных переходах все эти биты можно проверить.

Для обработки операндов со знаками используются команды GREATER THAN и LESS THAN. Операнды без знаков обрабатываются командами ABOVE и BELOW.

<< | >>
Источник: Таненбаум Э.. Архитектура компьютера. 5-е изд. 2007

Еще по теме Условные переходы:

  1. § 41 Выдача купчей от крепостных дел. – Несостоявшаяся купчая. – Приобретение вотчинного права купчею по римскому праву. – Переход права по купчей у нас. – Отмена и уничтожение купчей. – Условная продажа. – Историческое право выкупа. – Двухлетний срок для спора о купчей крепости
  2. § 47 Дарение по русскому закону. – Форма. – Ограничение права на дарение. – Совершение и принятие дара. – Поворот дара к дарителю. – Переход права собственности на дар. – Дар условный. – Дар противозаконный. – Отличие дарения от завещания. – Дарение на случай смерти
  3. ПЕРЕХОД ЦИФР «22 — 4». ХАРАКТЕРИСТИКИ ПЕРЕХОДА
  4. ПЕРЕХОД ЦИФР «8 — 11», ХАРАКТЕРИСТИКИ ПЕРЕХОДА
  5. ПЕРЕХОД ЦИФР «6 — 7». ХАРАКТЕРИСТИКИ ПЕРЕХОДА
  6. ТОРМОЖЕНИЕ УСЛОВНОЕ
  7. РЕФЛЕКС УСЛОВНЫЙ: ГЕНЕРАЛИЗАЦИЯ
  8. РЕФЛЕКС УСЛОВНЫЙ
  9. ГРУППА УСЛОВНАЯ
  10. § 29 Передача и переход прав по обязательствам. – Римская конструкция права передачи. – Облегчение передачи новейшим законодательством. – Передаточная надпись. – Ограничения передачи. – Действие передачи. – Ответственность передатчика и права приобретателя. – Вступление в право кредитора или суброгация. – Русский закон передачи. – Передача заемных писем. – Переход требований к кредиторам.
  11. ГЕНЕРАЛИЗАЦИЯ РЕФЛЕКСА УСЛОВНОГО