Harjoitukset
Huom 1: Kaikilla oppilailla tulisi olla TKTL:n tunnus/salasana
laitoksen Linux- ja Windows-järjestelmien käyttämistä varten. Yliopiston
opiskelijat (joilla on jo ATK-osaston UNIX-tunnus) pyytävät TKTL-tunnusta
tktl-luvat@cs.helsinki.fi:stä
(ks. ohjeet
http://www.cs.helsinki.fi/compfac/ohjeet/Luvat/uusi.html#sivuainelupa).
Jos sinulla ei vielä ole TKTL-tunnusta, niin saat tilapäisen tunnuksen kurssin
ajaksi käyttöösi harjoitusten vetäjältä. Tilapäinen tunnus lakkaa
toimimasta 30.9.2004, ellet ole siihen mennessä hakenut siihen jatkoaikaa Pekka
Niklanderilta (huone A230 Exactumissa).
Huom 2: Kaikkien tulisi ilmoittautua kurssikirjanpitoa varten TKTL:n ILMO
järjestelmään. Jos et ole tehnyt sitä vielä, niin tee se
ystävällisesti nyt heti ensimmäiseksi. Kiitos.
Tietokoneen toiminta, Kesä 2004, LH 1
Nämä tehtävät tehdään (paikan päällä!) harjoituksissa 18.8.2004.
Tee tehtävät yksi kerrallaan haluamassasi järjestyksessä. Tarvittaessa
pyydä apua paikalla olevilta ohjaajilta. On suotavaa tehdä tehtäviä
pienessä ryhmässä (2-3 henkilö), mutta kaikkien tulee silti kirjoittaa omat
vastauksensa ja tehdä omat ohjelmansa omalla koneellaan. Tarkoitus on oppia,
eikä tarkastella muiden oppimista :-). Saatuasi valmiiksi jonkun tehtävän
(joukon tehtäviä), voit pyytää ohjaajaa tarkistamaan suorituksesi.
Tavoitteena on, että harjoituksen jälkeen osaat itsenäisesti (esim.
kurssikuulustelussa) kuhunkin tehtävään liittyvät kurssin asiat.
Jatkoa ajatellen on erityisen tärkeätä, että saat tehtyä tehtävän 3 loppuun
tänään.
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 Titokone simulaattoria. Katso ohjeita kurssin
aikataulusivulta
http://www.cs.helsinki.fi/teemu.kerola/tito/ks2004/aikataulu.html kohdassa
Kirjallisuutta ja muita viitteitä.
- Lue asennusohje ja asenna Titokone Windows tai Linux-järjestelmääsi.
Esimerkiksi Windows-järjestelmässä kopio titokone.zip itsellesi sopivaan
alihakemistoon (esimerkiksi nimeltään "titokone") ja pura se sinne.
- Kopio ttk-91 -esimerkkiohjelmista http://www.cs.helsinki.fi/teemu.kerola/tito/esimerkit ohjelma
sum.k91 ja talleta se sopivaan alihakemistoon (esimerkiksi "titokone/ttk91").
- Käynnistä Titokone. Esimerkiksi Windows-järjestelmässä tuplaklikkaa
titokone.bat tiedostoa alihakemistossasi titokone.
- Valitse asetuksista Options/Set language suomen kielinen käyttäliittymä,
jollei se ole jo oletusarvoisesti päällä
- Laita molemmat käännösasetusoptiot (Asetukset/Muuta käännösasetuksia)
päälle
- Tyhjennä simuloidun ttk-91 -koneen muisti Tiedosto/Tyhjennä muisti
-komennolla.
- Valitse symbolisella konekielellä kirjoitettu ohjelma sum.k91 käyttöön
Tiedosto/Avaa -komennolla ()
- Käännä ohjelma sum.k91 Tiedosto/Käännä
-komennolla () konekieliseksi
ohjelmaksi sum.b91. Käännös tapahtuu rivi kerrallaan -nappia
napauttamalla. Katso kunkin rivin jälkeen tulostuvaa kommenttia
kommentti-ikkunan ylärivillä. Lopulta voit kääntää koko
tiedoston loppuun yhteen menoon -napilla.
- Mitkä ovat symbolien Done, KBD ja Luku arvot? Mihin muistipaikkaan
muuttujan Summa arvo talletetaan suoritusaikana? Mikä on muuttujan Summa
alkuarvo?
- Valitse suoritusasetuksista (Asetukset/Muuta suoritusasetuksia) "Suorita
koodia rivi kerrallaan" ()
ja "Näytä lisäkommentteja suorituksen kulusta" ().
- Suorita ohjelma Tiedosto/Aja komennolla ().
Anna syötteet 5, 4, 3 ja 0 yksi kerrallaan KBD-ikkunaan. Suorita
ohjelmaa rivi kerrallaan -napilla
ja tarkkaile, kuinka jokainen konekäsky vaihtaa koneen "tilaa" muuttamalla
sen rekistereiden ja/tai muistin sisältöä. Kun/jos kyllästyt
rivi kerrallaan suoritukseen, voit suorittaa koko ohjelman loppuun yhteen
menoon ().
Ohjelman suoritus pysähtyy silti aina, kun IN-käskyn avulla
yritetään
lukea näppäimistöltä KBD. Mikä arvo
tulostui CRT-ikkunaan?
- Laita suoritusasetuksista muut optiot
pois päältä, mutta pistä optio "Näytä animointi suoritettaessa" ()
päälle.
- Suorita ohjelma syötteillä 444, 333 ja 0. Ennen ensimmäisen luvun
syöttämistä
KBD-ikkunaan valitse Animaattorin yläpalkista sen suoritusnopeudeksi
"Slow" ja jatka sitten suoritusta käskyjä yksi kerrallaan
suorittaen (). Huomaa, kuinka
jokaisen suoritettavan käskyn yhteydessä käsky ensin haetaan
muistista käskyrekisteriin
IR kyseisen konekäskyn osoitteen osoittamasta muistipaikasta. Mikä on
käskyn "LOAD
R1, Summa" lukuarvo
rekisterissä IR?
Mikä on laitteen
KBD "muistiosoite" MAR-rekisterissä?
- Muuta ohjelmaa sillä tavoin, että annettujen lukujen summan asemesta
lasketaankin niiden tulo. Voit editoida ohjelmaa joko suoraan Titokoneessa
tai simulattorin ulkopuolella millä tahansa tekstipohjaisen tiedoston
tuottavalla editorilla. Huomaa, että titokoneessa tiedostoa editoidessa
se aina päivittyy "automaattisesti" - kirjoittaen alkuperäisen tiedoston
päälle!
- Onneksi olkoon! Nyt osaat asentaa Titokoneen omaan ympäristöösi ja
suorittaa sillä valmiiksi tehtyjä ttk-91 -ohjelmia. Osaat myös tehdä
pieniä muutoksia valmiisiin ohjelmiin. Jatkossa tulet tietenkin tekemään
ohjelmasi itse.
- 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
Teemu Kerola