Asamblervaloda

Asamblēšanas valoda ir programmēšanas valoda, ko var izmantot, lai tieši norādītu datoram, kas jādara. Asamblēšanas valoda ir gandrīz tāda pati kā mašīnkods, ko saprot dators, tikai skaitļu vietā tiek izmantoti vārdi. Dators nevar tieši saprast asemblera programmu. Tomēr tas var viegli pārveidot programmu mašīnkodā, aizstājot programmas vārdus ar skaitļiem, ko tie apzīmē. Programmu, kas to dara, sauc par asembleri.

Asamblēšanas valodā rakstītās programmas parasti sastāv no instrukcijām, kas ir nelieli uzdevumi, kurus dators veic, darbinot programmu. Tās sauc par instrukcijām, jo programmētājs tās izmanto, lai norādītu datoram, kas jādara. Datora daļa, kas izpilda instrukcijas, ir procesors.

Datora asamblēšanas valoda ir zema līmeņa valoda, kas nozīmē, ka to var izmantot tikai vienkāršu uzdevumu veikšanai, kurus dators var saprast tieši. Lai veiktu sarežģītākus uzdevumus, datoram ir jāpasaka katrs vienkāršais uzdevums, kas ir daļa no sarežģītā uzdevuma. Piemēram, dators nesaprot, kā uz ekrāna izdrukāt teikumu. Tā vietā programmai, kas uzrakstīta asemblera valodā, ir jāpasaka, kā veikt visus mazos soļus, kas saistīti ar teikuma drukāšanu.

Šāda asemblera programma sastāv no daudziem un daudziem norādījumiem, kas kopā veic kaut ko, kas cilvēkam šķiet ļoti vienkāršs un vienkāršs. Tāpēc cilvēkiem ir grūti lasīt asemblera programmu. Turpretī augsta līmeņa programmēšanas valodā var būt viena instrukcija, piemēram, PRINT "Hello, world!", kas liks datoram veikt visus nelielos uzdevumus jūsu vietā.

Asamblēšanas valodas attīstība

Kad datorzinātnieki pirmo reizi konstruēja programmējamas mašīnas, viņi tās programmēja tieši mašīnkodā, kas ir skaitļu virkne, kas datoram uzdod, kas jādara. Mašīnvalodas rakstīšana bija ļoti sarežģīta un prasīja daudz laika, tāpēc galu galā tika izveidota asembleru valoda. Asamblēšanas valodu ir vieglāk lasīt cilvēkam, un to var uzrakstīt ātrāk, taču cilvēkam to joprojām ir daudz grūtāk lietot nekā augsta līmeņa programmēšanas valodu, kas cenšas atdarināt cilvēka valodu.

Programmēšana mašīnkodā

Lai programmētu mašīnkodā, programmētājam ir jāzina, kā katra instrukcija izskatās binārajā (vai sešciparu) kodā. Lai gan datoram ir viegli ātri saprast, ko nozīmē mašīnkods, programmētājam tas ir grūti. Katrai instrukcijai var būt vairākas formas, kas cilvēkiem izskatās tikai kā skaitļu kopums. Jebkura kļūda, ko kāds pieļaus, rakstot mašīnkodus, tiks pamanīta tikai tad, kad dators izdarīs kļūdainu darbību. Kļūdas atklāšana ir sarežģīta, jo lielākā daļa cilvēku nevar noteikt, ko mašīnkods nozīmē, to aplūkojot. Piemērs, kā izskatās mašīnkods:

05 2A 00

Šis heksadecimālais mašīnkods x86 datora procesoram liek akumulatoram pievienot 42. Cilvēkam to ir ļoti grūti izlasīt un saprast, pat ja viņš pārzina mašīnkodus.

Asamblēšanas valodas izmantošana

