Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Calculadora Emu
Calculadora Emu
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