Tietokoneen toiminta syksy -99

Laskuharjoitus 3 (8.-12.11.)


1.
a) Simuloi alla olevan ohjelman toimintaa. Mitä ohjelma tulostaa, jos annat syötteeksi syntymäkuukautesi järjestysnumeron? Entä mitä tapahtuu, jos annat syötteeksi negatiivisen luvun?

  Alku  LOAD  R1,=0
        STORE R1,15
        IN    R2,=KBD
        STORE R2,14
        LOAD  R3,15
        ADD   R3,14
        STORE R3,15
        LOAD  R4,14
        SUB   R4,=1
        STORE R4,14
        JPOS  R4,4
        LOAD  R5,15
        OUT   R5,=CRT
  Loppu SVC   SP,=HALT
b) Ohjelmassa on laskettu ihan itse muuttujille osoitteet. Se voidaan kuitenkin jättää kääntäjän murheeksi. Muuta koodia siten, että siitä tulee 'luettavampi' ja siihen on jälkikäteen helpompaa lisätä uusia käskyjä.
c) Optimoi koodia, ts. poista lopputuloksen kannalta tarpeettomat käskyt.

2. a) Mitä seuraavat käskyt tekevät? Olkoon symbolin jatko arvo 100 ja symbolin a arvo 120. Rekisterissä R2 on 20.

	IN    R1,=KBD
        MUL   R1,=7
        STORE R1,a
        JUMP  @jatko(R2)

b) Eräiden rekisterien ja muistipaikkojen sisältö on seuraava:

  R1: 0, R2: 10, R3: 100 

  MP 100: 200, MP 110: 300, MP 200: 400, 
  MP 300: 500, MP 400: 400 
Mikä on R1:n sisältö seuraavien käskyn jälkeen? Oletetaan, että käskyt suoritetaan annetussa järjestyksessä.
  1) LOAD R1, 100(R2)  2) LOAD R1, =100(R3)  3) LOAD R1, @R3      
  4) LOAD R1, R3       5) LOAD R1, @100(R2)  6) LOAD R1, @400(R1) 

3. Kurssilla on sata oppilasta. Peräkkäisissä muistipaikoissa 100, ..., 199 on kunkin oppilaan pistemäärät. Kirjoita symbolisella konekielellä ohjelma, joka tulostaa oppilaiden pistemäärien keskiarvon.

4. Laadi symbolisella konekielellä ohjelma, joka lukee käyttäjän syöttämän positiivisen kokonaisluvun ja tulostaa sen kertoman. (Positiivisen kokonaisluvun kertomahan on sen ja sitä pienempien mutta nollaa suurempien kokonaislukujen tulo. Esim. viiden kertoma on 5*4*3*2*1 eli 120.)

5. Nämä muistista löytyneet bittijonot on esitetty tässä heksadesimaalijärjestelmän lukuina.

    01 A0 00 A0
    18 47 00 01
    13 31 FF FF
    02 80 FF FE
Esitä vastaavat käskyt TTK-91 symbolisella konekielellä (vihje: muunna ensin bittimuotoon). Mitä käskyt tekevät?

6.
a) Tutustu Koksi-simulaattoriin. Voit imuroida simulaattorin kurssin kotisivulta ja asentaa sen koneellesi tai kokeilla sitä laitoksen koneissa. Koksi löytyy ainakin salin D427 koneista Windows-käyttöjärjestelmän File Managerista G-levyltä. Testaa Koksilla tekemiäsi konekielisisiä ohjelmia.
b) Miten alkaisit itse toteuttaa Koksin kaltaista simulaattoria? Riittää kun lyhyesti selostat ohjelman toimintaideaa hyvin yleisellä tasolla ja kerrot jotain kaikkein keskeisimmistä tietorakenteista.