ASEMBLER 6502 - cz II

   W tym odcinku zajmiemy si ju wywietlaniem caych wyrazw, a
nawet zda. Najpierw jednak postaraj si, by w komrce $2000 (czyli
8192) znalaza si warto 1 . Jak - to ju Twj problem. Sugerowa-
bym jednak mae POKE...

POKE 8192,1

   I po co nam to byo? To proste - dziki temu mamy w komrce pa-
mici o adresie 8192 zapisan warto i dziki czemu moemy j po-
bra w dowolnym momencie. Ale jak? - zapyta spostrzegawczy Czy-
telnik. Posuymy si rozkazem LDA. Tym razem jednak warto po roz-
kazie nie bdzie oznacza LICZBY, ktr chcemy wpisa do akumula-
tora, lecz ADRES komrki, w ktrej bdziemy szuka LICZBY, wpisa-
nej do akumulatora. Wpisz wic programik przedstawiony poniej:

	*=$2710
	LDA $2000
	STA $0400
	RTS
	strzaka w lewo, 3, s

  No i prosz, efekt zgodny z tym, co przed chwil napisaem. Jeeli
przed liczb po rozkazie LDA nie wpiszemy znaczka #, to komputer
bdzie traktowa t liczb jako adres komrki pamici w ktrej jest za-
pisana liczba przeznaczona do wczytania do akumulatora.
   Teraz zajmijmy si obiecanymi przedtem sowami. Jak zapewne
zdye zauway, wpisywanie sw duszych, ni dwu-trzyliterowe
metod LDA- STA przestaje by rozrywk i staje si rednio przyjem-
nym wklepywaniem kolejnych liczb. Jeli umiesz programowa w ja-
kim innym jzyku, zapewne przypominasz sobie jakie ptle:
FOR...NEXT, REPEAT...UNTIL, DO...LOOP i inne. Jeli za niczego
sobie nie przypominasz, to wiedz, e ptla, to taki chytry chwyt, 
dziki ktremu moesz napisa jaki cig instrukcji raz, a potem powtarza go
kilka razy. Odbywa si to nie za pomoc przepisywania tego samego
fragmentu programu na nowo, lecz poprzez poinformowanie 
komputera, e ma wykonywa t cz programu tyle razy, ile sobie zayczysz.
   W asemblerze jest kilka metod zrobienia ptli. Moemy na przykad
wstawi do jednej z komrek liczb powtrze i po kadym przebiegu
ptli zmniejsza jej warto o 1 . Po dojciu do 0 -- koczymy powta-
rzanie ptli. Znacznie wygodniejszym rozwizaniem jest jednak 
wykorzystanie jednego z DODATKOWYCH REJESTRW procesora. Bo-
wiem procesor ma nie tylko akumulator. Ma take rejestry 
oznaczone jako X i Y. Za pomoc np. rejestru X moemy take utworzy ptl i to
znacznie lepsz ni przy pomocy komrki pamici. Sama zasada b-
dzie oczywicie taka sama. A oto przykad takiej ptli - 
wydrukujemy kilka liter za pomoc jednego STA!

	*=$2710
	LDA #2
	LDX #$10	
U	STA $0400,X
	DEX
	BNE U	
	RTS
	Strzaka w lewo, 3, s

   Wszystko si zgadza? Mamy a szesnacie literek "B", a rozkazw
wydalimy, jak dla trzech! Pojawiy si jednak nieznane Ci 
rozkazy. Zaraz je wyjani.
LDX #xx - we liczb xx i wpisz j do rejestru X (LoaD X register)
DEX - zmniejsz zawarto rejestru X o 1 (DEcrement X regi-
ster)
STA xxxx,X - zapisz zawarto akumulatora do komrki o adresie
xxxx, zwikszonym o zawarto rejestru X. (STore
Accumulator)
BNE xxxx - jeeli ostatnia wykonana operacja nie przyniosa wy-
niku zerowego, wykonaj skok do adresu xxxx. (Branch,
if Not Equal to zero)
   Posiadacze asemblera maj wanie okazj, by dowiedzie si,
czym waciwie jest etykieta. Popatrz tylko, co wpisae po rozkazie
BNE - tylko literk U. A co powiniene wpisa? Adres, do ktrego
komputer ma wykona skok. Wniosek - etykieta suy nam do okre-
lenia adresu bez potrzeby dokadnej jego znajomoci. Takie samo U
postawilimy przed rozkazem STA. Komputer porwnuje jedn etykie-
t z drug i, jeli si zgadzaj, wykonuje skok.
   Przejdmy do obiecanych caych sw. Przedtem jednak gorco
apeluj, by wszyscy zaopatrzyli si w TurboAssembler 5.1 . Jak si za-
raz przekonamy, uatwi to wpisywanie programw znacznie bardziej,
ni uywanie jakiegokolwiek monitora. Inne makroasemblery maj
inne, sobie tylko waciwe, moliwoci i mog z tego wynikn niepo-
rozumienia.
   Teraz jednak posiadacze monitorw musz si posuy jzykiem
BASIC. Chodzi tu o to, aby tekst do wywietlenia na ekranie wpis
okrelonego obszaru pamici skd zostanie on pobrany i wywi
na ekranie przez program napisany w jzyku maszynowym.

10 A$="PRAWDZIWY MANIAK PETLI SIE NIE BOI"
20 FOR A=1 TO LEN(A$)
30 B=ASC(MID$(A$, A, 1))
40 IF B>64 THEN B=B-64
50 POKE 8191 +A, B
60 NEXT

A 2710 LDX #$2C
A 2712 LDA $2000, X
A 2715 STA $0400, X
A 2718 DEX
A 2718 BNE $2712
A 271 A RTS

	*=$2710
	LDX #$2C
	WPAK 	LDA TEKST, X
	STA $0400, X
	DEX
	BNE WPAK
	RTS
TEKST 	.TEXT "PRAWDZIWY MANIAK PETLI SIE NIE BOI"
	strzaka w lewo, 3, s

   No i mamy obiecane cae wyrazy i zdania. I tylko jeden nowy rozkaz:
LDA xxxx, X- wstaw do akumulatora zawarto komrki o adresie
xxxx, zwikszonym o zawarto rejestru X.
Uytkownikw asemblera informuj e instrukcja .TEXT pozwala na
wpisanie w cudzysowie jakiegokolwiek tekstu. W chwilach wolnych pro-
ponuj zastanowi si nad innym zagadnieniem: jak wywietli ten tekst
od koca?

BARTOMIEJ I. KACHNIARZ

DZI POZNALIMY INSTRUKCJE:
LDA xxxx - wstaw zawarto komrki o adresie xxxx do akumulatora
LDA xxxx, X - wstaw zawarto komrki o adresie xxxx, zwikszonym o zawarto rejestru X do akumulatora
STA xxxx, X - zapisz akumulator do komrki o adresie xxxx, zwikszonym o zawarto rejestru X
LDX #xx - wstaw liczb xx do rejestru xx
DEX - zmniejsz zawarto rejestru X o 1
BNE xxxx - skocz do komrki o adresie xxxx, jeeli wynik ostatniej
wykonanej operacji nie by rwny 0
