Unidad 2. Ciclos condicionales.

2.6 Ciclos condicionales

Saltos, ciclos y procedimientos.

Los saltos incondicionales en un programa escrito en lenguaje ensamblador están dados por la instrucción jmp, un salto es alterar el flujo de la ejecución de un programa enviando el control a la dirección indicada.

Un ciclo, conocido también como iteración, es la repetición de un proceso un cierto número de veces hasta que alguna condición se cumpla. En estos ciclos se utilizan los brincos "condicionales" basados en el estado de las banderas. Por ejemplo la instrucción jnz que salta solamente si el resultado de una operación es diferente de cero y la instrucción jz que salta si el resultado de la operación es cero.

Por último tenemos los procedimientos o rutinas, que son una serie de pasos que se usarán repetidamente en el programa y en lugar de escribir todo el conjunto de pasos únicamente se les llama por medio de la instrucción call.

Un procedimiento en ensamblador es aquel que inicie con la palabra Proc y termine con la palabra ret.

Realmente lo que sucede con el uso de la instrucción call es que se guarda en la pila el registro IP y se carga la dirección del procedimiento en el mismo registro, conociendo que IP contiene la localización de la siguiente instrucción que ejecutara la UCP, entonces podemos darnos cuenta que se desvía el flujo del programa hacia la dirección especificada en este registro. Al momento en que se llega a la palabra ret se saca de la pila el valor de IP con lo que se devuelve el control al punto del programa donde se invocó al procedimiento.

Es posible llamar a un procedimiento que se encuentre ubicado en otro segmento, para ésto el contenido de CS (que nos indica que segmento se está utilizando) es empujado también en la pila.


La instrucción JMP

Una instrucción usada comúnmente para la transferencia de control es la instrucción JMP (jump, salto, bifurcación). Un salto es incondicional, ya que la operación transfiere el control bajo cualquier circunstancia. También, JMP vacía el resultado de la instrucción previamente procesada; por lo qe, un programa con muchas operaciones de salto puede perder velocidad de procesamiento.

La instruccion LOOP

La instrucción JMP provoca un ciclo infinito. Pero es mas probable que una rutina realice un ciclo de un numero especifico de veces o hasta que se alcance una condición particular. La instrucción LOOP, que sirve para este propósito, requiere un valor inicial en el registro CX. En cada iteración, LOOP de forma automática disminuye 1 de CX. Si el valor en el CX es cero, el control para a la instrucción que sigue; si el valor en el CX no es cero, el control pasa a la dirección del operando. La distancia debe ser una salto corto, desde -128 hasta +127 bytes. Para una operación que exceda este limite, el ensamblador envia un mensaje como "salto relativo fuera de rango".

La instruccion CMP

La instruccion CMP por lo comun es utilizada para comparar dos campos de datos, uno o ambos de los cuales estan contenidos en un registro.

Comentarios

Publicar un comentario

Entradas más populares de este blog

Macros y procedimientos de EMU8086.INC

1.7 Compiladores, proceso de ensamblado y ligado

Simuladores de Lenguaje Ensamblador Online.