Está en la página 1de 7

;Autor REAK-KEPLER

;URL
;Proyecto Final de Ensamblador
; TU NOMBRE
muestra macro mensajex
lea dx,mensajex
mov ah,9
int 21h
endm
; lee el numero del menu
;Lee 4 numeros y conbierte de ascii a decimal
l1 macro valor,dato1,ayuda

mov valor,0
mov dato1,1000
mov cx,4
ciclo: mov ah,7
int 21h
mov dl,al
mov ah,2
int 21h
sub al,30h
mov ayuda,al
mov ax,0
mov al,ayuda
cbw

mul dato1
mov bx,dato1


add valor,ax
mov ax,dato1
cwd
mov bx,10

div bx
mov dato1,ax
loop ciclo
endm
;*********************************************
;*******************************************
;lee otros cuatro digitos
in2 macro val2,deta2,ayu1

mov val2,0
mov deta2,1000
mov cx,4
clo1: mov ah,7
int 21h
mov dl,al
mov ah,2
int 21h
sub al,30h
mov ayu1,al
mov ax,0
mov al,ayu1
cbw

mul deta2
mov bx,deta2
add val2,ax
mov ax,deta2
cwd
mov bx,10

div bx
mov deta2,ax
loop clo1
endm
;*******************************************

;*********************************************

;**********************(Inicio del programa principal)***********************
pila SEGMENT PARA PUBLIC 'stack'
db 64 dup ()



pila ENDS
datos SEGMENT PARA PUBLIC 'DATA'

dato1 dw 1000
dedo dw 1000
tell dw 1000
deta2 dw 1000
del dw 1000
valor dw 0
val2 dw 0
ress dw 0
resr dw 0
resm dw 0
resd dw 0
ayuda db ?
ayu1 db ?


mensaje db 'Calculadora Basica Aritmetica de Reak=Franja ', 13, 10, '$'
men_menu db 'Menu', 13, 10, '$'
men_suma db '1..Suma', 13, 10, '$'
men_resta db '2..Resta', 13, 10, '$'
men_Multi db '3..Multiplicacion', 13, 10, '$'
men_divi db '4..Division', 13, 10, '$'
men_opc db 'Dame tu opcion', 13, 10, '$'
men_11 db '... Choose ... Suma', 13, 10, '$'
men_22 db '... Choose ... Resta',13, 10, '$'
men_33 db '... Choose ... Multiplicacion',13, 10, '$'
men_44 db '... Choose ... Division',13, 10, '$'
men_pid db '... Give Me Numbers ... ',13, 10, '$'
datos ends
CODIGO SEGMENT PARA PUBLIC 'code'

ASSUME Cs:Codigo,SS:pila,ds:datos
inicio: PUSH Ds
SUB AX,AX
PUSH AX
MOV AX,seg datos
MOV Ds,AX ;guarda el psp
mov al,2
mov ah,0
int 10h
mov dh,0
mov dl,0
;mov bh,0
mov ah,2
int 10h ;limpia pantalla
muestra mensaje

muestra men_menu
muestra men_suma
muestra men_resta
muestra men_Multi
muestra men_divi

;********************(las operaciones)*************************
muestra men_opc
mov ah,7
int 21h
mov dl,al
mov ah,2
int 21h
sub al,30h

cmp al,1
jne resta

muestra men_11
call meter

mov ax,valor
mov bx,val2
add ax,bx
mov ress,ax
mov dx,ax
mov ah,2
int 21h

call muestra suma



jmp fin
; suma
resta:cmp al,2
jne multi
muestra men_22
call meter
mov ax,valor
mov bx,val2

sub ax,bx
mov resr,ax

mov dx,ax
mov ah,2
int 21h
call muestra resta
; resta
jmp fin
multi:cmp al,3
jne divi

muestra men_33
call meter
mov ax,valor
mov bx,val2


mul bx
mov resm,ax

mov dx,ax
mov ah,2
int 21h

call muestra multi
;Multiplicacion
jmp fin

divi:cmp al,4

muestra men_44
call meter
mov ax,valor
cwd
mov bx,val2

div bx
mov resd,ax

mov dx,ax
mov ah,2
int 21h
call muestra div
;division
jmp fin

;********************(fin las operaciones)*************************

;***************************
meter proc near
muestra men_pid
l1 valor,dato1,ayuda

muestra men_pid
in2 val2,deta2,ayu1



ret

meter endp
muestrasuma proc near
;convierte l1 decimal a ascii
mov dedo,1000
mov cx,4
ciclo23:mov ax,ress
cwd
mov bx,dedo
div bx
mov ress,dx
add ax,30h
mov dx,ax
mov ah,2
int 21h
mov ax, dedo
cwd
mov bx,10
div bx
mov dedo,ax
loop ciclo23
ret
muestrasuma endp

muestraresta proc near
mov dedo,1000
mov cx,4
ciclo231:mov ax,resr
cwd
mov bx,dedo
div bx
mov resr,dx
add ax,30h
mov dx,ax
mov ah,2
int 21h
mov ax, dedo
cwd
mov bx,10
div bx
mov dedo,ax
loop cico23
ret
muestraresta endp
muestramulti proc near
mov dedo,1000
mov cx,4
ciclo232:mov ax,resm
cwd
mov bx,dedo
div bx
mov resm,dx
add ax,30h
mov dx,ax
mov ah,2
int 21h
mov ax, dedo
cwd
mov bx,10
div bx
mov dedo,ax
loop clo23
ret
muestra multi endp
muestra div proc near
mov dedo,1000
mov cx,4
ciclo233:mov ax,resd
cwd
mov bx,dedo
div bx
mov resd,dx
add ax,30h
mov dx,ax
mov ah,2
int 21h
mov ax, dedo
cwd
mov bx,10
div bx
mov dedo,ax
loop lo233
ret
muestradiv endp
;---------------------------

fin: MOV AX,4c00H
INT 21H
Codigo ENDS
end inicio

;--------------------(fin del programa principal)-----------------------------

También podría gustarte