411 REFERENCE · Wikibooks
Delphi Programming/Assembler in Delphi
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
Since Turbo Pascal 1.0, the use of assembly code within Borland (currently Embarcadero) languages was quite easy.
In Delphi, simply put an assembly block between asm...end; within a code block, or you can declare a whole function procedure as assembler.
Global or local variables can be used normally, but of course they will work as pointers.
Examples:
function StrLen(S: PChar): Cardinal;
begin
asm
MOV EDX, EDI
MOV EDI, EAX
MOV ECX,0FFFFFFFFh
XOR AL, AL
REPNE SCASB
MOV EAX, 0FFFFFFFEh
SUB EAX, ECX
MOV EDI, EDX
end;
end;
function StrLen(S: PChar): Cardinal;
asm
MOV EDX, EDI
MOV EDI, EAX
MOV ECX, 0FFFFFFFFh
XOR AL, AL
REPNE SCASB
MOV EAX, 0FFFFFFFEh
SUB EAX, ECX
MOV EDI, EDX
end;