Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: