SUMA,RESTA,DIVISION Y MULTIPLICACION en emu8086

 .model small

.stack 100h

.data

    msg1 db 'Selecciona la operacion:', 10, 13, 'a) Suma', 10, 13, 'b) Resta', 10, 13, 'c) Multiplicacion', 10, 13, 'd) Division', 10, 13, 'Opcion: $'

    msg2 db 10, 13, 'Ingresa el primer numero: $'

    msg3 db 10, 13, 'Ingresa el segundo numero: $'

    msg4 db 10, 13, 'El resultado es: $'

    num1 db ?

    num2 db ?

    res dw ?

.code

    main proc

        mov ax, @data

        mov ds, ax

        

        ; Mostrar el mensaje

        lea dx, msg1

        mov ah, 9h

        int 21h

        

        ; Leer la opcion del usuario

        mov ah, 1h

        int 21h

        cmp al, 'a'

        je suma

        cmp al, 'b'

        je resta

        cmp al, 'c'

        je multiplicacion

        cmp al, 'd'

        je division

        jmp salir

        

        suma:

            ; Pedir el primer numero

            lea dx, msg2

            mov ah, 9h

            int 21h

            

            ; Leer el primer numero

            call leerNumero

            mov num1, al

            

            ; Pedir el segundo numero

            lea dx, msg3

            mov ah, 9h

            int 21h

            

            ; Leer el segundo numero

            call leerNumero

            mov num2, al

            

            ; Realizar la suma

            mov al, num1

            add al, num2

            mov res, ax

            

            ; Mostrar el resultado

            lea dx, msg4

            mov ah, 9h

            int 21h

            mov ax, res

            call imprimirNumero

            jmp salir

        

        resta:

            ; Pedir el primer numero

            lea dx, msg2

            mov ah, 9h

            int 21h

            

            ; Leer el primer numero

            call leerNumero

            mov num1, al

            

            ; Pedir el segundo numero

            lea dx, msg3

            mov ah, 9h

            int 21h

            

            ; Leer el segundo numero

            call leerNumero

            mov num2, al

            

            ; Realizar la resta

            mov al, num1

            sub al, num2

            mov res, ax

            

            ; Mostrar el resultado

            lea dx, msg4

            mov ah, 9h

            int 21h

            mov ax, res

            call imprimirNumero

            jmp salir

        

        multiplicacion:

            ; Pedir el primer numero

            lea dx, msg2

            mov ah, 9h

            int 21h

            

            ; Leer el primer numero

            call leerNumero

            mov num1, al

            

            ; Pedir el segundo numero

            lea dx, msg3

            mov ah, 9h

            int 21h

            

            ; Leer el segundo número

            call leerNumero

            mov num2, al

            

            ; Realizar la multiplicación

            mov al, num1

            mul num2

            mov res, ax

            

            ; Mostrar el resultado

            lea dx, msg4

            mov ah, 9h

            int 21h

            mov ax, res

            call imprimirNumero

            jmp salir

        

        division:

            ; Pedir el primer numero

            lea dx, msg2

            mov ah, 9h

            int 21h

            

            ; Leer el primer numero

            call leerNumero

            mov num1, al

            

            ; Pedir el segundo numero

            lea dx, msg3

            mov ah, 9h

            int 21h

            

            ; Leer el segundo número

            call leerNumero

            mov num2, al

            

            ; Realizar la division

            mov al, num1

            xor ah, ah

            div num2

            mov res, ax

            

            ; Mostrar el resultado

            lea dx, msg4

            mov ah, 9h

            int 21h

            mov ax, res

            call imprimirNumero

            jmp salir

        

        salir:

            mov ah, 4ch

            int 21h

    main endp

    

    leerNumero proc

        ; Procedimiento para leer un numero

        mov ah, 1h

        int 21h

        sub al, 30h

        ret

    leerNumero endp

    

    imprimirNumero proc

        ; Procedimiento para imprimir un numero

        ; Recibe el numero en AX

        push bx

        push cx

        push dx

        add al, 30h

        mov ah, 2h

        mov dl, al

        int 21h

        pop dx

        pop cx

        pop bx

        ret

    imprimirNumero endp

end


Comentarios