Rozdział 1.5.1.6



Tryb indeks-skala-przemieszczenie


Tryb indeks-skala-przemieszczenie jest rozszerzeniem adresowania z rejestrem bazowym. Adres argumentu jest obliczany na podstawie indeksu w rejestrze indeksowym (rejestry EAX, EBX, ECX, EDX, EBP, ESI, EDI), współczynnika skali określonego w rozkazie (liczba 1, 2, 4 lub 8) i przemieszczenia zawartego w rozkazie. Argument znajduje się wówczas w pamięci, a jego adres efektywny jest obliczany ze wzoru: adres efektywny = indeks * skala + przemieszczenie.

Jako przykład możemy rozpatrzyć rozkaz:
MOV EAX, [8*EBX + 4]

Adresowanie z indeksem służy do dostępu do statycznej tablicy o ustalonym rozmiarze elementu odpowiadającym skali. Przemieszczenie jest adresem początku tablicy a zawartość rejestru indeksowego indeksem tablicy. Skala 1 zapewnia tablicę bajtów, skala 2 - tablicę słów 16 bitowych, skala 4 - tablicę słów podwójnych - 32 bitowych, a skala 8 - tablicę słów poczwórnych - 64 bitowych.

W trybie tym dostęp do argumentu wymaga następujących czynności:
  • Pobrania przemieszczenia i skali z pola rozkazu oraz indeksu z rejestru,
  • Obliczenia adresu efektywnego przez dodanie do przemieszczenia indeksu pomnożonego przez skalę,
  • Odwołania do pamięci (cykl maszynowy) - wystawienia adresu argumentu na szynę adresową, pobrania argumentu z szyny danych (przy odczycie) lub zapisania argumentu z szyny danych (przyzapisie).


Powrót do rozdziału 1
Powrót do strony głównej