Luento 2 TTK-91 tietokone ja sen simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91 (1) TTK-91 laitteisto

Samankaltaiset tiedostot
Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: rekisterit

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: tietotyypit (2)

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Luento 5 (verkkoluento 5) Suoritin ja väylä

Ttk-91 esimerkkitietokone ja sen simulaattori

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Kertausluento luennoista 1-3 1

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

1. Keskusyksikön rakenne

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 5 (verkkoluento 5) Suoritin ja väylä

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Jakso 5 Suoritin ja väylä

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Jakso 5 Suoritin ja väylä

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Tiedon sijainti suoritusaikana (3) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Miten tietoon viitataan? (4)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tiedon sijainti suoritusaikana. Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Jakso 5 Suoritin ja väylä. Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Luento 5 Suoritin ja väylä

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5)

Luento 5 Suoritin ja väylä

Luento 5 Suoritin ja väylä

Tietokoneen toiminta, K Tavoitteet (4)

Luento 5 Suoritin ja väylä

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Käyttöjärjestelmän rakenne

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Aliohjelmien toteutus Suoritin ja väylä

Tietokoneen toiminta Copyright Teemu Kerola Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus

Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys

Muistihierarkia Kiintolevyt I/O:n toteutus

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Käskykannat. Tietokoneen rakenne. Ch [Sta06] Operaatioista Operandeista Osoitustavoista Pentium / PowerPC. Luento 7-1

Järjestelmän ulkoinen muisti I/O

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Monipuolinen esimerkki

Luento 7: Käskykannat Tietokoneen rakenne / 2006 / Teemu Kerola 9/25/2006

Tietokoneen rakenne Käskysykli CPU suorittaa ohjelmaa konekielinen käsky kerrallaan

Luento 4 Aliohjelmien toteutus

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Jakso 4 Aliohjelmien toteutus

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Jakso 4 Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I) Tavoitteet (4) Mitä hyötyä tästä on? (4) Kurssien välisiä riippuvuuksia

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus

Tietokoneen toiminta Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2003

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Muistihierarkia Kiintolevyt I/O:n toteutus

Luento 12 Yhteenveto. Tavoitteet. Keskeisiä asioita. Mitä hyötyä tästä on? Esimerkkikone: TTK-91 laitteisto. Tietokoneen toiminta 27.4.

ltöä rjestelmä Luento 2: LAITTEISTOSTA Tietokonejärjestelm KESKUSYKSIKKÖ Keskusyksikkö Kuva 1.1 KJ-I S2005 / Tiina Niklander & Auvo Häkkinen 2-1

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Transkriptio:

Luento 2 tietokone ja sen simulaattori Miksi? rakenne ja käskykanta-arkkitehtuuri Mikä on simulaattori? Miten ohjelmia suoritetaan simulaattorissa? Miksi konekieltä? Koneen toiminnan ymmärtäminen Oman ohjelman toiminnan ymmärtäminen Koneenläheinen ohjelmointi Kääntäjän tekeminen kääntäjä kääntää konekielelle lausekielisen ohjelman Ohjelman tehokkuus osia ohjelmasta ohjelmoidaan suoraan konekielellä 1 2 Miksi ei oikeaa konekieltä? Oikeat konekielet huomattavasti monimutkaisempia niiden opetteluun tarvitaan oma kurssi Vaikeaa valita sopivinta paljon erilaisia konekieliä Keskitytään vain opetuksen kannalta oleellisiin asioihin tarvittaessa oikea konekieli helppo oppia Tietokone Laitteisto, hardware (HW) suoritin, muisti, väylät, oheislaitteiden liitännät Käskykanta - konekieliarkkitehtuuri käyttöliittymä laitteistoon konekäskyt, tiedon esitysmuodot, tietotyypit Symbolinen konekieli luettavampi muoto konekielestä kullakin symbolilla yksikäsitteiset arvot TITOKONE ja KOKSI simulaattorit koneen laitteiston simulaattori symbolisen konekielen kääntäjä graafinen käyttöliittymä, debugger-ympäristö 3 4 laitteisto suoritin - CPU ALU CU väylä muisti (kirjastorutiinit) rekisterit (käyttöjärjestelmä) MMU (sisältää välimuistin) ohjelma data laiteohjaimet regs R0 MMU R2 R4 R6 (1) R1 R3 R5 R7 IN1 BASE LIMIT MAR MBR IN2 ALU OUT PC IR CU SR Rekisterit, ohjausyksikkö, aritmeettis-looginen yksikkö ja muistinhallintayksikkö TR 5 6 Luento 2, 1

