|
|
Esimerkkikone TT-K91 |
||
Koneen rakenneTässä käsitellään Tito-kurssilla (Tietokoneen toiminta) käytettävää TT-K91-esimerkkikonetta. Tästä Alkeiden kurssilla käsitellystä osasta on Sinulle toivottavasti hyötyä sitten, kun käyt Tito-kurssia. Rekisterit Rekisterit R0-R5 ovat tavallisia rekistereitä. Rekistereistä R6 ja R7 ei välitetä tässä yhteydessä (vasta Tito-kurssilla). Ohjausyksikkö Käskyosoitin PC (Program Counter) sisältää seuraavan käskyn numeron. Käskyrekisteriin IR (Instruction Register) tuodaan itse suoritettava käsky. Keskusmuisti Keskusmuisti koostuu 32-bittisistä muistipaikoista, mutta Alkeiden kurssilla käyttämissämme esimerkeissä muistipaikan koko on vain 24 bittiä. Käskyt ja niiden suoritusKäskyt ovat muotoa command oper1 oper2.
Yksinkertaistettu esimerkki: Kahden muistissa olevan luvun vähennyslasku ja tuloksen tulostaminen näytölle. Sekä käskyt että data ovat keskusmuistissa, esim. 0000 0011: ... edellinen käsky 0000 0100: 0000 0010 0000 0010 0000 1010 <- LOAD 0000 0101: 0001 0010 0000 0010 0000 1011 <- SUB 0000 0110: 0000 0100 0000 0010 0000 1111 <- OUT 0000 0111: ... seuraava käsky 0000 1000: 0000 1001: 0000 1010: 0000 0000 0000 0000 0000 0110 <- luku 6 0000 1011: 0000 0000 0000 0000 0000 0010 <- luku 2 Edelliset keskusmuistin käskyt hieman luettavammassa muodossa:
LOAD rekisteri 0010, muistipaikan 1010 sisältö Tai vielä selväkielisemmin:
LOAD rekisteriin R2, muistipaikan 12 sisältö eli luku 6 Edellä esitetyn ohjelmanpätkän suorittaminen Edellisen käskyn jälkeen käskyosoittimen (PC) arvoa on kasvatettu yhdellä, ja se on nyt 0000 0100.
Symbolinen konekieliTällainen edellä esitetty bittien pyörittäminen on työlästä. Käskyjä ja dataa on vaikea hahmottaa... Annetaan bittijonoille nimet, niin on helpompaa: käskyille lyhyet, kuvaavat nimet ja luvuille meille tutun kymmenjärjestelmän vastineet. LOAD R2, 10 <- muistipaikka 10 SUB R2, 11 <- muistipaikka 11 OUT R2, =CRT <- näyttö Tämä on symbolista konekieltä (assembly language). TT-K91:n käskykantaOtamme TT-K91-koneen käskyistä käyttöön seuraavat. HUOM. Tämä käskykanta jaetaan monisteena aina kurssin kokeissa.
LOAD R2, R5
STORE R2, 15
IN R2
OUT R2 tai =15
ADD R2, R5 tai 15 tai =15
SUB R2, R5 tai 15 tai =15
MUL R2, R5 tai 15 tai =15
DIV R2, R5 tai 15 tai =15
MOD R2, R5 tai 15 tai =15
JUMP 15
JNEG R2, 15
JZER R2, 15
JPOS R2, 15
NOP R2:n ja R5:n tilalla voit käyttää rekistereitä R0-R5. EsimerkkejäTee ohjelma, joka lukee kolme lukua ja tulostaa ne käänteisessä järjestyksessä. Toteuta kahden luvun kertolasku: luvut luetaan ja tulos kirjoitetaan näytölle. 0: IN R1 1: IN R2 2: IN R3 3: OUT R3 4: OUT R2 5: OUT R1 Jaa syöttöluku 3:lla ja lisää jakojäännökseen 5. Tallenna tulos muistipaikkaan 12. 0: IN R1 1: MOD R1, =3 2: ADD R1, =5 3: STORE R1, 12 Toteuta max(x,y). Eli luetaan 2 lukua ja kirjoitetaan suurempi näytölle. 0: IN R1 1: IN R2 2: LOAD R0, R1 3: SUB R0, R2 4: JPOS R0, 7 5: OUT R2 6: JUMP 8 7: OUT R1 8: NOP Laadi ohjelma, joka tekee algoritmien yhteydessä esitetyn keskiarvon laskemisen. Ohjelma lukee lukuja ja tulostaa niiden keskiarvon. Oletetaan, että luvut ovat positiivisia kokonaislukuja. Negatiivinen kokonaisluku lopettaa lukujen syöttämisen. 0: LOAD R0, =0 // summa 1: LOAD R1, =0 // lkm 2: IN R2 3: JNEG R2, 7 4: ADD R0, R2 // summa := summa + luku 5: ADD R1, =1 // lkm := lkm + 1 6: JUMP 2 7: JZER R1, 11 8: DIV R0, R1 9: OUT R0 10: JUMP 12 11: OUT =-1 // Tulostaa -1, kun lukuja ei ollut ollenkaan. 12: NOP |
|||
Päivitetty 30.12.1998 / Sari A. Laakso,
email: salaakso@cs.helsinki.fi |