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
Publicar un comentario