Llevo toda la tarde con lo mismo y me estoy volviendo loco. No tengo ni idea que puedo estar haciendo mal o que no entiendo. Os pongo el programa:
.model small
.stack
.data
tabla1 db "hola mundo"
longitud equ ($ - tabla1)
.code
Main:
mov ax, @data
mov ds, ax
mov al, 'o'
mov cx, longitud
xor si, si
jmp $ln3@main
$ln2@main:
dec cx
$ln3@main:
cmp cx, 0
je $ln4@main
cmp tabla1[si], al
jne no_igual
inc dl
no_igual:
inc si
jmp $ln2@main
$ln4@main:
add dl, 30h
mov ah, 02
int 21h
mov ah, 4ch
int 21h
end Main
Como podéis ver, eso cuenta el número de "o" que tiene la cadena hola mundo, y lo almacena en dl. Luego, le sumo 30h para, mediante la interrupción 21h y función 02, imprimir en pantalla el carácter, que representa el número de caracteres encontrados.
Pero cuando lo ejecuto me suelta por pantalla una O. Pero si lo depuro paso a paso, cuando salgo del depurado si me ha imprimido un 2. Por que pasa esto?
Si tengo que dl es 2, 2 + 30h = 32h. Que corresponde al carácter 2, porque me imprime ese O.
Una ayudita que me sale humo por las orejas xD
thanks!!