info@edelphi.fi

Assembly-kieli

Assembly on matalan tason ohjelmointikieli, josta puhutaan myös symbolisena konekielenä. Assembly -kieli on syntynyt lukujonoista muodostuvan konekielen pohjalle, ja ne ovatkin keskenään hyvin lähellä toisiaan. Assembly -kielen käskyt vastaavat konekielen käskyjä, ja ne käyttävät käskysarjoissaan täsmälleen samaa rakennetta.  Molemmat ohjelmointikielet koostuvat käskysarjoista, mnemonics. Konekielen käyttämät käskyt koostuvat ykkösien ja nollien numerosarjoista, eli biteistä. Konekieli on hyvin hankalalukuista ja vaikeaa muistaa. Assembly –kieli on luotu tarjoamaan ihmiselle huomattavasti havainnollisempi vaihtoehto. Sitä kirjoitetaan symbolisten käskysarjojen avulla, joiden kirjoitusasu muistuttaa kovasti kirjakieltä. Lisäksi assembler –kielessä käytetään muistiosoitteiden nimiä ja apusanoja. Tietokoneiden ja vastaanottimien suorittimet eivät osaa lukea assembly -kieltä. Ohjelmoitaessa assembly -kielellä, se tulee ennen performanssia kääntää konekielelle. Tässä käytetään erityisiä assembler -kääntäjiä. Assembler -kääntäjä on software, joka muuntaa assembly -kielellä kirjoitetut käskysarjat konekielisiksi binäärisiksi bittisarjoiksi, joita taas suorittimet ovat kykeneväisiä lukemaan automaattisesti.

Miksi assembly?

Assembly -kieli on lähtökohtaisesti helppo oppia. Sen käskyt ovat suhteellisen yksinkertaisia. Yksi suurimmista eduista, joita assembly -kieli tarjoaa, on sillä tuotettujen ohjelmien toimintanopeus ja -tarkkuus, joka on erittäin korkea. Assembly on myös käyttäjälleen huomattavasti helpommin luettavissa ja ymmärrettävissä. Assembly tarjoaa käyttäjälleen myös huomattavan kokoedun; assembly -kielellä kirjoitettu ohjelma vie vain noin yhden kymmenesosan tilasta verrattuna korkean tason koodauksella kirjoitettuihin ohjelmiin. Tätä voidaan hyödyntää muun muassa kiintolevyn käynnistyskoodin kirjoituksessa. Kokoetua selittää se, että assembly-kieltä käytettäessä ohjelmaan koodattavat kohteet voidaan rajata hyvin tarkasti, kun taas useilla muilla ohjelmilla mukaan tulee aina ylimääräistä koodia.

Mitä huomioida?

Assembly -kielellä ohjelmoitaessa törmäämme väistämättä myös tiettyihin haasteisiin. Eri prosessorityypeille on olemassa erityyppiset assembly -ohjelmat.  Kieltä on hankala siirtää eri prosessorityyppien välillä. Myos assembler -kääntäjissä on eroja. Jopa samalle prosessorille luoduissa kääntäjissä saattaa olla merkittäviäkin eroja riippuen valmistajasta. Yleensä kuitenkin uuden assemblyn oppiminen on helppoa, sillä monet toiminnot ovat identtisiä keskenään. Usein riittää tiettyjen uusien käskysarjojen ja osoiteohjausten opetteleminen. Hyvän ja toimivan assemblyn kirjoitus on hidasta ja tarkkuutta vaativaa. Siksi kustannukset voivat nousta korkeiksikin. Tästä syystä assembly -kieli on vain hyvin harvoin ainoa mainstream-projektissa käytetty kieli. Esimerkiksi sovellushallintaa vaativissa ohjelmissa assemblyn käyttö ei ole järkevää. Suuremmissa projekteissa suuri osa koodista kirjoitetaan usein korkean tason koodauksella ja kriittiset kohdat assembly  kielellä. Tällaisia kriittisiä kohtia voivat olla muun muassa kohdat, jotka vaativat tarkkaa aikataulutusta ja käyttövarmuutta. Assembly -koodia voidaan käyttää myös vikojen etsimiseen korkean tason koodista.

Assembly -käskysarjat

Ohjelmoijalla on täydet vapaudet toimia käskysarjojen suhteen. Tämän ansiosta tietokoneen resurssit saadaan hyödynnettyä korkealla prosentilla.

Tyypillinen käskyn rakenne voisi olla seuraava:

  • Otsikointi, johon sisällytetään ohjelman nimi, sekä toimintatarkoitus
  • Datasegmentti, jossa ilmoitetaan muodollisesti ohjelman käyttämät muuttujat
  • Tietojonosegmentti, jossa luonnostellaan ohjelman tietojen rakenne
  • Koodisegmentti, jossa on mukana ohjelman käyttämä koodi
  • Käskyn sulkeminen

Esimerkkiä tarkastellessa tulee huomioida sen yleistävyys. Käskyjen rakenne on joustava ja muuttuu aina mukaillen käytössä olevaa alustaa. Myös aiemmin mainitut assembler-kääntäjät ovat mukana vaikuttamassa käskyn lopulliseen rakenteeseen. Kaikkiaan voidaan todeta, että Assembly -kielen käyttö ohjelmoinnissa vaatii ohjelmoijalta suurta ammattitaitoa, tarkkuutta ja kärsivällisyyttä, mutta tuo oikein käytettynä huomattavia etuja. Teorian ja käytännön harjoittelun yhdistäminen on kaikkein tehokkain tapa matkalla assembly –guruksi.  Suomen kielisiä tutor –ohjelmia on saatavilla melko vähän, mutta englannin kieltä taitavalle internetistä löytyy lukuisia oppeja tarjoavia sivustoja, esimerkiksi täältä löytyy paljon vinkkejä.

Assembly -käskysarjat

Comments are closed.