Tietotekniikan alkeet

 

Esimerkkikone TT-K91


 
  Kurssin WWW-sivuille

   Luentomoniste
   Internet
   Sovellusohjelmat
   Tiedostot
   Algoritmit
   Bitit
   Lukujärjestelmät
   Sisuskalut
-> TT-K91
   Lausekielet
   Tietokoneet ja käyttöjärjestelmät
   Oheislaitteet
   Tallennuslaitteet
   Kuvat ja tietokonegrafiikka
   Ääni ja musiikki

  Sulje valikko
 

Koneen rakenne

Tä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 suoritus

Käskyt ovat muotoa command oper1 oper2.

  • command = käskyn symbolinen nimi
  • oper1 = jonkin rekisterin numero
  • oper2 = jonkin rekisterin numero, muistipaikan numero tai vakio

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ö
SUB rekisteri 0010, muistipaikan 1011 sisältö
OUT rekisteriR2, näyttö

Tai vielä selväkielisemmin:

LOAD rekisteriin R2, muistipaikan 12 sisältö eli luku 6
SUB rekisteristä R2, muistipaikan 13 sisältö eli luku 2
OUT rekisterin R2 sisältö, näytölle


Edellä esitetyn ohjelmanpätkän suorittaminen

Edellisen käskyn jälkeen käskyosoittimen (PC) arvoa on kasvatettu yhdellä, ja se on nyt 0000 0100.

  • Ohjausyksikkö hakee seuraavan käskyn keskusmuistista käskyosoittimen (PC) osoittamasta paikasta 0000 0100 (LOAD-käsky) ja
  • sijoittaa sen käskyrekisteriin (IR).
    IR: 0000 0010 0000 0010 0000 1010
  • Käskyosoittimen (PC) arvoa kasvatetaan yhdellä valmiiksi seuraavaa käskyä varten eli se on nyt 0000 0101.
  • Käsky tulkitaan käskyrekisterissä (IR).
  • Muistipaikan 0000 1010 sisältö viedään rekisteriin 0000 0010 eli R2:een.
  • Ohjausyksikkö hakee seuraavan käskyn käskyosoittimen (PC) näyttämästä paikasta (SUB-käsky) ja
  • sijoittaa sen käskyrekisteriinsä (IR).
    IR: 0001 0010 0000 0010 0000 1011
  • Käskyosoittimen (PC) arvoa kasvatetaan yhdellä 0000 0110 :aan.
  • Käsky tulkitaan käskyrekisterissä (IR) ja ensimmäinen operandi haetaan R2:sta, toinen muistipaikasta 0000 1011.
  • Luvut viedään ALUun laskutoimistusta (SUB) varten. ALU suorittaa laskutoimituksen 6-2 ja tuottaa ulos tuloksen 4:

ALUn sisäänmenot ja ulostulo

  • Laskutoimituksen tulos viedään käskyssä mainittuun rekisteriin 0000 0010 eli R2:een.
  • Ohjausyksikkö hakee seuraavan käskyn käskyosoittimen (PC) näyttämästä paikasta (OUT-käsky) ja
  • sijoittaa sen käskyrekisteriinsä (IR).
    IR: 0000 0100 0000 0010 0000 1111
  • Käskyosoittimen (PC) arvoa kasvatetaan yhdellä 0000 0111:een.
  • Käsky tulkitaan käskyrekisterissä (IR) ja ensimmäinen operandi haetaan R2:sta.
  • Tulostus tehdään toisena operandina annetulle laitteelle (tässä näytölle).

Symbolinen konekieli

Tä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äskykanta

Otamme TT-K91-koneen käskyistä käyttöön seuraavat. HUOM. Tämä käskykanta jaetaan monisteena aina kurssin kokeissa.

LOAD R2, R5
Vie rekisteriin R2 rekisterin R5 sisällön.
LOAD R2, 15
Vie rekisteriin R2 muistipaikan 15 sisällön.
LOAD R2, =15
Vie rekisteriin R2 luvun 15.

STORE R2, 15
Tallentaa rekisterin R2 sisällön muistipaikkaan numero 15.

IN R2
Lukee näppäimistöltä kokonaisluvun rekisteriin R2.

OUT R2 tai =15
Kirjoittaa kokonaisluvun näytölle.

ADD R2, R5 tai 15 tai =15
Lisää rekisterin R2 sisältöön rekisterin R5 sisällön, muistipaikan 15 sisällön tai luvun 15.

SUB R2, R5 tai 15 tai =15
Vähentää rekisterissä R2 olevasta luvusta toisen operandin (ks. ADD).

MUL R2, R5 tai 15 tai =15
Kertoo rekisterissä R2 olevan luvun toisella operandilla (ks. ADD).

DIV R2, R5 tai 15 tai =15
Jakaa rekisterissä R2 olevan luvun toisen operandin arvolla (ks. ADD). Tulokseksi tulee vain kokonaisosa.

MOD R2, R5 tai 15 tai =15
Jakaa rekisterissä R2 olevan luvun toisen operandin arvolla (ks. ADD). Tulokseksi tulee jakojäännös.

JUMP 15
Hyppy muistipaikkaan numero 15. (Käskyosoittimen, PC, arvoksi sijoitetaan sen uuden muistipaikan numero 15.)

JNEG R2, 15
Jos R2 < 0, hyppää 15:een (ks. JUMP).

JZER R2, 15
Jos R2 = 0, hyppää 15:een (ks. JUMP).

JPOS R2, 15
Jos R2 > 0, hyppää 15:een (ks. JUMP).

NOP
Tyhjä käsky, ei tee mitään.

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
Sivun URL: http://www.cs.Helsinki.FI/~salaakso/alkeet/luentomoniste/TT-K91.html
Näiden WWW-sivujen hallintajärjestelmän kehitti Tero Pekkanen

DO NOT PRINT THIS DOCUMENT