Hi, ich arbeite seit gestern mit Assembler (inline Assembler). Grundsachen wie Rechnen und einfache Schleifen kann ich schon, aber an diesem nicht sinnvollen Beispiel (das ich nur zum üben nehme :D) bekomme ich einen Zugriffsfehler. Warum?
Code:
function Test(x: integer): Integer; assembler;
asm
PUSH EAX;
MOV EAX, X; //Kopiere einen beliebigen Wert in EAX
MOV EDX, 30; //kopiere 30 in EDX
CMP EAX, 20; //WENN EAX = 20 DANN
JE @Start; //Springe zu Start
CDQ; //EAX auf 64Bit erweitern
@Start: //Startausführung starten
ADD EAX, EDX; //Addiere EAX mit EDX
IDIV EAX, EDX; //Diviediere EAX mit EDX
RET; //Gebe das Ergebnis zurück
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage (IntToStr(Test(20)));
end;
end.