Sie sind auf Seite 1von 9

NOMBRE:

JORGE DAVID YAEZ GONZALEZ. ZULMA MARIELA GONZALEZ RAMOS.

CATEDRATICO:
ING. OMAR VEGA ARRIAGA.

MATERIA: CARRERA:

SOFTWARE DE SISTEMAS.

LIC. EN INFORMATICA.

TURNO NOCTURNO.

FECHA:

13/ABRIL/2008.

1 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.

INSTRUCCIONES DE SALTO.

Saltos incondicionales y condicionales. A veces un programa debe cambiar el flujo del programa en forma incondicional o bajo una condicin (Para tomar una decisin), por lo tanto debe haber instrucciones que permitan cambiar el flujo de un programa sin ningn requisito, o en caso de que una condicin se cumpla. Existen instrucciones para ste propsito. Son las instrucciones de saltos incondicionales y condicionales, que saltan a un determinado punto si se cumpla la condicin.

2 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.

Saltos incondicionales. Empecemos por el salto sin condiciones, con el que podremos cambiar el control a cualquier punto del programa. Sera como el Goto del Basic, simplemente transferir el control a otro punto del programa. La orden es JMP (de Jump, salto) Si record is a estas alturas los registros CS: IP, se podr ver que es lo que hace realmente la instruccin, y no es mas que incrementar o decremento IP para llegar a la zona del programa a la que queremos transferir el control (IP es el Offset que indica la zona de memoria que contiene la siguiente instruccin a ejecutar, y CS el segmento) El formato mas sencillo para el salto sera JMP 03424h, lo que saltara a esa zona. Pero es digamos que algo pesado calcular en que direccin va a estar esa instruccin, con lo que utilizaremos etiquetas.

La nica instruccin que existe para ste fin es JMP (Abreviatura de JUMP, que significa en ingls SALTAR). La sintaxis es la siguiente:

3 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.

JMP XXXXXXXX: Es la ubicacin de la instruccin en donde se continuar el programa (A partir de sta se ejecutan las siguientes). Ejemplo: XXXX: 0100 MOV AX, 1000 XXXX: 0103 JMP 0107 XXXX: 0105 XOR AX, AX XXXX: 0107 INT 20 En ste caso al ejecutarse la instruccin de salto incondicional (JMP), se contina la ejecucin a partir de la instruccin (INT 20h), no ejecutndose la instruccin XOR (sta instruccin realiza la operacin XOR de el operando 2 sobre el operando 1) que provocara el borrado de registro AX (Que provocara que AX tome el valor 0), si se ejecuta. Es decir, se ejecutan las siguientes instrucciones: MOV AX, 1000 JMP 0107 INT 20 No se ejecuta "XOR AX, AX" por el salto incondicional. El operando puede ser una direccin constante (Por ejemplo 0107), un salto a nivel de offset, tambin puede ser un salto largo (Que cambie los valores de los registros CS e IP), (Por ejemplo FFFF: 0000, que salta al ROM BIOS).

4 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.

Tambin puede ser el valor de un registro, por ejemplo: JMP DI En ste caso salta a la instruccin apuntada por DI. Tambin puede ser un valor apuntado por un registro puntero, por ejemplo: JMP [SI] En ste caso salta a la instruccin apuntada por el valor apuntado por SI. El operando puede ser cualquier direccionamiento vlido (Puede ser cualquiera de los direccionamientos utilizados en el operando origen de la instruccin MOV, explicados anteriormente).

5 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.

Saltos Condicionales. Record is aquel IF-THEN-ELSE, o el FOR, o el WHILEDO. Bien, pues aqu esta lo que suple a estas instrucciones en lenguaje ensamblador. Se basan completamente en los flags, pero estn simplificados de tal manera que no harn falta saberlos de memoria para poder hacerlos. Los saltos podran resumirse en un modo Basic de la manera IF-THEN-GOTO de tal manera que cuando se cumple una condicin se salta a un sitio determinado. Son similares a JMP en la sintaxis, pero la diferencia es el nombre. Las instrucciones son las siguientes: JE o JZ: Salta si est prendido el bit cero del registro de banderas. Objetivo: Saltar si la ltima comparacin realizada da igual. JA o JNBE: Salta si el bit carry (CF) o el bit cero (ZF) del registro de banderas est desactivado. Objetivo: Saltar si la ltima comparacin realizada con nmeros naturales da mayor. JB o JNAE: Salta si CF est activada. Objetivo: Saltar si la ltima comparacin realizada con nmeros naturales da menor. JG o JNLE: Salta si ZF es cero o si OF y SF son iguales.

6 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.

Objetivo: Saltar si la ltima comparacin realizada con nmeros enteros da mayor. JL o JNGE: Saltar si SF es diferente a OF Objetivo: Saltar si la ltima comparacin realizada con nmeros enteros da menor. JC: Saltar si CF est prendida Objetivo: Saltar si hay acarreo JO: Saltar si OF est prendido Objetivo: Saltar si hay desbordamiento JP: Saltar si PF est prendido Objetivo: Saltar si hay paridad JS: Saltar si SF est prendido Objetivo: Saltar si es negativo JNE o JNZ: Comportamiento inverso a JE o JZ JNA o JBE: Comportamiento inverso a JA o JNBE JNB o JAE: Comportamiento inverso a JB o JNAE JNG o JLE: Comportamiento inverso a JG o JNLE JNL o JGE: Comportamiento inverso a JL o JNGE JNC: Comportamiento inverso a JC JNO: Comportamiento inverso a JO JNP o JPO: Comportamiento inverso a JP JNS: Comportamiento inverso a JS Hay otras instrucciones que hacen saltos condicionales, pero que no necesitan la instruccin CMP, son las siguientes:
7 JORGE DAVID YAEZ GONZALEZ.
ZULMA MARIELA GONZALEZ RAMOS.

JCXZ: Salta si el registro CX es cero. LOOP: Decremento CX, restndole 1 y salta si CX es distinto de cero. Objetivo: Hacer un bucle, utilizando como contador CX LOOPE: Decremento CX en 1 y salta si CX es distinto de cero y ZF est prendido. Objetivo: Hacer un bucle, utilizando como contador CX y terminar si el contador llega a cero, o se apaga el bit cero. LOOPNE: Decremento CX en 1 y salta si ZF est prendido Objetivo: Hacer un bucle que siga funcionando hasta que se apague el bit Cero. La sintaxis de stas instrucciones son similares a la instruccin JMP, lo nico que cambia es el nombre.

8 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.

Saltos lejanos y cortos. Ahora algo sobre los saltos lejanos, cercanos y cortos. El salto corto se realiza entre el punto en el que se esta y +127 o 128, o sea que la cantidad que se puede contener en un byte con signo. A veces es necesario indicar que se trata de salto corto, cercano o lejano. El salto cercano se realiza contando como distancia el contenido de dos bytes, o que el rango sera desde 32767 a 32768 bytes de distancia. Y el lejano se realiza contando como distancia el contenido de cuatro bytes, y, paso de calcular la distancia. Por ejemplo: es incorrecto que haya en la direccin 100h una instruccin que diga JMP SHORT 500h, ya que la distancia no corresponde a un salto cort. Adems el salto dependiendo de que sea cercano, corto o largo se codifica de manera diferente en modo hexadecimal.

9 JORGE DAVID YAEZ GONZALEZ.

ZULMA MARIELA GONZALEZ RAMOS.