1. Vastaa seuraaviin kysymyksiin:
a) Mihin ympäristöosoitinta FP käytetään? Miksi sitä tarvitaan?
b) Miten pinoa käytetään aliohjelmien yhteydessä? Millä muulla tavalla parametrit voisi välittää?
c) Mitä toimintoja on suoritettava aliohjelmaan siirryttäessä?
d) Mitkä näistä toiminnoista suoritetaan CALL- ja EXIT-käskyjen yhteydessä?
e) Mitä eroavat toisistaan arvo- ja viiteparametri sekä funktio ja proseduuri? Mitä tarkoitetaan
metodilla?
2. Muistipaikat 100-200 sisältävät kukin edeltävän paikan osoitteen (osoitteessa 200 on 199, 199:ssä 198 jne.). Mitä saavat aikaiseksi seuraavat peräkkäiset käskyt? LOAD R2,@150 LOAD R3,10(R2) LOAD R2,@10(R2)
3. Laadi symbolisella konekielellä ohjelma, joka etsii suurimman 20 *20 kokoisen taulukon diagonaalilla olevista positiivista luvuista ja tulostaa luvun näytölle.
4. Kirjoita alla olevat lauseet TTK-91:n symbolisella konekielellä. Muista koodata myös staattiseen tilanvaraukseen tarvittavat kääntäjän ohjauskäskyt.
int lkm = 77; int Summa, i, j; int Taulu[lkm]; if (i > j) i = -1 else i = 54321; Summa = 0; for (i = lkm/2; i > 0; i--) Summa = Summa + Taulu[i]; Summa = 0; do { Summa = Summa +360} while (Summa >= j);
5. Laadi TTK-91:n symbolisella konekielellä pääohjelma ja aliohjelma Vaihda, joka vaihtaa parametriensa X ja Y arvon:
APU = X; X = Y; Y = APU;Välitä parametrit aktivointitietueessa. Piirrä myös kuva pinosta.
6. Laadi TTK-91:n symbolisella konekielellä aliohjelma Unpack3, joka
sijoittaa kolme lukua annetulle muistialueelle seuraavassa kuvatun
säännön mukaisesti. Aliohjelmalla ei ole paluuarvoa, sen kutsuparametrit
välitetään rekistereissä ja sen tulee säilyttää kaikissa rekistereissä
kutsuhetken mukaiset sisällöt. Voit olettaa, etteivät parametrien arvot
ole virheellisiä.
Rekisterissä R3 annetaan positiivinen vakio tai nolla. R4 sisältää
numerokolmikon eli luvun väliltä 000 ja 999. Riippuen siitä, onko
R3:ssa nolla, R4:n numerokolmikosta muodostetaan samassa järjestyksessä
kolme lukua seuraavasti:
R3==0: | jokaisesta numerosta suoraan vastaava luku 0..9 |
R3!=0: | jokainen numero kerrotaan kolmella ja tuloihin 0..27 lisätään R3:n arvo. |
kutsuparametrit muisti kutsun jälkeen R3:0 R4:456 R5:100 ==> 100:4 101:5 102:6 R3:50 R4:103 R5:200 ==> 200:53 201:50 202:59 R3:80 R4:072 R5:355 ==> 355:80 356:101 357:86