Käsitellään harjoitusryhmissä keskiviikkona 16.5.2001.
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ö.
LOAD R4, 200
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
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
Kopio koksi.zip sopivaan hakemistoosi (esim "koksi"),
pura se samaan hakemistoon.
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.
TTK-91 assembler -kääntäjän ohjauskäskyt
Mitä eroa on kääntäjän ohjauskäskyillä ja tavallisilla käskyillä?
Mitä eroa on käskyillä "a dc 1" ja "a ds 1"?
Mitä tapahtuisi, jos kääntäjän ohjauskäskyjä yritettäisiin suorittaa?
Tilarekisteri SR
Milloin ja miten tilarekisterin bitteihin kirjoitetaan arvoja?
Miten tilarekisterin eri bitit eroavat tässä suhteessa?
Milloin ja miten tilarekisterin bittien arvoja tutkitaan?
Miten tilarekisterin eri bitit eroavat tässä suhteessa?
Mitkä konekäskyt kirjoittavat tilarekisteriin?
Mitkä konekäskyt lukevat tilarekisteriä?
Ohjelma simulointi ja muuttaminen
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
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ä.
Optimoi koodia, ts. poista lopputuloksen kannalta tarpeettomat käskyt.
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.