Operandi so običajno, čeprav ne vedno, podani z naslovi, na katerih se nahajajo. Za načine, s katerimi je v ukazu podana informacija o operandih, se je zato uveljavil izraz naslavljanje (angl. addressing). Število različnih načinov naslavljanja je pri današnjih računalnikih pogosto veliko, tudi 10 ali več. Zanje uporabljajo proizvajalci razna imena, ki so neredko različna za v bistvu enake načine.
Takojšnje naslavljanje
Najpreprostejši način za določanje operanda dobimo, če ukaz v polju za določanje operanda vsebuje kar operand sam in ne informacije, ki bi opisovala, kje operand je. Ta način imenujemo takojšnje naslavljanje. Operanda, ki je določen s takojšnjim naslavljanjem, pravimo takojšnji operand.
Takojšnje naslavljanje ne zahteva nobenega dodatnega dostopa do pomnilnika in je v tem pogledu najhitrejše. V principu je sicer na mnogih računalnikih možno s programom spreminjati vrednost takojšnjega operanda, vendar to v bistvu pomeni spreminjanje ukaza. To imamo danes za slab način programiranja tako, da se takojšnji operandi uporabljajo praktično izključno za konstante.
Na nekaterih računalnikih je dolžina operandnega polja razmeroma kratka in omejuje velikost operandov. Na drugih pa imamo ukaze z različno dolgimi operandnimi polji, ki omogočajo uporabo takojšnjih operandov brez omejitev.
Neposredno naslavljanje
Neposredno (angl. direct) naslavljanje je drug primer preprostega načina za določanje operanda. V polju za določanje operanda se nahaja naslov, ki določa kje operand je. Ker se operand lahko nahaja v različnih delih računalnika, imamo pravzaprav opraviti z več vrstami neposrednega naslavljanja.
Kadar je operand v glavnem pomnilniku, imamo tako imenovano pomnilniško neposredno naslavljanje. Ukaz vsebuje pomnilniški naslov lokacije, na kateri se nahaja operand.
Neposredno naslavljanje te vrste zahteva en dodaten nastop do pomnilnika in je v tem pogledu počasnejše od takojšnjega. Na računalnikih z velikim naslovnim prostorom je potrebnih precej bitov za naslov, kar pomeni dolge ukaze. Pri naslovih, ki so krajši od celotnega pomnilniškega naslova, manjkajoči zgornji biti običajno prevzamejo vrednost 0 ali 1.
V nasprotju s takojšnjim naslavljanjem, tu spreminjanje vrednosti operanda ne zahteva spreminjanje ukaza. Še vedno pa je potrebno spremeniti ukaz, če želimo spremeniti naslov operanda.
Kadar je operand v enem od registrov CPE, imamo tako imenovano registrsko neposredno naslavljanje. Naslov registra je lahko podan eksplecitno. Lahko pa je podan tudi implicitno v sami operacijski kodi. Praktično vsi današnji računalniki imajo registre in zato tudi ukaze z registrskim naslavljanjem.
Tretja vrsta neposrednega naslavljanja je vhodno–izhodno neposredno naslavljanje. Naslov določa enega od registrov v določeni vhodno/izhodni napravi.
Vse tri vrste neposrednega naslavljanja se pravzaprav razlikujejo samo v tem, da se naslov operanda nanaša na tri različne naslovne prostore v računalniku. Ti trije prostori so:
Ker so velikosti teh treh prostorov različne, je različna tudi dolžina potrebnih naslovov. Očitno je v tem pogledu zaradi majhnega števila registrov najugodnejše registrsko naslavljanje.
Posredno naslavljanje
Posredno (angl. indirect) naslavljanje je podobno neposrednemu v tem, da polje za določanje operanda vsebuje naslov. Vendar ta naslov ni naslov operanda, temveč naslov pomnilniške lokacije ali registra, v katerem se nahaja naslov operanda.
Kadar je naslov operanda v glavnem pomnilniku, imamo opraviti s pomnilniškim posrednim naslavljanjem. Na nekaterih računalnikih je to naslavljanje lahko večnivojsko tako, da naslov v ukazu ne podaja vedno lokacije z naslovom operanda, temveč lahko pomeni lokacijo z naslovom naslova, ta pa spet lahko pomeni lokacijo z naslovom naslova do poljubne globine. Pri teh računalnikih je v naslovu poseben bit (tako imenovani posredni bit), ki pove,ali je dani naslov že naslov operanda ali pa naslov naslova operanda.
Kadar je naslov operanda v enem od registrov CPE, imamo registrsko posredno naslavljanje. Razmerje med registrskim in pomnilniškim posrednim naslavljanjem je približno enako kot med registrskim in pomnilniškim neposrednim naslavljanjem.
Indeksno naslavljanje
Najpogostejšii vrsti posrednega registrskega naslavljanja sta indeksno in/ali bazno naslavljanje. Vsebino indeksnega baznega registra označujemo z konstanto, ki se imenuje odmik (angl. displacement):
naslov = [X] + odmik
kjer je z [X] označena vsebina indeksnega registra.
Izračunanemu naslovu pravimo dejanski naslov (angl. effective address). Nekateri računalniki imajo ukaze z različno dolgimi polji za odmik, pogosto pa tudi ukazi brez odmika.
Glavno področje uporabe posrednega naslavljanja je, pri delu s podatkovnim strukturami kot so polja, zapisi in seznami. Elementarni podatki v teh strukturah se pogosto obdelujejo zaporedoma. Ker je uporaba teh ukazov tesno povezana z naslavljanjem, so pri nekaterih računalnikih ti dve operaciji vključili v samo računanje dejanskega naslova. Takemu načinu naslavljanja pravimo naslavljanje s samodejnim indeksiranjem (angl. autoindexing). V splošnem razlikujemo dve vrsti samodejnega indeksiranja. Pri tako imenovanem pred-indeksiranju se vsebina indeksnega registra spremeni pred računanjem dejanskega naslova. Pri po-indeksiranju se vsebina spremeni po računanju. Poleg tega imamo pri obeh vrstah možno spreminjanje vsebine registra navzgor ali navzdol.
Na skoraj vseh računalnikih se pojavlja potreba po premeščanju programov v glavnem pomnilniku. To velja še posebej za tiste računalnike, ki delujejo na tako imenovani multiprogramski način. Pri tem načinu se programi prenašajo v in iz glavnega pomnilnika v skladu z njihovimi potrebami in z zahtevami operacijskega sistema. Če nek program napisan tako, da se lahko izvaja samo na točno določenih naslovih, je to huda omejitev, ki povzroča težave pri izkoriščanju razpoložljivega glavnega pomnilnika.
Programe, ki se lahko izvajajo na poljubnih naslovih, imenujemo pozicijsko neodvisni programi. Na nekaterih računalnikih obstajajo načini naslavljanja, ki omogočajo napisati pozicijsko neodvisne programe.
Namesto ukazov s stalnimi ali kot jim tudi pravimo, absolutni naslovi, moramo uporabljati samo ukaze v katerih se pomnilniški naslovi računajo relativno na neko vrednost. Načine naslavljanja, ki tvorijo dejanske pomnilniške naslove po tem pravilu, imenujemo relativni načini naslavljanja.
SERŠ Maribor, Strokovna gimnazija, leto: 2001, avtor: Damjan Štelcar