{$APPTYPE CONSOLE}
program asmdoc1; uses sysutils;
{
Delphi assembler doc example #1 - simple parameters, simple function result
things like integers, char, pointer - anything 4 bytes or less which is not
an FP type
}
function addthreeintegers1(num1, num2, num3: integer): integer; assembler;
{ num1 in EAX, num2 in EDX, num3 in ECX, result in EAX }
asm
ADD EAX, EDX // EAX := EAX + EDX;
ADD EAX, ECX // EAX := EAX + ECX;
end;
procedure addthreeintegers2(var num1: integer; num2, num3: integer); assembler;
{ num1 is a pointer to contents of data, put in EAX, num2 in EDX, num3 in ECX }
asm
ADD EDX, ECX // EDX := EDX + ECX;
MOV ECX, [EAX] // ECX := DWord(EAX^);
ADD EDX, ECX // EDX := EDX + ECX;
MOV [EAX], EDX // DWord(EAX)^ := EDX;
end;
var
a: integer;
begin
writeln('Tek-tips Delphi ASM FAQ example #1 - simple parameters');
writeln;
a := addthreeintegers1(2, 3, 6);
writeln('Answer is ', a);
addthreeintegers2(a, 2, 1);
writeln('Answer is ', a);
write('Press ENTER to exit.');
readln;