Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Centro Universitario de Ciencias Exactas e Ingenierías Ingeniería en computación Traductores de lenguajes 1 Sección D05 José Luis Serna Serna Código: 218292327 Actividad 9, 2020A, IF, IF ELSE, DO WHILE Y CASE 19/Mar/2020 Objetivo. implementar un programa que implemente en ensamblador estructuras de control como IF, IF ELSE, DO WHILE Y CASE, y además usar su construcción de diagrama de flujo. IF. Diagrama de flujo. Código fuente. org 100 jmp start: start: mov ax,08h ;le asigno un valor de 8 a ax cmp ax,07h ;compara lo de ax con 7 ja if ;si es mayor le suma 2 si no fin de programa if:; si se cumple la condicion suma 2 add ax,02h jmp end ; fin del programa end: ;fin del programa mov ah,0 int 16h ret Capturas de pantalla de la ejecución. Realiza la comparación si lo que tiene ax es mayor que 7 Se cumple la condición así que salta al if y se realiza lo que tiene especificado. IF ELSE. Diagrama de flujo. Código fuente. org 100 jmp start: start: mov ax,02h ;le asigno un valor de entrada ax=2 cmp ax,04h ;compara lo de ax con 4 ja if ;si ax es mayor que 4, le suma 6 jb else ;si no es mayor que 4, le suma 8 if:;se cumple la condicion suma 6 add ax,06h ;resultado = 8 jmp end ; fin del programa else:;si no se cumple suma 8 add ax,08h ;resultado = 10 jmp end end:;fin mov ah,0 int 16h ret Captura de pantalla de la ejecución. No se cumple la condición para el IF. Se cumple la condición para ELSE, salta y realiza esa suma. DO WHILE. Diagrama de flujo. Código fuente. org 100 jmp start: start: mov ax,00h ;valor de entrada de a DoWhile: add ax,01h ;suma antes de comparar cmp ax,0Fh ;comparar que ax no sea igual a 15 jb doWhile ;salto si ax es menor jmp end end:;fin mov ah,0 int 16h ret Captura de pantalla de la ejecución. Le suma el primer 1 y realiza la primera comparación, como ax es menor que el numero comparado se regresa con el salto y se sigue repitiendo. Se repite 15 veces hasta que la ya no se cumple la condición y se sale de ese ciclo, salta al final del programa. WHILE. Diagrama de flujo. Código fuente. org 100 jmp start: start: mov ax,00h ;se le asigna valor a ax While: cmp ax,0Ah ;repetir hasta que no sea menor que 10 jb sumadewhile ;salto si ax es menor jmp end sumadewhile: add ax,01h jmp While end:;fin mov ah,0 int 16h ret Capturas de pantalla de la ejecución. Como se cumple la condición de que ax es menor al número comparado, realiza el salto a la operación de suma y se sigue repitiendo el ciclo WHILE. Cuando ax llega al valor de la condición esta ya no se cumple y sale y salta al final del programa. CASE. Diagrama de flujo. Código fuente. org 100h jmp start: start: mov ax, 05h ;asigno un valor a ax cmp ax, 01h ;compara ax con 1 je case1 ;si es igual brinca a case1 cmp ax, 03h ;compara ax con 3 je case2 ;si es igual brinca a case2 cmp ax, 05h ;compara ax con 5 je case3 ;si es igual brinca a case3 sub ax, 04h ;si no es igual a ninguna jmp end ;se realiza esta operacion por ;default case1: ;caso 1 add ax, 06h ;operacion jmp end ;salto a fin del programa case2: ;caso 2 add ax, 03h ;operacion jmp end ; salto al fin del programa case3: ;caso 2 add ax, 05h ;operacion jmp end ;salto al fin del programa end: ;fin del programa mov ah, 0h int 16h ret Capturas de pantalla de la ejecución. No se cumple la comparación por eso no realiza el salto al case1. La misma situación para el case2. Ahora si se cumple la comparación de ax con 5 y salta al case3 y realiza la operación indicada. Realiza la operación y brinca al fin del programa, es como un break. Conclusiones. En esta actividad pude ver como es que funcionan por dentro a más bajo nivel las estructuras de control IF, IF ELSE, DO WHILE Y CASE, estructuras que utilizamos muy a menudo en lenguajes de programación de medio y alto nivel, vi que por medio de saltos y operaciones con registros es cómo funcionan, además con el estudio de sus diagramas de flujo me queda mas claro su funcionamiento.
Compartir