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 rejestry EDX ECX EAX dlatego użycie modyfikatora REGISTER nie jest możliwe kiedy procedura lub funkcja też używa REGISTER.

procedure test(a,b,c: integer); register;