Codigo
.model small
.stack 100h
.data
dat db ?
salto db "",0DH,0AH, "$"
msg1 db "PRECIONE LA ACCION A REALIZAR 1-4:", 0DH, 0AH,"$"
msg2 db "[1]-SUMA", 0DH, 0AH,"$"
msg3 db "[2]-RESTA", 0DH, 0AH,"$"
msg4 db "[3]-MULTIPLICACION", 0DH, 0AH,"$"
msg5 db "[4]-DIVISION", 0DH, 0AH,"$"
msg6 db "[5]-SALIR", 0DH, 0AH,"$"
msg7 db "----------------------------------------------", 0DH, 0AH,"$"
;------------------------------------------------------MENSAJES DE ACCION
m1 db "ingrese el primer numero:", 0DH, 0AH,"$"
m2 db "ingrese el segundo numero:", 0DH, 0AH,"$"
m3 db "el resultado es:", 0DH, 0AH,"$"
num1 db ?
num2 db ?
num db ?
m4 db "el residuo es:", 0DH, 0AH,"$"
m5 db "el cociente es:", 0DH, 0AH,"$"
.code
programa:
mov ax,@data
mov ds,ax
jmp MENU
MENU:
;_MUESTRA DE MENU
mov dx,offset msg7
call imprimir
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 msg6
call imprimir
mov dx,offset msg7
call imprimir
;_________________________
mov ah,1h;1h recolecta datos
int 21h
mov bl,al;mueve lo de al a bl
sub bl,30h ;se le resta 30h al registro de bl
mov dx, offset salto ; offset sirve para llamar algo alojado en data
call imprimir
;__RECOLECCION DE DATOS
cmp bl,1
je op1
cmp bl,2
je op2
cmp bl,3
je op3
cmp bl,4
je op4
cmp bl,5
je op5
;---------------------------------------------------BLOQUES DE ACCION
op1:;------------------------------------SUMA
mov dx, offset m1 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov bl,al;mueve lo de al a bl
sub bl,30h ;se le resta 30h al registro de bl
mov dx, offset salto ; offset sirve para llamar algo alojado en data
call imprimir
mov dx, offset m2 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov num,al ;muevelo de al a num
sub num,30h ;se le resta 30h al registro de num
mov dx, offset salto
call imprimir
add num,bl ;suma de num y bl
add num,30h; a num se le suma 30h para volverlo su forma hexadecimal
mov dx, offset m3 ;imprime el mensaje
call imprimir
mov ah,2h;2h muestra datos
mov dl,num
int 21h
mov dx, offset salto
call imprimir
jmp MENU
;-------------------------------------------------------
;opcion 2
op2:;-------------------------------------------------RESTA
mov dx, offset m1 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov bl,al;mueve lo de al a bl
sub bl,30h ;se le resta 30h al registro de bl
mov dx, offset salto ; offset sirve para llamar algo alojado en data
call imprimir
mov dx, offset m2 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov num,al ;muevelo de al a num
sub num,30h ;se le resta 30h al registro de num
mov dx, offset salto
call imprimir
sub num,bl ;suma de num y bl
add num,30h; a num se le suma 30h para volverlo su forma hexadecimal
mov dx, offset m3 ;imprime el mensaje
call imprimir
mov ah,2h;2h muestra datos
mov dl,num
int 21h
mov dx, offset salto
call imprimir
jmp MENU
;_-----------------------------------------------------------
;opcion 3
op3:;------------------------------------------------------------------------multiplicacion
mov dx, offset m1 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov num1,al ; se le asigna el valor
sub num1,30h; se resta 30h
mov dx, offset salto ; offset sirve para llamar algo alojado en data
call imprimir
mov dx, offset m2 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov num2,al
sub num2,30h; se resta 30h
mov dx, offset salto
call imprimir
mov al,num1
mov bl,num2
mul bl
mov bh,al
add bh,30h ; se suma 30h
mov dx, offset m3 ;imprime el mensaje
call imprimir
mov ah,2h;2h muestra datos
mov dl,bh
int 21h
call finalizar
jmp MENU
;----------------------------------------------
op4: ;------------------------------------division
mov dx, offset m1 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov cl,al;mueve lo de al a cl
sub cl,30h ;se le resta 30h al registro de cl
mov ax,0
;----------------------------------------------------
mov dx, offset salto ; offset sirve para llamar algo alojado en data
call imprimir
;PETICION DEL SEGUNDO NUMERO
;---------------------------------------------------------------------
mov dx, offset m2 ;imprime el mensaje
call imprimir
mov ah,1h;1h recolecta datos
int 21h
mov ch,al ;muevelo de al a num
sub ch,30h ;se le resta 30h al registro de num
mov ax,0
;---------------------------------------------------------------------
mov dx, offset salto ; offset sirve para llamar algo alojado en data
call imprimir
mov ax,0
;operaciones para hacer la divicion
;------------------------------------------------------------------
mov al,cl;SE MUEVE EL REGISTRO DE CL A AL PARA PODER REALIZAR LA DIVISION
div ch ;SE DIVIDE EL CONTENIDO DE AL CON EL DE CH
mov bh,ah ;SE MUEVE EL (residuo) QUE QUEDA EN AH A BH
add bh,30h; SE SUMA 30H PARA VOLVERLO EN SU FORMA DECIMAL
mov bl,al;SE MUEVE EL (cociente) QUE QUEDA EN AL A BL
add bl,30h;SE SUMA 30H PARA VOLVERLO EN SU FORMA DECIMAL
;------------------------------------------------------------------
;SALIDA DE RESULTADOS
;------------------------------------------------------------------
;MUESTRA EL RESIDUO
;-----------------------------------------------------------------
mov dx, offset m4 ;imprime el mensaje
call imprimir
mov ah,2h;2h muestra datos
mov dl,bh
int 21h
mov dx, offset salto ; offset sirve para llamar algo alojado en data
call imprimir
;MUESTRA EL COCIENTE
;------------------------------------------------------------------
mov dx, offset m5 ;imprime el mensaje
call imprimir
mov ah,2h;2h muestra datos
mov dl,bl
int 21h
mov dx, offset salto
call imprimir
jmp MENU
op5:;-----------------------------------------------salida
call finalizar
;-----------------------------------------------------BLOQUES GENERALES
imprimir:
mov ah,09h
int 21h
ret
finalizar:
mov ax,4ch
int 21h
end programa
Comentarios
Publicar un comentario