Delphi Programming/Assembler in Delphi

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;