Asm/de: Difference between revisions
From Free Pascal wiki
Jump to navigationJump to search
mNo edit summary |
m (Fixed syntax highlighting) |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Asm}} | {{Asm}} | ||
Zurück zu den [[Reserved words/de|reservierten Wörtern]]. | Zurück zu den [[Reserved words/de|reservierten Wörtern]]. | ||
Das reservierte Wort '''Asm''' gehört zum Inline Assembler. Es leitet im Pascalcode einen Abschnitt mit Assemblercode ein. | 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: | Beispiel, wie der Assemblercode im Programm aufgerufen wird: | ||
<syntaxhighlight> | |||
<syntaxhighlight lang="pascal"> | |||
asm | asm | ||
// Hier steht der Assemblercode | // Hier steht der Assemblercode | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Beispiel für die Verwendung von Inline Assembler: | Beispiel für die Verwendung von Inline Assembler: | ||
<syntaxhighlight> | |||
<syntaxhighlight lang="pascal"> | |||
var | var | ||
intWert: Integer; | intWert: Integer; | ||
Line 31: | Line 33: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
- | Beispiel für reine Assembler-Procedure/Function: | ||
{ | |||
<syntaxhighlight lang="pascal"> | |||
{$ASMMODE intel} | |||
procedure nop; assembler; | |||
asm | |||
nop | |||
end; | |||
</syntaxhighlight> |
Latest revision as of 09:34, 9 February 2020
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
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:
asm
// Hier steht der Assemblercode
end;
Beispiel für die Verwendung von Inline Assembler:
var
intWert: Integer;
intErgebnis : Integer;
begin
intWert := ...;
// Wird von Lazarus / Free Pascal bei Intel x86 Prozessoren benötigt:
{$ASMMODE intel}
asm
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:
{$ASMMODE intel}
procedure nop; assembler;
asm
nop
end;