Logo Studenta

Vocales con macros y procedimientos

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

;Jonatan Diaz
printText macro msg ;imprimir cadenas
 mov ah,09
 lea dx,msg 
 int 21h 
endm 
 
notVisibleInput macro ;entradas de valores pero sin mostrarlos
 mov ah,07
 int 21h 
 
 mov dl,al
endm 
 
endProgram macro ;terminar programa
 mov ah,4ch 
 int 21h
endm
pila segment
 db 64 dub(?)
pila ends 
datos segment
 msg1 db 'Ingrese una vocal',13,10,'Para terminar el programa presione la tecla de escape',13,10,'$'
 msg2 db 13,10,'Ingrese solo vocales',13,10,'',13,10,'$'
 a db 13,10,13,10,'############',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'############',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'',13,10,'$'
 e db 13,10,13,10,'############',13,10,'## ',13,10,'## ',13,10,'## ',13,10,'## ',13,10,'############',13,10,'## ',13,10,'## ',13,10,'## ',13,10,'## ',13,10,'## ',13,10,'############',13,10,'',13,10,'$'
 i db 13,10,13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,' ## ',13,10,'',13,10,'$'
 o db 13,10,13,10,'############',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'############',13,10,'',13,10,'$'
 u db 13,10,13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'## ##',13,10,'############',13,10,'',13,10,'$' 
datos ends 
codigo segment
assume ss:pila, ds:datos, cs:codigo
inicio: mov ax,datos
 mov ds,ax
 
leer: printText msg1 ;mensaje para pedir las vocales
 notVisibleInput ;pedimos que se teclee algo
 cmp dl,27 ;comparamos con esc
 je terminar 
 call iguales ;validamos mayusculas y minusculas en las vocales
 call diferentes ;validamos que no sean consonantes
 
imprimirA: ;imprimimos las letras
 printText a 
 loop leer 
 
imprimirE: 
 printText e
 loop leer
 
imprimirI: 
 printText i
 loop leer
 
imprimirO: 
 printText o 
 loop leer
 
imprimirU: 
 printText u 
 loop leer 
 
diferente: ;pedimos que solo ingresen vocales sin mostrar la tecla pulsada
 printText msg2 
 loop leer 
 
terminar: ;terminamos el programa
 endProgram
iguales proc 
 cmp dl,65 ;comparamos con A
 je imprimirA 
 cmp dl,97 ;comparamos con a
 je imprimirA 
 cmp dl,69 ;comparamos con E
 je imprimirE 
 cmp dl,101 ;comparamos con e
 je imprimirE
 cmp dl,73 ;comparamos con I
 je imprimirI 
 cmp dl,105 ;comparamos con i
 je imprimirI
 cmp dl,79 ;comparamos con O
 je imprimirO
 cmp dl,111 ;comparamos con o
 je imprimirO
 cmp dl,85 ;comparamos con U
 je imprimirU
 cmp dl,117 ;comparamos con u
 je imprimirU
 ret
iguales endp
 
diferentes proc
 cmp dl,65 ;no aceptamos consonantes
 jne diferente
 cmp dl,97
 jne diferente 
 cmp dl,69
 jne diferente
 cmp dl,101
 jne diferente
 cmp dl,73
 jne diferente
 cmp dl,105
 jne diferente
 cmp dl,79
 jne diferente
 cmp dl,111
 jne diferente
 cmp dl,85
 jne diferente
 cmp dl,117
 jne diferente
 ret 
diferentes endp
codigo ends
end inicio

Continuar navegando