RE:programa en ensamblador
Saludos!
Generalmente hago esta asociación:
NOVATO=ENSAMBLADOR WINDOWS 16 BITS
INTERMEDIO =ENSAMBLADOR LINUX O WINDOWS 16 Y 32 BITS (CONSOLA)
AVANZADO Y/O EXPERTO = ENSAMBLADOR 32 BITS (API'S)
Por lo tanto, este es el código para el compañero Raul
;....................................................................................................................................................
.model small
.stack 64
.data
CR equ 13
LF equ 10
mini db ' Introduce la cadena:',CR,LF,'$'
resti db 'Min=10 - Max=50',CR,LF,'$'
char db 0
cont db 0
col db 0
cadena label byte
maxi db 51
tam db 0
campo db 51 dup (' ')
rojo db 0ch
azul db 09h
;------------------------------------------------------------------------------------------------------
.code
inicio:
mov ax,@data
mov ds,ax
push ds
pop es
call clean ;limpia pantalla
mov ah,02h ;posiciona cursor en columna 0 renglon 0
mov bh,0
mov dh,0
mov dl,0
int 10h
mov ah,09h ;mensaje de inicio
lea dx,mini
int 21h
mov ah,0ah ;peticion para introducir cadena
lea dx,cadena
int 21h
cmp tam,10 ;restricción de tamaño de cadena
jb advert
jmp continue ;si se cumple continua en el programa
advert:
mov ah,09h ;si no , aparece el mensaje del minimo y maximo
lea dx,resti
int 21h
jmp salir ;y sale del programa
continue:
lea si,campo ;prepara la cadena para empezar el scaneo de caracteres
dec tam
call scases
salir:
mov ah,10h
int 16h
mov ax,4c00h
int 21h
;..........................................................................................................................................
clean proc
mov ax,0700h
mov bh,07h
mov cx,0000h
mov dx,314fh
int 10h
ret
clean endp
;..........................................................................................................................................
scases proc
ciclo:
mov ah,[si]
cmp ah,'A'
je sipi
cmp ah,'a'
je sipi
cmp ah,'E'
je sipi
cmp ah,'e'
je sipi
cmp ah,'I'
je sipi
cmp ah,'i'
je sipi
cmp ah,'O'
je sipi
cmp ah,'o'
je sipi
cmp ah,'U'
je sipi
cmp ah,'u'
je sipi
call printcons ;subrutina para pintar las consonantes
mov bl,cont
cmp bl,tam
je largo
inc si
inc cont
jmp ciclo
sipi:
call printvoc ;subrutina para pintar las vocales
mov bl,cont
cmp bl,tam
je largo
inc si
inc cont
jmp ciclo
largo:
ret
scases endp
;...........................................................................................................................................
printvoc proc
mov char,ah
mov ah,02h
mov bh,0
mov dh,10
mov dl,col
int 10h
mov ah,09h
mov al,char
mov bh,0
mov bl,rojo
mov cx,1
int 10h
inc col
ret
printvoc endp
;.............................................................................................................................................
printcons proc
mov char,ah
mov ah,02h
mov bh,0
mov dh,10
mov dl,col
int 10h
mov ah,09h
mov al,char
mov bh,0
mov bl,azul
mov cx,1
int 10h
inc col
ret
printcons endp
end inicio
; Espero sea de utilidad.