Einzelnen Beitrag anzeigen

Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [ASM] Lange Strings als Function - Wert zurückgeben

  Alt 19. Jan 2008, 01:27
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.
  Mit Zitat antworten Zitat