[阅读: 327] 2005-11-02 05:05:33
function StrLen(Str: PChar): Integer; register;
asm
cld
push edi
mov edx, Str
mov edi, edx
xor eax, eax
mov ecx, 0FFFFFFFFH
DB 0F2H //repne
scasb
dec edi
mov Result, edi
sub Result, edx
pop edi
end;
或者这样:
function StrLen(Str: PChar): Integer; register;
label
rescan;
asm
mov ecx, edi
mov edx, Str
mov edi, Str
xor eax, eax
rescan:
scasb
jnz rescan
dec edi
mov Result, edi
sub Result, edx
mov edi, ecx
end;