Общий вид команды:
[Метка] Код метка
Косвенный условный переход не используется. При трансляции команды вместо метки записывается разность между адресом метки и адресом очередной после команды условного перехода команды. Если эта разность помещается в один байт (-128.. 127) команда называется короткой (short). Для команд с ссылкой назад компилятор определяет тип команды сам. Для ссылок назад тип задается программистом, если не задан, принимается обычным. Если программист задал короткий переход, а он невозможен, компилятор выводит сообщение: RELATIVE JUMP OUT OF RANGE
Команды перехода делятся на переходы по флагам, переходы для знаковых и беззнаковых данных.
Таблица 6.1 Команды условного перехода
| Переходы по флагам | Переходы для знаковых данных | Переходы для беззнаковых данных | |||||||||
| Прямой | Обратный | Прямой | Обратный | Прямой | Обратный | ||||||
| Jc | jnc | Jl (<) | Jnl (>=) | Jb(<) | Jnb(>=) | ||||||
| Jp | jnp | Jle (<=) | Jnle(>) | Jbe(<=) | Jnbe(>) | ||||||
| Jz | jnz | Je (==) | Jne(!=) | Je(==) | Jne(!=) | ||||||
| Js | jns | Jg (>) | Jng (<=) | Ja (>) | Jna(<=) | ||||||
| Jo | jno | Jge(>=) | Jnge (<) | jae(>=) | jnae(<) |
Примеры использования команд.
1. Составить программу для вычисления максимального из двух заданных чисел длиной 32 бита (числа со знаком).
Ideal
P586
Model flat
Extrn ExitProcess:proc
Dataseg
X dd 6
Y dd 7
Z dd ?
Codeseg
Begin: mov eax, [X]
Cmp eax, [Y]
Jge short m1
Mov eax, [Y]
M1:
Mov [Z], eax
End begin
2. Составить программу для вычисления минимального для двух 64 беззнаковых чисел.
X dd 0fefefefeh, 0ffffffffh
Y dd 0ffffffffffh, 0ffffffffh
Z dd ?,?
;Пусть сначала заданы младшая, а затем старшая цифра.
Mov eax, [X+4]
Cmp eax, [Y+4]
Ja mx
Jb my
Mov eax, [X]