Assemblerkeel

pisi
Assemblerkeel on teise põlvkonna madaltaseme programmeerimiskeel, mille käsud vastavad üksüheselt sihtprotsessori masinkoodi käskudele. Assemblerkeeles on masinakäskude kahendkoodid (nt. 11110111xx100xxx, kus x-id tähistavad operandide aadressi arvuti mälus) asendatud mnemooniliste tähistega ehk mnemokoodidega. Masinakäsu mnemokood on tavaliselt kahe, kolme või neljatäheline inglise keelest tulenev lühend. Assemblerkeel loodi masinkoodi kirjutamise lihtsustamiseks.

Assemblerkeele kohta vahel kasutatud ka sõna assembler, kuigi nii nimetatakse ka assemblerkeele kompilaatorit (vt assembler).

Masinkoodi puhul on programmikood binaarkujul ehk kahendarvude jadana. Assemblerkeele puhul on programmikood kirjeldatud lühikeste käskude ja nende parameetritega, kusjuures iga assemblerkeelne käsk on tõlgitav üheks või mitmeks sama funktsiooniga masinkoodi käsuks. Kui sama assemblerkeelne käsk on tõlgitav mitmeks masinkoodi käsuks, siis on seda tihti võimalik kirjutada erikujul, kus osutatakse, millist käsku parasjagu kasutatakse – sellele erikujule tõlgivad koodi ka disassemblerid.

Igat liiki protsessoril on oma masinkeel ja sellele vastav assemblerkeel. Ühele protsessorile arusaadavad käsud moodustavad käsustiku. Kõrgtaseme programmeerimiskeeled vähendavad sõltuvust protsessori eripäradest ja nendes kirjutatud kood kompileeritakse kinda protsessori käsustikule vastavateks masinakäskudeks.

Assemblerkeele laused
Assemblerkeelne tekst koosneb lausetest, iga lause on jagatud järgmisteks väljadeksMikroarvutid automaatikas /A. Ariste, H. Lind, L. Mõtus, H. Tani. Tln.: Valgus, 1984. 208 lk:
 märgendiväli,
 käsukoodiväli (mikroprotsessori masinakäskude loetavad nimed ehk mnemokoodid, assembleri direktiivid või makrokäsud),
 operandiväli,
 kommentaari- ehk kommendiväli.

Assembleri translaatori direkiivid lihtsustavad assemblerikeeles programmeerimist võrreldes masinakoodiga. Kasutusala järgi on pseudokäsud (ehk direktiivid) järgmised:
 Nimede defineerimise pseudokäsud, näiteks EQU
    UMRK EQU VMRK+10; Anname nimele UMRK väärtuse mis on kümne võrra suurem nime VMRK väärtusest
 Andmete defineerimise pseudokäsud, näiteks DB, DW
    ARV DB 100; Anname muutujale või konstandile ARV algväärtuse 100 ja eraldame muutujale või konstandile mälu
 Mälu reserveerimise pseudokäsud, näiteks DS
    MASS DS 125; Eraldame massiivile MASS 125 mälupesa
 Pseudokäsud transleerimise juhtimiseks, näiteks ORG ja END
    ORG 4000h;  Alustada aadressiloenduriga aadressist 4000h
Kus tähised UMRK, ARV ja MASS on programmeerija poolt valitud andmeobjektide või konstantide nimed.

Operandiväli sisaldab järgmist informatsiooni:
 operandide nimed (märgendiviited),
 arvväärtused (vahetu adresseerimine korral),
 avaldised.

Lausete näide Inteli protsessori assemblerkeeles
Tavaliselt kirjutatakse ühele reale üks käsk, mis koosneb mõnetähelisest masinakäsu tähisest ehk mnemokoodist ja sellele järgnevatest käsu parameetritest ehk operandidest, mis eraldatakse üksteisest komaga:
    MOV AX, 200
    ADD AX, 7
Näites on toodud kaks assemblerkeelset lauset Intel protsessori käsustiku mnemokoodis masinakäskudega. Märgendiväli mis algab alati teksti vasakust äärest (antud näites märgend puudub) ja kommentaariväli lause lõpus on tühjad.

Programmi selgitus:
Muudab registri AX väärtuse 200-ks ja seejärel liidab sellele arvu seitse. Tulemus 207 asub nüüd registris AX.
MOV on lühend ingliskeelsest sõnast move (liigutama). Käsk ADD tuleneb sõnast add (liitma). Käske võib kirjutada nii suurte kui väikeste tähtedega.

Ülal toodud näite assembleri poolt tõlgitud (kompileeritud) masinkood kuueteistkümnendsüsteemis kujutatuna:
B8 C8 00
05 07 00

Makroassembler
Makroassembler on assembler, millele on lisatud makrodest koosneva metakeele toetus, mis võimaldab korraga töödelda terveid assemblerkeelseid plokke või programmikonstruktsioone (programmi ehitusreegleid).

Vaata ka
Assembler
Masinakäsk

 Viited 

 Välislingid 
 Randall Hyde The Art of Assembly Language (HTML ja PDF versioon) (Inglise keeles)
 Introduction to assembly language (Inglise keeles)

Kategooria:Programmeerimiskeeled

pl:Asembler#Język asemblera