rekisterit 8 yleisrekisteriä vain näitä rekistereitä voi koskettaa (suoraan) konekäskyillä kaikki laskenta tapahtuu rekistereiden avulla R1-R5 yleisiä työ- ja indeksirekistereitä käyttötapa riippuu rekisterin sijainnista konekäskyssä ja muistiinviittaustavasta pino-osoitin (stack pointer) SP = R6 ja ympäristöosoitin (frame pointer) FP = R7 on varattu aliohjelmien toteuttamiseen R0 työrekisteri numero 0 indeksirekisterin kohdalla tarkoittaa, että indeksirekisteriä ei käytetä) Kontrolliyksikkö (CU) PC - Program Counter, käskyosoitin seuraavaksi suoritettavan konekäskyn osoite IR - Instruction Register, käskyrekisteri suorituksessa oleva konekäsky TR - Temporary Register, apurekisteri tilapäinen talletuspaikka käskyn suoritusaikana SR - State Register, tilarekisteri suorittimen tila ja rajoitukset tällä hetkellä 7 8 Tilarekisteri SR Tilarekisteri SR jatkuu Tilatietoa siitä, mitä suorittimella tapahtui edellisen käskyn suorituksessa virhetilanteet, poikkeukset konekäsky olikin käyttöjärjestelmän palvelupyyntö vertailun tulos Tilatietoa siitä, mitä systeemissä tapahtui viime aikoina käsittelemättömät laitteiden antamat signaalit (laitekeskeytykset, device interrupts) Tilatietoa siitä, mitä suoritin saa tehdä jatkossa etuoikeutettu tila: kaikki muistialueet ja kaikki käskyt sallittuja normaali suoritustila: tavalliset käskyt, oma muistialue poikkeusten ja keskeytysten käsittely sallittua vai ei? 9 10 Tilarekisteri SR (9) 32 bittiä (kunkin arvo 0 tai 1), käytössä 11 bittiä SR: GEL OZUM IS P D???????? M = epäkelpo muistiviittaus (Forbidden Mem. addr.) U = epäkelpo operaatiokoodi (Unknown Instr.) Z = nollalla jako (Divide by Zero) O = aritmeettinen ylivuoto (Arithmetic Overflow) GEL = vertailun tulos (Comparison Result: Greater, Equal, Less) D = kesk. estetty (Interrupts Disabled) P = etuoikeutettu tila (Priviledged Mode) S = SVC palvelupyyntö (supervisor call) I = laitekeskeytys (Device Interrupt) 11 Muistinhallintayksikkö Muistiinviittausrekisterit MAR muistiosoiterekisteri (Memory Address Register) MBR muistin puskurirekisteri (Memory Buffer Register) sisältää muistista luettavan tai kirjoitettavan arvon Ohjelman käytössä oleva muistialue vain tähän alueeseen voi normaalitilassa viitata kantarekisteripari{base, LIMIT} BASE - muistisegmentin alkuosoite LIMIT - muistisegmentin koko kaikki osoitteet suhteellisia BASE rekisterin arvoon esim. jos BASE=8000, niin käskyssä oleva osoite 34 viittaa muistiosoitteeseen 8034 käyttöjärjestelmä asettaa ja valvoo memory 12 Luento 2, 2

