Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

3. TTK-91-käskykanta Symbolisen konekielen tavalliset käskyt

Samankaltaiset esitykset


Esitys aiheesta: "3. TTK-91-käskykanta Symbolisen konekielen tavalliset käskyt"— Esityksen transkriptio:

1 3. TTK-91-käskykanta Symbolisen konekielen tavalliset käskyt
Kääntyvät suoraan konekielisiksi käskyiksi LOAD, STORE, JUMP,….. Pseudokäskyt eli valekäskyt Ovat kääntäjän ohjauskäskyjä eli niillä annetaan ohjeita kääntäjälle Tilanvarauksia globaaleille muuttujile DS, DC Tunnusten ja arvojen samaistuksia EQU Ei synny konekielistä koodia 03/01/2019 Liisa Marttinen kevät 2005

2 Muistin varaus ohjelmalle
pino käytössä mm. aliohjelmakutsuissa: - parametrien välitys – aliohjelman omat lokaalit tilavaraukset Ohjelman konekieliset käskyt staattinen alue Ohjelman globaaleille muuttujille varattu tila Pinon käyttöä harjoitellaan runsaasti! Kekoa käytetään esim. Javan NEW-metodilla luotujen rakenteiden tallettamiseen pino keko Dynaaminen alue: pino, keko Kekoa ei kurssilla käytetä! 03/01/2019 Liisa Marttinen kevät 2005

3 3.1. Tavalliset käskyt Tiedonsiirtokäskyt: LOAD, STORE, IN, OUT
Aritmeettiset käskyt: ADD, SUB, MUL, DIV, MOD Loogiset käskyt: NOT, AND, OR, XOR, Siirtokäskyt: SHL, SHR Vertailukäskyt: COMP Haarautumiskäskyt: JUMP, JNEG,…., JLES,…. Pinokäskyt: PUSH, POP Aliohjelmakäskyt: CALL, EXIT Palvelupyyntö: SVC Muut käskyt: NOP 03/01/2019 Liisa Marttinen kevät 2005

4 Tiedonsiirtokäskyt LOAD arvon lataus rekisteriin
STORE arvon talletus rekisteristä muistiin IN arvon lukeminen oheislaitteelta rekisteriin OUT arvon tulostus rekisteristä oheislaitteelle 03/01/2019 Liisa Marttinen kevät 2005

5 LOAD Rj, OP2 LOAD R1, =25 LOAD R1, Luku(R2) LOAD R3, R2 STORE Rj, OP2
2. operandin arvo 1. operandina olevaan rekisteriin LOAD R1, =25 LOAD R1, Luku(R2) LOAD R3, R2 STORE Rj, OP2 rekisterin Rj talletus OP2:n ilmoittamaan muistipaikkaan (aina muistiin!) STORE R1,100(R2) STORE R1<= 25 R1 <= MEM[Luku +R2] R3 <= R2 MEM[100+R2] <= R1 MEM[MEM[TULOS]]<= R5

6 I/O-käskyt IN Rj, laitekoodi OUT Rj, laitekoodi
lukee rekisteriin Rj laitekoodin ilmoittamlta laitteelta IN R3, =KBD ; =KBD on näppäimistö OUT Rj, laitekoodi tulostaa rekisterin Rj laitekoodin ilmoittamalle laitteelle OUT R2, = CRT ; =CRT on näyttö 03/01/2019 Liisa Marttinen kevät 2005

7 Aritmeettiset käskyt ADD R1,@100 SUB R1, R2 MUL R2, 100
DIV R4, = kokonaisjako MOD R4, = jakojäännös Esim. LOAD R1, =10 ; R1 <= 10 DIV R1, =3 ; R1<= 3 MOD R1, =2 ; R1 <= 1 03/01/2019 Liisa Marttinen kevät 2005

8 Loogiset käskyt (biteillä operoivat)
R1 = 0… NOT R1 => R1 = 1… NOT R1 AND R2, 100(R1) OR XOR R3, =125 03/01/2019 Liisa Marttinen kevät 2005

9 Siirtokäskyt (biteillä operoivat)
SHL R2, =3 SHR R2: 3 R2: R2=5 10: 4 15: 10 20: 15 Muisti R3: 4 R3: 03/01/2019 Liisa Marttinen kevät 2005

10 Vertailukäsky COMP R5, 100(R1)
verrataan rekisterin sisältöä toiseen operandiin vertailun tulos SR-rekisterin bitteihin: L =1, jos R5 on pienempi E = 1, jos R5 on yhtäsuuri G = 1, jos R5 on suurempi 03/01/2019 Liisa Marttinen kevät 2005

11 Haarautumiskäskyt ehdoton hyppy JUMP Pois ehdolliset hyppykäskyt
2.operandin arvo käskyosoittimeen PC ehdolliset hyppykäskyt rekisterin Rj sisällön perusteella vertailun tulosten perusteella eli SR:n bittien L, E, G perusteella 03/01/2019 Liisa Marttinen kevät 2005

12 Ehdolliset hyppykäskyt
siirrytään rekisterin Rj sisällön perusteella annettuun osoitteeseen JNEG jos c(Rj) < 0 JZER jos c(Rj) = 0 JPOS jos c(Rj) > 0 JNNEG jos c(Rj) >= 0 JNZER jos c(Rj) > 0 tai c(Rj) <0 JNPOS jos c(Rj) < = 0 03/01/2019 Liisa Marttinen kevät 2005

13 Siirrytään vertailun (COMP) tuloksen perusteella
vertailun tulos tallentuu tilarekisteriin SR L E G SR: JLES siirry, jos L-bitti asetettu JEQU siirry, jos E-bitti asetettu JGRE siirry, jos G-bitti asetettu JNLES siirry, jos L-bitti ei ole asetettu JNEQU siirry, jos E-bitti ei ole asetettu JNGRE siirry, jos G-bitti ei ole asetettu Siirrytään 2. operandina annettuun osoitteseen.