Izmantojot asamblēšanas valodu, katru instrukciju var pierakstīt kā īsu vārdu, ko sauc par mnemoniku, kam seko citas lietas, piemēram, skaitļi vai citi īsi vārdi. Mnemoniku izmanto, lai programmētājam nebūtu jāatceras precīzi mašīnkoda skaitļi, kas vajadzīgi, lai datoram kaut ko pavēlētu izdarīt. Mnemonikas piemēri asembleru valodā ir add, kas pievieno datus, un mov, kas pārvieto datus no vienas vietas uz citu. Tā kā vārds "mnemonika" ir neparasts, tā vietā dažkārt lieto frāzi instrukcijas tips vai vienkārši instrukcija, bieži vien nepareizi. Vārdi un skaitļi pēc pirmā vārda sniedz vairāk informācijas par to, kas jādara. Piemēram, lietas, kas seko pēc saskaitīšanas, var norādīt, kādas divas lietas jāsaskaita kopā, un lietas, kas seko pēc mov, norāda, kas jāpārvieto un kur tas jānovieto.

Piemēram, iepriekšējā sadaļā minēto mašīnkodu (05 2A 00) asemblerī var rakstīt šādi:

 pievienot ax,42

Asamblēšanas valoda arī ļauj programmētājiem vienkāršāk rakstīt faktiskos datus, ko programma izmanto. Lielākajā daļā asamblēšanas valodu ir atbalsts, lai viegli veidotu skaitļus un tekstu. Mašīnkodā katrs dažāda veida skaitlis, piemēram, pozitīvs, negatīvs vai decimālskaitlis, būtu manuāli jāpārvērš binārajā kodā, un teksts būtu jādefinē pa vienam burtam kā skaitļi.

Asamblēšanas valoda nodrošina tā saukto mašīnkoda abstrakciju. Lietojot asembleri, programmētājiem nav jāzina sīkāka informācija par to, ko skaitļi nozīmē datoram, bet to izdomā asembleris. Asamblēšanas valoda faktiski joprojām ļauj programmētājam izmantot visas procesora funkcijas, ko viņš varētu izmantot, izmantojot mašīnkodus. Šajā ziņā asamblēšanas valodai piemīt ļoti laba, reti sastopama īpašība: tai piemīt tāda pati spēja izteikt lietas, no kurām tā abstrahējas (mašīnkods), un vienlaikus tā ir daudz vieglāk lietojama. Tāpēc mašīnkods gandrīz nekad netiek izmantots kā programmēšanas valoda.

Demontāža un atkļūdošana

Kad programmas ir pabeigtas, tās jau ir pārveidotas mašīnkodā, lai procesors varētu tās faktiski palaist. Tomēr dažreiz, ja programmā ir kļūda (kļūda), programmētāji vēlas, lai programmētājs varētu pateikt, ko katra mašīnkoda daļa dara. Disassembleri ir programmas, kas palīdz programmētājiem to izdarīt, pārveidojot programmas mašīnkodus atpakaļ asembleru valodā, kas ir daudz vieglāk saprotama. Disassembleri, kas mašīnkodus pārvērš asemblera valodā, ir pretēji asembleriem, kas asemblera valodu pārvērš mašīnkodā.

Datoru organizācija

Lai saprastu, kā darbojas datori, ir nepieciešama izpratne par to, kā tie ir organizēti, kā tie šķietami darbojas ļoti zemā līmenī, lai saprastu, kā darbojas programma asemblera valodā. Visvienkāršākajā līmenī datoriem ir trīs galvenās daļas:

  1. galvenā atmiņa jeb RAM, kurā glabājas dati un instrukcijas,
  2. procesors, kas apstrādā datus, izpildot instrukcijas, un
  3. ievade un izvade (dažkārt saīsināti I/O), kas ļauj datoram sazināties ar ārpasauli un uzglabāt datus ārpus galvenās atmiņas, lai vēlāk tos varētu saņemt atpakaļ.

Galvenā atmiņa

