-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||77 cb JA rel8 3,1 Переход короткий, если выше || (CF = 0 и ZF = 0) ||73 cb JAE rel8 3,1 Переход короткий, если выше || или равно (CF = 0) ||72 cb JB rel8 3,1 Переход короткий, если ниже || (CF = 1) ||76 cb JBE rel8 3,1 Переход короткий, если ниже || или равно (CF = 1 или ZF = 1) ||72 cb JC rel8 3,1 Переход короткий, если перенос || (CF = 1) ||E3 cb JCXZ rel8 8,5 Переход короткий, если регистр || CX равен 0 ||E3 cb JECXZ rel8 8,5 Переход короткий, если регистр || ECX равен 0 ||74 cb JE rel8 3,1 Переход короткий, если равно || (ZF = 1) ||74 cb JZ rel8 3,1 Переход короткий, если 0 || (ZF = 1) ||7F cb JG rel8 3,1 Переход короткий, если больше || (ZF = 0 и SF = OF) ||7D cb JGE rel8 3,1 Переход короткий, если больше || или равно (SF = OF) ||7C cb JL rel8 3,1 Переход короткий, если меньше || (SF <> OF) ||7E cb JLE rel8 3,1 Переход короткий, если меньше || или равно (ZF=1 или SF <> OF) ||76 cb JNA rel8 3,1 Переход короткий, если не выше || (CF = 1 и ZF = 1) ||72 cb JNAE rel8 3,1 Переход короткий, если не выше || или равно (CF = 1) ||73 cb JNB rel8 3,1 Переход короткий, если не ниже || (CF = 0) ||77 cb JNBE rel8 3,1 Переход короткий, если не ниже || или равно (CF=0 и ZF=0) ||73 cb JNC rel8 3,1 Переход короткий, если нет || переноса (CF = 0) ||75 cb JNE rel8 3,1 Переход короткий, если не равно|| (ZF = 0) ||7E cb JNG rel8 3,1 Переход короткий, если не || больше (ZF = 1 или SF <> OF) ||7C cb JNGE rel8 3,1 Переход короткий, если не || больше или равно (SF <> OF) ||7D cb JNL rel8 3,1 Переход короткий, если не || меньше (SF = OF) ||7F cb JNLE rel8 3,1 Переход короткий, если не мень-|| ше или равно (ZF=0 и SF=OF) ||71 cb JNO rel8 3,1 Переход короткий, если нет || переполнения (OF=0) ||7B cb JNP rel8 3,1 Переход короткий, если нет кон-|| троля четности (PF = 0) ||79 cb JNS rel8 3,1 Переход короткий, если нет || знака (SF = 0) ||75 cb JNZ rel8 3,1 Переход короткий, если нет нуля|| (ZF = 0) ||70 cb JO rel8 3,1 Переход короткий, если || переполнение (OF = 1) ||7A cb JP rel8 3,1 Переход короткий, если контроль|| четности (PF = 1) ||7A cb JPE rel8 3,1 Переход короткий, если контроль|| на проверку четности (PF = 1) ||7B cb JPO rel8 3,1 Переход короткий, если контроль|| на проверку нечетности (PF = 0)||78 cb JS rel8 3,1 Переход короткий, если знак || (SF = 1) ||74 cb JZ rel8 3,1 Переход короткий, если ноль || (ZF = 1) ||0F 87 cw/dw JA rel16/32 3,1 Переход ближний, если выше || (CF = 0 и ZF = 0) ||0F 83 cw/dw JAE rel16/32 3,1 Переход ближний, если выше || или равно (CF = 0) ||0F 82 cw/dw JB rel16/32 3,1 Переход ближний, если ниже || (CF = 1) ||0F 86 cw/dw JBE rel16/32 3,1 Переход ближний, если ниже || или равно (CF = 1 или ZF = 1) ||0F 82 cw/dw JC rel16/32 3,1 Переход ближний, если перенос || (CF = 1) ||0F 84 cw/dw JE rel16/32 3,1 Переход ближний, если равно || (ZF = 1) ||0F 84 cw/dw JZ rel16/32 3,1 Переход ближний, если 0 || (ZF = 1) ||0F 8F cw/dw JG rel16/32 3,1 Переход ближний, если больше || (ZF = 0 и SF = OF) ||0F 8D cw/dw JGE rel16/32 3,1 Переход ближний, если больше || или равно (SF = OF) ||0F 8C cw/dw JL rel16/32 3,1 Переход ближний, если меньше || (SF <> OF) ||0F 8E cw/dw JLE rel16/32 3,1 Переход ближний, если меньше || или равно (ZF=1 или SF <> OF) ||0F 86 cw/dw JNA rel16/32 3,1 Переход ближний, если не выше || (CF = 1 и ZF = 1) ||0F 82 cw/dw JNAE rel16/32 3,1 Переход короткий, если не выше || или равно (CF = 1) ||0F 83 cw/dw JNB rel16/32 3,1 Переход ближний, если не ниже || (CF = 0) ||0F 87 cw/dw JNBE rel16/32 3,1 Переход ближний, если не ниже || или равно (CF=0 и ZF=0) ||0F 83 cw/dw JNC rel16/32 3,1 Переход ближний, если нет || переноса (CF = 0) ||0F 85 cw/dw JNE rel16/32 3,1 Переход ближний, если не равно || (ZF = 0) ||0F 8E cw/dw JNG rel16/32 3,1 Переход ближний, если не || больше (ZF = 1 или SF <> OF) ||0F 8C cw/dw JNGE rel16/32 3,1 Переход ближний, если не || больше или равно (SF <> OF) ||0F 8D cw/dw JNL rel16/32 3,1 Переход ближний, если не || меньше (SF = OF) ||0F 8F cw/dw JNLE rel16/32 3,1 Переход ближний, если не мень- || ше или равно (ZF=0 и SF=OF) ||0F 81 cw/dw JNO rel16/32 3,1 Переход ближний, если нет || переполнения (OF=0) ||0F 8B cw/dw JNP rel16/32 3,1 Переход ближний, если нет кон- || троля четности (PF = 0) ||0F 89 cw/dw JNS rel16/32 3,1 Переход ближний, если нет || знака (SF = 0) ||0F 85 cw/dw JNZ rel16/32 3,1 Переход ближний, если нет нуля || (ZF = 0) ||0F 80 cw/dw JO rel16/32 3,1 Переход ближний, если || переполнение (OF = 1) ||0F 8A cw/dw JP rel16/32 3,1 Переход ближний, если контроль || четности (PF = 1) ||0F 8A cw/dw JPE rel16/32 3,1 Переход ближний, если контроль || на проверку четности (PF = 1) ||0F 8B cw/dw JPO rel16/32 3,1 Переход ближний, если контроль || на проверку нечетности (PF = 0)||0F 88 cw/dw JS rel16/32 3,1 Переход ближний, если знак || (SF = 1) ||0F 84 cw/dw JZ rel16/32 3,1 Переход ближний, если ноль || (ZF = 1) |----------------------------------------------------------------- Примечание: Первое число тактовых циклов относится к случаю, когда условиеперехода выполняется (переход происходит); второе значение относится кслучаю, когда условие не выполняется (и переход не происходит). rel16/32указывает, что эти команды отображаются двумя командами : одна с16-разрядным относительным смещением, а вторая с 32-разряднымотносительным смещением, в зависимости от атрибута размера операнда даннойкоманды. Работа команды IF условиеTHEN EIP <- EIP + SignExtend(rel8/16/32); IF OperandSize = 16 THEN EIP <- EIP AND 0000FFFFH; FI;FI; ОписаниеКоманды условного перехода (за исключением команды JCXZ) проверяют флаги,которые были установлены предыдущей командой. Условия для каждоймнемонической формы команды даны в круглых скобках выше после каждогоописания. Термины "меньше" и "больше" используются при сравнении целых сознаком; "выше" и "ниже" - для целых без знака.Если условие выполняется, то происходит переход по адресу, задаваемомуоперандом. Использование данной команды наиболее эффективно, когда цельусловного перехода находится в текущем кодовом сегменте и в пределах от-128 до +127 байтов относительно первого байта следующей команды.Цель перехода также может находиться в пределах от -32768 до +32767(атрибут размера сегмента 16) или от -2**31 до +2**31-1 (атрибут размерасегмента 32) относительно первого байта следующей команды. Если целькоманды условного перехода находится в другом сегменте, используйтекоманду с противоположным условием перехода, которая "обойдет" командудальнего безусловного перехода к другому сегменту. Например, вы не можетезаписать: JZ FARLABEL; Вместо этого напишите: JNZ BEYOND; JMP FARLABEL;BEYOND: Поскольку может существовать несколько способов интерпретации конкретногосостояния флагов, ASM386 обеспечивает более одной мнемонической формы длябольшинства кодов операции условного перехода. Например, если вы сравнилидва символа в AX и хотите выполнить переход, если они равны, используйтекоманду JE, или, если вы выполнили операцию И для регистра AX и маской,записанной в битовом поле, и хотите, чтобы переход происходил только прирезультате, равном 0, используйте команду JZ, которая является синонимомкоманды JE.Команда JCXZ отличается от других команд условного перехода тем, что онапроверяет не флаги, а содержимое регистров CX или ECX на равенство 0.Команда JCXZ полезна в начале условного цикла, который заканчиваетсякомандой условного перехода к началу цикла (например, LOOPNE метка цели).Команда JCXZ предотвращает вхождение в цикл при регистре CX или ECX,равном нулю, что может привести к выполнению цикла 64К или 32Г раз вместонуля раз. Изменяемые флагиОтсутствуют Исключения защищенного режима#GP (0), если смещение, на которое задан переход, лежит вне границкодового сегмента. Исключения режима реальных адресовОтсутствуют Исключения виртуального режима 8086Отсутствуют ПримечаниеКоманда JCXZ выполняется дольше, чем последовательность из двух команд,сравнивающая регистр-счетчик с нулем и выполняющая переход в случаеравенства.Все команды ветвления преобразуются для выборки в 16-разрядные коды,независимо от адреса перехода или возможности кеширования.