Nyt on sitten vuorossa konekielen o-piskelun toinen jakso. Jos et ole luke- nut edellist[ osaa ja olet vasta aloit- telemassa konekielt[, suosittelen sen lukemista (jos et omista Floppy[, jossa se oli, niin tilaa).
T[ss[ jutussa keskitymme erilaisiin laskutoimituksiin.
INC, INX ja INY k[skyt k[siteltiin jo viime jaksossa, joten siirtyk[[mme suoraan v[hent[miseen.
DEC v[hent[[ muistipaikan arvoa yh- dell[. Muotoja l\ytyy seuraavasti:
DEC luku v[hent[[ muistipaikan ar- voa yhdell[ (muistipaikka=luku)
DEC luku,x v[hent[[ muistipaikan ar- voa yhdell[, muistipaikka saadaan laske-malla yhteen luku ja x-rekisterin arvo.
DEX v[hent[[ x-rekisterin arvoa yh- dell[. Muoto on aina pelkk[ DEX.
DEY toimii kuten DEX mutta k[sitteleey-rekisteri[.
AND suorittaa and-operaation (seli- tetty esim. Reference Guiden sivulla 14)luvun ja akun arvon kesken ja tulos tal-lettuu akkuun.
AND# luku luku ja akun arvo operaa- tion kohteina
AND luku muistipaikan (=luku) arvo ja akun arvo kohteina
AND luku,x muistipaikan (joka saadaanlaskemalla yhteen luku ja x-rekisterin arvo) arvo ja akun arvo kohteina
AND luku,y vastaava kuin edellinen, k[ytt[[ vain y-rekisteri[ ja luvun on oltava suurempi kuin 255.
ORA suorittaa or-operaation (selitet-ty samassa paikassa kuin and) luvun ja akun arvon kesken ja tulos menee akkuun.ORA# luku luku ja akun arvo operaa- tion kohteina
ORA luku muistipaikan arvo ja akun arvo kohteina
ORA luku,x muistipaikan (joka saadaanlaskemalla yhteen luku ja x-rekisterin arvo) arvo ja akun arvo kohteina
ORA luku,y vastaava kuin edellinen, k[ytt[[ vain y-rekisteri[ ja luvun on oltava yli 255.
EOR on samanluonteinen k[sky kuin ANDja ORA mutta se suorittaa ns. xor-ope- raation (exclusive or (selitetty my\s Referencen sivulla 14)).
EOR# luku luku ja akun arvo operaa- tion kohteina
EOR luku muistipaikan arvo ja akun arvo kohteina
EOR luku,x muistipaikan (luku + x-re-kisterin arvo) arvo ja akun arvo kohtei-na
EOR luku,y vastaa edellist[, k[ytt[[ vain y-rekisteri[ ja luku yli 255.
T[h[n v[liin voisi tietysti heitt[[ NOPin, niikuin kevennykseksi. NOP ei teeyht[[n mit[[n (No OPeration). NOP on ai-na muodossa NOP.
LSR siirt[[ kohteena olevan muisti- paikan tai akun bittej[ "oikealle" yhdenbitin verran. Toimitus vastaa kahdella jakamista ja alkuper[isen arvon ollessa pariton (bitti 0 p[[ll[) py\ristyy tulosalasp[in. Bitin 0 tila siirtyy carry li-pun tilaksi (lipuista tarkemmin joskus toiste).
LSR A suorittaa operaation akul-le
LSR luku suorittaa operaation muis-tipaikalle, joka tietysti on yht[ kuin luku
LSR luku,x suorittaa operaation muis-tipaikalle, joka saadaan laskemalla yh- teen luku ja x-rekisterin arvo.
ASL siirt[[ kohteena olevan muisti- paikan tai akun bittej[ "vasemmalle" yh-den bitin verran. Mik[li bitti 7 ei ole p[[ll[ vastaa toimitus kahdella kerto- mista. Mik[li bitti 7 on p[[ll[ on muis-tipaikan uusi arvo=(vanha arvo-128)*2. Bitin 7 tila siirtyy carry lipun tilak- si.
ASL A suorittaa operaation akul-le
ASL luku suorittaa operaation muis-tipaikalle
ASL luku,x suorittaa operaation muis-tipaikalle, joka saadaan laskemalla yh- teen luku ja x-rekisterin arvo.
Eik\h[n t[ss[ riit[ pohdittava muu- tamaksi hetkeksi. Alla viel[ pari pient[ohjelma esimerkki[, jotka toivottavasti hieman selvent[v[t n[it[ k[skyj[.
Olettakaamme, ett[ haluat muuttaa akussa olevan luvun parilliseksi, siten ett[ jos se on pariton pienenee se yh- dell[. Parillinen luku ei tietenk[[n saamuutua mitenk[[n.
Jos tied[t luvun olevan pariton k[y muutos esim. seuraavasti:
STA 033C akun arvo mpaikkaan 828
DEC 033C mp 828:n arvosta 1 pois
LDA 033C mp 828:n arvo akkuun
Jos ei ole tietoa, siit[ onko luku parillinen vai pariton ei yll[ olevaa voi k[ytt[[, mutta seuraavia kyll[kin:
Tapa 1
LSR A jakaa akun arvon kahdella py\rist[en puolikkaan pois ASL A kertoo edellisen laskutoi- mituksen tuloksen kahdella
Tapa 2
AND# FE suorittaa and-operaation a- kun arvon ja 254:n kesken
Ensi kerralla taas lis[[ juttua, ai-heesta: vertailu ja ehdolliset hypyt.