konekieli
Download
Skip this Video
Download Presentation
Konekieli

Loading in 2 Seconds...

play fullscreen
1 / 25

Konekieli - PowerPoint PPT Presentation


  • 130 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Konekieli' - jodie


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
konekieli1
00000011

00000110

00000000

00010000

010001011

01101100

10110011

01011010

10001010

00101010

Konekieli
  • Konekieli on binaarilukuja, jotka prosessori tulkitsee käskyiksi
konekieli2
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.
konekieli3
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.
konekieli assembler
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öä.
konekieli assembler1
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
k skyn suoritus
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
k skyn suoritus1
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

konekieli4
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.
konekieli osoitusmuodot
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
konekieli osoitusmuodot1
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
konekieli osoitusmuodot2
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
konekieli yleisimm t k skyt
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
konekieli yleisimm t k skyt1
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
konekieli yleisimm t k skyt2
Konekieli, yleisimmät käskyt
  • INC lisää arvoa yhdellä
    • INC AX
    • INC [1000]
  • DEC vähentää arvoa yhdellä
konekieli yleisimm t k skyt3
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
konekieli yleisimm t k skyt4
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
konekieli yleisimm t k skyt5
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
konekieli yleisimm t k skyt6
Konekieli, yleisimmät käskyt
  • DIV jaetaan DX:AX-rekistereissä tai AX-rekisterissä oleva arvo
  • IDIV kuten div, mutta käytetään etumerkillisillä luvuilla
konekieli yleisimm t k skyt7
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
konekieli yleisimm t k skyt8
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
konekieli yleisimm t k skyt9
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
konekieli yleisimm t k skyt10
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

konekieli yleisimm t k skyt11
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.
konekieli yleisimm t k skyt12
Konekieli, yleisimmät käskyt
  • 120 CALL 200
  • 123 …
  • 200 …
  • RET

123