Asembler 6502 (cz.14)

Publikujemy rozkazy publikowane

Proponuj Wam tabelk, w ktrej zestawiem w kolejnoci alfabetycznej wszystkie
publikowane rozkazy asemblera 6502, z odpowiadajcymi im trybami adresowania,
liczb zajmowanych w pamici bajtw i cykli procesora.
Gdy bdziecie np. mieli ch dokadnie docyklowa jak procedur rastrow, moe-
cie sign do tej wanie tabelki i znale w niej od razu odpowied, jakich rozkazw
naley uy. Macie wtpliwoci, czy jaka instrukcja wystpuje w potrzebnym Wam
trybie adresowania? Sigacie do tabelki i wszystko si wyjania. Albo chcecie zabezpie-
czy program przed niepowoanymi podgldaczami, kombinujecie, ktre rozkazy moliwie
mao napsuj a moliwie duo namc - tabelka wydaje si niezastpiona.
Reasumujc: tabelka z pewnoci si przyda. Nie daje nam wprawdzie nic odkrywczego,
czy rewolucjonizujcego kanony informatyki, ale jest przydatna w tzw. codziennej
pracy programisty. Dowiadczyem tego par razy na wasnej skrze, gdy musiaem
przerzuca stosy ksiek w poszukiwaniu TEJ JEDYNEJ.
A co z rozkazami niepublikowanymi? - zapytaj ci, ktrzy ju ostrzyli sobie na nie
zby. Spokojnie, przyjaciele. Jak dobrze pjdzie, w komplecie zjawi si za miesic.
Nie tracie rewolucyjnej czujnoci!

KRTKO O TRYBACH

Jak zapewne pamitacie, Commodore 64 ma a 13 trybw adresowania. Pisaem ju
o tym, co prawda, w "C&A" 9/92, wic tym razem tylko wspomn o kadym po kolei,
przy okazji podajc skrt, ktrym posu si w tabelce. Skrty te warto przynajmniej
z grubsza kojarzy, bo uywane s przez wikszo autorw piszcych o asemblerze
6502.

1. ADRESOWANIE BEZWZGLDNE; ABS
np. LDA $2000 - odnosi si do komrki, ktrej adres podany jest po kodzie rozkazu.

2. ADRESOWANIE (BEZWZGLDNE) STRONY ZEROWEJ; ZPG
np. INC $02 - dotyczy komrki na stronie zerowej, ktrej adres w postaci jednego
bajtu podany jest po kodzie rozkazu.

3. ADRESOWANIE BEZWZGLDNE INDEKSOWANE X; ABS, X
np. LDA $1000,X - odnosi si do komrki, ktrej adres jest sum liczby podanej po
rozkazie i wartoci rejestru X.

4. ADRESOWANIE BEZWZGLDNE INDEKSOWANE Y; ABS, Y
np. LDA $4000,Y - odnosi si do komrki, ktrej adres jest sum liczby podanej po
rozkazie i wartoci rejestru Y.

5. ADRESOWANIE STRONY ZEROWEJ INDEKSOWANE X; ZPG, X
np. DEC $80,X - odwouje si do komki ktrej adres jest sum jednobajtowej liczby
podanej po rozkazie i wartoci rejestru X.

6. ADRESOWANIE STRONY ZEROWEJ INDEKSOWANE Y; ZPG, Y
np. DEC $00,Y - odwouje si do komki ktrej adres jest sum jednobajtowej liczby
podanej po rozkazie i wartoci rejestru Y.

7. ADRESOWANIE POREDNIE; (ABS) lub IND
np. JMP ($3000) - polega na tym, e adres podany po rozkazie jest numerem komrki,
w ktrej znajduje si pierwszy (a w nastpnej drugi) bajt wektora, bdcego adresem,
pod ktry komputer ma skoczy.

8. ADRESOWANIE POREDNIE PREINDEKSOWANE; (ZPG,X) lub (,X)
np. CMP ($40,X) - liczba podana po rozkazie jest sumowana z zawartoci rejestru X.
Suma za jest adresem komrki, w ktrej znajduje si pierwszy bajt wektora,
wskazujcego adres, do ktrego odwouje si rozkaz.

9. ADRESOWANIE POREDNIE POSTINDEKSOWANE; (ZPG,Y) lub (),Y
np. LDA ($fb),Y - liczba bdca argumentem jest adresem komrki, w ktrej znajduje
si pierwsza komrka wektora. Suma tego dwubajtowego wektora i zawartoci rejestru
Y jest adresem, do ktrego odwouje si rozkaz.

10. ADRESOWANIE WZGLDNE; REL
np. BNE - oznacza skok do komrki przesunitej o podany argument wzgldem adresu,
w ktrym znajduje si rozkaz.

11. ADRESOWANIE NIEJAWNE; IMP
np. INX - z treci rozkazu wynika, gdzie ma by wykonany - czy to w jakim
rejestrze, czy to w akumulatorze.

12. ADRESOWANIE AKUMULATORA; ACC
np. ROL - specyficzna odmiana adresowania niejawnego. Odnosi si bezporednio
do akumulatora, bez porednictwa komrek pamici.

13. ADRESOWANIE NATYCHMIASTOWE (lub PROSTE); IMM lub IMDT
np. LDA #$60 - argument nie jest adnym adresem ani wektorem, tylko po prostu
konkretn liczb, ktrej dotyczy rozkaz.

I po tym wstpie teoretyczno-historycznym nareszcie CZAS NA TABEL!

Bawcie si wesoo!
Bartomiej I. Kachniarz



UWAGI:


MNEM - oznacza mnemonik, czyli trzyliterowy skrt rozkazu.

TRE ROZKAZU - to krtki opis tego, nie roszczcy sobie miana kompletnego i
wyczerpujcego

FLAGI - wpyw rozkazu na znaczniki (Negative, Carry etc.). Litera oznacza, e zaleny
od warunkw, cyfra - e za kadym razem do znacznika wstawiana jest dana warto,
M7M6 - do flag wstawiane s wartoci z pamici.

KOD - to liczba szesnastkowa, za pomoc ktrej przedstawiany jest rozkaz w danym
trybie

B - liczba bajtw, jak rozkaz zajmuje w pamici.
T - najmniejsza liczba cykli, jak zajmuje procesorowi rozkaz.

1 - C=C=1 jeeli (np. podczas indeksowania) przekroczona zostaa granica stron
1a - C=7 dla ABS,X i ABS,Y, niezalenie od granic stron
2 - C=C+0 jeli skok nie wykonywany
    C=C+1 jeli skok w obrbie jednej strony
    C=C+2 jeli skok na ssiedni stron
3 - V i N ustawiane przed wykonaniem operacji, Z - po wykonaniu
4 - T+1 jeli praca dziesitna (tryb BCD)
5 - jeden bajt na stos i SP=SP-1
6 - dwa bajty na stos i SP=SP-2
7 - SP=SP+1 i jeden bajt ze stosu
8 - SP=SP+2 i dwa bajty ze stosu
9 - SP=SP+3 i trzy bajty ze stosu


a tabelka panowie w osobnym pliku. sorki.