Lielākajā daļā datoru atmiņa ir sadalīta baitos. Katrā baitā ir 8 biti. Katram baitam atmiņā ir arī adrese, kas ir skaitlis, kurš norāda, kur atmiņā atrodas baits. Pirmajam baitam atmiņā ir adrese 0, nākamajam ir adrese 1 utt. Atmiņas sadalīšana baitos padara to adresējamu baitos, jo katram baitam ir unikāla adrese. Bajtu atmiņas adreses nevar izmantot, lai atsauktos uz vienu baita bitu. Bajts ir mazākais atmiņas gabals, ko var adresēt.

Lai gan adrese attiecas uz konkrētu atmiņas baitu, procesori ļauj izmantot vairākus atmiņas baitus pēc kārtas. Visbiežāk šī funkcija tiek izmantota, lai izmantotu 2 vai 4 baitus rindā skaitļa, parasti veselā skaitļa, attēlošanai. Dažreiz veselu skaitļu attēlošanai izmanto arī atsevišķus baitus, bet, tā kā tie ir tikai 8 bitu gari, tajos var saglabāt tikai 2 8vai 256 dažādas iespējamās vērtības. Izmantojot 2 vai 4 baitus rindā, dažādu iespējamo vērtību skaits attiecīgi ir 2 16, 65536 vai 2 32, 4294967296.

Kad programma izmanto baitu vai vairākus baitus rindā, lai atveidotu kaut ko, piemēram, burtu, skaitli vai ko citu, šos baitus sauc par objektu, jo tie visi ir daļa no vienas un tās pašas lietas. Lai gan visi objekti tiek glabāti vienādos atmiņas baitos, pret tiem izturas tā, it kā tiem būtu "tips", kas norāda, kā baiti būtu jāsaprot: vai nu kā vesels skaitlis, vai kā rakstzīme, vai kāds cits tips (piemēram, necila vērtība). Mašīnkodu var uzskatīt arī par tipu, ko interpretē kā instrukcijas. Tipa jēdziens ir ļoti, ļoti svarīgs, jo tas nosaka, ko ar objektu drīkst un ko nedrīkst darīt un kā interpretēt objekta baitus. Piemēram, nav atļauts pozitīva skaitļa objektā saglabāt negatīvu skaitli, un nav atļauts veselā skaitlī saglabāt daļu.

Adrese, kas norāda uz (ir daudzbitu objekta adrese), ir šī objekta pirmā baita adrese - baita, kuram ir zemākā adrese. Papildus jāpiebilst, ka pēc adreses nevar noteikt objekta tipu vai pat lielumu. Patiesībā, apskatot objektu, jūs pat nevarat noteikt tā tipu. Asamblēšanas valodas programmai ir jāseko līdzi tam, kurās atmiņas adresēs atrodas kādi objekti un cik lieli ir šie objekti. Programma, kas to dara, ir droša attiecībā uz tipu, jo tā ar objektiem veic tikai tādas darbības, kas ir drošas attiecībā uz to tipu. Programma, kas to nedara, iespējams, nedarbosies pareizi. Ievērojiet, ka vairums programmu patiesībā nepārprotami neuzkrāj objekta tipu, tās tikai konsekventi piekļūst objektiem - viens un tas pats objekts vienmēr tiek uzskatīts par vienu un to pašu tipu.

Procesors

Procesors izpilda (izpilda) instrukcijas, kas kā mašīnkods ir saglabātas galvenajā atmiņā. Lielākajai daļai procesoru ir ne tikai piekļuve atmiņai, bet arī dažas nelielas, ātras, fiksēta lieluma vietas, kurās tiek glabāti objekti, ar kuriem pašlaik tiek strādāts. Šīs vietas sauc par reģistriem. Procesori parasti izpilda trīs veidu instrukcijas, lai gan dažas instrukcijas var būt šo veidu kombinācija. Tālāk ir sniegti daži katra tipa piemēri x86 asamblēšanas valodā.

Instrukcijas, kas lasa vai raksta atmiņā

