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