You are on page 1of 3

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. Eisten instrucciones para !ste propsito. "on las instrucciones de saltos
incondicionales # condicionales, que saltan a un determinado punto si se cumpla la condicin.
Saltos incondicionales.
Empecemos por el salto sin condiciones, con el que podremos cambiar el control a cualquier
punto del programa.
"er$a como el %&oto' del (asic, simplemente transferir el control a otro punto del programa. )a
orden es
*+P (de *ump, salto)
"i record is a ,estas alturas los registros -". /P, se podr0 ver que, es lo que hace realmente la
instruccin, # no es mas que incrementar o decremento /P para llegar a la 1ona del programa a
la que queremos transferir el control (/P es el 2ffset que indica la 1ona de memoria que
contiene la siguiente instruccin a ejecutar, # -" el segmento)
El formato mas sencillo para el salto ser$a *+P 34565h, lo que saltar$a a esa 1ona.
Pero es digamos que %algo pesado' calcular en que, direccin va a estar esa instruccin, con lo
que utili1aremos etiquetas.
)a nica instruccin que eiste para !ste fin es *+P (Abreviatura de *7+P, que significa en
ingl!s "A)8A9). )a sintais es la siguiente.
*+P ::::::::. Es la ubicacin de la instruccin en donde se continuar0 el programa (A
partir de !sta se ejecutan las siguientes).
Ejemplo.
::::. 3;33 +2< A:, ;333
::::. 3;34 *+P 3;3=
::::. 3;3> :29 A:, A:
::::. 3;3= /?8 63
En !ste caso al ejecutarse la instruccin de salto incondicional (*+P), se contina la ejecucin
a partir de la instruccin (/?8 63h), no ejecut0ndose la instruccin :29 (@sta instruccin reali1a
la operacin :29 de el operando 6 sobre el operando ;) que provocar$a el borrado de registro
A: (Aue provocar$a que A: tome el valor 3), si se ejecuta.
Es decir, se ejecutan las siguientes instrucciones.
+2< A:, ;333
*+P 3;3=
/?8 63
?o se ejecuta B:29 A:, A:B por el salto incondicional.
El operando puede ser una direccin constante (Por ejemplo 3;3=), un salto a nivel de offset,
tambi!n puede ser un salto largo (Aue cambie los valores de los registros -" e /P), (Por
ejemplo CCCC. 3333, que salta al 92+ (/2").
8ambi!n puede ser el valor de un registro, por ejemplo.
*+P D/
En !ste caso salta a la instruccin apuntada por D/.
8ambi!n puede ser un valor apuntado por un registro puntero, por ejemplo.
*+P E"/F
1
JORGE DAVID YAEZ GONZALEZ.
ZULMA MARIELA GONZALEZ RAMOS.
En !ste caso salta a la instruccin apuntada por el valor apuntado por "/.
El operando puede ser cualquier direccionamiento v0lido (Puede ser cualquiera de los
direccionamientos utili1ados en el operando origen de la instruccin +2<, eplicados
anteriormente).
Saltos Condicionales.
9ecord is aquel /CG8HE?GE)"E, o el C29, o el IH/)EGD2.
(ien, pues aqu$ esta lo que suple a estas instrucciones en lenguaje ensamblador. "e basan
completamente en los flags, pero est0n simplificados de tal manera que no har0n falta saberlos
de memoria para poder hacerlos.
)os saltos podr$an resumirse en un modo %(asic' de la manera /CG8HE?G&282 de tal manera
que cuando se cumple una condicin se salta a un sitio determinado.
"on similares a *+P en la sintais, pero la diferencia es el nombre.
)as instrucciones son las siguientes.
*E o *J. "alta si est0 prendido el bit cero del registro de banderas.
2bjetivo. "altar si la ltima comparacin reali1ada da igual.
*A o *?(E. "alta si el bit carr# (-C) o el bit cero (JC) del registro de banderas est0
desactivado.
2bjetivo. "altar si la ltima comparacin reali1ada con nmeros naturales da ma#or.
*( o *?AE. "alta si -C est0 activada.
2bjetivo. "altar si la ltima comparacin reali1ada con nmeros naturales da menor.
*& o *?)E. "alta si JC es cero o si 2C # "C son iguales.
2bjetivo. "altar si la ltima comparacin reali1ada con nmeros enteros da ma#or.
*) o *?&E. "altar si "C es diferente a 2C
2bjetivo. "altar si la ltima comparacin reali1ada con nmeros enteros da menor.
*-. "altar si -C est0 prendida
2bjetivo. "altar si ha# acarreo
*2. "altar si 2C est0 prendido
2bjetivo. "altar si ha# desbordamiento
*P. "altar si PC est0 prendido
2bjetivo. "altar si ha# paridad
*". "altar si "C est0 prendido
2bjetivo. "altar si es negativo
*?E o *?J. -omportamiento inverso a *E o *J
*?A o *(E. -omportamiento inverso a *A o *?(E
*?( o *AE. -omportamiento inverso a *( o *?AE
*?& o *)E. -omportamiento inverso a *& o *?)E
*?) o *&E. -omportamiento inverso a *) o *?&E
*?-. -omportamiento inverso a *-
*?2. -omportamiento inverso a *2
*?P o *P2. -omportamiento inverso a *P
*?". -omportamiento inverso a *"
Ha# otras instrucciones que hacen saltos condicionales, pero que no necesitan la instruccin
-+P, son las siguientes.
*-:J. "alta si el registro -: es cero.
)22P. Decremento -:, rest0ndole ; # salta si -: es distinto de cero.
2bjetivo. Hacer un bucle, utili1ando como contador -:
)22PE. Decremento -: en ; # salta si -: es distinto de cero # JC est0 prendido.
2bjetivo. Hacer un bucle, utili1ando como contador -: # terminar si el contador llega a cero, o
se apaga el bit cero.
)22P?E. Decremento -: en ; # salta si JC est0 prendido
2bjetivo. Hacer un bucle que siga funcionando hasta que se apague el bit -ero.
)a sintais de !stas instrucciones son similares a la instruccin *+P, lo nico que cambia es el
nombre.
Saltos lejanos y cortos.
2
JORGE DAVID YAEZ GONZALEZ.
ZULMA MARIELA GONZALEZ RAMOS.
Ahora algo sobre los saltos lejanos, cercanos # cortos. El salto corto se reali1a entre el punto
en el que se esta # K;6= o L;6M, o sea que la cantidad que se puede contener en un b#te con
signo. A veces es necesario indicar que se trata de salto corto, cercano o lejano.
El salto cercano se reali1a contando como distancia el contenido de dos b#tes, o que el rango
ser$a desde 46=N= a L46=NM b#tes de distancia.
O el lejano se reali1a contando como distancia el contenido de cuatro b#tes, #,P paso de
calcular la distancia.
Por ejemplo. es incorrecto que ha#a en la direccin ;33h una instruccin que diga *+P
"H298 >33h, #a que la distancia no corresponde a un salto cort. Adem0s el salto
dependiendo de que sea cercano, corto o largo se codifica de manera diferente en modo
headecimal.
3
JORGE DAVID YAEZ GONZALEZ.
ZULMA MARIELA GONZALEZ RAMOS.

You might also like