Šāda x86 asamblēšanas valodas instrukcija nolasa (ielādē) 2 baitu objektu no baita ar adresi 4096 (0x1000 heksadecimālā sistēmā) 16 bitu reģistrā ar nosaukumu 'ax':

        mov ax, [1000h]

Šajā asamblēšanas valodā kvadrātiekavas ap skaitli (vai reģistra nosaukumu) nozīmē, ka šis skaitlis ir jāizmanto kā izmantojamo datu adrese. Adreses izmantošanu, lai norādītu uz datiem, sauc par indirekciju. Šajā nākamajā piemērā bez kvadrātiekavām citā reģistrā, bx, faktiski tiek ielādēta vērtība 20.

        mov bx, 20

Tā kā netika izmantota indirekcija, reģistrā tika ievietota pati faktiskā vērtība.

Ja operandi (lietas, kas atrodas aiz mnemonikas) parādās apgrieztā secībā, instrukcija, kas ielādē kaut ko no atmiņas, tā vietā to ieraksta atmiņā:

        mov [1000h], ax

Šajā gadījumā atmiņa adresē 1000h iegūst vērtību ax. Ja šo piemēru izpilda uzreiz pēc iepriekšējā piemēra, tad 2 baiti adresēs 1000h un 1001h būs 2 baiti veselā skaitļa ar vērtību 20.

Instrukcijas, kas veic matemātiskas vai loģiskas darbības.

Dažas instrukcijas veic tādas darbības kā atņemšana vai loģiskās operācijas, piemēram, ne:

Iepriekš šajā rakstā minētais mašīnkoda piemērs būtu šāds mašīnkoda piemērs asamblēšanas valodā:

        pievienot cirvi, 42

Šeit 42 un ax tiek saskaitīti kopā, un rezultāts tiek saglabāts atpakaļ ax. Arī x86 asamblejā ir iespējams šādi apvienot piekļuvi atmiņai un matemātisku darbību:

        pievienot ax, [1000h]

Šī instrukcija summē 2 baitu veselā skaitļa vērtību, kas saglabāta 1000h, ar ax un saglabā atbildi ax.

        vai ax, bx

Šī instrukcija aprēķina reģistru ax un bx satura vai un saglabā rezultātu atpakaļ reģistrā ax.

Instrukcijas, kas izlemj, kāda būs nākamā instrukcija.

Parasti instrukcijas parasti tiek izpildītas tādā secībā, kādā tās parādās atmiņā, kas ir secība, kādā tās ir ierakstītas asemblera kodā. Procesors tās izpilda vienu pēc otras. Tomēr, lai procesori varētu veikt sarežģītas darbības, tiem ir jāizpilda dažādas instrukcijas atkarībā no tā, kādi dati tiem ir doti. Procesoru spēju izpildīt dažādas instrukcijas atkarībā no kaut kā iznākuma sauc par sazarošanos. Instrukcijas, kas izlemj, kādai jābūt nākamajai instrukcijai, sauc par zaru instrukcijām.

Šajā piemērā pieņemsim, ka kāds vēlas aprēķināt krāsas daudzumu, kas būs nepieciešams, lai nokrāsotu kvadrātu ar noteiktu malas garumu. Tomēr, ņemot vērā apjomradītus ietaupījumus, krāsu veikals nepārdos viņam mazāk krāsas, nekā nepieciešams 100 x 100 kvadrātu krāsošanai.

Lai noskaidrotu, cik daudz krāsas viņiem būs nepieciešams, pamatojoties uz kvadrāta garumu, ko viņi vēlas nokrāsot, viņi izstrādā šo soļu kopumu:

  • atņem 100 no malas garuma
  • ja atbilde ir mazāka par nulli, iestatiet malas garumu uz 100.
  • reizina malas garumu ar sevi

Šo algoritmu var izteikt ar šādu kodu, kur ax ir malas garums.

        mov bx, ax     sub bx, 100    jge turpināt   mov ax, 100 turpināt: mul ax

