Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Premenné a návestia

Premenné aj návestia sú symbolické adresy. Prekladač ich chápe ako offset dátového objektu, resp. inštrukcie v príslušnom segmente.

Premenné

Premenné definujeme pomocou direktív DB, DW, DD, DF, DP, DQ a DT, ktoré vyhradzujú premenným miesto v pamäti a zároveň im prideľujú hodnotu. Deklarácia premenných má tvar:

[meno_premennej]  Dx výraz [,výraz] ,

kde x je jedno z písmen B, W, D, F, P, Q, T. (Hranaté zátvorky označujú nepovinný prvok.)

Direktívy prideľujú pamäť v jednotkách, ktoré sú určené druhým písmenom direktívy (pozri tab. 1). Zároveň direktíva určuje typ premennej. Jedna direktíva môže prideliť jednu alebo viacej jednotiek (ak za Dx nasleduje viacej výrazov). Ak nie je uvedené meno premennej, direktíva len inicializuje časť pamäti, t.j. uloží do pamäti dané hodnoty, ale adresu pamäti nepriradí žiadnej premennej. Výrazom môže byť jeden z nasledujúcich prvkov:

  1. číselný výraz obsahujúci konštanty,
  2. adresový výraz,
  3. znakový výraz,
  4. znak ?, čo znamená, že direktíva pridelí premennej jednotku pamäti, ale neinicializuje ju (obsah slabiky bude nedefinovaný),
  5. konštrukcia

    n dup (výraz [,výraz] )

    pre n-násobnú inicializáciu rovnakou hodnotou uvedenou v zátvorke. Výrazom môže byť prvok a), d) alebo e).

Tabuľka 1
Direktívy definujúce premenné
Direktíva Veľkosť pridelenej pamäti v bajtoch Typ premennej Do premennej môžeme uložiť
DB 1 byte Celé číslo so znamienkom v rozsahu <-128; 127>
Celé číslo bez znamienka v rozsahu <0; 255>
Znak
DW 2 word Celé číslo so znamienkom v rozsahu <-32 768; 32 767>
Celé číslo bez znamienka v rozsahu <0; 65 535>
16-bitový offset
DD 4 dword Celé číslo so znamienkom v rozsahu <-231; 231-1>
Celé číslo bez znamienka v rozsahu <0; 232-1>
Reálne číslo v jednoduchej presnosti v rozsahu <1.5E-45; 3.4E38>1
Far pointer v 16-bitovom režime, t.j. adresa segment:offset (16-bitový)
32-bitový offset
DP
DF
6 pword
fword
Celé číslo so znamienkom v rozsahu <-247; 247-1>
Celé číslo bez znamienka v rozsahu <0<; <248-1>
Far pointer v 32-bitovom režime, t.j. adresa segment:offset (32-bitový)
DQ 8 qword Celé číslo so znamienkom v rozsahu <-263; 263-1>
Celé číslo bez znamienka v rozsahu <0; 264-1>
Reálne číslo v dvojnásobnej presnosti v rozsahu <5.0E-324; 1.7E308>
DT 10 tbyte Celé číslo so znamienkom v rozsahu <-279; 279-1>
Celé číslo bez znamienka v rozsahu <0; 280-1>
Reálne číslo v rozšírenej presnosti v rozsahu <3.4E-4932; 1.1E4932>

Nasledujú príklady jednotlivých direktív. Všimnite si, že čísla sa do pamäti ukladajú v obrátenom poradí slabík. Preto adresa premennej ukazuje na najnižšiu slabiku čísla a vyššie slabiky čísla sa ukladajú postupne do slabík pamäti s vyššími adresami. Direktíva DT uloží desiatkové číslo v zhustenom formáte BCD (každú číslicu zobrazí v 4 bitoch). Záporné číslo BCD má v najvýznamnejšom bite hodnotu 1.

Príklady

.data                      ; obsahy bajtov od offsetu 4069D0h
Jedna DB –1,12+1           ; FF 0D
      DB ’abcd’            ; 61 62 63 64
      DB 3 dup(?)          ; ?? ?? ??
      DW –32768            ; 00 80
      DD 0.3               ; 9A 99 99 3E
2
      DD 0ABCDEF23h        ; 23 EF CD AB
      DD Jedna             ; D0 69 40 00
3
      DT 10                ; 0A 00 00 00 00 00 00 00 00 00


1 Reálne čísla môžu byť kladné aj záporné; rozsah platí pre absolútnu hodnotu čísla.

2 Reálne čísla sa ukladajú v štandardnom formáte IEEE.

3 4069D0h je offset premennej Jedna. .

Hore

Načo je vám jazyk symbolických adries?

Architektúra moderných procesorov

Registre

Spôsoby adresovania

Premenné a návestia

Symbolické konštanty

Inštrukčný súbor

Segmentové direktívy

Moduly

Služby operačného systému MS-DOS

Služby operačného systému Windows 95/98/NT/XP

Systémová úroveň vstupu a výstupu

Prostriedky pre prípravu programu

Spôsoby adresovania | Návestia
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4.
Otázky a pripomienky môžete poslať autorke.
Naposledy upravené 28.9.2015.