Vajad kellegagi rääkida?
Küsi julgelt abi LasteAbi
Logi sisse

Assembler (0)

5 VÄGA HEA
Punktid
TALINNA POLÜTEHNIKUM
Multimeedia erialaosakond
Kert Kompus
ASSEMBLER
Referaat
OPERATSIOONISÜSTEEMI ALUSED
MS-18
Tallinn 2018

Sisukord


Assembler 3
Assemblerprogrammi lähtekood 5
Assemblerprogrammi loomine 6
Assemblerkeele laused 8
Omistamine ja võrdlemine 9
Lausete näide Inteli protsessori assemblerkeeles 11
Kasutatud kirjanudus 13


Assembler


Assembler on teise põlvkonna madaltaseme programmeerimiskeel, mis tõlgib assemblerkeeles programmi masinkoodiks. Assemblerkeeles on masinakäskude kahendkoodid asendatud mnemokoodidega ehk mnemooniliste tähistega. Näiteks 11110111xx100xxx, kus x-id tähistavad operandide aadressi arvuti mälus. Seega on assemblertranslaatori töö päris lihtne, see peab jaotama mälu instruktsioonidele ja andmetele, lisaks tõlkima iga muutuja ning sümboli masinkoodi. Lõpuks koondab see saadud koodi väljundformaati. Väljunditeks võivad olla kas objektkoodi - või käitusfailid
Enamik assemblereid oskab seda teha ka käivitus- või objektifailiks. Teegid ja objektifailid saab ühendada üheks tervikuks linkuri abil. Assembler koodi ei optimeeri, kuna teisendamine assemblerkeelest masinkoodi käib üksüheselt.
Igapäevaselt kasutatakse sõna assemblerkood tihti ka assembleri kohta, kuigi nii nimetatakse ka assemblerkeele kompilaatorit
Masinkoodi puhul on programmikood kahendarvude jadana ehk binaarkujul. Assemblerkeele puhul on programmikood kirjeldatud parameetrite ja nende lühikeste käskudega, 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.
Igal erineval 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.
Lisaks assemblerile on ka olemas makroassembler, mis on nagu assembler aga sellele on lisatud makrodest koosneva metakeele toetus, mis võimaldab korraga töödelda programmikonstruktsioone või terveid assemblerkeelseid plokke.


Assemblerprogrammi lähtekood


Assemblerprogrammi lähtekood on instruktsioonide jada, mida vastavalt antud juhenditele täidetakse, vahele jäetakse ja korratakse. Peale mõnetäheliste sümbolitega tähistatud käskude tunnevad translaatoreid ka direktiive ehk juhtnööre, mida translaator kasutab programmist aru saamiseks ja keerukamate lahenduste loomiseks. Direktiivide ülesanneteks on näiteks programmitüübi määramine, muutujate ja avalike funktsioonide deklareerimine ning muutujate ja koodi joondamine mälus. Lähtekood peab olema suvalise tekstiredaktoriga töödeldav ja suvalise translaatori poolt loetav. Ühel koodireal võivad antud järjekorras olla pealdis, instruktsioon, argumendid ja kommentaar. Loomulikult ei pea ühel real kõiki nelja olema. Pealdis on nimi, mis mingile programmireale antakse, et saaks programmi sees ühest osast teise "hüppata". Instruktsioon ja operand(vahel ka operandid ) moodustavad käsu, mida täidab protsessor ning kommentaaridega on võimalik programmide mõistetavust võimaliku ümberkirjutamis- või uuendamisaja saabudes programmi käikudest aru saada. Kommenteerimist loetakse ka üheks hea programmeerimisstiili koostisosaks.


Assemblerprogrammi loomine


Assemblerprogrammi tegemine algab lähteteksti kirjutamisest. Seda võib kirjutada suvalise tekstiredaktoriga, millega saab salvestada ASCII-teksti. Assemblertranslaatorid on käsureal töötavad programmid . Programmi käivitades tuleb programmifaili nime järele kirjutada assembleeritava lähtekoodi tekstifaili nimi ja võtmed (juhendid transleerimiseks). Võtmete hulka kuuluvad veaotsingu põhjalikkuse määramine ja väljundformaadi valik. On olemas eraldi programme, mis sisaldavad peale tekstiredaktori veel võimalust lihtsamalt valida eelpoolmainitud võtmeid. Vastava täheühendi kirjutamise asemel saab soovitud tingimused valida graafilisest menüüst. Tegeliku translaatori saab välja kutsuda klaviatuuril klahvikombinatsiooni vajutades . Lähtekood transleeritakse ja juhul kui tulemiks on programm, siis see käivitatakse. Faili salvestamisel tuleb faili laiend muuta sisule vastavaks. Alustades programmi kirjutamisega tuleks kõigepealt määrata sihttranslaator, uurida selle võimalikke direktiive ja omadusi, mida tuleks kasutada. Need tuleks kohe programmi alguses paika panna. Iga programm vajab andmeid. Teistest keeltest erineb assembler selle poolest, et alamäluga piirdudes võib olla vajalik kõikide muutujate deklareerimine koos segmentidega, kus nad asuvad. Kaitstud režiimis olles toimub kõik teise loogika järgi, siis on kogu mälu vaadeldav ühe suure tükina ja adresseerimine on täiesti lineaarne. Muutujate defineerimiseks on kasutusel käsud, millel masinkoodis vastet pole, kuid lähtekoodis asuvad nad samas kohas kus instruktsioon. Muutujadeklaratsiooni üldkuju on järgmine: [muutuja nimi] andmetüüp [väärtus], [väärtus],...