Šis piemērs ievieš vairākas jaunas lietas, taču pirmie divi norādījumi ir labi pazīstami. Tās kopē ax vērtību bx un pēc tam atņem 100 no bx.

Viens no jaunajiem elementiem šajā piemērā tiek saukts par etiķeti - jēdzienu, kas vispār ir sastopams asamblēšanas valodās. Etiķetes var būt jebkas, ko programmētājs vēlas (ja vien tas nav instrukcijas nosaukums, kas asembleri mulsinātu). Šajā piemērā etiķete ir "continue". Asembleris to interpretē kā instrukcijas adresi. Šajā gadījumā tā ir mult ax adrese.

Vēl viens jauns jēdziens ir karodziņi. Daudzas x86 procesoru instrukcijas procesorā nosaka "karodziņus", kurus nākamā instrukcija var izmantot, lai izlemtu, ko darīt. Šajā gadījumā, ja bx bija mazāks par 100, sub uzstādīs karodziņu, kas norāda, ka rezultāts ir mazāks par nulli.

Nākamā instrukcija ir jge, kas ir saīsinājums no 'Jump if Greater than or Equal to'. Tā ir atzarojuma instrukcija. Ja procesora karodziņi norāda, ka rezultāts ir lielāks vai vienāds ar nulli, tā vietā, lai vienkārši pārietu uz nākamo instrukciju, procesors pāries uz instrukciju ar turpinājuma marķējumu, kas ir mul ax.

Šis piemērs darbojas labi, bet tas nav tas, ko rakstītu vairums programmētāju. Atņemšanas instrukcija pareizi iestatīja karodziņu, bet tā arī maina vērtību, ar kuru tā darbojas, tāpēc bija nepieciešams nokopēt ax uz bx. Lielākā daļa asamblēšanas valodu pieļauj salīdzināšanas instrukcijas, kas nemaina nevienu no tām nodotajiem argumentiem, bet tomēr pareizi iestata karogus, un x86 asemblēšana nav izņēmums.

        cmp ax, 100    jge turpināt   mov ax, 100 turpināt: mul ax

Tagad tā vietā, lai atņemtu 100 no ax, pārbaudītu, vai šis skaitlis ir mazāks par nulli, un piešķirtu to atpakaļ ax, ax tiek atstāts nemainīgs. Karodziņi joprojām tiek iestatīti tāpat, un lēciens joprojām tiek veikts tajās pašās situācijās.

Ievade un izvade

Lai gan ievade un izvade ir būtiska skaitļošanas procesa daļa, montāžas valodā nav viena veida, kā to izdarīt. Tas ir tāpēc, ka ieejas un izejas darbības veids ir atkarīgs no datora konfigurācijas un tajā izmantotās operētājsistēmas, nevis tikai no tā, kāds tam ir procesors. Šajā sadaļā piemērs Hello World izmanto MS-DOS operētājsistēmas izsaukumus, bet nākamajā piemērā izmantoti BIOS izsaukumi.

Ir iespējams veikt I/O asamblēšanas valodā. Patiesi, asembleru valodā vispār var izteikt visu, ko dators spēj izdarīt. Tomēr, lai gan asamblēšanas valodā ir pievienošanas un sazarošanas instrukcijas, kas vienmēr darīs vienu un to pašu, asamblēšanas valodā nav instrukciju, kas vienmēr veiktu I/O.

Svarīgi ir atzīmēt, ka I/O darbības veids nav asamblēšanas valodas daļa, jo tas nav daļa no procesora darbības veida.

Asamblēšanas valodas un pārnesamība

Lai gan asamblēšanas valodu procesors tieši neizmanto - to dara mašīnkods, tai tomēr ir daudz sakara ar procesoru. Katra procesoru saime atbalsta dažādas funkcijas, instrukcijas, noteikumus par to, ko instrukcijas var darīt, un noteikumus par to, kādas instrukciju kombinācijas ir atļautas. Tāpēc dažādu veidu procesoriem joprojām ir nepieciešamas dažādas asemblera valodas.

