home *** CD-ROM | disk | FTP | other *** search
/ Floppy Magazine 1987 #5 / Floppy_Magazine_87-5_1987_Megasystems_Oy_fi_Side_A.d64 / konekieli.3 < prev    next >
Text File  |  2023-02-26  |  6KB  |  76 lines

  1.  
  2.  
  3.  
  4.           Konekielest[ III
  5.  
  6.     Konekielikurssinen senkun jatkuu.   T[ss[ osassa tutustutaan konekielen ver-tailuoperaatioihin ja niiden perusteellateht[viin hyppyihin. Lienee paikallaan  k[yd[ suoraan asiaan.
  7.  
  8.    CMP vertailee akun arvoa muistipaikanarvoon. Mik[li arvot ovat yht[ suuret   asettuu ns. nolla lippu. Mik[li luvut   ovat erisuuret pysyy lippu poissa p[[l- t[. Lipuista pit[[ varmaan selitt[[     hieman enemm[nkin, sill[ perustuvathan  ehdolliset hypyt niihin. Liput kuvaavat prosessorin tilaa. Lippuja on kuusi eri-laista ja ne kukin ovat yhden bitin ko- koisia. Lippuihin vaikuttavat p[[asiassalaskuoperaatiot, vertailuoperaatiot, se-k[ suoraan tietyn lipun tilaa muuttavat k[skyt. Ehdolliset hyppyk[skyt taas kat-sovat jonkin lipun tilan (mink[, riippuuk[skyst[) ja toimivat sen mukaan.
  9.  
  10.    Nyt voi varmaan palata taas CMPhen.  Sen muotoja l\ytyy seuraavasti:
  11. CMP# luku     vertaa lukua ja akkua
  12. CMP  luku     vertaa akkua ja muistipai-kan (=luku) arvoa
  13. CMP  luku,x   vertaa akkua ja muistipai-kan (joka saadaan laskemalla yhteen lukuja x-rekisterin arvo) arvoa
  14. CMP  luku,y   vastaava kuin edellinen,  k[ytt[[ vain y-rekisterin arvoa ja luku on oltava suurempi kuin 255.
  15.  
  16.    CPX vertaa muistipaikan arvoa x-re-  kisterin arvoon. Vaikutus lippuihin on  samanlainen kuin CMPll[. Muodot:
  17. CPX# luku     vertaa lukua ja x-rekiste-rin arvoja kesken[[n
  18. CPX  luku     vertaa muistipaikan (=lu- ku) ja x-rekisterin arvoja.
  19.  
  20.    CPY vertailee muistipaikan arvoa     y-rekisterin arvoon. Vaikuttaa lippuihinkuten CPX.
  21. CPY# luku     vertaa y-rekisterin arvoa ja lukua toisiinsa
  22. CPY  luku     vertaa y-rekisterin arvoa ja muistipaikan arvoa toisiinsa.
  23.  
  24.    Vaikka viime osa olikin "pyhitetty"  laskutoimituksille, tulee niit[ t[ss[   pari lis[[, koska n[iss[ laskutoimituk- sissa carry lippu vaikuttaa tulokseen.
  25.  
  26.    ADC lis[[ akkuun m[[ritellyn luvun.  Mik[li carry lippu on asettunut on akku-un tuleva uusi arvo=akun vanha arvo +   m[[ritelty luku + 1 (edellytt[en ettei  laskutoimituksen summa ole suurempi kuin255), mik[li lippu ei ole p[[ll[ voi yk-k\sen unohtaa. ADC muotoja ovat:
  27. ADC# luku     lis[[ luvun akkuun
  28. ADC  luku     lis[[ muistipaikan (=luku)arvon akkuun
  29. ADC  luku,x   lis[[ muistipaikan (luku+ x-rekisterin arvo) arvon akkuun
  30. ADC  luku,y   vastaava kuin yll[, k[yt- t[[ y-rekisteri[ ja luku>255
  31.  
  32.    SBC v[hent[[ akusta m[[ritellyn lu-  vun. Mik[li carry lippu on poissa p[[lt[(ei ole asettunut) on akkuun tuleva uusiarvo=akun vanha arvo - m[[ritelty luku -1 (edellytt[en ettei erotus ole alle    nollan), mik[li lippu on asettunut voi  ykk\sen unohtaa. Muodoissa l\ytyy:
  33. SBC# luku     v[hent[[ luvun akusta
  34. SBC  luku     v[hent[[ muistipaikan (lu-ku) arvon akusta
  35. SBC  luku,x   v[hent[[ muistipaikan (lu-ku + x-rekisterin arvo) arvon akusta
  36. SBC  luku,y   vastaava kuin yll[, k[yt- t[[ vain y-rekisterin arvoa ja luku>255.
  37.    Kuten  aikaisemmin on todettu katso- vat ehdolliset hyppyk[skyt jonkin lipun tilan ja toimivat sitten sen mukaan (eliohjelman toiminta joko jatkuu seuraavas-ta k[skyst[ tai hypp[[ k[skyn per[ss[ o-levaan muistiosoitteeseen). Esittelen   vain nolla lipun mukaan toimivat k[skyt tarkemmin, koska muidenkin lippujen mu- kaan toimivat k[skyt toimivat samalla   periaatteella.
  38.  
  39.    BEQ suorittaa haarautumisen silloin, kun nolla lippu on p[[ll[. T[llainen ti-lanne on esim. silloin kun vertailuope- raatiossa on havaittu arvojen olevan yh-t[ suuret. Muoto on aina
  40. BEQ  luku     luku on se muistiosoite,  johon ohjelman suoritus hypp[[.
  41.  
  42.    BNE suorittaa haarautumisen silloin, kun nolla lippu ei ole p[[ll[. T[llainentilanne on esim. silloin kun vertailu-  operaatiossa on arvojen havaittu olevan erisuuret. Muoto on
  43. BNE  luku     luku on se muistiosoite,  johon ohjelman suorius hypp[[.
  44.  
  45.    Muiden lippujen mukaan toimivat k[s- kyt ovat:
  46.  
  47. lippu  haarautuminen jos p[[ll[  poissa 
  48. carry                    BCS     BCC
  49. negatiivinen             BMI     BPL
  50. ylitys                   BVS     BVC
  51.  
  52.    Haarautumisk[skyjen osoitteet ovat   muistissa todellisuudessa muodossa: sen ja sen verran muistipaikkoja eteen- tai taaksep[in mutta konekielimonitorit     k[ytt[v[t yleens[ aikaisemmin mainittua muotoa.
  53.  
  54.     T[ss[ olisi nyt yksi esimerkki oh-  jelma, joka toivottavaasti hieman sel-  vent[[ n[it[ k[skyj[. Ohjelmassa on parik[sky[, joita ei t[ss[ kurssissa ole se-litetty viel[ mutta niit[ ei kannata ih-metell[. Ohjelma muuttaa kaikkien n[y-  t\ll[ olevien merkkien v[ri[ 256 kertaa,eli teksti vilkkuu n[yt\ss[ hetken aikaaja sitten merkit ovat taas alkuper[isen v[risi[.
  55.  
  56. c000 LDA# d8       akkuun 216
  57. c002 LDY# 00       y-rekisteriin nolla
  58. c004 STA  c00e     216 mp:aan 49166
  59. c007 STY  c00d     0 mp:aan 49165
  60.      Ylla oleva toimi tarpeen, koska oh-     jelma on itse[[n muuttava, eik[ si-     t[ voisi ajaa useampaan kertaan il-     man tuota.
  61. c00a TYA           siirt[[ y-rekisterin                    arvon akkuun
  62. c00b TAX           siirt[[ akun arvon                      x-rekisteriin
  63. c00c INC  d800,x   kasvattaa yhdell[                       mp:aa 55296 + x-rek. c00f INX           x-rek.=x-rek. + 1    c010 CPX# 00       onko x-rek. = 0      c012 BNE  c00c     jos ei, niin hyppy   c014 INC  c00e     mp 49166 kasvaa yh-                     dell[ (ohjelma muut-                    taa itse[[n)
  64. c017 INY           y-rek. =y-rek. + 1
  65. c018 CPY# 04       onko y-rek. = 4
  66. c01a BNE  c00c     jos ei, niin hyppy        P[tk[ c00c-c01a muuttaa kaikkien        n[yt\ss[ olevien merkkien v[rin yh-     den kerran.                        c01c LDY# d8       y-rekisteriin 216
  67. c01e STY  c00e     216 mp:aan 49166
  68. c021 LDY# 00       y-rekisteriin nolla  c023 CLC           cally lippu pois
  69. c024 ADC# 01       akkuun lis[[ yksi
  70. c026 BVC  c00c     mik[li ylitys lippu                     pois, niin hyppy     c028 RTS           ohjelma loppu             P[tk[ c01c-c028 sijoittaa ensin v[-     rimuutoksen v[rimuistin alkuun ja       sitten tutkii onko v[ri[ muutettu       jo 256 kertaa. Akku toimii laskuri-     na ja mik[li akun arvo kasvaa suu-      remmaksi kuin 255, ylitys lippu tu-     lee p[[lle ja akku nollautuu.
  71.  
  72.     Seuraavalla kerralla tutustumme muu-tamaan viel[ esittelem[tt\m[[n k[skyyn  ja interruptiin (interi, noin niiku ys- t[vien kesken).
  73.  
  74.           - Marko Jerrman -
  75.  
  76.