1.4.1 Konekielet

Tietokone tarvitsee käskyjä toimiakseen. Ilman ulkopuolelta tulevia käskyjä ei kone osaa toimia. Koneessa on prosessori, joka suorittaa annetut käskyt. Prosessorin tuntemat käskyt ovat melko yksinkertaisia: lasketaan yhteen kaksi lukua, haetaan luku muistista, tallennetaan tietoa annettuun osoitteeseen, verrataan lukua nollaan, jne. Ne käskyt, jotka prosessori tunnistaa, muodostavat prosessorin käskykannan. Nämä käskykannan käskyt muodostavat prosessorin konekielen. Konekielen käsky jakaantuu operaatiokoodiin ja osoiteosaan:

Ohjelmalla tarkoitetaan tiettyä joukkoa tietokoneelle annettavia käskyjä. Meillä saattaisi olla seuraavalla tavalla toimiva ohjelma:

  1. Haetaan muistista luku (numero).
  2. Haetaan muistista toinen luku.
  3. Lasketaan haetut luvut yhteen.
  4. Tallennetaan saatu summa muistiin.

Ohjelman sisältämät käskyt on tallennettu tiedostoon, esimerkiksi OHJELMA.EXE. Jos katsomme tiedoston sisältöä, ei siellä kuitenkaan ole mitään edellä annetun kaltaista tekstiä, vaan käsittämättömän näköistä koodia. Tämä koodi on binäärimuotoista tietoa. Tietokoneella suoritettavat ohjelmat tallennetaan aina binääritiedostoihin (= tavallinen tiedosto, sisältö vain on binäärimuodossa).

Konekieliset käskyt esitetään tietokoneessa binäärimuodossa ja sellaisenaan niiden käsittely on varsin hankalaa. Binäärimuotoinen tieto (ja tiedosto) on kuin pitkä bittijono, josta otetaan sopivan mittainen pätkä kerrallaan tulkittavaksi, esimerkiksi 8 bittiä (= tavu) kerrallaan. Korvaamalla bittijono sopivilla symboleilla, voidaan konekielinen ohjelma saada selvemmin ymmärrettävään muotoon. Muoto, jossa käskyt esitetään symboleina (tekstinä) on symbolinen konekieli. Eräässä prosessorissa esimerkiksi konekielinen käsky 0100 0001 tarkoittaa: "lisää CX-rekisterin arvoa yhdellä" (rekisteri = prosessorin sisäinen muistipaikka). Symbolisessa konekielessä eli Assembler-kielessä se voidaan esittää komentona INC CX.

Ne käskyt, jotka prosessori osaa suorittaa, muodostavat prosessorin käskykannan. Käskykannan käskyt muodostavat konekielen.
Konekieliset käskyt esitetään koneessa binäärimuodossa, joten sellaisenaan niiden käsittely on hyvin hankalaa.
Bittijonot voidaan korvata symbolein, jolloin konekielinen ohjelma tulee helpommin luettavaksi; näin on syntynyt symbolinen konekieli eli Assembler-kieli.

Assembler-ohjelma on tekstinä (symbolein) kirjoitettua konekieltä. Ohjelma kirjoitetaan tavallisesti jollain tekstieditorilla ja tallennetaan tekstitiedostoksi (ASCII-muodossa). Koska tässä tiedostossa todelliset konekieliset käskyt on korvattu tekstisymboleilla, ei prosessori luonnollisestikaan voi ymmärtää niitä suoraan. Prosessori haluaa binääritietoa, tämä taas on tekstitietoa. Tarvitaan ohjelma, joka muuttaa symbolit konekielisiksi käskyiksi. Muunnos tehdään Assembler-kääntäjän avulla. Kääntäjälle annetaan syötteenä symboliset käskyt sisältävä tekstitiedosto (lähdetiedosto) ja se muodostaa toiseen tiedostoon vastaavan konekielisen ohjelman (kohdetiedosto). Tätä toista tiedostoa kutsutaan nimellä objektitiedosto (tai joskus binääritiedosto).

Konekieliset käskyt, joita prosessori suorittaa, ovat melko yksinkertaisia. Yksinkertaisia nimenomaan suoritettavan asian kannalta, eivät käyttäjän kannalta. Koska Assembler-ohjelmoinnissa yksi käsky suorittaa vain todella pienen osasen, tarvittaisiin kokonaiseen ohjelmaan valtava joukko käskyjä. Ohjelmoijan kannalta Assembler on melko hankala, sillä käskyvalikoima on suppea ja ohjelmista tulee todella pitkiä.

Assembler-ohjelma
• kirjoitetaan yleensä jollakin tekstieditorilla eli tekstin muokkaukseen tarkoitetulla ohjelmalla,
• tallennetaan tekstitiedostoiksi,
• käännetään konekielisiksi, tuloksena objektitiedosto (binääritiedosto).