Sign in Join
Wiki copytemporary

Label/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Zurück zu den [[Reserved words/de|reservierten Wörtern]].
22
33# Label
44
55## Reines Pascal
66
7-Das reservierte Wort <b>label</b> definiert einen Abschnitt mit einer oder mehreren Sprungmarken.
7+Das reservierte Wort label definiert einen Abschnitt mit einer oder mehreren Sprungmarken.
88
99Das Programm springt mit dem goto Befehl zu einer Sprungmarke und arbeitet ab dieser Sprungmarke weiter.
1010
1111Beispiel für Deklaration einer Sprungmarke und der Verwendung des Sprungbefehls:
1212
1313``` pascal
1414var
1515 blnWahr: Boolean;
1616
1717label
1818 Sprungmarke;
1919
2020begin
2121 ...
2222 if blnWahr = True then Goto Sprungmarke;
2323 ...
2424Sprungmarke:
2525 ...
2626end;
2727```
2828
2929## Assembler
3030
3131Wen 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.
3232
3333``` pascal
3434{$asmmode intel}
3535
3636 // Innerhalb einer reinen Assembler Procedure.
3737 // Deklaration nicht erforderlich.
3838 procedure asm1; assembler;
3939 asm
4040 @L1:
4141 Nop
4242 Jmp @L1
4343 end;
4444
4545 // Gemischte Procedure, Deklaration nicht erforderlich.
4646 procedure asm2;
4747 begin
4848 WriteLn('Hallo');
4949 asm
5050 @L2:
5151 Nop
5252 Jmp @L2
5353 end;
5454 end;
5555
5656 // Es darf deklariert werden.
5757 // Dafür kann auf das @ verzichtet werden.
5858 procedure asm3; assembler;
5959 label
6060 L3;
6161 asm
6262 L3:
6363 Nop
6464 Jmp L3
6565 end;
6666
6767 // Es muss deklariert werden, da der asm-Block verlassen wird.
6868 procedure asm4;
6969 label
7070 L4;
7171 begin
7272 L4:
7373 asm
7474 Nop
7575 Jmp L4
7676 end;
7777 end;
7878```
7979
8080## Assembler nicht Intel
8181
8282**@** funktioniert nur mit Intel-Assembler, bei AVR-Assembler muss man zB. ein **.L**xxx anstelle von **@** nehmen.
8383
8484Beispiel AVR:
8585
8686``` pascal
8787 asm
8888 .L1:
8989 Nop
9090 Jmp .L1
9191 end;
9292```
9393
9494> **Note:** Die Beispiele erzeugen eine Endlosschleife.
9595
9696> **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 !**
9797
9898---
9999*From the Free Pascal wiki, page "Label/de", as it stood on 2020-02-18 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](/wiki-contact).*

Back to history