Címzési eljárások

3.1. Közvetlen címzési módok (direkt)

3.2. Közvetett címzési mód (indirekt)

3.3. Közvetlen adatcímzés

3.4. Indexelés

Ellenőrző kérdések

3. Címzési eljárások

Az utasítások címrésze általában nem az operandusok tényleges címét tartalmazza, azt a processzornak ki kell számítani. Ezt az eljárást címmódosítási eljárásnak nevezik. A processzor általában nem képes a teljes tár közvetlen megcímzésére, ugyanis a tárak mérete ezt nem teszi lehetõvé. A teljes tárat ezért a processzor szegmensekre osztja. A szegmensek kezdete rögzített, szegmensbekezdésnek, vagy szegmenscímnek nevezik (i8088 esetében minden szegmens 16-tal osztható címen kezdõdik). Az egyes adatok elérésére szükség van egy eltolási címre, amely a szegmensen belüli rekeszcímet mutatja meg. A tényleges cím a következõképpen áll elõ:

cím = N * báziscím + eltolás

,ahol N egy szegmens mérete

A báziscímet a processzor vagy a bázisregiszterben, vagy a szegmensregiszterben tárolja.

3.1. Közvetlen címzési módok (direkt)

Abszolút címzési mód. Az utasítás címrészében az operandus valódi, pontos címe található. A cím vonatkozhat a memóriára, vagy a processzor valamelyik regiszterére. Regisztercímzés esetén kisebb hosszúságú címrészre van szükség, mint memóriacímzésnél. Az így történõ címzés esetén a program és az adatok a memóriában nem helyezhetõk át, mivel az áthelyezéssel változik a cím. Ez elsõsorban vezérlésátadó utasítások esetében okoz gondot.

Relatív címzési mód. Az utasítás címrésze az operandus valamilyen alapcímhez viszonyított címét tartalmazza. Ez lehet adatmezõ kezdõcíme, társzegmens kezdõcíme, program kezdetének címe, vagy magának az utasításnak a tárolóbeli címe. Ez az alapcím. A tényleges, valós címet az alapcím és a relatív cím összeadásával állítja elõ a processzor.

Abszolút és relatív címzési módok

3.2. Közvetett címzési mód (indirekt)

Indirekt címzésnél nem az operandus címe található az utasítás címrészében, hanem annak a tárolóhelynek a címe, ahol az operandus címét megtalálja a processzor. Egyes processzorok esetében ez a címzési mód lehet többszintû is. Az indirekt címzéshez a processzor használhat memóriabeli tárolóhelyet, vagy valamelyik saját regiszterét is.

Indirekt címzési mód

3.3. Közvetlen adatcímzés

Közvetlen adatcímzés alatt azt értjük, amikor az utasítás operandus részében nem az operandus címe, hanem maga az operandus található. Ez megszabja az operandusok legnagyobb értékét (az utasítás címrészének korlátozottsága miatt), ezért elsõsorban kis értékû konstansokkal való mûveletvégzéseknél alkalmazható.

Közvetlen adatcímzés

3.4. Indexelés

Adatsorozatokon való mûveletvégzés esetén alkalmazandó az úgynevezett indexelt címzés. Ennél a módszernél az utasítás címrészében az adatsorozat elsõ elemének a címe található és a címregiszterben (IX) található az ettõl való eltérés, azaz hogy az adatsorozat hányadik elemével kell az utasításban megadott mûveletet elvégezni. Egyes processzorok esetében alkalmaznak olyan megoldásokat is, ahol az adat elõkeresése után az indexregiszter tartalma automatikusan növekszik, vagy csökken, így az adatsorozaton való mûveletvégzés egyszerûbbé válik. Ezt autoindexelésnek nevezik. Az indexelt címzési mód nagyban hasonlít a relatív címzésre, a tényleges cím az utasítás címrészének és az indexregiszternek az összeadásával áll elõ.

Indexelés

Az Intel processzorok címzési módjait a MODE byte írja le. A címzési módok mindegyike indirekt, vagy indirekt relatív címzési mód. Az egyik operandus helyét a MODE byte MOD és R/M mezõi, a másikat a REG mezõ tartalma határozza meg. A memóriabeli helyet, ahol a mûveletvégzéshez szükséges adat található, általában ezen operandusok összege adja. Az operandusok mindegyike egy-egy regiszterben található.

A fejezethez kapcsolódó ellenõrzõ kérdések

3.1. Ismertesse a közvetlen címzési módokat?

Válasz

3.2. Ismertesse a közvetett címzési módot?

Válasz

3.3. Mit értünk közvetlen adatcímzés alatt?

Válasz

3.4. Milyen címzési mód az indexelés és hol alkalmazzák?

Válasz