⚙️CONDICIONALES

La ejecucion coondicional se logra mediante varias instrucciones de bucle bifurcacion. Estas instrucciones pueden cambiar el flujo del programa. La ejecucion condicional se observa en dos escenarios:

Sr.No.

Instrucciones condicionales

1

Salto Incondicional

Esto lo realiza la instrucción JMP. La ejecución condicional a menudo implica una transferencia de control a la dirección de una instrucción que no sigue a la instrucción que se está ejecutando actualmente. La transferencia de control puede ser hacia adelante, para ejecutar un nuevo conjunto de instrucciones o hacia atrás, para volver a ejecutar los mismos pasos.

2

Salto Condicional

Esto se realiza mediante un conjunto de instrucciones de salto j <condición> dependiendo de la condición. Las instrucciones condicionales transfieren el control rompiendo el flujo secuencial y lo hacen cambiando el valor de compensación en IP.

Analicemos la instruccion CMP antes de analizar las instruccines condicionales.

Instruccion CMP:

Esta compara dos operandos. Basicamente resta un operando del otro para comparar si son iguales o no. No perturba los operandos de origen o destino. Se utiliza junto con la instruccion de salto condicional para tomar desiciones.

cmp destinaction, source

CMP compara dos campos numericos. El operando de destino podria estar en el registro o en la memoria. El operando source posria ser un dato constante (inmediato), un registro o una memoria.

EJEMPLO:

cmp dx, 00    ; Comparacion 
je  L7        ; Se hace la condicion, si dx = 00 pasa a L7

L7:           ; El codigo que seguiria segun la condicion.

CMP se usa a menudo para comparar si un valor de contador ha alcanzado la cantidad de veces que se debe ejecutar un ciclo.

inc edx        ; Incrememtamos edx
cmp edx, 10    ; Comparamos que edx sea igual a 10
jle lp1        ; Si es menor o igual a 10, salta a lp1

Salto Incondicional

Esto lo realiza la instruccion JMP. La ejecucion condicional a menudo implica una trasferencia de control a la direccion de una instruccion que se esta ejecutando actualmente. La transferencia de control puede ser hacia adelante, para ejecutar un nuevo conjunto de instrucciones o hacia atras.

SINTAXIS:

La instruccion JMP proporciona un nombre de etiqueta donde el flujo de control se transfiere inmediatamente:

EJEMPLO:

El siguiente fragmento de codigo ilustra la instruccion JMP:

Salto Condicional

si se cumple una condicion especifica , el flujo de control se transfiere a una instruccion de destino. existen numerosas instrucciones de salto condicional, segun la condicion y los datos.

Estas son las instrucciones de salto condicionla utilizadas en dtaos firmados utilizados en la aritmetica:

Instruction
Description
Flags tested

JE/JZ

Jump Equal or Jump Zero

ZF

JNE/JNZ

Jump not Equal or Jump Not Zero

ZF

JG/JNLE

Jump Greater or Jump Not Less/Equal

OF, SF, ZF

JGE/JNL

Jump Greater/Equal or Jump Not Less

OF, SF

JL/JNGE

Jump Less or Jump Not Greater/Equal

OF, SF

JLE/JNG

Jump Less/Equal or Jump Not Greater

OF, SF, ZF

Estas son las instruccines de salto condicional utilizadas en datos sin firmar de operaciones logicas:

JE/JZ
Jump Equal or Jump Zero
ZF

JNE/JNZ

Jump not Equal or Jump Not Zero

ZF

JA/JNBE

Jump Above or Jump Not Below/Equal

CF, ZF

JAE/JNB

Jump Above/Equal or Jump Not Below

CF

JB/JNAE

Jump Below or Jump Not Above/Equal

CF

JBE/JNA

Jump Below/Equal or Jump Not Above

AF, CF

Estas instrucciones de salto condicional tienen usos especiales y verifican el valor de las flags:

Instruction
Description
Flags tested

JXCZ

Jump if CX is Zero

none

JC

Jump If Carry

CF

JNC

Jump If No Carry

CF

JO

Jump If Overflow

OF

JNO

Jump If No Overflow

OF

JP/JPE

Jump Parity or Jump Parity Even

PF

JNP/JPO

Jump No Parity or Jump Parity Odd

PF

JS

Jump Sign (negative value)

SF

JNS

Jump No Sign (positive value)

SF

La sintaxis para el conjunto de instrucciones J <condition>

EJEMPLO:

El siguiente programa muestra la mayor de tres variables. Las variables son variables de dos digitos. Las tres num1, num2 y num3 tienen valores 47, 22 y 31:

Última actualización