Käskykanta Tietotyypit Konekäskyjen tyypit Konekäskyn rakenne montako bittiä, minkälainen sisäinen rakenne Muistissa olevan tiedon osoitustavat konekielessä symbolisessa konekielessä Operaatiot Pseudo-operaatiot tietotyypit 32 bittinen kokonaisluku noin 10-numeroinen desimaaliluku EI: liukulukuja pitkiä 64 bitin kokonaislukuja merkkejä tai merkkijonoja totuusarvoja 13 14 käskytyypit Vain yksi muoto, käsky aina 32 bittiä Aina 2 operandia itse käskyssä aina ei molemmilla ole merkitystä JUMP NOP ei operandeja lainkaan Ensimmäinen operandi aina rekisterissä Toinen operandi muistissa, konekäskyssä tai rekisterissä luku rekisteristä/konekäskystä on nopeampaa kuin muistista hakeminen ALU-operaatioiden tulos aina 1. operandin paikalle rekisteriin korvaa 1. operandin arvon! (vanha arvo ei enää käytettävissä) vain yksi operandi, hypyn osoite 15 VIITE Symbolinen konekieli (7) Loop Add R4, @Taulu(R1) OPER Rj, M ADDR(Ri) Ri = indeksirekisteri ADDR = osoiteosa tai vakio M = 2. operandin tiedon osoitusmoodi Rj = 1. operandina oleva rekisteri ja tulosrekisteri OPER = käskyn symbolinen nimi, opcode VIITE = käskyn (symbolinen) osoite Suora vastaavuus konekieleen yksinkertainen assembler-käännös 16 Symbolinen konekieli Symbolien vastaavuus 1:1 kaikkialla viite = muistiosoite (eli tietyn tyyppinen vakio) operaatiokoodi eli opcode = vakio osoitekentän symboli = vakio tai muistiosoite kenttään voi kirjoittaa joko symbolin tai arvon! Kaikki käytetyt muistiosoitteet suhteellisia BASE-osoitteeseen, eli arvoalueella [0, LIMIT-1] Osoitusmoodi: monimutkaisempi vastaavuus konekielessä 3 moodia vakio ja/tai rekisteri (2. operandi = vakio + indeksirekisterin arvo) indeksoitu, epäsuora indeksoitu (tieto muistissa) symbolisessa konekielessä 8 moodia helpottavat ohjelmointia toteutettu konekielen 3 moodin avulla 17 Symbolinen konekieli vs. konekieli (3) LOAD R1, 10 2 1 1 0 10 arvo rekisteristä ADD R2, R3 17 2 0 3 0 osoite ja arvo muistista MUL R4, @Salary(R1) 19 4 2 1 3020 ind. rek ind. rek hae muistista ei ind. rek osoite ei vakiota vakiolisäys 18 Luento 2, 3

