Mam problem z kodem w asemblerze linux,nasm. Chodzi o to że napisałem nie do końca działający program który liczy ile razy występuje litera "a" w podanym ciągu z tym że maksymalna liczba tych liter wynosi 9 (aby łatwo było przekonwertować na ascii). Kod wygląda tak :
section .text
global _start
_start:
mov eax,3
mov ebx,0
mov ecx,tekst
mov edx,[dlugosc]
int 80h
xor esi,esi
xor edi,edi
xor ah,ah
_petla:
mov edi,[tekst+esi]
cmp edi,0ah ;sprawdza litery dopóki nie znajdzie znaku końca lini
je _end ;w przypadku znalezienia tego znaku program kończy sprawdzanie
_warunek:
cmp edi,[letter]
jne _enda
inc ah,
_enda:
inc esi
jmp _petla
_end:
add ah,48 ;jak już napisałem wyżej maksymalna liczba litery a wynosi 9 wiec aby przekonwerować to na
mov [ile],ah ;ascii wystarczy dodac 48
mov eax,4
mov ebx,1
mov ecx,ile
mov edx,[dlile]
int 80h
mov eax,1
int 80h
section .data
tekst times 50 db 0
dlugosc dd $ - tekst
letter db "a"
ile dd 0
dlile dd $ - ile
Wynik zawsze jest równy 0, dlaczego?