1 / 25

Konekieli

Konekieli. 00000011. 00000110. 00000000. 00010000. 010001011. 01101100. 10110011. 01011010. 10001010. 00101010. Konekieli. Konekieli on binaarilukuja, jotka prosessori tulkitsee käskyiksi. Konekieli.

jodie
Download Presentation

Konekieli

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Konekieli

  2. 00000011 00000110 00000000 00010000 010001011 01101100 10110011 01011010 10001010 00101010 Konekieli • Konekieli on binaarilukuja, jotka prosessori tulkitsee käskyiksi

  3. Konekieli • Prosessori suorittaa muistissa olevia konekielisiä käskyjä. (Käskyt ovat käytännössä binaarilukuja). • Prosessorin tuntemia käskyjä kutsutaan käskykannaksi. • Eri prosessoreilla on eri käskykanta. • Esim. Applen koneissa käytetyssä prosessorissa on täysin eri käskykanta kuin PC:n prosessoreissa. • Pentium prosessorit sisältävät 80386-prosessorin käskykannan.

  4. Konekieli • Konekielen käskyt ovat yksinkertaisia. • Siirtävät tietoa muistin ja rekisterien välillä • Käsittelevät bittejä tai 8-64 bittisiä lukuja • Uusissa prosessoreissa on mukana matematiikkaprosessori, joka osaa laskea vaativampaa matematiikkaa mm. liukulukulaskentaa.

  5. Konekieli/Assembler • Konekielen käskyt ovat lukuja. • Assemblerissa eli symboolisessa konekielessä käskyille on annettu nimet • Konekieli: 00000011 00000110 00000000 00010000 • Assembler: MOV AX, [1000] • Assembler-ohjelma on käännettävä konekieliseksi ennen käyttöä.

  6. Konekieli/Assembler • Konekieli tarkoittaa prosessorin ymmärtämiä käskyjä. • Jokaisella prosessorityypillä on oma konekielensä. • Ohjelmat on muutettava konekielisiksi ennen niiden suorittamista. • Korkean tason ohjelmointikielillä tehty ohjelma muutetaan konekieliseksi: • Kääntämällä ennen ohjelman suoritusta • Tulkkaamalla ohjelman suorituksen aikana

  7. Käskyn suoritus • Esimerkkinä käsky ADD AX, [1000], joka lisää AX-rekisterissä olevaan arvoon muistipaikassa 1000 olevan luvun. • Prosessori lukee käskyn muistista • Katsoo, tarvitaanko käskyn suorittamiseen dataa muistista • Lukee datan muistista (osoitteesta 1000) • Tulkitsee käskyn • Suorittaa käskyn mukaisen toiminnan eli yhteen laskun • Tallentaa tuloksen eli laittaa summan rekisteriin AX

  8. Käskyn suoritus Muisti • Luetaan käsky muistista ohjelma Prosessori 00000011 00000110 • Luetaan käskyn tarvitsema data muistista 00000000 00010000 25 82 AX • Suoritetaan yhteenlasku 57 +25=82 data add ax,[1000] • Talletetaan tulos 57 1000

  9. Konekieli • Konekieliset käskyt muodostuvat itse käskystä ja operandeista. Esim: ADD AX,[1000] • Käsky on ADD ja operandit AX ja [1000] • Käskyissä on 0-2 operandia.

  10. Konekieli, osoitusmuodot • Välitön osoitus. • Operandi on suoraan jokin luku esim: ADD AX, 10 (a=b+10;) • Tarkoittaa, että lisätään luku 10 • Rekisteriosoitus • Operandissa kerrotaan rekisteri, jota käsitellään. Esim: ADD AX, 10 • Lisätään rekisteriin AX luku 10

  11. Konekieli, osoitusmuodot • Suora osoitus • Kerrotaan suoraan käsiteltävän muistipaikan osoite. Esim: ADD AX, [1000] • Lisätään AX-rekisteriin osoitteessa 1000 oleva arvo. • Huomaa hakasulut

  12. Konekieli, osoitusmuodot • Epäsuora osoitus • Käytetään jotakin rekisteriä kertomaan muistiosoite. Käytössä ovat rekisterit BX, BP, SI, DI. Esim: ADD AX, [BP] • Lisätään AX-rekisteriin arvo, joka on BP-rekisterin osoittamassa paikassa. Jos BP-rekisterissä on luku 1000, lisätään osoitteessa 1000 oleva luku. • Huomaa hakasulut

  13. Konekieli, yleisimmät käskyt • MOV, siirtää tai oikeammin kopioi tietoa • MOV AX, BX kopioi BX-rekisterissä olevan tiedon AX-rekisteriin • MOV AX, [1000] kopioi muistiosoitteesta 1000 luvun AX-rekisteriin • Huomaa, että tieto kopioidaan toisesta operandista ensimmäiseen

  14. Konekieli, yleisimmät käskyt • ADD laskee kaksi arvoa yhteen • ADC laske kaksi arvoa ja Carry-bitin arvon yhteen. • SUB vähennyslasku • SBB vähennyslasku, joka ottaa Carry-bitin mukaan

  15. Konekieli, yleisimmät käskyt • INC lisää arvoa yhdellä • INC AX • INC [1000] • DEC vähentää arvoa yhdellä

  16. Konekieli, yleisimmät käskyt • Loogiset käskyt • AND, OR, XOR suorittavat loogisen operaation kahden luvun bittien välillä. • NOT kääntää luvun bitit, nollat ykkösiksi ja päin vastoin

  17. Konekieli, yleisimmät käskyt • Loogiset käskyt • Siirto ja pyöritys • Siirtävät luvun bittejä vasemmalle tai oikealle • SHL, SHR siirtävät bittejä. Alkupäähän tulee 0 ja loppupäästä bitti siirretään Carry-lippuun

  18. Konekieli, yleisimmät käskyt • MUL kertoo AX tai AL rekisterissä olevan arvon operandin kertomalla luvulla • MUL BX kertoo AX ja BX rekisterin arvot keskenään. Tuloksen alemmat 16 bittiä AX rekisterissä ja ylemmät DX rekisterissä • MUL BL kertoo BL ja AL rekisterien arvot keskenään. Tulos AX-rekisterissä. • IMUL kuten MUL, mutta käytetään etumerkillisten lukujen kertomiseen

  19. Konekieli, yleisimmät käskyt • DIV jaetaan DX:AX-rekistereissä tai AX-rekisterissä oleva arvo • IDIV kuten div, mutta käytetään etumerkillisillä luvuilla

  20. Konekieli, yleisimmät käskyt • Haarautuminen. • Normaalisti prosessori suorittaa muistissa olevia käskyjä järjestyksessä. Haarautumisella poiketaan tästä järjestyksestä • JMP 1000 hyppää osoitteeseen 1000

  21. Konekieli, yleisimmät käskyt • Ehdollinen haarautuminen • Haaraudutaan, jos lippurekisterissä on haluttu tai halutut arvot. • Esim JZ haarautuu, jos Z-lippu on 1 • Ehdollisia haarautumiskäskyjä on useita. Monet näistä tarkoittavat samaa. Esim. JE ja JZ ovat sama käsky. Joskus on loogisempaa käytää JZ-käskyä ja muulloin taas JE-käskyä. • Kaikista on myös käänteinen versio. Esim. JNZ haarautuu, jos Z ei ole 1

  22. Konekieli, yleisimmät käskyt • ja above jz zero set • jae above or equal jna not above • jb below jnae not above or equal • jbe below or equal jnb not below • jc carry set jnbe not below or equal • je equal jnc carry not set • jg greater jne not equal • jge greater or equal jng not greater • jl less jnge not greater or equal • jle less or equal jnl not less • jo overflow set jnle not less or equal • jp parity set jno overflow not set • jpe even parity jns sign not set • jpo odd parity jnz zero not set • js sign set jnp parity not set

  23. Konekieli, yleisimmät käskyt • Ehdollisessa haarautumisessa on merkittävä puute: hyppy voi olla korkeintaan 128 taaksepäin ja 127 eteenpäin. • Ongelma voidaan kiertää käyttämällä JMP-käskyä apuna: Toimiva versio 100 JNE 105 102 JMP 500 105 … Liian pitkä hyppy 100 JE 500

  24. Konekieli, yleisimmät käskyt • CALL aliohjelmakutsu • CALL 1200 kutsuu aliohjelmaa osoitteessa 1200 • Aliohjelmasta palataan RET-käskyllä • CALL laittaa seuraavan käskyn osoitteen (ns. paluuosoite) pinoon ja hyppää aliohjelmaan. RET käsky lukee paluuosoitteen pinosta ja hyppää tähän osoitteeseen.

  25. Konekieli, yleisimmät käskyt • 120 CALL 200 • 123 … • 200 … • RET 123

More Related