Difference between revisions of "Absolute/de"
m (Fixed syntax highlighting; fixed wiki markup) |
|||
Line 55: | Line 55: | ||
66 | 66 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | ==Direkter Speicherzugriff== | ||
+ | '''absolute''' kann man auch verwenden, um direkte mit einem Bezeichner auf eine Speicherzelle zu zeigen. | ||
+ | |||
+ | ZB. einen direkten Zugiff auf ein GPIO-Port eines AVRs. | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | var | ||
+ | LED_PORT: Byte absolute $38; | ||
+ | LED_DDR: Byte absolute $37; | ||
+ | |||
+ | begin | ||
+ | LED_DDR := $FF; | ||
+ | LED_PORT := $FF; | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Unter DOS kann man so auf das erste Zeichen im Video-RAM zugreifen. | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | var | ||
+ | Zeichen: Byte absolute $B800:$0000; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Unter moderen OS wird solch eine Zugriff vom OS blockiert. | ||
[[Category:Reserved words/de]] | [[Category:Reserved words/de]] |
Latest revision as of 17:25, 29 January 2020
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
русский (ru) │
Zurück zu den reservierten Wörtern.
Absolute
Bei dem Modifier Absolute zeigen beide Variablen auf den selben Speicherbereich. Der in der Variablen gespeicherte Wert, wird von der Variablen solange richtig angezeigt, wie der gespeicherte Inhalt der Variablen im Wertebereich der ausgebenden Variable ist.
Var
sintI: ShortInt;
lintI: LongInt absolute sintI;
begin
// korrekte Anzeige
lintI := 20;
WriteLn(lintI: 8, sintI: 8); // Anzeige: 20 20
// unsinnige Anzeige
lintI := 2000;
WriteLn(lintI: 8, sintI: 8); // Anzeige: 2000 -48
end.
--Olaf 17:08, 19 October 2012 (UTC)
Ein praktisches Anwendungsbeispiel:
var
rcol: record
r, g, b: byte;
end;
acol: array[0..2] of byte absolute rcol; // Gleicher Speicherbereich, wie rcol.
begin
acol[0] := 22;
acol[1] := 44;
acol[2] := 66;
WriteLn(rcol.r);
WriteLn(rcol.g);
WriteLn(rcol.b);
end.
Ausgabe:
22
44
66
Direkter Speicherzugriff
absolute kann man auch verwenden, um direkte mit einem Bezeichner auf eine Speicherzelle zu zeigen.
ZB. einen direkten Zugiff auf ein GPIO-Port eines AVRs.
var
LED_PORT: Byte absolute $38;
LED_DDR: Byte absolute $37;
begin
LED_DDR := $FF;
LED_PORT := $FF;
...
Unter DOS kann man so auf das erste Zeichen im Video-RAM zugreifen.
var
Zeichen: Byte absolute $B800:$0000;
Unter moderen OS wird solch eine Zugriff vom OS blockiert.