Команда имеет несколько модификаций в зависимости от длины адресной части, так в модели FLAT:
short – используется при переходе по адресу, который находится на расстоянии -128..127 байт относительно адреса данной команды (длина адресной части команды перехода 1 байт);
near ptr – при переходе по адресу, который находится в том же сегменте (длина адресной части 4 байта);
far ptr – при переходе по адресу, который находится в другом сегменте (длина адресной части 6 байт).
При указании перехода к командам, предшествующим команде перехода, ассемблер сам определяет расстояние до метки перехода и строит адрес нужной длины. При программировании перехода к последующим частям программы необходимо для коротких переходов вставлять указатель shortдля экономии памяти. Указывать ближний переход не обязательно, поскольку в пределах модели памяти flat все адреса находятся в том же сегменте, т. е. предполагают вариант near ptr, что и подразумевается по умолчанию.
В качестве адреса перехода помимо символических имен машинных команд ассемблера могут использоваться метки трех видов:
· <Имя > : nор ; nор – команда «нет операции»
· <Имя> label near ; метка для внутрисегментных переходов
· <Имя> label far ; метка для внесегментных переходов
Примеры:
jmp short b ; переход по адресуb
jmp [EBX] ; переход по адресу в регистре EBX (адрес определяется косвенно)
b label near ; описание метки перехода «b»
2.5.2 Команды условного перехода
Команды условного перехода используются после команд сравнения и арифметических команд. Для принятия решения о том, осуществлять или нет переход, команды перехода анализируют различные комбинации флагов флажкового регистра, установленные при выполнении предыдущих команд.
Формат любой команды условного перехода выглядит следующим образом: