Sign in Join
Wiki copytemporary

Label/de: what changed

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

Title: Label/de

OldNewLine
1+Zurück zu den [[Reserved words/de|reservierten Wörtern]].
2+
3+# Label
4+
5+## Reines Pascal
6+
7+Das reservierte Wort <b>label</b> definiert einen Abschnitt mit einer oder mehreren Sprungmarken.
8+
9+Das Programm springt mit dem goto Befehl zu einer Sprungmarke und arbeitet ab dieser Sprungmarke weiter.
10+
11+Beispiel für Deklaration einer Sprungmarke und der Verwendung des Sprungbefehls:
12+
13+``` pascal
14+var
15+ blnWahr: Boolean;
16+
17+label
18+ Sprungmarke;
19+
20+begin
21+ ...
22+ if blnWahr = True then Goto Sprungmarke;
23+ ...
24+Sprungmarke:
25+ ...
26+end;
27+```
28+
29+## Assembler
30+
31+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.
32+
33+``` pascal
34+{$asmmode intel}
35+
36+ // Innerhalb einer reinen Assembler Procedure.
37+ // Deklaration nicht erforderlich.
38+ procedure asm1; assembler;
39+ asm
40+ @L1:
41+ Nop
42+ Jmp @L1
43+ end;
44+
45+ // Gemischte Procedure, Deklaration nicht erforderlich.
46+ procedure asm2;
47+ begin
48+ WriteLn('Hallo');
49+ asm
50+ @L2:
51+ Nop
52+ Jmp @L2
53+ end;
54+ end;
55+
56+ // Es darf deklariert werden.
57+ // Dafür kann auf das @ verzichtet werden.
58+ procedure asm3; assembler;
59+ label
60+ L3;
61+ asm
62+ L3:
63+ Nop
64+ Jmp L3
65+ end;
66+
67+ // Es muss deklariert werden, da der asm-Block verlassen wird.
68+ procedure asm4;
69+ label
70+ L4;
71+ begin
72+ L4:
73+ asm
74+ Nop
75+ Jmp L4
76+ end;
77+ end;
78+```
79+
80+## Assembler nicht Intel
81+
82+**@** funktioniert nur mit Intel-Assembler, bei AVR-Assembler muss man zB. ein **.L**xxx anstelle von **@** nehmen.
83+
84+Beispiel AVR:
85+
86+``` pascal
87+ asm
88+ .L1:
89+ Nop
90+ Jmp .L1
91+ end;
92+```
93+
94+> **Note:** Die Beispiele erzeugen eine Endlosschleife.
95+
96+> **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 !**
97+
98+---
99+*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