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

Микропроцессор имеет 18 команд условного перехода. Эти команды позволяют проверить:

· отношение между операндами со знаком (“больше — меньше”);

· отношение между операндами без знака (“выше — ниже”);

· состояния арифметических флагов zf, sf, cf, of, pf (но не af).

Команды условного перехода имеют одинаковый синтаксис:

Jcc метка_перехода

Как видно, мнемокод всех команд начинается с “ j ” — от слова jump (прыжок), cc — определяет конкретное условие, анализируемое командой. Что касается операнда метка_перехода, то эта метка может находится только в пределах текущего сегмента кода, межсегментная передача управления в условных переходах не допускается. В связи с этим отпадает вопрос о модификаторе, который присутствовал в синтаксисе команд безусловного перехода. В ранних моделях микропроцессора (i8086, i80186 и i80286) команды условного перехода могли осуществлять только короткие переходы — на расстояние от –128 до +127 байт от команды, следующей за командой условного перехода. Начиная с модели микропроцессора 80386 это ограничение снято, но, как видите, только в пределах текущего сегмента кода.

Для того чтобы принять решение о том, куда будет передано управление командой условного перехода, предварительно должно быть сформировано условие, на основании которого и будет приниматься решение о передаче управления. Источниками такого условия могут быть:

· любая команда, изменяющая состояние арифметических флагов;

· команда сравнения cmp, сравнивающая значения двух операндов;

· состояние регистра ecx/cx.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: