Harjoitukset
Tietokoneen toiminta, K2003.muunto, LH 1
Nämä tehtävät tehdään harjoituksissa 14.1.2003.
Tee tehtävät yksi kerrallaan haluamassasi järjestyksessä. Tarvittaessa
pyydä apua paikalla olevilta ohjaajilta. Halutessasi voit tehdä tehtäviä
pienessä ryhmässä, mutta kaikkien tulee silti kirjoittaa omat vastauksensa ja
tehdä omat ohjelmansa omalla koneellaan. Saatuasi valmiiksi jonkun tehtävän
(joukon tehtäviä), voit pyytää ohjaajaa tarkistamaan suorituksesi.
Ennen pois lähtöäsi varmista vielä, että ohjaajat ovat kirjanneet kaikki
tekemäsi tehtävät. Harjoitustehtäviä voi toki tehdä vielä kotonakin,
mutta kurssin läpipääsyyn ja arvosanaan vaikuttavat vain harjoitustilanteessa
kirjatut tehtävät. Kurssin suoritus edellyttää aktiivisuutta myös
harjoitustehtävien suhteen.
- Korkean tason kieli vs. symbolinen konekieli. Oletetaan, että meillä on
korkean tason kielellä (C, Java, Pascal) tehty ohjelma Simple, joka on käännetty
TTK-91 koneen konekielelle.
Missä fyysisesti erilaisissa tietokoneen komponenteissa ohjelman Simple
muuttujan X arvo voi sijaita (TTK-91 koneessa) ohjelman suoritettaessa?
Anna kaksi vaihtoehtoa. Perustele vastauksesi.
Anna seuraaviin kysymyksiin vastaukset TTK-91 koneen osalta erikseen kullekin
em. kahdelle vaihtoehdolle.
- Millä konekäskyillä X:n arvon voi tulostaa?
- Millä konekäskyillä X:n osoitteen voi tulostaa?
- Millä konekäskyillä X:n arvoksi asetetaan luku 65?
- Millä konekäskyillä X:n osoitteeksi asetetaan luku 211?
- Millä konekäskyillä X:n arvo voidaan tallettaa muistiin muuttujan Y
arvoksi?
- Korkean tason kieli vs. symbolinen konekielen käskyt. Minkälaisen korkean
tason kielen ohjelmakohdan toteuttamiseen voitaisiin käyttää TTK-91 koneen
(pseudo)konekäskyä
- SUB
- MOD
- OR
- XOR
- COMP
- JUMP
- JNGRE
- DC
Anna esimerkki kustakin tapauksesta.
Miten pseudokonekäskyt eroavat tavallista konekäskyistä?
- [2 htp] Opettele käyttämään Koksi simulaattoria. Katso ohjeita kurssin aikataulusivulta
http://www.cs.helsinki.fi/teemu.kerola/tito/k2003.muunto/aikataulu.html
- Kopio koksi.zip sopivaan hakemistoosi (esim hakemisto "koksi"),
pura se samaan hakemistoon.
(Joissakin Windows versioissa hakemistosi tulee sijaita paikallisella
levyllä eikä levypalvelimella.)
- 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.
- Imuroi Koksi esimerkkiohjelmista http://www.cs.helsinki.fi/teemu.kerola/tito/esimerkit
ohjelma sum.k91 ja talleta se samaan "koksi" hakemistoosi.
- Käynnistä Koksi simulaattori (koksi.exec), nollaa sen muisti. Useimmiten
simulattorin kontrollointi on helpompaa näppäimistön (return, nuolet,
Esc) avulla kuin hiirtä käyttäen.
- Laita asetuksista optio "kommentointi" päälle
- Lataa ja käännä ohjelma "sum.k91".
- Mitkä ovat symbolien DONE, KBD ja LUKU arvot?
- Suorita ohjelma syötteillä 5, 4, 3 ja 0. Mikä arvo tulostui?
- Missä muistipaikassa muuttujan SUMMA arvo on talletettuna?
- Laita asetuksista optio "kommentointi" pois päältä ja suoritusnopeudeksi
"hidas".
- Suorita ohjelma syötteillä 4, 3 ja 0. Mikä arvo tulostui? Miksi tulostettu
arvo oli väärin?
Esitä kaksi periaattellisesti erilaista tapaa korjata asia.
- Kokeile molempia tapoja korjata asia ja näytä, että lähestymistapasi
olivat oikeita.
- Muuta ohjelmaa sillä tavoin, että annettujen lukujen summan asemesta
lasketaankin niiden tulo. Voit editoida ohjelmaa joko suoraan Koksi simulaattorissa
valitsemallasi editorilla (alustustiedostosta Koksi.cfg) tai simulattorin
ulkopuolella millä tahansa tekstipohjaisen tiedoston tuottavalla editorilla.
Kaikki Koksi ohjelmatiedostot täytyy kuitenkin tallettaa tuohon samaan
"koksi" hakemistoon.
- Muistin osoitusmuodot. Oletetaan, että kullakin käskyllä jatkossa lähtötilanne
on luennon 2 kalvon 18 (TTK-91 muistin osoitusmoodit)
tilanne. Anna kullekin käskylle tehollinen muistiosoite (effective address)
ja joko muuttuneen rekisterin sisältö tai muuttuneen muistipaikan osoite ja
sisältö. Jos jokin käsky ei ole laillinen, kerro minkä takia näin on.
- LOAD R4, 200
- LOAD R3, One(R1)
- LOAD R3, =One(R1)
- STORE R0, One(R1)
- STORE R2, @9(R3)
- LOAD R0, @R1
- LOAD R1, @(R1)
- STORE R1, @(R1)
- STORE R0, R1
- STORE R2, =One
Pidä mukanasi levykettä harjoitusta varten tekemiesi ohjelmien
tallettamiseen.
Teemu Kerola