El problema es que tabla1[4] es siempre igual que tabla1[3], con lo que la cuenta siempre es incorrecta.Mis preguntas son dos:- ¿Porque tabla1[4] es siempre igual a tabla1[3]? (Es que soy curioso...)
- ¿Hay alguna manera de correctamente este ejercicio? Se me ocurre que la linea "sub cl, 1" se podria sustituir por "sub cl, 2", pero quiza haya alguna manera mas "seria"...
¿Quien dijo que hay un tabla1[4]? Esta fuera de los limites y simplemente estas accediendo a carac que justamente es 'a'
Incializa asi: tabla1 DB "Hola",0 y recorre las cadenas justo hasta encontrarte el 0 terminador de las mismas.
DOSSEG .MODEL SMALL .STACK 100h .DATAtabla1 DB "Hola", 0 ; Una tabla de 0Ah caracterescarac DB "a" .CODEINICIO: mov ax, @data mov ds, ax xor di, di mov bh, carac[0]numero: add cl, 1bucle: mov bl, tabla1[di] inc di cmp bl, carac je numero cmp tabla1[di], 0 jnz bucle FIN: mov ah, 4ch int 21h end INICIO
Ya se que esta fuera de los limites, pero ¿no te parece curioso que tabla1[4] albergue el mismo caracter que tabla1[3] siempre?
Ok, aqui abajo esta mi codigo haciendo lo que tu me dices. Pero en el caso de que la letra que estoy contando (la "a") sea la que termina la palabra (Hola), tu consejo no funciona, al menos como yo lo hago...