.model small
.stack 100h
.data
msg1 db 10,13,"1.- suma",0DH,0AH,"$"
msg2 db "2.- resta",0DH,0AH,"$"
msg3 db "3.- multiplicacion",0DH,0AH,"$"
msg4 db "4.- division",0DH,0AH,"$"
msg5 db "5.- salir del menu",0DH,0AH,"$"
msg7 db "seleccione una opcion del 1 al 6 en el menu ",0DH,0AH,"$"
msj1 db "Ingrese el primer numero", 0DH, 0AH, "$"
msj2 db "Ingrese el segundo numero", 0DH, 0AH, "$"
msj3 db "Resultado", 0DH, 0AH, "$"
num1 db ?
num2 db ?
resultado db ?
msjjj1 db "Digite el primer numero : ", 0DH, 0AH,"$"
msjjj2 db "Dgite el segundo numero : ", 0DH, 0AH,"$"
fina db "Resultado es:", 0DH, 0AH,"$"
num11 db ?
num22 db ?
resa db ?
saltos db "", 0DH, 0AH,"$"
msgg1 db "Ingresa el primer numero: ", 0DH, 0AH, "$"
msgg2 db "Ingresa el segundo numero: ", 0DH, 0AH, "$"
msgg3 db "La suma de los numeros es: $"
msjj1 db 10, 13, "Ingresa el primer numero: $"
msjj2 db 10, 13, "Ingresa el segundo numero: $"
msjj3 db 10, 13, "El resultado es: $"
msjj4 db 10, 13, "", "$"
newline db 0DH, 0AH, "$"
spa db "", 0DH, 0AH, "$"
bienvenida db 10,13,"ingrese la suma",0DH,0AH,"$"
nombre db 10,13,"ingrese la resta",0DH,0AH,"$"
comida db 10,13,"ingrese la multiplicacion",0DH,0AH,"$"
pelicula db 10,13,"ingrese la division",0DH,0AH,"$"
final db 10,13,"---PROGRAMA FINALIZADO---"
angel db 10,13,"Angel Yovani Cancino Ruiz, 21700162",0DH,0AH,"$"
delmar db 10,13,"Delmar Eli Martinez Martinez, 21700207",0DH,0AH,"$"
luis db 10,13,"Luis Miguel Marroquin Simon, 21700206",0DH,0AH,"$"
.code
programa:
mov ax, @data
mov ds, ax
jmp mostrarmenu
mostrarmenu:
mov dx, offset msg1
call imprimir
mov dx, offset msg2
call imprimir
mov dx, offset msg3
call imprimir
mov dx, offset msg4
call imprimir
mov dx, offset msg5
call imprimir
mov dx, offset msg7
call imprimir
mov ah,01h
int 21h
mov dl,al
cmp dl,31h
je opcion1
cmp dl,32h
je opcion2
cmp dl,33h
je opcion3
cmp dl,34h
je opcion4
cmp dl,35h
je opcion5
jnp mostrarmenu
opcion1:
mov dx, offset bienvenida
call imprimir
; Solicitar primer número
mov dx, offset msgg1
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numérico
mov bl, al ; Guardar el primer numero
; Solicitar segundo número
mov dx, offset msgg2
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numérico
add bl, al ; Sumar el segundo número al primero (bl)
; Mostrar la suma
mov dx, offset msgg3
call imprimir
mov dl, bl ; El resultado esta en bl
add dl, 30h ; Convertir de valor numérico a ASCII
mov ah, 02h
int 21h
mov dx, offset newline
call imprimir
jmp mostrarmenu
; Finalizar el programa
mov ax, 4c00h
int 21h
opcion2:
mov dx, offset nombre
call imprimir
; Solicitar primer numero
mov dx, offset msjj1
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numerico
mov bl, al ; Guardar el primer numero
;Salto de linea
mov dx, offset msjj4
call imprimir
; Solicitar segundo numero
mov dx, offset msjj2
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numerico
sub bl, al ; Sumar el segundo numero al primero (bl)
; Mostrar la resta
mov dx, offset msjj4
call imprimir
mov dx, offset msjj3
call imprimir
mov dl, bl ; El resultado esta en bl
add dl, 30h ; Convertir de valor numerico a ASCII
mov ah, 02h
int 21h
mov dx, offset newline
call imprimir
jmp mostrarmenu
opcion3:
mov dx, offset saltos
call imprimir
mov dx, offset msjjj1
call imprimir
mov ah, 1h
int 21h
sub al, 30h
mov num11, al
mov dx, offset saltos
call imprimir
mov dx, offset msjjj2
call imprimir
mov ah, 01h
int 21h
sub al, 30h
mov num22, al
mov al, num11
mov bl, num22
mul bl
mov resa, al
add resa, 30h
mov dx, offset saltos
call imprimir
mov dx, offset fina
call imprimir
mov dl,resa
mov ah, 2h
mov dl, resa
int 21h
jmp mostrarmenu
opcion4:
mov dx, offset pelicula
call imprimir
mov dx, offset msj1
call imprimir
mov ah, 01h
int 21h
sub al, 30h
mov num1, al
mov dx, offset spa
call imprimir
mov dx, offset msj2
call imprimir
mov ah, 01h
int 21h
sub al, 30h
mov num2, al
mov al, num1
mov bl, num2
xor ah, ah
div bl
mov resultado, al
add resultado, 30h
mov dx, offset spa
call imprimir
mov dx, offset msj3
call imprimir
mov dl, resultado
mov ah, 2h
int 21h
jmp mostrarmenu
opcion5:
mov dx, offset angel
call imprimir
mov dx, offset delmar
call imprimir
mov dx, offset luis
call imprimir
call finalizar
imprimir:
mov ah, 09h
int 21h
ret
finalizar:
mov ax, 4ch
int 21h
end programa
No hay comentarios:
Publicar un comentario