Другие языки программирования и технологии

Ассемблер. Команда условного перехода, если результат равен 1???

"Если результат равен 1" - такой команды нет. Потому что команды условных переходов проверяют состояние флагов процессора. Переход, если не 0 (флаг ZF=0) - jnz. Но например команда not и еще некоторые не изменяют флаги состояния, так что, например, в этом коде перехода не будет:
xor eax, eax
not eax
jnz @f

Если тебе нужна конкретно 1, то лично я делал так:
xor eax, 1
jz @f
(но только значение eax портится, но мне оно было и не особо нужно)
если в eax была 1, то eax станет 0, и флаг ZF установится в 1

Но можно использовать вобщем-то и cmp
cmp eax, 1 ; cmp - это как sub, но который не сохраняет результат. Если из 1 вычтет 1, то флаг ZF установится в 1
jz @f ; или je, которую наиболее удобно применять как раз после cmp (jump if equal), это одна и та же команда

Если чего еще непонятно, стучи в Агент (но тока он невидим и QIP Infium)

Вот табличка SETcc/Jcc (хм. . надо будет туда еще CMOVcc дописать)
J/SETAJump/set если большеCF=0 and ZF=0
J/SETAEJump/set если больше/равноCF=0
J/SETBJump/set если меньшеCF=1
J/SETBEJump/set если меньше/равноCF=1 or ZF=1
J/SETCJump/set если CarryCF=1
J/SETEJump/set если равноZF=1
J/SETGJump/set если большеZF=0 and SF=OF
J/SETGEJump/set если больше/равноSF=OF
J/SETLJump/set если меньшеSF <> OF
J/SETLEJump/set если меньше/равноZF=1 or SF <> OF
J/SETNAJump/set если не большеCF=1 or ZF=1
J/SETNAEJump/set если не больше/равноCF=1
J/SETNBJump/set если не меньшеCF=0
J/SETNBEJump/set если не меньше/равноCF=0 and ZF=0
J/SETNCJump/set если не CarryCF=0
J/SETNEJump/set если не равноZF=0
J/SETNGJump/set если не большеZF=1 or SF <> OF
J/SETNGEJump/set если не больше/равноSF <> OF
J/SETNLJump/set если не меньшеSF=OF
J/SETNLEJump/set если не меньше/равноZF=0 and SF=OF
J/SETNOJump/set если не переполнениеOF=0
J/SETNPJump/set если нечетныйPF=0
J/SETNSJump/set если не знакSF=0
J/SETNZJump/set если не нольZF=0
J/SETOJump/set если переполнениеOF=1
J/SETPJump/set если четныйPF=1
J/SETSJump/set если знакSF=1
J/SETZJump/set если нольZF=1
JCXZJump если CX=0CX=0
JECXZJump если ECX=0ECX=0
JRCXZJump если RCX=0RCX=0
JMPБезусловный переход
** В *p / *np описание неправильное (я её себе прсото тупо скопировал) . Флаг P устанавливается в 1, если чётно число значащих битов младшего байта результата, установленных в 1 и в 0, а не сам результат чётный (то есть если последний бит=0). Например
xor eax, eax
or eax, 100111b ; PF=1
Сергей Барсов
Сергей Барсов
37 544
Лучший ответ
Нет такой, есть только если 0. Или не 0.