ADDR:
OPC:
================
07F0 21
DD 2F LD HL,2FDDh
07F3 36
D0 LD M(hl),D0h
07F5
23
INC HL
07F6 36
FF LD M(hl),FFh
07F8
23
INC HL
07F9 36
FF LD M(hl),FFh
07FB 21 79 08 LXI H,[TEKS7]
07FE CD 0B 05 CALL [NAYTX]
0801
AF
XRA A
0802 CD 90 03 CALL [LUEEE]
0805 CD 5F 08 CALL [NNNLS]
0808 36
77 LD M(hl),77h
080A 21 FB 2F LD HL,2FFAh+01h
080D
56
LD D,M(hl)
080E
2B
DEC HL
080F
5E
LD E,M(hl)
0810 CD 5D 05 CALL [LKHEM]
0813 ED
53 LD (2FFA)h,DE
0815 FA
2F .
0817 CD 5F 08 CALL [NNNLS]
081A 36
83 LD M(hl),83h
081C 21 FD 2F LD HL,3FFCh+01h
081F
56
LD D,M(hl)
0820
2B
DEC HL
0822 CD 5D 05 CALL [LKHEM]
0825 ED
53 LD (2FFC)h,DE
0827 FC
2F .
0829 CD 5F 08 CALL [NNNLS]
082C 36
D6 LD M(hl),D6h
082E 21 FF 2F LD HL,2FFEh+01h
0831
56
LD D,M(hl)
0832
2B
DEC HL
0833
5E
LD E,M(hl)
0834 CD 5D 05 CALL [LKHEM]
0837
ED 53 LD
(2FFE)h,DE
0839 FE
2F .
083B CD 6F 04 CALL [SAMMU]
083E 21 7F 08 LXI H,[TEKS8]
0841 CD 0B 05 CALL [NAYTX]
0844 2A FC 2F LD HL,(2FFC)h
0847 ED
4B LD BC,(2FFA)h
0849 FA
2F .
084B ED
42 SUB HL-BC
084D DA 71 08 JC [ERR03]
0850
44
LD B,H
0851
4D
LD C,L
0852 2A FA 2F LD HL,(2FFA)
0855 ED 5B FE LD DE,(2FFE)
0858
2F
0859
03
INC BC
085A
ED
LDIR
085B
B0 Dec
BC
085C C3 87 02 JMP [KTILA]
NNNLS;085F
CD 6F 04 CALL [SAMMU]
0862 21 01 70 LD HL,7001h
0865 36
81 LD M(hl),81h
0867
2B
DEC HL = 7000
0868 36
14 LD M(hl),14h
086A
23
INC HL = 7001
086B 36
80 LD M(hl),80h
086D
2B
DEC HL = 7000
086E 06
00 LD B,00h
0870
C9
RET
ERR03;0871
3E 03 LD
A,03h
0873 11 00 2F LXI DE,2F00h
0876 C3 56 01 JMP [ERROR]
================
Sivu on päivitetty viimmeksi
18, tammikuuta 2008
Ohjelmistoon
kuuluu monitorointiohjelmisto joka kertoo
2-rivisellä LCD-näytöllä
selvennyksen kulloinkin
suoritettavasta käskystä. Monitorointi ohjelman ajon
aikana
on mahdollista tutkia muistia ja rekistereitä, sekä
tarvittaessa korjatä näitä. Monitorointi
voidaan asettaa päättymään
automaattisesti johonkin riville ohjelmaa, tai se voidaan
määrätä tietyn
ajan jälkeen pysähtymään.
Aikatoiminta tilassakin on
mahdollista pysäyttää ohjelman ajo, nappia
painamalla. Ohjelman ajon jatkaminen pysäytyskohdasta taikka
jostakin toisesta kohdasta, on käyttäjän
vapaasti
määriteltävissä.
Esimerkki kuvassa ollaan ohjelman rivillä 07E6h jolla oleva kone koodi 77h tarkoittaa komentoa siirtää A-rekisterissä (Akku) oleva 8-bittinen tieto osoitteeseen johonka HL-rekisteri osoittaa. LCD-näytössä (ylempi näyttö) on monitorointi ohjelman tuottama opasteteksti komennosta ja alempi seitsensegmentti näytöllä näkyy ohjelmarivin osoite ensimmäisillä neljällä numerolla ja kaksi viimmeitä kertovat tuossa osoitteessa olevasta tiedosta joka siis on tuossa esimerkissä 77h. Osoite ilmoitetaan 16-bittisenä (kaksi tavuinen) ja data on 8-bittinen (yksi tavu). Z80-prosessorissa yhden käskyn pituus vaihtelee ollen pienimmillään yhden tavun pituinen, ja taas pisimmillään neljäkin tavua pitkä. 7-segmentti näytöllä näkyy näissä tilanteissa enitenmerkitsevän osoitteen tieto. Tästä päästään puhumaan prosessori arkkitehtuurien CICS ja RISK eroista. CICS:ssähän käskyjen tavu pituudet vaihtelevat, kun taas RISK:ssä käytetään aina samanpituisia käskyjä.
Halutessaan käyttäjä voi käyttää ohjelman edistymisen seurantaan rengasmuistia johon tallentuvat jo suorittetujen ohjelmakoodien osoitteet, rengasmuistin täyttyessä alkaa se automaattisesti kirjoittamaan uusia tietoja vanhimpien päälle. Monitorointi tilassa prosessori ikäänkuin simuloi omaa toimintaansa, samalla itse suorittaen omaa koodiaan sekä ajaessaan monitoroitua koodia. Aina jokaisen suoritetun monitoroitavan käskyn jälkeen on prosessorin tehtävä keskeytys, joka tehdään prosessorin ulkoa etukäteen ohjelmoidun ajastimen ohjaamana. Keskeytyksen tapahduttua suoritetaan kaikien rekisterien arvojen tallettaminen ja jatkamaan toimintaa käyttäjän haluamalla tavalla.
- Ohjelma koodista Tulostuvaa tekstiä LCD-näytölle (vihreällä).
osoite: konekoodi: Opc:
*******************************
89F0 7D LD A,L 8-BIT LOAD GROUP
LOAD register A<-L.
89F1 ED 44 NEG GENERAL PURP. AND OP
Negate ACCU 2's-cpl
89F3 6F LD L,A 8-BIT LOAD GROUP
LOAD register L<-A.
89F4 7C LD A,H 8-BIT LOAD GROUP
LOAD register A<-H.
89F5 2F CPL GENERAL PURP. AND OP
Complement ACCU.
*******************************
Konekielikoodin
lisäksi tunsin
Qbasic-ohjelmointikielen.
Aloinkin nyt tällä kielellä
tekemään assembly
ohjelmoimisen apuvälineitä, kuten ohjelman joka
laskee
osoitteet, tekstieditorilla tehtyyn tiettyjen
sääntöjen
mukaan laadittuun tiedostoon. Tässä tiedostossa on
kaikki
konekoodi johonka Qbasic-ohjelma laskee osoitteet, relatiivisten
hyppyjen arvot sekä hakee muuttujien nimen perusteella niiden
osoitteet ohjelmakoodiin.
Esimerkiksi
näin: Alhaalla on raaka koodi ennen
kääntämistä. Relatiivinen hyppy
{KKER7}
kirjoitetaan
hakasulkujen sisään. Kun taas tavanomainen aliohjelma
kutsu
[SAMMU]
kirjoitetaan
kulmasulkujen sisään.
************************************************
ADDR: OPC:
================
KKERA; CD .. .. CALL [SAMMU]
21 .. .. LD HL,[KKOHJ] F6 81 OR 81h
FD 21 LD IY,LCD TEKSTI 08
.. .. [LCD08]
CD .. .. CALL [LCTX1]
CD .. .. CALL [AKVEK]
18 .. JRMP {KKER7} RELATIVE
================
************************************************
- Tässä ohjelma on laskenut osoitteet ja hakenut muuttujien osoitteet niille varattuihin kohtiin.
************************************************
ADDR: OPC:
================
KKERA;0825 CD C4 09 CALL [SAMMU]
0828 21 C0 AF LD HL,[KKOHJ]
082B F6 81 OR 81h
082D FD 21 LD IY,LCD TEKSTI 08
082F 4B 12 [LCD08]
0831 CD 03 0E CALL [LCTX1]
0834 CD 39 08 CALL [AKVEK]
0837 18 24 JRMP {KKER7} RELATIVE
================
************************************************
Lisäksi tuo kyseinen työkaluohjelma tekee binäärisen tiedoston, joka on valmis sellaisenaan poltettavaksi EEPROM-muistipiireihin. style="direction: ltr; font-family: Courier New,Courier,monospace;">Lisää ohjelmakoodia löydät muistin tarkistus ohjelmasta, joka kirjoittaa ensin FF-tavua koko muistin täyteen, ja sen jälkeen 00-tavulla.
Ohjelmoituani ensin koneelle järkevän käyttöjärjestelmän näyttöjen, näppäimistön ja sarjaportin toimimiseksi olikin jo aika saada kone tekemään jotakin järkevää.Nyt tästä koneesta on tänä päivänä kehittynyt kokonaisuus, joka sisältää ohjelmallisen matematiikka-ohjelmiston. Tämä ohjelmisto on käytännössä ohjelmallinen matematiikka-prosessori.