Команда | Jump if ... | Условие при сравнении cmp x, y | Условие перехода (состояние флагов) |
ja jnbe | Above Not Below or Equal | x > y | CF = 0 and ZF = 0 |
jae jnb jnc | Above or Equal Not Below Not Carry | x ≥ y | CF = 0 |
jb jnae jc | Below Not Above or Equal Carry | x < y | CF = 1 |
jbe jna | Below or Equal Not Above | x ≤ y | CF = 1 or ZF = 1 |
je jz | Equal Zero | x = y | ZF = 1 |
jne jnz | Not Equal Not Zero | x != y | ZF = 0 |
jg jnle | Greater Not Less or Equal | x > y (знаки учитываются) | SF = OF and ZF = 0 |
jge jnl | Greater or Equal Not Less | x ≥ y (знаки учитываются) | SF = OF |
jl jnge | Less Not Greater or Equal | x < y (yзнаки учитываются) | SF != OF |
jle jng | Less or Equal Not Greater | x ≤ y (знаки учитываются) | SF != OF or ZF = 1 |
js | Signed | SF = 1 | |
jns | Not Signed | SF = 0 | |
jo | Overflow | OF = 1 | |
jno | Not Overflow | OF = 0 | |
jp jpe | Parity Parity Even | PF = 1 | |
jnp jpo | Not Parity Parity Odd | PF = 0 | |
jcxz | CX Zero | CX = 0 |
Многие условные переходы имеют по несколько имен. Например, ja (больше) и jnbe (не меньше и не равно) обозначают одно и то же. je и jz также являются одинаковыми командами. Обычно если, сравнивают два аргумента, используют je, чтобы показать, что переход произойдет, если аргументы равны. Если сравнивают аргумент с нулем, тогда используют jz.
Комментариев нет:
Отправить комментарий