Kad mēs runājam par programmēšanas valodām, pirmā lieta, kas mums nāk prātā, ir tādas valodas kā C, C++, Java, Python utt. Taču šīs valodas slēpj faktisko darbību, t.i., kas daudz ko atņem no lietotājiem. Bet ir valoda, kas patiešām balstās uz programmēšanas vai datora aparatūras mijiedarbības pamatjēdzieniem.
Kas ir asamblejas valoda?
Montāžas valoda ir zema līmeņa valoda, kas palīdz tieši sazināties ar datora aparatūru. Tas izmanto mnemoniku, lai attēlotu darbības, kas procesoram jāveic. Kas ir starpvaloda starp augsta līmeņa valodām, piemēram C++ un binārā valoda. Tas izmanto heksadecimālās un binārās vērtības, un tas ir lasāms cilvēkiem.
Asamblejas valodas evolūcija?
Montāžas valoda ir attīstījusies roku rokā ar datoru aparatūras sasniegumiem un programmētāju mainīgajām vajadzībām. Tālāk ir sniegts tuvāks katras paaudzes apskats:
Pirmā paaudze (1940-1950):
- Datori balstījās uz vakuumlampām, un programmēšana notika tieši mašīnvalodā, izmantojot bināras instrukcijas.
- Montāžas valoda parādījās kā lasāma abstrakcija, izmantojot mnemoniskus kodus, lai attēlotu mašīnas instrukcijas.
Otrā paaudze (1950-1960):
- Datori, kuru pamatā ir tranzistori, aizstāja vakuuma lampas, piedāvājot uzlabotu konsekvenci un veiktspēju.
- Montāžas valodas kļuva sarežģītākas, lai apstrādātu šo jauno iekārtu sarežģītās instrukciju kopas. Vienlaikus augsta līmeņa programmēšanas valodas, piemēram, FORTRANS un COBOL nodrošināta uzlabota abstrakcija
Trešā paaudze (1960-1970):
- Integrētās shēmas kļuva par standarta vietu, kā rezultātā tika samazināti, bet spēcīgi datori.
- Montāžas valodas attīstījās tālāk, ieviešot tādas funkcijas kā makro un simboliskas etiķetes, kas uzlaboja programmētāja produktivitāti un koda lasāmību.
Ceturtā paaudze (1970-1980):
- Mikroprocesoru sākums pārveidoja skaitļošanu, paverot ceļu mikrodatoru sistēmām, piemēram, IBM PC un Apple II.
- Mikrodatoru montāžas valodas tika pārveidotas, lai uzlabotu lietotāju pieejamību, izmantojot sintakses izcelšanu un automātisku atkāpi, tādējādi palielinot iekļaušanu lielākai programmētāju grupai.
Piektā paaudze (no 1980. gada līdz mūsdienām):
- Šo laikmetu raksturo vairāku skaitļošanas uzdevumu vienlaicīga izpilde, šī metode ir pazīstama kā paralēlās apstrādes sistēma un sarežģītu programmatūras sistēmu izaugsme
- Montāžas valoda turpināja attīstīties, lai apmierinātu programmētāju prasības, ieviešot visprogresīvākās atkļūdošanas metodes un rīkus, kas vērsti uz koda veiktspējas un produktivitātes uzlabošanu.sarežģītām sistēmām.
Kā darbojas montāžas valoda?
Montāžas valodas satur mnemoniskus kodus, kas norāda, kas procesoram jādara. Programmētāja ierakstītais mnemoniskais kods izpildei tika pārveidots mašīnvalodā (binārajā valodā). Montētājs tiek izmantots, lai pārveidotu montāžas kodu mašīnvalodā. Šis mašīnas kods izpildes nolūkā tiek saglabāts izpildāmā failā.
Tas ļauj programmētājam tieši sazināties ar aparatūru, piemēram, reģistriem, atmiņas vietām, ievades/izvades ierīces vai jebkuru citu aparatūra sastāvdaļas. Kas varētu palīdzēt programmētājam tieši kontrolēt aparatūras komponentus un efektīvi pārvaldīt resursus.
Kā izpildīt montāžas valodu?
- Uzrakstiet montāžas kodu : atveriet jebkuru ierīces teksta redaktoru un ierakstiet tajā mnemoniskos kodus un saglabājiet failu ar atbilstošu paplašinājumu atbilstoši jūsu montētājam. Pagarinājums var būt .asm , .s , .asm x.
- Koda salikšana : konvertējiet kodu uz mašīnas valodu, izmantojot montētājs .
- Objekta faila ģenerēšana : tas ģenerēs objekta failu, kas atbilst jūsu kodam. Tam būs paplašinājums. obj .
- Izpildāmo failu saistīšana un izveide : mūsu montāžas valoda var saturēt vairākus avota kodus. Un mums tās ir jāsaista ar bibliotēkām, lai tās būtu izpildāmas. Šim nolūkam mēs varam izmantot saiti, piemēram, lk.
- Darbojas programma : Pēc izpildāmā faila izveidošanas mēs varam to palaist kā parasti. Tas, kā programmu palaist, būs atkarīgs no programmatūras.
Asamblejas valodas sastāvdaļas
- Reģistri: Reģistri ir ātrās atmiņas vietas, kas atrodas procesora iekšpusē. Kas palīdz AIZIET veikt aritmētiskās darbības un pagaidu datu glabāšanu. Piemērs: Axe (akumulators), Bx, Cx.
- Komanda: Instrukcija montāžas kodā, kas pazīstama kā komanda, informē montētāju, kā rīkoties. Montāžas valodas instrukcijās parasti tiek izmantoti pašaprakstoši saīsinājumi, lai padarītu vārdu krājumu vienkāršu, piemēram, ADD pievienošanai un MOV datu pārvietošanai.
- Instrukcijas: Norādījumi ir mnemoniskie kodi, ko mēs piešķiram procesoram, lai veiktu konkrētus uzdevumus, piemēram, LOAD, ADITION, MOVE. Piemērs: ADD
- Etiķetes: Tas ir simbolisks nosaukums/identifikators, kas piešķirts, lai norādītu konkrētu atrašanās vietu vai adresi montāžas kodā. Piemērs: PIRMAIS, lai norādītu koda izpildes daļas sākumu.
- Mnemonika: Mnemonika ir montāžas valodas instrukcijas akronīms vai mašīnas funkcijas nosaukums. Katra montāžas mnemonika atbilst noteiktai mašīnas instrukcijai. Add ir vienas no šīm mašīnas komandām ilustrācija. CMP, Mul un Lea ir citi gadījumi.
- Makro: Makro ir programmu kodi, kurus var izmantot jebkur programmā, to izsaucot, kad mēs to definējam. Un tas bieži ir iestrādāts ar montētājiem un kompilatoriem. Mums tas jādefinē, izmantojot direktīvu %macro. Piemērs: %macro ADD_TWO_NUMBERS 2
pievienot eax, %1
pievienot eax, %2
%endmacro - Operandi: Šie ir dati vai vērtības, kas mums tiek dotas, izmantojot norādījumus, lai ar tiem veiktu kādu darbību. Piemērs: In ADD R1,R2 ; R1 un R2 ir operandi.
- Opkods: Šie ir mnemoniskie kodi, kas procesoram norāda, kura darbība ir jāveic. Piemērs: ADD nozīmē papildinājums.
Heksadecimālā skaitļu sistēma ir skaitļu sistēma, ko izmanto, lai attēlotu dažādus skaitļus, izmantojot 16 simbolus, kas ir no No 0 līdz 9 cipariem un no A līdz F alfabēts un tā ir 16. bāzes ciparu sistēma. No 0 līdz 9 decimāldaļās un heksadecimāldaļās ir vienādas.
Tabula no decimāldaļas uz heksadecimālu
Decimālzīme | Hex fibonači sērija java | Decimālzīme | Hex | Decimālzīme | Hex | Decimālzīme | Hex |
---|---|---|---|---|---|---|---|
0 | 0 | 10 | A | divdesmit | 14 | 30 | 1E |
1 | 1 | vienpadsmit | B | divdesmitviens | piecpadsmit | 31 | 1F |
2 | 2 | 12 | C | 22 | 16 | 32 | divdesmit |
3 | 3 | 13 | D | 23 | 17 | 33 | divdesmitviens |
4 | 4 | 14 | UN | 24 | 18 | 3. 4 | 22 |
5 | 5 | piecpadsmit | F | 25 | 19 | 35 | 23 |
6 | 6 | 16 | 10 | 26 | 1A | 36 | 24 |
7 java masīvs sarakstā | 7 | 17 | vienpadsmit | 27 | 1B | 37 | 25 |
8 | 8 | 18 | 12 | 28 | 1 C | 38 | 26 |
9 | 9 kas taisīja skolu | 19 | 13 | 29 | 1D | 39 | 27 |
Heksadecimālos skaitļus var viegli pārvērst citā formā, piemēram, binārajā skaitļu sistēmā, decimālo skaitļu sistēmā, oktālo skaitļu sistēmā un otrādi. Šajā rakstā mēs koncentrējamies tikai uz to, lai heksadecimālo vērtību pārveidotu par decimāldaļu un otrādi.
Decimāldaļas konvertēšana uz heksadecimālu:
1. darbība. Ievadiet decimālvērtību N.
2. darbība: sadaliet N ar 16 un saglabājiet atlikušo daļu.
3. solis: vēlreiz sadaliet koeficientu ar 16, iegūstiet 2. solī un saglabājiet atlikumu.
3. darbība: atkārtojiet 3. darbību, līdz koeficients kļūst 0.
4. darbība: ierakstiet atlikumu apgrieztā secībā, un tā ir skaitļa heksadecimālā vērtība.
Piemērs: konvertējiet 450 decimālo vērtību heksadecimāldaļā.
1. darbība: N = 450.
2. darbība: 450/16 dod Q = 28, R = 2.
3. darbība: 28/16 dod Q = 1, R = 12 = C.
4. darbība: 1/16 dod Q = 0, R = 1.
5. darbība: heksadecimālais skaitlis no 450 ir 1C2.
Heksadecimālā konvertēšana uz decimālo
Lai pārvērstu heksadecimālo uz decimālo, reiziniet katru ciparu ar 16 līdz tā pozīcijas pakāpei, sākot no labās puses, un galējā labā cipara pozīcija ir 0, pēc tam pievienojiet rezultātu.
Piemērs: Konvertēt (A7B) 16 līdz decimāldaļai.
(A7B)16= A × 162+7 × 161+ B × 160
⇒ (A7B)16= 10 × 256 + 7 × 16 + 11 × 1 (pārveidojiet simbolus A un B to decimāldaļas ekvivalentos; A = 10, B = 11)
⇒ (A7B)16= 2560 + 112 + 11
⇒ (A7B)16= 2683
Tāpēc (A7B) decimāldaļas ekvivalents16ir (2683)10.
Asamblejas valodas priekšrocības
- Tas nodrošina precīzu aparatūras kontroli un tādējādi uzlabotu koda optimizāciju.
- Tas nodrošina tiešu piekļuvi aparatūras komponentiem, piemēram, reģistriem, tādējādi ļaujot nodrošināt pielāgotus risinājumus aparatūras problēmām.
- Efektīva resursu izmantošana, pateicoties zema līmeņa kontrolei, optimizētam kodam, resursu izpratnei, pielāgošanai utt.
- Tas ir ideāli piemērots programmēšanai mikrokontrolleri , sensori un citi aparatūras komponenti.
- To izmanto drošības pētījumos drošības ievainojamību atrašanai, reversās inženierijas programmatūras sistēmas drošībai.
- Tas ir ļoti svarīgi, lai izveidotu operētājsistēmas , kodols un ierīču kontrolieri kuras funkcionalitātei nepieciešama aparatūras mijiedarbība.
Asamblejas valodas trūkumi
- Sarežģīta un ļoti grūti apgūstama valoda, īpaši iesācējiem.
- Tas ir ļoti atkarīgs no mašīnas. Tātad, tas ierobežo pārnesamību.
- Ir patiešām grūti uzturēt kodu, īpaši liela mēroga projektiem.
- Tas ir ļoti laikietilpīgi, jo to ir patiešām grūti saprast un kods ir ļoti garš.
- Atkļūdošana ir ļoti izaicinošs programmētājiem.
Bieži uzdotie jautājumi par montāžas valodu — FAQ
Kur tiek izmantota montāžas valoda?
- Operētājsistēmas izstrāde
- Ierīces draivera izveide
- Iegulto sistēmu programmēšana
- Reāllaika lietojumprogrammas
- Drošības pētījumi
Atšķirība starp asamblejas valodu un augsta līmeņa valodu?
Montāžas valoda ir mnemoniski kodi un ir cieši saistīta ar CPU instrukciju kopu. HLL ir abstrakcija.
Kuru CPU arhitektūru man vajadzētu apgūt montāžas programmēšanai?
8085 un 8086 mikroprocesoru arhitektūras ir daudz labāk saprotamas jēdzieniem.
Vai montāžas valoda joprojām ir svarīga mūsdienu skaitļošanā?
Jā. Montāžas valoda joprojām ir aktuāla.