Tietokoneen toiminta, kevät 2001

Harjoitus 3

Käsitellään harjoitusryhmissä keskiviikkona 23.5.2001.
  1. Tee ttk-91 koneen symbolisella konekielellä ohjelma, joka tekee saman asiat kuin allaoleva ohjelma
            int x=7, y=3, z=5;  /* variables x, y, z */
            main () {           /* main program */
                y = 4;
                x = 28 + y * z;
                if (x < 40) {
                    y = x - 34;
                    }
                else {
                    y = 0;
                    z = 23;
                    }
                println ( x, y, z)  /* print x, y, z */
            }
    

  2. Vastaa seuraaviin kysymyksiin:
    1. Mihin ympäristöosoitinta FP käytetään? Miksi sitä tarvitaan?
    2. Miten pinoa käytetään aliohjelmien yhteydessä? Millä muulla tavalla parametrit voisi välittää?
    3. Mitä toimintoja on suoritettava aliohjelmaan siirryttäessä?
    4. Mitkä näistä toiminnoista suoritetaan CALL- ja EXIT-käskyjen yhteydessä?
    5. Mitä eroavat toisistaan arvo- ja viiteparametri sekä funktio ja proseduuri? Mitä tarkoitetaan metodilla?

  3. Ttk-91 koneen konekäskyn osoiteosa on vain 16-bittinen. Tämä asettaa rajoituksia käskyssä olevien vakioiden koolle.
    1. Mikä on suurin positiivinen luku, joka voidaan esittää käskyssä vakiona?
    2. Mikä on pienin negatiivinen luku, joka voidaan esittää käskyssä vakiona?
    3. Miten tulee toimia, jos tarvitaankin suurempaa vakiota? Esimerkiksi lukua 500000?
    4. Entä miten tulisi menetellä, jos tarvitaan suurta vakiota indeksoidun osoitusmoodin kanssa? Esimerkiksi, jos halutaan lukea data osoitteesta (R1)+666666?

  4. Laadi symbolisella konekielellä pääohjelma ja aliohjelma Vaihda(X,Y). Aliohjelma vaihtaa X:n ja Y:n arvon:
                       APU = X; 
                       X =  Y; 
                       Y =  APU; 
    
    Välitä parametrit pinossa. Pääohjelma kutsuu aliohjelmaa viiteparametreilla Vaihda(A,B) ja A:ssa on arvona 5 ja B:ssä arvona 7.

  5. Laadi funktio, joka laskee lausekkeen 2x**n +c arvon, kun n>0. Laadi myös pääohjelma, joka kutsuu aliohjelmaa kahdesti arvoilla (x=10, n=2 ja c= 4) ja (x=5, n=4ja c=3). Kummallakin kerralla funktion palauttama arvo tulostetaan. Käytä pinoa parametrien ja paluuarvon talletuksen. Esitä pinon rakenne kutsun jälkeen ja aliohjelmasta paluun jälkeen.

  6. Laadi symbolisella konekielellä ohjelma, joka koostuu pääohjelmasta ja funktiosta KArvo. Funktio KArvo saa parametrikseen taulukon ensimmäisen muistipaikan osoitteen ja peräkkäisiin muistipaikkoihin tallennetun taulukon koon. Se palauttaa kutsujalle taulukon lukujen keskiarvon. Pääohjelmassa varataan tilaa taulukolle 100 muistipaikkaa, luetaan näppäimistöltä taulukon koko (jonka pitää olla pienempi kuin 100), ja tämän jälkeen luetaan näppäimistöltä taulukon alkiot. Lopuksi tulostetaan funktion KArvo avulla laskettu taulukon lukujen keskiarvo.