Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted by Ignacio Vacca ( 15 years ago )
ORG 1000H
FRASE DB 'HOLA A'
VOCALES DB DUP ('A','E','I','O','U')
VECTOR DB ?
ORG 3000H
SUB1:PUSH DX ;apilo la dir de vectoe
DEC AX
VUELTA:INC AX ;aca vuelve cuando termina de procesar un letra
PUSH AX ;apilo la dir de la letra de la frase
MOV BX,AX
MOV DL,[BX]
MOV DH,00H ;caracter null en DH
CMP DL,DH ;si es null termina
JZ FIN
MOV DH,20H ;caracter espacio
CMP DL,DH ;si es espacio loguardo en el vector
JZ GUARDO_ESP
MOV AL,00H ;si no salto es porq es vocal o consonante
SIGO:INC AL ;ciclo para recorrer vocales...
MOV BX,CX ;analizo si es vocal recorriendo el arrreglo vocales
MOV DH,[BX]
CMP DL,DH
JZ GUARDO1 ;si da cero es porq es vocal entonces guardo un 1
INC CX ;si no es cero cambio de vocal
CMP AL,5
JNZ SIGO
SUB CL,AL ;si da 0 resto lo que incremente a CX en la parte baja
;GUARDO0
POP AX ;desapilo la dir de la frase
POP BX ;desapilo la dir del vector a generar
MOV WORD PTR [BX],0H ;guardo en el vector 0
INC BX ;incremento para no pisar el valor desp
PUSH BX ;apilo la dir del vector ya aumentada
PUSH AX ;apilo la frase
JMP VUELTA ;vuelvo a la siguiente letra
GUARDO_ESP:POP AX ;similar a guardo0
POP BX
MOV [BX],DH
INC BX
PUSH BX
PUSH AX
JMP VUELTA
GUARDO1:SUB CL,AL ;similar a guardo0
POP AX
POP BX
MOV WORD PTR [BX],1H
INC BX
PUSH BX
PUSH AX
JMP VUELTA
FIN:RET
ORG 2000H
MOV AX,OFFSET FRASE ;paso las direcciones
MOV CX,OFFSET VOCALES
MOV DX,OFFSET VECTOR
CALL SUB1 ;llamo a la subrutina SUB
HLT
END
Revise this Paste