210 likes | 323 Views
Sz ámítógép architektúra. C ímzésmódok. Operandusok. egy operandus hossza lehet: 1 byte 2 byte (szó) 4 byte egy operandus lehet: az utasítás része regiszterben memóriában az adatszegmensben (címzés a DS szegmensregiszterrel) a veremszegmensben (címzés az SS szegmensregiszterrel)
E N D
Számítógép architektúra Címzésmódok
Operandusok • egy operandus hossza lehet: • 1 byte • 2 byte (szó) • 4 byte • egy operandus lehet: • az utasítás része • regiszterben • memóriában • az adatszegmensben (címzés a DS szegmensregiszterrel) • a veremszegmensben (címzés az SS szegmensregiszterrel) • valamelyik járulékos szegmensben (címzés az ES, FS vagy GS szegmensregiszterrel) Címzésmódok
Közvetlen címzés • Az operandus az utasítás része • Operandus = cím mező • Pl. ADD AX,5 • Adj hozzá 5-öt az akkumulátorhoz • 5 operandus • Nincs memória hivatkozás hogy megkapjuk az operandust • Gyors Címzésmódok
Közvetlen címzésdiagramm Utasítás Opkód Operandus Címzésmódok
Regiszter címzés • Az operandus a cím mező által megadott regiszterben van • Effective address (ea) = R • Példa: ADD AX,BX • Nincs memória hozzáférés • Nagyon gyors végrehajtás • Kevés regiszter • Nagyon kicsi címtartomány • Rövidebb utasítások • Gyorsabb utasítás lehívás Címzésmódok
Utasítás Opkód R regiszter cím Regiszterek Operandus Regiszter címzés diagramm Címzésmódok
Memória operandusok Valós üzemmód: 15 0 15 0 Szegmens szám ·16 + eltolás (offset) Védett üzemmód: 15 0 31 0 Szegmens szelektor eltolás (offset, effective address) Címzésmódok
Effektív cím (1) • Megadható statikus értékként (direkt címzés) • Kiszámítható végrehajtáskor a következő komponensekből: • eltolás – egy 8, 16 vagy 32 bites érték • bázis – egy általános célú regiszter tartalma • index – egy általános célú regiszter tartalma • skálázási tényező – 2, 4 vagy 8, amivel szorozzuk az indexregiszter tatalmát Címzésmódok
Effektív cím (2) • 32 bites regiszterek esetén bármelyik általánoscélú regiszter lehet bázis illetve indexregiszter • Skálázási tényezőt csak 32 bites indexregiszterrel használhatunk • ESP nem használható indexregiszterként • ESP (SP) és EBP (BP) a veremszegmensben határoz meg címet • Más bázisregiszter esetén az adatszegmens az implicit • 16 bites regiszterek használata esetén csak az adott célra szolgáló regiszterek használhatóak bázis ill. indexregiszterként. Címzésmódok
Direkt címzés • A cím mező az operandus címét tartalmazza • ea = cím mező • Pl. ADD AX,[A] • az A címen levő értéket hozzáadja az akkumulátorhoz • a memóriában az A címen keresi az operandust • Egyetlen memória hivatkozással kapja meg az adatot • Nincs szükség plussz műveletekre a címszámításhoz • Statikus adatok címzésére Címzésmódok
Utasítás Opkód A cím Memória Operandus Direct címzés diagramm Címzésmódok
Regiszter indirekt címzés • ea = [R] • Az operandus az R regiszter által mutatott memória címen van • R lehet BX, SI vagy DI • 4 byte-os regiszterek használata esetén nincs megkötés, bármelyik regiszter lehet Címzésmódok
Utasítás Opkód R regiszter cím Memória Regiszterek Operandus Mutató az operandusra Regiszter indirekt címzésdiagramm Címzésmódok
Báziscímzés • ea = [R+eltolás] • A cím mező két részből áll • báziscím a BX vagy BP vagy valamely 32 bites regiszterben • 8, 16 vagy 32 bites eltolás • Az eltolást előjelhelyesen kiegészítve hozzáadja a bázisregiszter tartalmához • BX az adatszegmensben, BP a veremszeg-mensben címez • Adatstruktúra elemeihez való hozzáférés Címzésmódok
Uasítás Eltolás Opkód R regiszter Memória Regiszterek Báziscím Operandus + Báziscímzésdiagramm Címzésmódok
Indexeltcímzés • ea = [R*s+eltolás] • A cím mező két részből áll • index az SI, DI vagy valamely 32 bites regiszterben • 8, 16 vagy 32 bites eltolás • 32 bites indexelő regiszter esetén s skálázó tényező használható (2, 4 vagy 8) • Az eltolást előjelhelyesen kiegészítve hozzáadja a skálázott indexregiszter tartalmához • Egy dimenziós tömb elemeihez való hozzáférés Címzésmódok
Indexelt báziscímzés • ea = [Rb+Ri*s] • A cím mező két részből áll • index az SI, DI vagy valamely 32 bites regiszterben • báziscím a BX, BP vagy valamely 32 bites regiszterben • Az bázisregiszter tartalmát hozzáadja a skálázott indexregiszter tartalmához • 32 bites indexelő regiszter esetén s skálázó tényező használható (2, 4 vagy 8) Címzésmódok
Indexelt báziscímzés eltolással • ea = [Rb+Ri*s+eltolás] • A cím mező 3 részből áll • index az SI, DI vagy valamely 32 bites regiszterben • báziscím a BX, BP vagy valamely 32 bites regiszterben • 8, 16 vagy 32 bites eltolás • A bázisregiszter tartalmát és az eltolást előjelhelyesen kiegészítve hozzáadja a skálázott indexregiszter tartalmához • 32 bites indexelő regiszter esetén s skálázó tényező használható (2, 4 vagy 8) Címzésmódok
Címzési lehetőségek 32 bites regiszterekkel Skálázási tényező 1 2 4 8 Bázis EAX EBX ECX EDX ESP EBP ESI EDI Eltolás Nincs 8 bit 16 bit 32 bit Index EAX EBX ECX EDX EBP ESI EDI + * + Címzésmódok
Címzési lehetőségek 16 bites regiszterekkel Bázis BX BP Index SI DI Eltolás Nincs 8 bit 16 bit + + Címzésmódok
Cím • Egy cím lehet: • közeli (near) – csak az eltolást kell megadni • távoli (far) – meg kell adni a szegmens címet és az eltolást is Címzésmódok