Está en la página 1de 5

.

model tiny
.data
nombre1 db 10,'Ingresa un numero :',10,13,'$'
nombre2 db 10,'Ingresa un numero :',10,13,'$'
nombre3 db 10,'Ingresa el numero que desea restar :',10,13,'$'
nombre4 db 10,'Ingresa el numero que desea dividir :',10,13,'$'
malS db 10,'Opcion Invalida...................',10,13,'$'
resul db 10,'El resultado es :',10,13,'$'
negativoS db ' -','$'
menu db 10,'Presiona :',10,13,'"s".-Suma',10,13,'"r".-Resta',10,13,'"m".-
Multiplicacion',10,13,'"d".-Division',10,13,'"e".-Salir',10,13,'$'
.code

todo:

mov ax,@data
mov ah,09h
mov dx,offset menu
int 21h

call intro
cmp al,'e'
je salir
cmp al,'s'
je suma
cmp al,'r'
je resta
cmp al,'m'
je multiplicacion
cmp al,'d'
je division

;jne mal

;******SUMA************************
suma:

mov ax,@data
mov ah,09h
mov dx,offset nombre1
int 21h

call intro
sub al,30h
mov ch,al

mov ax,@data
mov ah,09h
mov dx,offset nombre2
int 21h

call intro
sub al,30h
mov cl,al
call sumar
mov al,cl
aam
mov cl,al
mov ch,ah

mov ax,@data
mov ah,09h
mov dx,offset resul
int 21h

call imp
jmp todo

;******RESTA POSITIVA************************

resta:

mov ax,@data
mov ah,09h
mov dx,offset nombre1
int 21h

call intro
sub al,30h
mov ch,al

mov ax,@data
mov ah,09h
mov dx,offset nombre3
int 21h

call intro
sub al,30h
mov cl,al
mov bh,ch
sub ch,cl
js negativo
mov al,ch
aam
mov cl,al
mov ch,ah

mov ax,@data
mov ah,09h
mov dx,offset resul
int 21h

call imp

jmp todo

;******RESTA NEGATIVA************************

negativo:

mov ch,bh
sub cl,ch
mov al,cl
aam
mov cl,al
mov ch,ah

mov ax,@data
mov ah,09h
mov dx,offset resul
int 21h
mov ax,@data
mov ah,09h
mov dx,offset negativoS
int 21h

call imp

jmp todo

;******MULTIPLICACION************************
multiplicacion:

mov ax,@data
mov ah,09h
mov dx,offset nombre1
int 21h

call intro
sub al,30h
mov bl,al

mov ax,@data
mov ah,09h
mov dx,offset nombre2
int 21h

call intro
sub al,30h

mul bl

aam
mov cl,al
mov ch,ah

mov ax,@data
mov ah,09h
mov dx,offset resul
int 21h

call imp

jmp todo

;******DIVISION************************
division:

mov ax,@data
mov ah,09h
mov dx,offset nombre1
int 21h

call intro
sub al,30h
mov bh,al

mov ax,@data
mov ah,09h
mov dx,offset nombre4
int 21h

call intro
sub al,30h
mov bl,al

mov al,bh
mov ah,00h
mov bh,00h
div bl

aam
mov cl,al
mov ch,ah

mov ax,@data
mov ah,09h
mov dx,offset resul
int 21h

call imp

jmp todo

salir:
.exit

jmp salir

intro proc
mov ah,01
int 21h
ret
intro endp

sumar proc
add cl,ch
ret
sumar endp

imp proc
add cl,30h
add ch,30h
mov ah, 02
mov dl,ch
int 21h
mov ah, 02
mov dl,cl
int 21h

ret
imp endp

impfa proc
aam

mov ch,ah
mov cl,al

mov ax,@data
mov ah,09h
mov dx,offset resul
int 21h

add cl,30h
add ch,30h
mov ah, 02
mov dl,ch
int 21h

mov ah, 02
mov dl,cl
int 21h

ret
impfa endp

También podría gustarte