[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]
{
JP> How do you get the length of a string using assembler? I've tried
JP> this, but it doesn't work. I was told the first two bytes hold the
JP> string length. Is this correct?
}
function len(s : string) : byte; assembler;
asm
les di,s
mov al,es:byte ptr [di]
end;
or this:
function len(s : string) : byte; assembler;
asm
push ds
lds si,s
mov al,byte ptr [si]
pop ds
end;
{PETER LOUWEN,Re: Assembler to get leng}
FUNCTION Len1(CONST Str: STRING): byte; ASSEMBLER;
ASM push ds
lds si, Str { -- DS:SI now holds @Str. }
lodsb { -- AL := (DS:SI)^. }
pop ds
END;
FUNCTION Len2(CONST Str: STRING): byte; ASSEMBLER;
ASM les di, Str { -- ES:DI now holds @Str. }
mov al, es:[di] { -- AL := (ES:DI)^. }
END;
The second method is slightly faster on my machine.
[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]