TECNOLÓGICO NACIONAL DE MÉXICO “CAMPUS HERMOSILLO” INGENIERÍA EN SISTEMAS COMPUTACIONALES actividad #7 S6A Leguajes de interfaz PROF: Martin Anduaga ALUMNOS: SANCHEZ QUINTERO IRVING ALEXIS Introduccion: Para esta actividad se requiere crear un programa en ensamblador que realice las funciones de una calculadora básica con las operaciones de SUMA, RESTA, DIVISIÓN, MULTIPLICACIÓN. Debe mostrar un menú de opciones para que el usuario seleccione que acción u operación quiere realizar. Al seleccionar una operación del menú, este puede eliminarse y pedir los datos necesarios al usuario, se muestre según la operación el mensaje "el resultado de la SUMA de ## + ## es ##" y finalmente un mensaje "presione cualquier tecla para continua" posterior a esto debe mostrarse el menú, cabe mencionar que en el menú se debe mostrar la opción para Salir del programa. Desarrollo: Para este programa utilice los recursos en los libros de las plataforma y varios video tutoriales para poder implementar los saltos de y validaciones se tomaron en uso algunas funciones de ensamblador como “cmp” que nos permite comparar las dos variables, en este caso lo utilizo como operador lógico, “je” este operador salta si es igual o salta si es cero. Y da salida o regresar al ciclo de instrucción y por ultimo “jne” que salta si no es igual este método me fue útil para simular unos if anidados o compuertas or y asi poder hacer funcional el menú de opciones. se sigue el procedimiento estándar para compilar el archivo asm desde el cmd con el comando ml + archivo.asm. desde su carpeta de ensamblador en este caso masm614. Como en las prácticas anteriores se ejecuta dosbox para abrir el archivo ejecutable generado desde el cmd Código: .model small .586 .stack 100h ;impresora imprimir macro msg lea dx , msg mov ah,9 int 21h endm .data n1 db ? n2 db ? opcion db ? resultado db ? msg_menu db 10,13,10,13, "tarea 7",13,10 db "---------------------------------", 13,10 db "1.PARA REALIZAR UNA SUMA",13,10 db "2.PARA REALIZAR UNA RESTA",13,10 db "3.PARA REALIZAR UNA MULTIPLIACION",13,10 db "4.PARA REALIZAR UNA DIVISION",13,10 db "5.PARA SALIR DEL PROGRAMA",13,10 db "---------------------------------$",13,10 msg_opciones db 10,13, "PULSA UNA OPCION: $" msg1 db 10,13, "INGRESE EL PRIMER NUMERO: $" msg2 db 10,13, "INGRESE EL SEGUNDO NUMERO: $" msg3 db 10,13,"PRESIONE LA TECLA E PARA SALIR: $" msg_suma db 10,13, "EL RESULTADO DE LA SUMA ES: $" msg_rest db 10,13, "EL RESULTADO DE LA RESTA ES: $" msg_mult db 10,13, "EL RESULTADO DE LA MULTIPLIACION ES: $" msg_div db 10,13, "EL RESULTADO DE LA DIVISION ES: $" .code .startup mov ax, @data mov ds,ax MENU: imprimir msg_menu imprimir msg_opciones mov ah,1 int 21h sub al,30h mov opcion,al cmp opcion,5 ;compara je SALIR ;Salta si es igual o salta si es cero. jne leer_num ;salta si no es igual leer_num: imprimir msg1 mov ah,1 int 21h sub al,30h mov n1,al imprimir msg2 mov ah,1 int 21h sub al, 30h mov n2,al cmp opcion, 1 jne OPCION_2 call SUMA OPCION_2: cmp opcion, 2 jne OPCION_3 call RESTA OPCION_3: cmp opcion, 3 jne OPCION_4 call MULTIPLIACION OPCION_4: cmp opcion, 4 call DIVISION SUMA proc near mov al, n1 add al, n2 mov resultado, al mov ah, 09h LEA dx, msg_suma int 21h mov al, resultado aam mov bx, ax mov ah, 02h mov dl, bh add dl, 30h int 21h mov ah, 02h mov dl, bl add dl, 30h int 21h jmp MENU SUMA endp RESTA proc near mov bl, n1 mov bh, n2 sub bl, '0' sub bh, '0' sub bh, bl add bh, '0' imprimir msg_rest mov al,bh int 29h jmp MENU RESTA endp MULTIPLIACION proc near mul n1 mov resultado, al aam add ah,30h add al,30h mov bx,ax imprimir msg_mult mov ah,2 mov dl,bh int 21h mov ah,2 mov dl,bl int 21h jmp MENU MULTIPLIACION endp DIVISION proc near xor ax,ax mov bl, n1 mov al, n2 div bl mov resultado, al mov al, resultado aam mov bx, ax imprimir msg_div mov ah, 02h mov dl, bh add dl, 30h int 21h mov ah, 02h mov dl, bl add dl, 30h int 21h jmp MENU DIVISION endp SALIR: mov ah, 4ch int 21h .exit end Conclusión: Esta actividad enseño lo complejo que puede ser un programa de ensamblador y de la utilidad de sus métodos agregados que aunque muy similares cada una tiene sus funciones importantes o especificas .