Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Condicin
JZ
Jump if Zero
salta si cero
ZF=1
JNZ
salta si no cero
ZF=0
JC
Jump if Carry
salta si acarreo
CF=1
JNC
salta si no acarreo
CF=0
JO
Jump if Overflow
salta si overflow
OF=1
JNO
salta si no overflow
OF=0
JS
Jump if Sign
salta si signo
SF=1
JNO
salta si no signo
SF=0
JP/JPE
PF=1
JNP/JPO
PF=0
Cuando queremos hacer un salto condicionado por una comparacin, y no directamente por el
estado de los flags, lo que hacemos es una comparacin CMP A,B. A continuacin usamos una
instruccin de salto de entre las siguientes:
Instruccin
Condicin
JA
Jump if Above
JAE
JB
Jump if Below
JBE
JE
Jump if Equal
salta si igual
A=B
JG
Jump if Greater
salta si mayor
JGE
JL
Jump if Less
salta si menor
JLE
CMP equivala a una resta que no modificaba los operandos; si queremos saltar si A<B, podemos
hacer CMP A,B. Si A<B al hacer la resta me llevar una, por lo que el bit de carry se pondr a 1.
Vemos que JC es equivalente a JB. Con similares deducciones se pueden obtener algunos saltos
ms; otros, sin embargo, dependen del resultado de dos flags al tiempo ("menor o igual" saltar con
CF=1 y ZF=1), por lo que sus mnemnicos correspondern a instrucciones nuevas.
Para poner las cosas an ms fciles, existen JNA,JNAE,JNB,JNBE,JNE,JNG, JNGE,JNL,
JNLE. No haca falta que estuvieran, porque son equivalentes a JBE,JB,JAE,JA,JNZ, JLE,JL y JG,
pero as nos evitan pensar un poco. Una N delante indica la condicin contraria. Si uno no quiere
los, basta que recuerde que Below/Above son para nmeros sin signo y Less/Greater para con
signo.
Una instruccin de salto muy til en combinacin con las siguientes (LOOP y variaciones)
es JCXZ (Jump if CX is Zero, salta si CX es cero), o JECXZ si estamos operando en 32 bits.
Para hacer ciclos (algo as como for i=1 to 10) la familia del 8086 cuenta con LOOP y la pareja
LOOPE/LOOPZ (mnemnicos de lo mismo)