Harjoitukset

Tietokoneen toiminta, Kesä 2002, LH 2

Nämä tehtävät tehdään harjoituksissa 22.8.2002.

Tee tehtävät yksi kerrallaan haluamassasi järjestyksessä. Tarvittaessa pyydä apua paikalla olevilta ohjaajilta. Halutessasi voit tehdä tehtäviä pienessä ryhmässä (sama kuin viime kerralla?), mutta kaikkien tulee silti kirjoittaa omat vastauksensa ja tehdä omat ohjelmansa omalla koneellaan. Saatuasi valmiiksi jonkun tehtävän (joukon tehtäviä), voit pyytää ohjaajaa tarkistamaan suorituksesi.

Ennen pois lähtöäsi varmista vielä, että ohjaajat ovat kirjanneet kaikki tekemäsi tehtävät. Harjoitustehtäviä voi toki tehdä vielä kotonakin, mutta kurssin läpipääsyyn ja arvosanaan vaikuttavat vain harjoitustilanteessa kirjatut tehtävät. Kurssin suoritus edellyttää aktiivisuutta myös harjoitustehtävien suhteen.

  1. Korkean tason kieli vs. symbolinen konekieli. Oletetaan, että meillä on korkean tason kielellä (C, Java, Pascal) tehty ohjelma Simple, joka on käännetty TTK-91 koneen konekielelle.

    Missä fyysisesti erilaisissa tietokoneen komponenteissa ohjelman Simple muuttujan X arvo voi sijaita (TTK-91 koneessa) ohjelman suoritettaessa? Anna kaksi vaihtoehtoa. Perustele vastauksesi.

    Anna seuraaviin kysymyksiin vastaukset TTK-91 koneen osalta erikseen kullekin em. kahdelle vaihtoehdolle.

    1. Millä konekäskyillä X:n arvon voi tulostaa?
    2. Millä konekäskyillä X:n osoitteen voi tulostaa?
    3. Millä konekäskyillä X:n arvoksi asetetaan luku 65?
    4. Millä konekäskyillä X:n osoitteeksi asetetaan luku 211?
    5. Millä konekäskyillä X:n arvo voidaan tallettaa muistiin muuttujan Y arvoksi?
     
  2. Korkean tason kieli vs. symbolinen konekieli. Oletetaan, että meillä on korkean tason kielellä (C, Java, Pascal) tehty ohjelma Simple, joka on käännetty TTK-91 koneen konekielelle.
    1. Mitkä ohjelman Simple tiedot (esim. muuttujien arvot) haluttaisiin pitää laiterekistereissä koko ohjelman suorituksen ajan. Miksi? Anna esimerkkejä.
    2. Mitkä ohjelman Simple tiedot haluttaisiin pitää muistissa koko ohjelman suorituksen ajan. Miksi? Anna esimerkkejä.
    3. Mitkä ohjelman Simple tiedot haluttaisiin pitää joskus rekisterissä ja joskus muistissa ohjelman suorituksen aikana. Miksi? Anna esimerkkejä.
    4. Mitkä ohjelman Simple tietojen ei tarvitse sijaita missään ohjelman suorituksen aikana? Miksi? Anna esimerkkejä. (Tämä ei ole trikkikysymys)

  3. Tee ttk-91 koneen symbolisella konekielellä ohjelma, joka tekee saman kuin C ohjelma
            int x=7, y=3, z=5;  /* variables x, y, z */
            main () {           /* main program */
                y = 4;
                x = 52 - y * z;
                if (x < 40) {
                    y = x - 34;
                    }
                else {
                    y = x / y + 4;
                    z = 23;
                    }
                printf ( "%d %d %d \n", x, y, z)  /* print x, y, z */
            }
    

    Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin avulla.

     

  4. Ohjelmassa käytetyt vakiot (esim. luku MAXID=78) voivat sijaita useassa eri paikassa ohjelman suorituksen aikana. Anna ttk-91 koneen symbolisella konekieliset käskyt, joilla rekisterin R1 arvoon lisätään vakion MAXID arvo ja vakion MAXID arvo (78) otetaan käyttöön
    1. muistista (muistipaikasta)
    2. rekisteristä
    3. konekäskystä

    Anna esimerkki tilanteesta, jossa tapa (a) olisi sopivin. Vastaavasti tapauksille b ja c. Perustele esimerkkisi.

     

  5. Henkilörekisterin tietuetyyppi on voidaan määritellä pseudokäskyillä  
    	# record person:        3 integer fields 
    	Id   	EQU  0   # relative address within record
    	Age     EQU  1
    	Salary  EQU  2
    

    Tietueet Pekka ja Jussi voidaan varata muistista alustettuna ja tietue Maija alustamattomana pseudokäskyillä (valekäskyillä)

    	Pekka	DC   3214   # ID     =  3214
    		DC     35   # AGE    =    35
     		DC  12345   # SALARY = 12345
    	Jussi	DC   8888
    		DC     54
     		DC  14321
    	Maija	DS      3   # initial values not defined

    Esimerkki: Jos R4 osoittaa tietueen Pekka alkuun, niin Pekan palkka saadaan rekisteriin R5 konekäskyllä 

        	   LOAD   R5, Salary(R4)

    Tee ttk-91 koneen symbolisella konekielellä ohjelma, joka

    1. Tulostaa R1:n osoittaman henkilön kaikkien kenttien arvot, kun R1 on ensin alustettu osoittamaan Jussin tietoja konekäskyllä "LOAD   R1, =Jussi".
    2. Asettaa Maijan id:ksi 6666, iäksi 32, ja palkaksi saman kuin mitä Jussilla tällä hetkellä on.
    3. Tulostaa Pekan, Jussin ja Maijan palkkojen summan.

    Muista määritellä tietuetyyppi ja varata tilaa tietueille ohjelmasi alussa edellä esitettyjen pseudokäskyjen avulla. Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin avulla.


Teemu Kerola