Logo Studenta

Area y Perimetro de un triangulo

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

INCLUDE assemblyMethods.lib
ajuste macro 
 mov ax,cx
 aam ;conversion de h a d
 mov cx,ax 
 
 add cl,30h
 mov u,cl
 
 add bl,ch 
 mov ax,bx 
 aam ;conversion de h a d 
 mov bx,ax
 
 add bl,30h
 mov d,bl
 
 add bh,aux ;aux es centena y se agrega a bh
 mov bl,bh
 mov bh,00h
 
 mov cx,0000h
 mov ax,bx
 aam
 mov cx,ax 
 
 add cl,30h
 mov c,cl
 add ch,30h
 
 mov m,ch 
 mov dl,m
 aam 
 mov m,dl 
endm 
 
ajuste2 macro
endm 
 
pila segment
 db 64 dub (?) 
pila ends
datos segment
 msg1 db 'Teclee 1 para calcular el area de un triangulo',13,10,'Teclee 2 para calcular el perimetro',13,10,'3 para terminar el programa$' 
 msg2 db 13,10,'Ingrese un numero: $'
 msg3 db 13,10,'El valor del area es: $'
 msg4 db 13,10,'El valor del perimetro es: $' 
 msg5 db 'Opcion no valida, seleccione alguna de las tres opciones anteriores$' 
 msg6 db 'Perimetro de un triangulo$'
 msg7 db 'Area de un triangulo$'
 msg8 db 'Opcion no programada aun$' 
 enter db 13,10,'$' 
 cm db 0
 dm db 0
 m db 0
 c db 0
 d db 0
 u db 0 
 aux db 0 
 aux2 db 0
datos ends
codigo segment
assume ss:pila,ds:datos,cs:codigo
inicio: mov ax,datos
 mov ds,ax
 
ask: printText msg1
 next enter
 next enter
 visibleInput 
 
 ;validacion para que solo se respete las opciones del menu
 
 cmp al,49 ;pulsar 1 para sacar area
 je area
 cmp al,50 ;pulsar 2 para sacar perimetro
 je perim
 cmp al,51 ;pulsar 3 para terminar programa
 je exit
 
 cmp al,49
 jne error
 cmp al,50 
 jne error
 cmp al,51
 jne error
 
area: next enter
 next enter
 printText msg7 
 next enter 
 
 ;base
 
 printText msg2
 visibleInput ;centenas
 sub al,30h
 mov aux,al 
 visibleInput ;decenas
 sub al,30h
 mov bl,al 
 visibleInput ;unidades
 sub al,30h
 mov cl,al 
 
 ;altura
 
 printText msg2 
 visibleInput ;centenas
 sub al,30h
 mov aux2,al
 visibleInput ;decenas 
 sub al,30h
 mov bh,al 
 visibleInput ;unidades 
 sub al,30h
 mov ch,al 
 
 ;ajuste2 
 
 printText msg3 ;se imprime el resultado de la suma 
 
 next enter
 next enter 
 jmp ask
 
perim: next enter
 next enter
 printText msg6 
 next enter 
 
 ;primer numero
 
 printText msg2
 visibleInput ;centenas
 sub al,30h
 mov aux,al 
 visibleInput ;decenas
 sub al,30h
 mov bl,al 
 visibleInput ;unidades
 sub al,30h
 mov cl,al 
 
 ;segundo numero
 
 printText msg2 
 visibleInput ;centenas
 sub al,30h
 add aux,al
 visibleInput ;decenas 
 sub al,30h
 add bl,al 
 visibleInput ;unidades 
 sub al,30h
 add cl,al 
 
 ;tercer numero
 
 printText msg2 
 visibleInput ;centenas
 sub al,30h
 add aux,al
 visibleInput ;decenas 
 sub al,30h
 add bl,al 
 visibleInput ;unidades 
 sub al,30h
 add cl,al 
 
 ajuste 
 
 printText msg4 ;se imprime el resultado de la suma 
 mov ah,02h
 mov dl,m
 int 21h 
 mov ah,02h
 mov dl,c
 int 21h
 mov ah,02h
 mov dl,d
 int 21h
 mov ah,02h
 mov dl,u
 int 21h 
 
 next enter
 next enter
 jmp ask
error: next enter
 next enter
 printText msg5 ;le pedimos al usuario una opcion valida del menu
 next enter
 next enter
 jmp ask
 
exit: endProgram ;terminamos el programa
 
codigo ends
end inicio

Continuar navegando