VAR
Słowo VAR
rozpoczyna sekcję deklaracji zmiennych.
var
label: type;
label: type = value;
var
a: word;
b: byte = 1;
c: Boolean = true;
s: string = 'Atari';
tb: array [0..3] of byte = (0,1,2,3);
VOLATILE
Modyfikator VOLATILE
oznacza zmienną jako tzw. ulotną. Oznaczenie jako VOLATILE
powoduje wyłączenie optymalizacji kodu wynikowego dla tej zmiennej,
jest to przydatne w przypadku rejestrów sprzętowych których wartości mogą ulegać zmianie przy każdym kolejnym odczycie.
var
[volatile] joy : byte absolute $ff08;
pio : byte absolute $fd30;
begin
repeat
pio := $ff;
joy := 2;
if (joy xor $ff) = 1 then writeln('UP');
until false;
end.
ABSOLUTE
Modyfikator ABSOLUTE
pozwala ustalić adres w pamięci dla zmiennych VAR
.
var
a: byte absolute $0600;
tb: array [0..255] of byte absolute $a000;
tab: array [0..3] of byte;
v: integer absolute tab;
procedure test(var buf);
var ptr: PByte absolute buf;
REGISTER
Modyfikator REGISTER
ustala adres pamięci dla zmiennych VAR
na stronie zerowej (maksymalnie można przydzielić 16 bajtów).
var
a: byte register;
c: integer register;
UWAGA:
Z tego samego obszaru 16 bajtów strony zerowej korzysta kompilator alokując tam swoje programowe rejestryEDX
ECX
EAX
dlatego użycie modyfikatoraREGISTER
nie jest możliwe kiedy procedura lub funkcja też używaREGISTER
.
procedure test(a,b,c: integer); register;