Hallo,
danke für die Antworten.
Trotzdem verstehe ich immer noch nicht wie es funktioniert.
Mal ein Beispiel für die Rückgabe eines integer – Wertes.
Delphi-Quellcode:
function ASM_strLaenge(s: PChar): integer;
ASM
PUSH EBX
// EBX sichern
MOV EDX, EAX
// Adresse in EDX
XOR EAX, EAX
// EAX auf 0 setzen
MOV EBX, EAX
// EBX aof 0 setzen
JMP @@Vergleich
@@Weiter:
INC EDX
// Adresse um 1 Erhöhen
INC EAX
// Anzahl um 1 erhöhen
@@Vergleich:
MOV BL, [EDX]
// Zeichen laden nach BL
CMP byte ptr [EDX], $00
// Zeichen auf #0 testen
JNZ @@Weiter
// Wenn nicht String Ende dann weiter
POP EBX
// EBX vom Stack holen
END;
So das ist kein Problem.
Aber, wenn ich diese zugegebener Weise nutzlose Funktion, in
ASM schreiben möchte, wie sieht denn dann der Code aus.
Delphi-Quellcode:
function ASM_StringTest(s: String):String;
begin
Result:= s;
end;
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.