Načini naslavljanja

Kaj naj bi se naučili v tem poglavju?

Spoznali naj bi naslednje pojme: načini naslavljanja : vsebovano, takojšnje, neposredno, posredno, relativno (na programski števnik in indeksni register)

Zakaj govorimo o naslavljanju?

Dokaj razumljivo je, da mora koda ukaza vsebovati, kaj naj računalnik sploh naredi in nad katerim podatkom naj to naredi.  Vendar moramo povedati še, kako pridemo do tega podatka: Podatek se namreč lahko nahaja v nekem od delovnih registrov računalnika, lahko pa je tudi kje v pomnilniku. In ne nazadnje je lahko skrit kar v samem ukazu, pravzaprav takoj za njim.

O tem, kako pridemo do podatka, govori takoimenovani način naslavljanja. Ta je zakodiran v nekaj bitih samega ukaza. Tipično imamo naslednje možnosti:


Opomba 1:
Relativno naslavljanje je podobno indeksnemu. Razlika je le v tem, da si pri indeksnem pomagamo s takoimenovanim indeksnim registrom, pri relativnem pa se "naslonimo" na programski števec.

Opomba 2:
Možne so tudi različne kombinacije in dopolnitve. Včasih govorimo o "indirektnem " naslavljanju. To lahko pomeni, da vzamemo vsebino nekega registra in jo uporabimo kot naslov podatka v pomnilniku. V nekaterih primerih lahko pred ali po naslavljanju registre avtomatsko povečujemo ali pomanjšujemo (preincrement, postdecrement,..). To je zelo uporabno za delo s polji. Tipičen primer registra, ki tako deluje, je tudi "kazalec na sklad " (stack pointer, SP).


Naslavljanje pri procesorjih Intel

Še enkrat poglejmo, kako je to pri Intelovih procesorjih Pentium:

 

reg – registrski način naslavljanja, 32-bitni register
reg8 - registrski način naslavljanja, 8-bitni register
r/m – splošni, 32 bitni način naslavljanja
r/m8 - splošni, 8 bitni način naslavljanja
immed - 32-bitni takojšnji (immediate) naslov je del ukaza
immed8 - 8-bitni takojšnji (immediate) naslov je del ukaza
m – Simbol v ukazu je dejanski naslov

 

 

Naslavljanje pri našem poenostavljenem računalniku

In kakšne načine naslavljanja imamo pri našem poenostavljenem računalniku?

Imamo lahko takojšnje naslavljanje (podatek sledi samemu ukazu) in absolutno naslavljanje (podatek je na pomnilniški lokaciji, katere naslov je v drugem delu ukaza).


Ukaz prikazi kot:  mnemonik, desetiško, dvojiško

Korak na naslednji ukaz
Reset programskega števca  na  začetek