Tryb pośredni X

Opis

indirect X

Tryb adresowania, przy którym adres efektywny jest wyliczany na podstawie innego adresu, mianowicie sumy argumentu na stronie zerowej i wartości rejestru X. Algorytm wyznaczania adresu efektywnego jest skomplikowany - najpierw jest pobrany argument, po czym do argumentu zostaje dodana wartość indeksu X. Następnie następuje odwołanie do tej komórki. Jednak są pobierane dwie wartości - z komórki odwołanej i następnej. Te wartości tworzą razem adres efektywny. Po odwołaniu się do komórki o adresie efektywnym zostaje pobrana wartość potrzebna do operacji.

Na przykład, wykonanie instrukcji asemblerowej LDA ($3C,X), gdzie rejestr X=$02 spowoduje, że następuje odwołanie do komórki o adresie $003E. Pod tym adresem znajduje się wartość $02. Ponieważ następna komórka przechowuje liczbę o wartości $65, następuje odwołanie się do adresu $6502. Adresu $6502, nie $0265, ponieważ procesor rozpoznaje dane zapisane w formacie little endian. Następuje następne odwołanie, tym razem do komórki $6502. Pod tym adresem kryje się wartość $32 i taka trafia do akumulatora.

Rozkazy te zawsze zajmują po dwa bajty ze względu na obecność ośmiobitowego argumentu.

Uwaga! Podczas wyznaczania pierwszego adresu, jeśli suma argumentu i wartości w rejestrze X będzie większa, niż $FF, to najstarszy bajt adresu zostanie wyzerowany i to spowoduje, że zostanie wskazany bajt na stronie zerowej o numerze równym najmłodszemu bajtowi sumy.

Składnia instrukcji

ROZ ($??, X)
gdzie:
ROZ - mnemonik
$?? - ośmiobitowa liczba szesnastkowa, będąca najmłodszym bajtem pierwszego adresu na stronie zerowej

Przykłady zastosowania

LDA ($1C, X)
AND ($2E, X)
ADC ($3C, X)
CMP ($60, X)