Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción.................................................................................................. 3
Desarrollo ..................................................................................................... 4
Ejemplo...................................................................................................... 7
Conclusión.................................................................................................... 9
Bibliografía ................................................................................................. 10
Tabla de Ilustraciones
Los ciclos o bucles permiten ejecutar repetidas veces una instrucción o un bloque de
ellas; deben estar construidos de manera tal que se pueda tener control de la cantidad
de repeticiones a realizar, de lo contrario se generaría un ciclo de ejecución infinita que
podría desencadenar un desborde de memoria y en consecuencia un fallo de la
aplicación, o un bloqueo de la misma porque el flujo de ejecución quedaría estancado
en el ciclo, sobrecargando de tareas al procesador de la máquina que ejecuta el
programa.
3
Desarrollo
Marco Teórico
De manera predeterminada, la CPU carga y ejecuta los programas en forma
secuencial. Pero la instrucción actual podría ser condicional, lo cual significa que
transfiere el control a una nueva ubicación en el programa, con base en los valores de
las banderas de estado de la CPU (Cero, Signo, Acarreo, etc.). Los programas en
lenguaje ensamblador utilizan instrucciones condicionales para implementar
instrucciones de alto nivel, tales como las instrucciones IF y los ciclos.
Instrucción LOOP
Esta instrucción tiene el propósito de permitir que una rutina realice un ciclo un número
específico de veces o hasta que se alcance una condición particular. La instrucción
LOOP 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 CX es de cero, el control pasa a la
instrucción que sigue; si el valor en el CX no es de cero, el control pasa a la dirección
del operando. La distancia debe ser un salto corto, desde -128 hasta +127 bytes. Para
4
una operación que exceda este límite, el ensamblador envía un mensaje como “salto
relativo fuera de rango”. (Peter Abel, 1966).
LOOP destino
mov ax,0
mov ecx,5
L1:
inc ax
loop L1
5
Instrucciones LOOPZ y LOOPE
La instrucción LOOPZ (salta si es cero) permite que un ciclo continúe mientras esté
activa la bandera Cero y el valor sin signo de CX sea mayor que cero. La etiqueta de
destino debe estar a una distancia entre -128 y +127 bytes de la ubicación de la
siguiente instrucción. La sintaxis es:
LOOPZ destino
CX = CX – 1
LOOPNZ destino
CX = ECX – 1
6
Ejemplo
El siguiente es un ejemplo simple en donde se utiliza la instrucción LOOP:
7
Si ejecutamos nuestro código paso a paso, al momento que realiza el primer ciclo, es
decir, la primera impresión del mensaje en pantalla, podemos observar que el valor del
registro CX efectivamente decremento en 1, pues era de 5 originalmente y ahora es 4.
Ahora, si seguimos con nuestra ejecución paso a paso y llegamos a la parte en la que
se imprime por segunda vez el mensaje en pantalla y revisamos nuestros registros,
veremos que el de CX ha decrementado una vez más, en este caso ahora llegando al
valor de 3, que sería el valor anterior de 4 menos 1.
8
Si repetimos el proceso hasta que el programa de emu8086 nos diga que ha terminado
la ejecución, podremos comprobar que efectivamente la cadena que declaramos se
imprimió un total de 5 veces que fueron las que nosotros dijimos. Ahora, si volvemos
a comprobar nuestros registros podremos ver que el de CX terminó llegando a 0, pues
después de repetir el ciclo LOOP 5 veces, el número 5 fue disminuido en 1 esa misma
cantidad de veces, llegando al 0, por lo que finalmente la condición para que el ciclo
LOOP se repitiera ya no se cumplía.
Conclusión
Creo que toda persona que haya usado cualquier lenguaje de programación se ha
dado cuenta que los ciclos o bucles son una herramienta muy útil, que una vez que
sabemos su funcionamientos queremos usarlo en todos los programas.
9
Bibliografía
Peter Abel, (1966). Lenguaje Ensamblador y programación para PC IBM y
Compatibles, 3ª. Edición, Pearson Prentice Hall.
Kip R. Irvine, (2008). Lenguaje ensamblador para computadoras basadas en Intel,
Pearson Prentice Hall, 5ª edición.
Badwin Arévalo Vera. (2017). Ciclos o Bucles - Nociones de programación.
Obtenido de: https://www.bdwtown.com/blog/ciclos-o-bucles-nociones-de-
programacion_11.html
Wikipedia. La enciclopedia libre. (2019). Bucle (programación). Obtenido de:
https://es.wikipedia.org/wiki/Bucle_(programación)
10