Assemblerkeele laused


Assemblerkeele tekst koosneb lausetest ja iga lause on jagatud väljadeks:
  • märgendiväli
  • käsukoodiväli
  • operandiväli
  • kommendi - ehk kommentaariväli

Assembleri translaatori direkiivid lihtsustavad assemblerikeeles programmeerimist võrreldes masinakoodiga. Kasutusala järgi on direktiivid järgmised:
  • Nimede defineerimise pseudokäsud

  • Andmete defineerimise pseudokäsud

  • Mälu reserveerimise pseudokäsud

  • Pseudokäsud transleerimise juhtimiseks

Väljatoodud tähised UMRK, ARV ja MASS on programmeerija poolt valitud konstantide või andmeobjektide nimed.


Omistamine ja võrdlemine

Süntaks: CMP (võrdle) operand, operandi kirjeldus: Võrdleb esimest operandi teisega ja analoogselt lahutamistehtele seab vastavalt tulemusele lipuregistri bitid. Instruktsiooni kasutatakse koos tingimushüppega , mis vastavalt lippude seisule otsustab, kas teha hüppe või mitte.
Näide:
Süntaks: MOV sihtoperand, lähteoperand
Kirjeldus: Kopeerib lähteoperandi sisu sihtoperandi. Lähteoperand võib olla muutuja, konstant või register. Sihtoperand võib olla kas muutuja või register. Operandid peavad olema võrdse suurusega.
Näide:


Lausete näide Inteli protsessori assemblerkeeles


Tavaliselt kirjutatakse reale üks käsk, mis koosneb mõnetähelisest mnemokoodist ja sellele järgnevatest käsu parameetritest, mis eraldatakse üksteisest komaga :
Selle programmi selgitus:
Muudab registri AX väärtuse 200-ks, seejärel liidab all olevas reas arvu seitsme. Tulemus 207 asub nüüd registris AX.
MOV on lühend ingliskeelsest sõnast liigutama ja käsk ADD tuleneb sõnast lisama . Kõiki käske võib vabalt kirjutada nii suurte kui väikeste tähtedega, kuna see nende tähendust ei muuda.
Siin on ka näide kui assembler tõlgiks selle ära masinkoodi kuueteistkümnendsüsteemi:
B8 C8 00
05 07 00


Kasutatud kirjanudus


Vikipedia. (22.11.2018) Assemblerkeel [ https://et.wikipedia.org/wiki/Assemblerkeel ]
Vikipeida. (27.11.2018) Programmeerimiskeel Assembler [ https://et.wikipedia.org/wiki/Programmeerimiskeel_Assembler ]
I.SISSEJUHATUS. (27.11.2018) Definitsioonid [ http://math.ut.ee/ktv/1995/pro.keeled/index.html ]
Vasakule Paremale
Assembler #1 Assembler #2 Assembler #3 Assembler #4 Assembler #5 Assembler #6 Assembler #7 Assembler #8 Assembler #9 Assembler #10 Assembler #11 Assembler #12 Assembler #13
Punktid 50 punkti Autor soovib selle materjali allalaadimise eest saada 50 punkti.
Leheküljed ~ 13 lehte Lehekülgede arv dokumendis
Aeg2019-03-04 Kuupäev, millal dokument üles laeti
Allalaadimisi 15 laadimist Kokku alla laetud
Kommentaarid 0 arvamust Teiste kasutajate poolt lisatud kommentaarid
Autor Kert Kompus Õppematerjali autor

Kasutatud allikad

Sarnased õppematerjalid

Mikroprotsessortehnika
282
pdf

Mikroprotsessortehnika

2.3.1. Andmevahetuse meetodid 82 2.3.2. Rööpvärat 87 2.3.3. Jadavärat 90 2.3.4. Taimer 91 2.3.5. Otsemällupöördus ja DMA-kontroller 96 2.4. Tarkvara 98 2.4.1. Ülevaade mikroarvutite ja juhtraalide tarkvarast 98 2.4.2. Assembler 99 2.4.3. Intel 8080 assemblerikeel 101 2.5. Signaaliprotsessorid 105 2.5.1. Signaaliprotsessorite ehituse iseärasused 105 2.5.2. Digitaal-analoogmuundurid 106 2.5.3. Analoog-digitaalmuundurid 107 2.5.4. Transpuutrid 111 2.6. Mikroprotsessorite kasutamine 114 2.6

Tehnikalugu



Meedia

Kommentaarid (0)

Kommentaarid sellele materjalile puuduvad. Ole esimene ja kommenteeri



Sellel veebilehel kasutatakse küpsiseid. Kasutamist jätkates nõustute küpsiste ja veebilehe üldtingimustega Nõustun