Delphi-Quellcode:
function CharCountAsm(AStr: PChar; AChar: Char; len: Integer): Integer;
label loop_start, loop_ende, ende;
asm
cld
// Explizite Zuweisung der Parameter in die Register
mov edi, AStr
mov ax, AChar
mov ecx, len
xor edx, edx
loop_start:
repnz scasw
jcxz loop_ende
inc edx
jmp loop_start
loop_ende:
jnz ende
inc edx
ende:
mov result, edx
end;
IMO müsste doch statt jcxz loop_ende die 32-Bit-Version jecxz loop_ende benutzt werden.
Außerdem wird edi nirgends gerettet und wieder hergestellt.