ASEMBLER 6502
Czyli adresowanie indeksowane oraz
porednie i co z tego wynika.

   Czym waciwie jest adresowanie?
Zadaj to pytanie nie bez powodu,
chocia, na dobr spraw, bez do-
kadnej znajomoci tego terminu mona si
doskonale obej. Jednak jasne i jedno-
znaczne wyoenie tej kwestii moe by
zwyczajnie duym uproszczeniem w tuma-
czeniu rnych spraw z programowaniem
zwizanych. O trybach nie wspominaem
na pocztku naszych spotka po prostu
dlatego, e nie wydawao si to konieczne.
Teraz jednak tumaczenie coraz bardziej
zawiych problemw bez wprowadzenia tej
terminologii staje si coraz trudniejsze.
Dlatego te postanowiem powici dzi-
siejszy artyku wanie trybom adresowa-
nia.

   Zacznijmy wic jeszcze raz: Czym wa-
ciwie jest adresowanie? Adresowanie to
sposb podania komputerowi informacji o
tym, jak kady rozkaz ma by wykonany.
Jeeli dalibymy rozkaz np. LDA 39, to nie-
koniecznie byoby wiadomo, o co nam wa-
ciwie chodzi. Dlatego te zostay opraco-
wane rne tryby adresowania. Jeeli
przed liczb (argumentem) postawimy znak
"#", to jako argument bdzie pobrana licz-
ba, ktr wpisalimy za rozkazem. Ten tryb
adresowania nazywamy absolutnym lub na-
tychmiastowym. Na przykad jeli wydamy
rozkaz LDA # $98 to w akumulatorze znaj-
dzie si szesnastkowa liczba 98.

   Kolejnym prostym trybem adresowania
jest adresowanie bezporednie (ang. im-
mediate). Podana po rozkazie liczba jest
przez komputer traktowana jako adres, pod
ktrym ma szuka argumentu. Jeli wic
napiszemy LDA $3000, komputer odszuka
w pamici komrk o adresie szesnastko-
wym 3000 (dziesitnie 12288) a nastpnie
jej zawarto wczyta do akumulatora. Ana-
logicznie dzieje si, kiedy napiszemy STA
$1000. Wtedy zawarto akumulatora zo-
stanie wpisana do komrki o adresie $1000
(4096).

   Szczegln odmian tego adresowania
jest adresowanie strony zerowej, czyli
pierwszych 256 komrek pamici. Jej od-
mienno polega na tym, e do adresowa-
nia strony zerowej potrzebna jest tylko jed-
na komrka. Wanie dlatego strona zerowa
jest tak czsto przez programistw wyko-
rzystywana - daje to czasem due osz-
czdnoci czasowe.

   Innym trybem adresowania jest adreso-
wanie porednie. Jego idea polega na tym,
e adres podany po rozkazie JMP (bo JMP
jest JEDYNYM rozkazem, ktry moe by
tak adresowany) jest dla komputera adre-
sem pod ktrym znajduje si adres (w po-
staci modszego i starszego bajtu) proce-
dury, do ktrej naley skoczy. Wyglda to
np. tak: JMP ($0314). Pod adresem znaj-
duje si wektor, ktry wskazuje na komr-
k, do ktrej trzeba skoczy (zwykle w tym
przypadku $ea31).

   Jakie dwa miesice temu rozmawiali-
rny troch o tym, jak wydrukowa na ekra-
nie napisy. Robilimy to jeszcze bez uycia
rnych procedur zapisanych w ROM kom-
putera. Jak zapewne pamitacie, uywali-
my do tego celu rejestru X jako rejestru po-
mocniczego. Wanie operacje w rodzaju
LDA $AAAA,X albo STA $BBBB,X nazywa-
my operacjami indeksowanymi. Za takie
podanie instrukcji LDA lub np. STA nazy-
wane jest adresowaniem indeksowanym.
Indeksowa mona te oczywicie i inne
rozkazy, ale o tym - potem. Przypomn
jeszcze tylko znaczenie takiego adresowa-
nia. Rozkaz LDA 10000,X oznacza dla
komputera, e do akumulatora ma wstawi
liczb, ktra znajduje si w komrce o ad-
resie obliczonym przez dodanie 10000 do
zawartoci rejestru X. Rozkazy LDA i STA
mona rwnie indeksowa drugim z reje-
strw pomocniczych, Y.

   Dwa kolejne tryby adresowania nie s ju
takie oczywiste. Tryby te to poredni po-
stindeksowany i poredni preindeksowany.
Adresowanie postindeksowane ma skad-
ni LDA ($fb),y. Liczba podana po rozkazie
jest tu miejscem, w ktrym znajduje si ad-
res w pamici. Do adresu tego trzeba do-
da jeszcze zawarto rejestru Y i dopiero
ta liczba wskazuje lokacj pamici, z ktrej
naley pobra liczb do akumulatora. Do
tego indeksowania mona zastosowa wy-
cznie rejestr Y. Adresowanie preindekso-
wane polega na tym, do liczby po rozkazie
dodajemy jeszcze zawarto rejestru X i ta
suma jest adresem komrki, ktrej zawar-
to wstawiamy do akumulatora. Skadnia
wyglda tak: LDA ($f0, X) i trzeba pamita,
e do indeksowania mona uy wycznie
rejestru X. Moim skromnym zdaniem, tryb
ten jest do mao praktyczny.

   W rozkazach skokw warunkowych, jak
np. poznane ju przez nas BEQ i BNE,
mimo tego, e podajemy pene adresy pod
ktre naley skoczy, komputer przecho-
wuje tylko liczb komrek o ktr musi
przeskoczy w ty lub w przd. Dlatego te
nazywamy ten tryb adresowaniem wzgld-
nym.

   Dwa ostatnie tryby, ktre zostay nam do
omwienia s stricte wewntrzne i uytko-
wnik ma na nie znikomy wpyw. Pierwszy to
adresowanie akumulatora i obejmuje wszy-
stkie operacje wykonywane na samym aku-
mulatorze, bez udziau pamici. Drugi za
- to adresowanie niejawne. Nale do nie-
go podobne rozkazy, np. poznany przez
nas INX. Zwiksza on zawarto rejestru X
0 1 i wcale nie interesuje nas, gdzie we
wntrzu komputera znajduje si komrka,
ktrej rozkaz ten dotyczy. Do rodzinki tej
nale jeszcze NOP, RTS, BRK i inne tego
typu rozkazy.

   Wiem, e podanie wszystkich trybw ad-
resowania byo troszk "na wyrost", ale na
pewno przyda si pniej. Przepraszam, e
moe byem tym razem troch nudnawy i
nie podaem listingw przykadowych, ale
taka solidna dawka teorii zaprocentuje na
pewno w przyszoci.

	BARTEK KACHNIARZ