Tiedon osoitusmuodot symbolisessa konekielessä 8 eri osoitusmoodia (vain 2. operandille!) Tekstuaalisesti koodattuna osoitusmoodi LOAD R1, @Field1(R3) = vakio [+ rekisterin arvo] tyhjä arvo rekisterissä tai muistissa @ epäsuora viite muistiin sulkumerkit rekisterin ympärillä ei sulkuja käytä rekisterin arvoa sellaisenaan sulut käytä rekisterin osoittamaa muistipaikan arvoa 0-arvoa ei kirjoiteta näkyviin indeksirekisterinä R0 tai vakiona 0 19 Indeksointi Laske aina ensin tehollinen muistiosoite (effective address, EA): Sitten katso moodia ja tee niin monta muistinoutoa kuin tarvitaan = : 0 kpl R4 201 (vakion käyttö) tyhjä: 1 kpl @ : 2 kpl R4 Mem[201] = 11 R4 Mem[ Mem[201] ] = Mem[ 11 ] = 300 LOAD R4,=Tbl(R3) LOAD R4,Tbl(R3) LOAD R4,@Tbl(R3) EA= Tbl + (R3) = 201 pelkkä rekisterin nro @-merkin jälkeen 1 kpl STORE käsky 1 kpl vähemmän noutoja ja yksi tallennus 20 suora muisti välitön oper epäsuora muisti suora rek epäsuora reki indeks välitön indeksoitu indeks epäs muistin osoitusmoodit (8) ks. lista sivulla 50 [Häkk98] LOAD R1, 10 ; R1 200 LOAD R1, =10 ; R1 10 LOAD R1, @10 ; R1 6000 LOAD R4, R2 ; R4 201 LOAD R4, @R2 ; R4 11 LOAD R5,=Tbl(R3) ; R5 201 LOAD R5, Tbl(R3) ; R5 11 LOAD R5, @Tbl(R3) ; R5 300 LIMIT: rekisterit R0: 104 R1: 10 0: R2: 201 10: SP=R6: 11: R3: 1 200 300 FP=R7: 125 200: 6000 201: 11 muistisegmentti symbolitaulu Tbl: 200 X: 10 One: 1 21 Indeksoinnin käyttö taulukkojen ja tietueiden yhteydessä Taulukot taulukon alkuosoite vakiona taulukon indeksi indeksirekisterissä Tietueet tietueen alkuosoite indeksirekisterissä tietueen kentän suhteellinen osoite tietueen sisällä vakiona LOAD R5, Tbl(R3) 1854 14 LOAD R2, Salary(R5) 6 1244 22 operaatiot Muistiinviittaukset tavalliset: load & store pino-operaatiot (aliohjelmien toteuttamista varten) I/O käskyt Kokonaislukuoperaatiot Loogiset operaatiot totuusarvoille Bittien siirtokäskyt (shift instructions) Kontrollin siirtokäskyt mistä löytyy seuraavaksi suoritettava käsky? (ellei se ole seuraavassa muistipaikassa) Muut käskyt 23 LOAD muistiinviittausoperaatiot käskyä käytetään myös LOAD R0, R5 rekistereiden kopiointiin (Move operaatio) STORE LOAD R1, X tallettaa aina muistiin STORE R3, Tbl(R4) PUSH, POP, PUSHR, POPR aliohjelmien toteuttamista PUSH SP, R1 ; store to stack varten käsitellään myöhemmin POP SP, R1 ; take from stack LOAD R5, @ptrx STORE R2, X 24 Luento 2, 4

I/O operaatiot IN lue arvo (kokonaisluku) rekisteriin annetulta laitteelta OUT tulosta arvo (kokonaisluku) rekisteristä annetulle laitteelle Laitteet? KBD - näppäimistö, stdin IN CRT - näyttö, stdout ei muita! (ei levyä, ei verkkoa, ) R3, =KBD OUT R2, =CRT kokonaislukuoperaatiot LOAD ( move ) ADD, SUB MUL DIV, MOD LOAD R3, R1 ; R3 R1 ADD R3, R1 ; R3 R3+R1 SUB R3, =1 ; R3 R3-1 MUL R3, Tbl(R1) ; R3 R3 * Mem(Tbl+R1) LOAD R1,=14 DIV R1,=3 ; R1 4 LOAD R1,=14 MOD R1,=3 ; R1 2 25 26 loogiset operaatiot (4) NOT, AND, OR, XOR kaikille 32 bitille yksi bitti kerrallaan LOAD R1, =12 ; R1 = 000 000 1100 LOAD R2, =5 ; R2 = 000 000 0101 AND R1,R2 ; R1 = 000 000 0100 OR R1,R2 ; R1 = 000 000 1101 XOR R1,R2 ; R1 = 000 000 1001 NOT R1 ; R1 = 111 111 0011 bittien siirtokäskyt SHL, SHR siirrä bittejä vasemmalle tai oikealle täytä nollilla LOAD R1,=5 ; R1 = 000 000 00101 = 5 SHL R1,=1 ; R1 = 000 000 01010 = 10 positiivisilla luvuilla yhden bitin siirto vasemmalle on sama kuin 2:lla kertominen! positiivisilla luvuilla yhden bitin siirto oikealle on sama kuin 2:lla jakaminen! LOAD R1,=5 ; R1 = 000 000 00101 = 5 SHR R1,=1 ; R1 = 000 000 00010 = 2 27 28 kontrollin siirtokäskyt muut käskyt JUMP COMP JUMP Loop COMP R3, =27 COMP R2, X asettaa tilarekisteriin SR vertailun tuloksen: L, E tai G JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE perustuu tilarekisterin tietoon eli JGRE Loop viimeksi suoritettuun COMP-käskyyn JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS perustuu annetun rekisterin arvoon JPOS R1, Loop CALL, EXIT SVC (käsitellään myöhemmin) SVC SP, =HALT ; ohjelman suoritus päättyy NOP No OPeration, tyhjä käsky, älä tee mitään varaa kuitenkin muistia yhden sanan (32 bittiä) suoritetaan samoin kuin muutkin käskyt NOP 29 30 Luento 2, 5

