Oh Mist du hast Recht. Das ist das Problem
Bei jcxz springt er je nachdem wo er gerade ist zu früh raus.
Danke! Da war ich etwas blind..
Wusste nicht dass man esi/edi sichern muss. Hab grad nachgeguckt und du hast Recht.
Hab die Funktion angepasst:
Delphi-Quellcode:
function CharCountAsm(AStr: PChar; AChar: Char; len: Integer): Integer;
label loop_start, loop_ende, ende;
asm
push edi
cld
mov edi, AStr
mov ax, AChar
mov ecx, len
xor edx, edx
loop_start:
repnz scasw
jecxz loop_ende
inc edx
jmp loop_start
loop_ende:
jnz ende
inc edx
ende:
mov result, edx
pop edi
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."