Tā kā katra asamblēšanas valodas versija ir piesaistīta procesoru saimei, tai trūkst tā dēvētās pārnesamības. Kaut ko, kam piemīt pārnesamība vai kas ir pārnesams, var viegli pārnest no viena datora tipa uz citu. Citu veidu programmēšanas valodas ir pārnesamas, bet asembleru valoda kopumā nav pārnesama.

Asamblēšanas valoda un augsta līmeņa valodas

Lai gan asamblēšanas valoda ļauj viegli izmantot visas procesora funkcijas, mūsdienīgos programmatūras projektos to neizmanto vairāku iemeslu dēļ:

  • Lai izteiktu vienkāršu programmu asamblejā, ir nepieciešams daudz pūļu.
  • Lai gan asamblēšanas valoda nav tik pakļauta kļūdām kā mašīnkods, tā joprojām ir ļoti maz aizsargāta pret kļūdām. Gandrīz visās asamblēšanas valodās netiek nodrošināta tipu drošība.
  • Asamblēšanas valoda neveicina labu programmēšanas praksi, piemēram, modularitāti.
  • Lai gan katru atsevišķo asamblēšanas valodas instrukciju ir viegli saprast, ir grūti pateikt, kāds bija programmētāja nolūks, kurš to rakstīja. Patiesībā programmas asemblēšanas valoda ir tik grūti saprotama, ka uzņēmumi neuztraucas par to, ka cilvēki izjauc (iegūst asemblēšanas valodu) to programmas.

Šo trūkumu dēļ lielākajā daļā projektu tiek izmantotas augsta līmeņa valodas, piemēram, Pascal, C un C++. Tās ļauj programmētājiem tiešāk izteikt savas idejas, nevis uztraukties par to, kā katru reizi norādīt procesoram, kas jādara. Tās tiek sauktas par augsta līmeņa valodām, jo idejas, ko programmētājs var izteikt tādā pašā koda apjomā, ir sarežģītākas.

Programmētāji, kas raksta kodu kompilētās augsta līmeņa valodās, izmanto programmu, ko sauc par kompilatoru, lai pārveidotu kodu asamblēšanas valodā. Kompilatorus ir daudz grūtāk uzrakstīt nekā asemblerus. Turklāt augsta līmeņa valodas ne vienmēr ļauj programmētājiem izmantot visas procesora funkcijas. Tas ir tāpēc, ka augsta līmeņa valodas ir izstrādātas, lai atbalstītu visas procesoru saimes. Atšķirībā no asamblēšanas valodām, kas atbalsta tikai viena tipa procesorus, augsta līmeņa valodas ir pārnesamas.

Lai gan kompilatori ir sarežģītāki par asembleriem, gadu desmitiem ilgā kompilatoru izgatavošanas un izpētes procesā tie ir kļuvuši ļoti labi. Tagad lielākajai daļai projektu vairs nav daudz iemeslu izmantot asembleru valodu, jo kompilatori parasti spēj izdomāt, kā izteikt programmas asembleru valodā tikpat labi vai pat labāk nekā programmētāji.

Programmu piemēri

Programma Hello World, kas uzrakstīta x86 asamblejā:

adosseg .model small .stack 100h .data hello_message db 'Hello, World! ',0dh,0ah,'$' .code main proc mov ax,@data mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4C00h int 21h main endp end end main

Funkcija, kas izdrukā skaitli uz ekrāna, izmantojot BIOS pārtraukumus, kas uzrakstīti NASM x86 asamblejā. Modulāro kodu ir iespējams uzrakstīt asemblera valodā, taču tas prasa papildu pūles. Ņemiet vērā, ka viss, kas ir aiz semikola rindā, ir komentārs, un asembleris to ignorē. Komentāru ievietošana asamblēšanas valodas kodā ir ļoti svarīga, jo lielas asemblēšanas valodas programmas ir ļoti grūti saprast.

