Tietokoneen toiminta, kesä 2000

Harjoitus 3

Käsitellään harjoitusryhmissä tiistaina 15.8.2000.
  1. 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?

  2. 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?

  3. 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.

  4. 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.

  5. Tee aliohjelma Kopioi, joka kopioi muistialueelta Lahde muistialueelle Kohde n:n muistipaikan sisällön. Välitä parametrit Lahde, Kohde ja n pinossa. Laadi lisäksi pääohjelma, joka kopioi 100 muistipaikan sisällön muistialueelta Vanha alueelle Uusi.

  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 lukujen keskiarvo (funktion KArvo avulla laskettuna).