Subido por Irving Alexis Sanchez Quintero

Calculadora en ensamblador

Anuncio
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 .
Descargar