Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Atribúty premenných a návestí

Premenné a návestia sú charakterizované atribútmi

  • segment – zodpovedá bázovej adrese segmentu, v ktorom je definovaná premenná (návestie);
  • offset premennej (návestia) v segmente, v ktorom je definovaná;
  • typ.

Vo výrazoch môžeme používať operátory, ktoré vracajú alebo prepisujú hodnoty týchto atribútov (tab. 2).

Tabuľka 2
Operátory
Operátor Význam
seg Vráti hodnotu atribútu segment
offset Vráti hodnotu atribútu offset
type Vráti hodnotu podľa typu premennej (návestia):

1
2
4
6
6
8
10
-1
-2
byte
word
dword
fword
pword
qword
tbyte
near
far
length Vráti počet jednotiek pamäti pridelených premennej
size Vráti length*type
ptr Mení typ premennej.

Ako vidieť z tabuľky, operátor type v spojení s premennou vráti počet bajtov, ktoré zaberá jednotka pamäti pridelená premennej direktívou Dx. Hodnota, ktorú vráti operátor, sa nemení, aj keď je premennej pridelených viacej jednotiek (ak je premennou povedzme vektor alebo reťazec).

Operátor length vráti hodnotu väčšiu ako 1 len v prípade viacnásobnej deklarácie s použitím operátora dup.

Príklady

Hodnota DW 1234h
Post DB 5,6,7
Pole DW 100 dup(0)

mov al,type Hodnota   ; al := 2
mov bl,type Post      ; bl := 1
mov cl,type Pole      ; cl := 2
mov ah,length Hodnota ; ah := 1
mov bh,length Post    ; bh := 1
mov ch,length Pole    ; ch := 100
mov dx,size Pole      ; dx := 200

Operátor ptr dovoľuje napr. pristupovať k jednotlivým bajtom premennej typu word, alebo naopak, považovať samostatne definované bajty za jedno slovo:

Hodnota DW 1234h
Cislo DB 1,2

mov al,byte ptr [Hodnota] ; al := 34h
mov bx,word ptr [Cislo]   ; bx := 201h

Operátor ptr je nevyhnutný v situáciách, kedy prekladač nevie posúdiť, s akým typom pamäťových operandov inštrukcia pracuje. Napr. v inštrukcii

mov [ebx],1

nie je jasné, či chceme uložiť 1 do bajtu alebo slova, ktorého adresa je v registri EBX. Takúto inštrukciu prekladač považuje za chybnú a vyžaduje špecifikáciu typu pamäťového operandu:

mov byte ptr [ebx],1

alebo

mov word ptr [ebx],1

Medzi operátory prepisujúce hodnoty atribútov by sme mohli zaradiť aj operátor this, ktorý definuje premennú alebo návestie daného typu na danom mieste programu. Používa sa v spojení s direktívou EQU vo forme príkazu

identifikátor EQU this typ 1

Pomocou tohto operátora môžeme pristupovať k už definovanému objektu pod iným menom s iným typom bez toho, aby sme v inštrukcii museli použiť prepis typu, napr.

Hodnota EQU this word
Cislo DB 1,2

mov al,[Cislo]   ; al := 1
mov bx,[Hodnota] ; bx := 201h


1 Direktíva EQU v spojení s operátorom this má rovnaký význam ako direktíva LABEL, tzn. uvedený zápis je ekvivalentný so zápisom: identifikátor LABEL typ.

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

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