Asamblēšanas valoda ir programmēšanas valoda, ar kuru var tieši norādīt datoram, kas jādara. Tā ir praktiski tieša mašīnkoda atšifrēta versija: vietā, kur mašīnkodā parasti redzami skaitļi, asamblēšanas valodā izmanto atpazīstamus vārdus (mnemonikas). Dators pats nevar tieši izpildīt tekstu asemblera formātā — programma tiek pārvērsta mašīnkodā ar speciālu rīku, ko sauc par asembleri, kurš vārdus aizstāj ar atbilstošajām skaitliskajām kodēm.

Programmas, kas rakstītas asamblēšanas valodā, parasti sastāv no instrukcijām — īsiem, konkrētiem soļiem, ko procesors izpilda. Tieši šīs instrukcijas programmētājs lieto, lai rakstītu uzvedību, ko izpilda datora aparatūra. Instrukcijas izpilda datora procesors, t.i., tā aparatūras daļa, kas interpretē un izpilda komandas (procesors).

Kā darbojas asamblēšanas valoda

Asamblēšanas valoda ir zema līmeņa valoda — tā ir tuvu aparatūras līmenim un ļauj kontrolēt katru mazu darbību, ko dators veic. Tas nozīmē, ka, lai īstenotu kompleksu uzdevumu, programmētājam jāapraksta visi mazākie soļi, kurus procesoram jāveic. Piemēram, ekrānā teksta izvadīšana no augsta līmeņa valodas ir viena komanda, bet asamblēšanas valodā tas var prasīt daudz instrukciju, kas strādā ar reģistriem, atmiņu un ierīces saskarni.

Galvenie jēdzieni

  • Instrukcijas (mnemonikas) — īsie vārdi, piemēram, MOV, ADD, SUB, JMP, kas apzīmē atsevišķas procesora darbības.
  • Reģistri — nelieli, ātri atmiņas laukumi procesorā, kur glabā datus un adreses starpkalkulācijām.
  • Adrešu režīmi — veidi, kā instrukcijas piekļūst datiem (tieša adrese, netieša adrese, reģistra indekss u.c.).
  • Atmiņa — ilgtermiņa dati, uz kuriem var strādāt, izmantojot adreses. Asemblera programmā bieži manipulē ar konkrētām atmiņas vietām.
  • Sarakste ar aparatūru — zema līmeņa piekļuve ierīcēm (I/O), pārtraukumiem un speciālām instrukcijām, kas nav pieejamas augsta līmeņa valodās.

Piemēri un ilustrācija

Tipiskas asamblēšanas instrukcijas izskatās šādi (mnemoniskā forma):

  • MOV A, B — pārvieto datus no avota uz mērķi (piem., no reģistra B uz reģistru A).
  • ADD A, 1 — pieskaita skaitli 1 reģistram A.
  • JMP adres — lēciens uz citu programmas vietu (cikls vai nosacījumu izpilde).

Šīs komandas pēc asemblera darbības tiks aizstās ar atbilstošiem mašīnkoda kodiem, ko procesors saprot un izpilda.

Asembleri, makro un simboliskas etiķetes

Asembleri pārvērš cilvēkam saprotamus simbolus un mnemonikas atbilstošā mašīnkodā. Mūsdienu asembleri bieži atbalsta arī paplašinājumus, piemēram:

  • Makro — atkārtotas instrukciju virknes, ko var definēt kā vienu komandu, lai atvieglotu kodu.
  • Simboliskas etiķetes — nosaukumi adresēm un mainīgajiem, kas aizvieto grūti pārvaldāmus skaitliskos adreses.
  • Direktīvas — komandas, kas palīdz asemblerim (piem., definēt datu segmentus, izveidot baitu virkni, uzstādīt atmiņas izkārtojumu).

Priekšrocības un trūkumi

  • Priekšrocības: ļoti precīza aparatūras kontrole, efektivitāte (mazāks un ātrāks kods), nepieciešams ierīces draiveru un iebūvētu sistēmu programmēšanā.
  • Trūkumi: grūti lasāms un uzturam, ilgs izstrādes laiks, platformai specifisks (katram procesoram sava instrukciju kopa).

Kad lietot asamblēšanas valodu

Asamblēšanas valodu parasti izvēlas, ja nepieciešama maksimāla veiktspēja vai precīza aparatūras kontrole, piemēram:

  • iebūvētās sistēmas (mikrokontrolleri),
  • ierīču draiveri un zema līmeņa operētājsistēmas komponentes,
  • kritiska veiktspēja vai maza atmiņas noslodze (piem., reāllaika vadība).

Secinājums

Asamblēšanas valoda dod iespēju rakstīt programmas, kas ļoti tieši atbilst procesora spējām. Tas prasa vairāk darba un labas aparatūras izpratnes, taču sniedz pilnīgu kontroli pār to, kas notiek datora iekšienē. Tāpēc asembleris joprojām ir svarīgs rīks speciālistiem, kas strādā ar zemākā līmeņa programmatūru un aparatūru.