assembler kääntäjän ohjauskäskyt Eivät generoi lainkaan konekäskyjä suoritetaan käännösaikana EQU - Equal antaa arvon symbolille symbolitauluun DC - data constant X DC 50 varaa yhden sanan tilaa muistista, antaa sille alkuarvon ja antaa osoitteen symbolin arvoksi (symbolitauluun!) esim. muuttujan tai ison vakion määrittely LOAD R1, X DS - data segment Tbl DS 200 varaa monta sanaa tilaa muistista, antaa arvon symbolille alkuarvot ovat epämääräisiä! LOAD R3,Tbl(R1) esim. taulukon tai tietueen tilan varaus Sata EQU 100 LOAD R1, =Sata 31 symbolinen konekieliohjelma hello.k91 X DC 13 Y DC 15 MAIN LOAD R1, X ADD R1, Y OUT R1, =CRT SVC SP, =HALT 32 symbolinen konekieliohjelma sum.k91 ; sum - laske annettuja lukuja yhteen, luku 0 on loppumerkki Luku DC 0 ; nykyinen luku, alkuarvo 0 Summa DC 0 ; nykyinen summa, alkuarvo 0 Sum IN R1, =KBD ; ohjelma Sum alkaa käskystä 0 STORE R1, Luku JZER R1, Done ; luvut loppu? LOAD R1, Summa ADD R1, Luku STORE R1, Summa JUMP Sum ; Summa <- Summa+Luku ; summa muuttujassa, ei rekisterissä? Done LOAD R1, Summa ; tulosta summa ja lopeta OUT R1, =CRT SVC SP, =HALT KOKSI -koneen simulaattori Toimii kuten oikea kone toimisi Graafinen käyttöliittymä I/O vain käyttöliittymän kautta Ohjelmien valinta ( lataus ), käännös ja suoritus ks. sum.k91 Ohjelmien editointi myös mikä tahansa tekstieditori kelpaa! Käsky kerrallaan suoritus mahdollinen Käsky kerrallaan, kommentoinnin kera 33 34 KOKSI Käytettävissä (DOS, W95, W98, W2000) laitoksen koneissa ei toimi Windows XP:ssä! kotona http://www.cs.helsinki.fi/u/kerola/tito/ Installoi itse kotihakemistoosi (n. 120 KB) kopioi zip-tiedosto ja pura se koksi-hakemistoon editoi koksi.cfg tiedostoon editorin polku Esim: c:\windows\command\edit.com Ohjelmatiedostojen (hello.k91 jne) tulee olla samassa hakemistossa kuin simulaattorin (koksi.exe) käynnistä (esim.) klikkaamalla koksi.exe Eri versioita Linux-ympäristöön 35 -- Luennon 2 loppu -- Some typical 80x86 intructions and their function Fig. 3.32 [PaHe98] 36 Luento 2, 6