14 Pinokäskyt PUSH SP, =0 kasvattaa pino-osoittimen (SP) arvoa
yhdellä ja vie 2. operandin muistiin pinon päällimmäiseksi POP SP, R2 poistaa pinon päällimäisen alkion ja vie sen 2. operandina olevaan rekisteriin, vähentää pino-osoitinta yhdellä 03/01/2019 Liisa Marttinen kevät 2005

15 Aliohjelmakäskyt CALL SP, Sqr ; aliohjelmakutsu
1. operandi pino-osoitin 2. operandi aliohjelman osoite tallettaa rekisterit PC ja FP pinoon PC <= aliohjelman osoite (= 1. käsky) FP <= pino-osoittimen uusi arvo parametrit vietävä pinoon ennen kutsua 03/01/2019 Liisa Marttinen kevät 2005

16 EXIT SP, =2 ; paluu aliohjelmasta
paluu kutsua seuraavaan käskyyn 2. operandi kertoo pinoon vietyjen parametrien määrän palauttaa FC:n ja PC:n vanhat arvot pinosta vähentää pino-osoitinta parametrien lukumäärän verran 03/01/2019 Liisa Marttinen kevät 2005

17 Palvelupyyntö Muut käskyt SVC SP, =HALT
järjestelmän palvelurutiinin kutsu aiheuttaa keskeytyksen 2. operandi kertoo palvelun numeron parametritiedot vietävä pinoon ennen kutsua Muut käskyt NOP ei toimintaa, operandeilla ei merkitystä 03/01/2019 Liisa Marttinen kevät 2005

18 3.2 Pseudo-operaatiot kääntäjän ohjauskäskyt (ns. valekäskyt)
antavat ohjeita symbolisen konekielen kääntäjälle eivät ole varsinaisia symbolisen konekielen käskyjä varaavat tilaa muuttujille tilanvaraus heti ohjelman perään antavat tunnuksille arvoja 03/01/2019 Liisa Marttinen kevät 2005

19 DS (Data Segment) Taulu DS 100 Muistinvarauskäsky DS
varaa muistialueen, jonka koko (sanoina) on 100 asettaa symbolisen osoitteen Taulu arvoksi varatun muistialueen alkuosoittteen Käytetään globaalien muuttujien tilanvaraukseen Tunnusta voi käyttää käskyn ADDR-kentässä kuten muistiosoitetta 03/01/2019 Liisa Marttinen kevät 2005

20 Esim. DS Arr DS 4 Varaa muistista alueen,
Ohjelman muisti Arr DS 4 Varaa muistista alueen, jonka koko on 4 muistipaikkaa (esim. 100, 101, 102 ja 103) Arr = 100 Arr 100 101 102 103 STORE R1, Arr LOAD R1, =Arr ; R1 <= muistialueen alkuosoite 03/01/2019 Liisa Marttinen kevät 2005

21 EQU tunnus EQU arvo Samaistuskäsky EQU määrittelee symboliselle tunnukselle kokonaislukuarvon Tunnusta voi käyttää käskyn ADDR-kentässä, jolloin se käsitellään kuin vastaavaan paikkaan kirjoitettu “arvo”. 03/01/2019 Liisa Marttinen kevät 2005

22 Esim. EQU C EQU 10 ; C=10 XX EQU -3 ; XX = -3
LOAD R1, XX(FP) == LOAD R1, -3(FP) STORE == STORE ADD R1,=C == ADD R1, =10 03/01/2019 Liisa Marttinen kevät 2005

23 DC (Data constant) tunnus DC arvo
Muistinvarauskäsky DC varaa yhden muistisanan vakiota varten, samaistaa varatun muistipaikan osoitteen ja symbolisen osoitteen tunnus asettaa varatun muistipaikkaan luvun arvo Tunnusta voi käyttää käskyn ADDR-kentässä kuten muistiosoitetta 03/01/2019 Liisa Marttinen kevät 2005

24 Esim. DC APU DC 100 APU: 100 R1 = 100 ADD R1, APU ; R1 <= 200
STORE R1, APU ; MEM[APU] <= 200 JUMP @APU ; hyppy osoitteeseen 100 JUMP LOPPU Entä onko käsky JUMP =APU järkevä? 03/01/2019 Liisa Marttinen kevät 2005

25 TTK-91 symbolinen konekieliohjelma
ohjelma.k91 A DC B DC C DC KERRO LOAD R2, B MUL R2, A STORE R2, C SVC SP, =HALT 03/01/2019 Liisa Marttinen kevät 2005

26 Hieman pitempi ohjelma sum.k91
Luku DC Summa DC Sum IN R1,=KBD STORE R1, Luku JZER R1, Done LOAD R1, Summa ADD R1, Luku STORE R1, Summa JUMP Sum Done LOAD R1, Summa OUT R1, =CRT SVC SP, =HALT Laskee yhteen annettuja lukuja. Lopetusmerkinä on luku 0.

27 Hieman harjoitusta! Kirjoita symbolisella konekielellä ohjelma,
joka varaa tilaa 100-alkioiselle taulukolle ja lukee näppäimistöltä 100 lukua tähän taulukkoon. Millä symbolisen konekielen käskyillä voidaan lisäksi laskea luettujen lukujen summa? Entä millä käskyillä voidaan tulostaa luettujen lukujen keskiarvo? 03/01/2019 Liisa Marttinen kevät 2005


Lataa ppt "3. TTK-91-käskykanta Symbolisen konekielen tavalliset käskyt"

Samankaltaiset esitykset


Iklan oleh Google