Tietokoneen toiminta, kevät 2001

Harjoitus 2

Käsitellään harjoitusryhmissä keskiviikkona 16.5.2001.
  1. Muistin osoitusmuodot. Oletetaan, että kullakin käskyllä jatkossa lähtötilanne on luentojakson 2 kalvon 18 tilanne. Anna kullekin käskylle tehollinen muistiosoite (effective address) ja joko muuttuneen rekisterin sisältö tai muuttuneen muistipaikan osoite ja sisältö.
    1. LOAD R4, 200
    2. LOAD R3, One(R1)
    3. STORE R0, One(R1)
    4. STORE R2, @9(R3)
    5. LOAD R0, @R1
    6. LOAD R1, @(R1)
    7. STORE R1, @(R1)
    8. STORE R0, R1
    9. STORE R2, =One

  2. a) Tutustu KOKSI-simulaattoriin lukemalla KOKSI-simulaattorin käyttöohje, joka löytyy kurssin kotisivulta ja myös kurssimapista.
    b) Imuroi KOKSI Auvo Häkkisen sivuilta (ftp://ftp.cs.helsinki.fi/pub/People/Hakkinen_Auvo/koksi.zip) ja asenna sen omalle koneellesi tai kokeile sen käyttöä laitoksen koneissa. KOKSI löytyy laitokselta konesalien D326 ja D327 koneista.

    Ohessa on lisäohjeita KOKSIn asentamiseen

    1. Kopio koksi.zip sopivaan hakemistoosi (esim "koksi"), pura se samaan hakemistoon.
    2. Käytä esim. "Find" apurutiinia paikallistaaksesi jonkun tekstipohjaisen editorin (esim. "edit.com") ja laita sen absoluuttinen polkunimi (esim. "c:\dos\edit.com") alustustiedoston Koksi.cfg ainoaksi riviksi.

  3. TTK-91 assembler -kääntäjän ohjauskäskyt
    1. Mitä eroa on kääntäjän ohjauskäskyillä ja tavallisilla käskyillä?
    2. Mitä eroa on käskyillä "a dc 1" ja "a ds 1"?
    3. Mitä tapahtuisi, jos kääntäjän ohjauskäskyjä yritettäisiin suorittaa?

  4. Tilarekisteri SR
    1. Milloin ja miten tilarekisterin bitteihin kirjoitetaan arvoja?
      Miten tilarekisterin eri bitit eroavat tässä suhteessa?
    2. Milloin ja miten tilarekisterin bittien arvoja tutkitaan?
      Miten tilarekisterin eri bitit eroavat tässä suhteessa?
    3. Mitkä konekäskyt kirjoittavat tilarekisteriin?
    4. Mitkä konekäskyt lukevat tilarekisteriä?

  5. Ohjelma simulointi ja muuttaminen
    1. 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
      
    2. 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ä.
    3. Optimoi koodia, ts. poista lopputuloksen kannalta tarpeettomat käskyt.

  6. Kirjoita TTK-91:n symbolisella konekielellä ohjelmapätkä, jossa verrataan kahden muistipaikan EKA ja TOKA sisältöä ja sijoitetaan R1:een sen muistipaikan osoite, jonka sisältö on suurempi. Jos sisällöt ovat yhtä suuret, sijoitetaan R1:een nolla.

Huom! Voit tarkista konekielisten ohjelmiesi toimivuuden kääntämällä ja suorittamalla niitä Koksin avulla.