Difference between revisions of "Label/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category included in page template)
 
Line 1: Line 1:
 
{{label}}
 
{{label}}
<br>
+
 
Zurück zu den [[Reserved words/de|reservierten Wörtern]].<br>
+
 
 +
Zurück zu den [[Reserved words/de|reservierten Wörtern]].
 +
 
 +
 
 
=Label=
 
=Label=
 +
 
==Reines Pascal==
 
==Reines Pascal==
<br>
+
 
Das reservierte Wort <b>label</b> definiert einen Abschnitt mit einer oder mehreren Sprungmarken.<br>
+
Das reservierte Wort <b>label</b> definiert einen Abschnitt mit einer oder mehreren Sprungmarken.
Das Programm springt mit dem goto Befehl zu einer Sprungmarke und arbeitet ab dieser Sprungmarke weiter.<br>
+
 
<br>
+
Das Programm springt mit dem goto Befehl zu einer Sprungmarke und arbeitet ab dieser Sprungmarke weiter.
Beispiel für Deklaration einer Sprungmarke und der Verwendung des Sprungbefehls:<br>
+
 
<syntaxhighlight>
+
 
 +
Beispiel für Deklaration einer Sprungmarke und der Verwendung des Sprungbefehls:
 +
 
 +
<syntaxhighlight lang=pascal>
 
var
 
var
 
   blnWahr: Boolean;
 
   blnWahr: Boolean;
Line 24: Line 31:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 07:24, 28 October 2012 (UTC)
 
  
 
==Assembler==
 
==Assembler==
 +
 
Wen ein Label innerhalb eines asm-Blockes verwendet wird, muss ein Label '''nicht''' zwingend deklariert werden, aber es muss ein '''@''' vorangestellt werden. Wird aber der asm-Block verlassen, dann muss zwingend das Label deklariert werden.
 
Wen ein Label innerhalb eines asm-Blockes verwendet wird, muss ein Label '''nicht''' zwingend deklariert werden, aber es muss ein '''@''' vorangestellt werden. Wird aber der asm-Block verlassen, dann muss zwingend das Label deklariert werden.
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
{$asmmode intel}
 
{$asmmode intel}
  
Line 77: Line 82:
 
   end;
 
   end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
==Assembler nicht Intel==
 
==Assembler nicht Intel==
 +
 
'''@''' funktioniert nur mit Intel-Assembler, bei AVR-Assembler muss man zB. ein '''.L'''xxx anstelle von '''@''' nehmen.
 
'''@''' funktioniert nur mit Intel-Assembler, bei AVR-Assembler muss man zB. ein '''.L'''xxx anstelle von '''@''' nehmen.
  
 
Beispiel AVR:
 
Beispiel AVR:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
   asm
 
   asm
 
           .L1:
 
           .L1:
Line 93: Line 101:
  
 
{{Note|Ein guter Pascal Programmierer, kann auf '''Label''' und '''Goto''' verzichten. Man kann (fast) alles mit Schleifen lösen. '''Labels''' machen auch den Code sehr '''unübersichtlich !'''}}
 
{{Note|Ein guter Pascal Programmierer, kann auf '''Label''' und '''Goto''' verzichten. Man kann (fast) alles mit Schleifen lösen. '''Labels''' machen auch den Code sehr '''unübersichtlich !'''}}
 
 
[[Category:Reserved words/de]]
 

Latest revision as of 08:39, 18 February 2020

Deutsch (de) English (en) français (fr) русский (ru)


Zurück zu den reservierten Wörtern.


Label

Reines Pascal

Das reservierte Wort label definiert einen Abschnitt mit einer oder mehreren Sprungmarken.

Das Programm springt mit dem goto Befehl zu einer Sprungmarke und arbeitet ab dieser Sprungmarke weiter.


Beispiel für Deklaration einer Sprungmarke und der Verwendung des Sprungbefehls:

var
  blnWahr: Boolean;

label
  Sprungmarke;

begin
  ...
  if blnWahr = True then Goto Sprungmarke;
  ...
Sprungmarke:
  ...
end;

Assembler

Wen ein Label innerhalb eines asm-Blockes verwendet wird, muss ein Label nicht zwingend deklariert werden, aber es muss ein @ vorangestellt werden. Wird aber der asm-Block verlassen, dann muss zwingend das Label deklariert werden.

{$asmmode intel}

  // Innerhalb einer reinen Assembler Procedure.
  // Deklaration nicht erforderlich.
  procedure asm1; assembler;
  asm
           @L1:
           Nop
           Jmp     @L1
  end;

  // Gemischte Procedure, Deklaration nicht erforderlich.
  procedure asm2;
  begin
    WriteLn('Hallo');
    asm
             @L2:
             Nop
             Jmp     @L2
    end;
  end;

  // Es darf deklariert werden.
  // Dafür kann auf das @ verzichtet werden.
  procedure asm3; assembler;
  label
    L3;
  asm
           L3:
           Nop
           Jmp     L3
  end;

  // Es muss deklariert werden, da der asm-Block verlassen wird.
  procedure asm4;
  label
    L4;
  begin
    L4:
      asm
               Nop
               Jmp   L4
      end;
  end;

Assembler nicht Intel

@ funktioniert nur mit Intel-Assembler, bei AVR-Assembler muss man zB. ein .Lxxx anstelle von @ nehmen.

Beispiel AVR:

  asm
           .L1:
           Nop
           Jmp     .L1
  end;


Light bulb  Hinweis: Die Beispiele erzeugen eine Endlosschleife.
Light bulb  Hinweis: Ein guter Pascal Programmierer, kann auf Label und Goto verzichten. Man kann (fast) alles mit Schleifen lösen. Labels machen auch den Code sehr unübersichtlich !