<<
>>

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

Команды условного перехода анализируют состояние определенных флажков процессора, и если это состояние удовлетворяет заданному в команде усло- вию, то происходит передача управления по находящемуся в команде указателю.

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

В системе команд i8О86 предусмотрено около трех десятков различных команд условного перехода, которые анализируют различные флажки и различное их со- стояние. Примеры некоторых команд условных переходов приведены в табл. 4.22.

Таблица 4.22. Команды условных переходов

Θ — обозначает логическую операцию «Исключающее ИЛИ».

Буквы, входящие в мнемокоды команд, имеют следующий смысл: j — jump (пе- реход), е — equal (равно), z — zero (нуль), n — not (не), g — greater (больше), 1 — less (меньше), а — above (выше), b — below (ниже).

Зная эти обозначения, по мнемокоду легко понять включенное в команду условие. Например, команда j ne имеет смысл: «переход, если не равно».

Обычно одна и та же команда имеет два эквивалентных названия и обозначения. В табл. 4.22 эти названия и обозначения разделены наклонной чертой «/». Напри- мер, известно, что отношение «меньше» можно заменить эквивалентным отноше- нием «не больше или равно». Поэтому команда перехода с названием «переход, если меньше» (имеется в виду меньше нуля) и мнемокодом j 1 (от jump if less) может быть также названа «переход, если не больше или равно») и обозначена другим мнемокодом j пде (от jump if not greater or equal).

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

По третьей строке табл. 4.22 видно, что обсуждаемой команде соответствуют та- кие состояния флажков процессора, для которых sf Θ of = 1. По определению логической операции «Исключающее ИЛИ», это соотношение имеет место, если sf и of имеют разные значения, то есть если sf = 1 и при этом of = 0 или же sf = О, но of = 1. Как известно, флажок sf принимает значение 1 в том случае, если в результате выполнения текущей команды получился код, который можно трактовать как код отрицательного числа (знаковый бит поля занят единицей), то есть как код числа, меньшего, чем нуль. Однако при этом требуется, чтобы флажок of был равен нулю, то есть чтобы он не показывал выход из диапазо- на знакового представления чисел. Собственно говоря, именно эта ситуация подразумевается при использовании команды jl. Кроме того, этой команде со- ответствует ситуация, когда of = 1 и при этом sf = 0, то есть имеет место знако- вое переполнение. В связи с этим можно утверждать, что указанное в таблице выражение sf Θ of = 1 более точно отслеживает ситуацию, что, на первый взгляд, более простой анализ значения флажка sf = 1. Это замечание касается всех ко- манд условного перехода, реагирующих на комбинацию флажков sf Θ of.

Итак, если при выполнении рассматриваемой команды jl/jnge состояние флажков sf и of удовлетворяют указанному условию, то входящий в команду указатель заменяет текущее содержимое регистров сs:iр и тем самым организу- ется переход в другую точку команды. В противном случае содержимое этих ре- гистров не изменяется, и следовательно, выполняется следующая по порядку ко- манда. Этот принцип действия распространяется на все команды условного перехода. Разница только в проверяемых флажках и условиях, которым должны удовлетворять их состояния.

Теперь обратим внимание на две последние строки табл. 4.22, в которых исполь- зуются отношения «выше» и «ниже». Чтобы понять смысл этих отношений, сле- дует выяснить, какой из кодов 0000 00002 и 1111 11112 больше, а какой меньше.

Оказывается, что ответ на этот вопрос не очевиден. Если рассматривать эти коды как знаковые, то коду 1111 11112, соответствует число —12810, а коду 0000 00002 — число 010, то есть код 1111 11112 оказался меньше, чем код 0000 00002. С другой стороны, если трактовать эти коды, как беззнаковые, то коду 1111 11112 соответ- ствует число 25510, которое очевидно больше, чем число 010, соответствующее коду 0000 00002. Чтобы различать эти ситуации, не прибегая к такому детально- му анализу, как раз и введены эти отношения. Итак, код 0000 00002 ниже, но при этом больше, чем код 1111 11112, и наоборот, код 1111 11112 выше, но меньше, чем 0000 00002. То есть отношения «выше» и «ниже» в названиях и мнемокодах команд условных переходов касаются соотношений между кодами, трактуемыми как беззнаковые, а отношения «меньше» и «больше» используются при знаковой трактовке кодов.

<< | >>
Источник: Степанов А. Н.. Архитектура вычислительных систем и компьютерных сетей. 2007

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

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