Sign in Join
Wiki copytemporary

Revision 1 of 1, by Trev on 2-9-2020. The page as it is now.

Asm/de

Zurück zu den reservierten Wörtern.

Das reservierte Wort Asm gehört zum Inline Assembler. Es leitet im Pascalcode einen Abschnitt mit Assemblercode ein.

Beispiel, wie der Assemblercode im Programm aufgerufen wird:

pascal
asm// Hier steht der Assemblercode
  // Hier steht der Assemblercode
END;

Beispiel für die Verwendung von Inline Assembler:

pascal
var
  intWert: Integer;
  intErgebnis : Integer;

begin
  intWert := ...;
  // Wird von Lazarus / Free Pascal bei Intel x86 Prozessoren benötigt:
  {$ASMMODE intel}
  asm// weist dem Register EAX den Wert der Variablen intWert zu// addiere den Binärwert 110 (der entsprechende Dezimalwert ist 6)// subtrahiere den Dezimalwert 2// weist der Variablen intErgebnis den Inhalt des Registers EAX zu
    MOV EAX, intWert      // weist dem Register EAX den Wert der Variablen intWert zu
    ADD EAX, 110B         // addiere den Binärwert 110 (der entsprechende Dezimalwert ist 6)
    SUB EAX, 2            // subtrahiere den Dezimalwert 2
    MOV intErgebnis, EAX  // weist der Variablen intErgebnis den Inhalt des Registers EAX zu
  END;
  ... := IntToStr(intErgebnis);
end;

Beispiel für reine Assembler-Procedure/Function:

pascal
{$ASMMODE intel}
procedure nop; assembler;
asm
  nop
END;

From the Free Pascal wiki, page "Asm/de", as it stood on 2020-02-09 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.