; void printn(int number, int base); printn: push    bp      mov     bp, sp push    ax         push    bx      push    cx      push    dx      push    si      mov     si, 0   mov        ax, [bp + 4]   ; numurs       mov     cx, [bp + 6]   ; bāze gloop:  inc     si               ; virknes garums       mov     dx, 0          ; nulle dx     div     cx               ; dalīt ar bāzi        cmp     dx, 10         ; vai tas ir ge 10?    jge        num     pievienot      dx, '0'        ; pievienot nulli dx   jmp     anum num:        add     dx, ('A'- 10)  ; sešstzīmju vērtība, pie dx - 10 pievieno 'A'. anum:        Push:   dx             ; ielieciet dx uz kaudzes.     cmp     ax, 0          ; vai mums vajadzētu turpināt?   jne     gloop  mov     bx, 7h         ; pārtrauktu tloop:        pop     ax             ; iegūst tās vērtību   mov     ah, 0eh        ; pārtraukumam   int     10h            ; rakstīt rakstzīmi    dec     si             ; atbrīvoties no rakstzīmes      jnz     tloop  pop     si      pop     dx      pop     cx         pop     bx      pop     ax      pop     bp      ret    

Jautājumi un atbildes

J: Kas ir asemblera valoda?


A: Asamblēšanas valoda ir programmēšanas valoda, ko var izmantot, lai tieši norādītu datoram, kas jādara. Tā ir gandrīz tāda pati kā mašīnkods, ko saprot dators, tikai skaitļu vietā tiek lietoti vārdi.

J: Kā dators saprot asemblera programmu?


Atbilde: Dators nevar tieši saprast asemblera programmu, bet tas var viegli pārveidot programmu mašīnkodā, aizstājot programmas vārdus ar skaitļiem, ko tie apzīmē. Šo procesu veic, izmantojot asembleri.

J: Kas ir instrukcijas asemblera valodā?


A: Instrukcijas asamblēšanas valodā ir nelieli uzdevumi, ko dators veic, izpildot programmu. Tās sauc par instrukcijām, jo tās uzdod datoram, kas jādara. Datora daļu, kas atbild par šo instrukciju izpildi, sauc par procesoru.

J: Kāda veida programmēšanas valoda ir asemblera valoda?


A: Asamblēšanas valoda ir zema līmeņa programmēšanas valoda, kas nozīmē, ka to var izmantot tikai vienkāršu uzdevumu veikšanai, kurus dators var saprast tieši. Lai veiktu sarežģītākus uzdevumus, katrs uzdevums jāsadala atsevišķās sastāvdaļās un katrai sastāvdaļai atsevišķi jāsniedz instrukcijas.

J: Ar ko tas atšķiras no augsta līmeņa valodām?


A: Augsta līmeņa valodās var būt atsevišķas komandas, piemēram, PRINT "Hello, world!", kas datoram liks veikt visus šos mazos uzdevumus automātiski, nenorādot tos atsevišķi, kā tas būtu jādara ar asemblera programmu. Tādējādi augsta līmeņa valodas cilvēkiem ir vieglāk lasāmas un saprotamas nekā asemblera programmas, kas sastāv no daudzām atsevišķām instrukcijām.

J: Kāpēc cilvēkiem varētu būt grūti lasīt asemblera programmu?


A: Tāpēc, ka ir jānorāda daudzas atsevišķas instrukcijas, lai veiktu sarežģītu uzdevumu, piemēram, izdrukātu kaut ko uz ekrāna vai veiktu aprēķinus ar datu kopām - lietas, kas šķiet ļoti vienkāršas un vienkāršas, ja tās izsaka dabiskā cilvēka valodā, - tāpēc vienu instrukciju var veidot daudzas koda rindas, kas cilvēkiem, kuri nezina, kā datori darbojas tik zemā līmenī, ir grūti sekot līdzi un interpretēt, kas tajos notiek.

AlegsaOnline.com - 2020 / 2023 - License CC3