Kai kalbame apie programavimo kalbas, pirmiausia į galvą ateina tokios kalbos kaip C, C++, Java, Python ir kt. Tačiau šios kalbos slepia tikrąjį veikimą, t. y. daug ką atima iš vartotojų. Tačiau yra kalba, kuri iš tikrųjų slypi pagrindinėse sąvokose už programavimo arba kompiuterio aparatinės įrangos sąveikos.
Kas yra asamblėjos kalba?
Asamblėjos kalba yra žemo lygio kalba, padedanti tiesiogiai bendrauti su kompiuterio technine įranga. Jis naudoja mnemoniką, kad pavaizduotų operacijas, kurias turi atlikti procesorius. Kuri yra tarpinė kalba tarp aukšto lygio kalbų, pavyzdžiui C++ ir dvejetainė kalba. Jame naudojamos šešioliktainės ir dvejetainės reikšmės ir ją gali skaityti žmonės.
if ir else in bash
Asamblėjos kalbos raida?
Asamblėjos kalba vystėsi kartu su kompiuterinės įrangos pažanga ir besikeičiančiais programuotojų poreikiais. Atidžiau pažvelkime į kiekvieną kartą:
Pirmoji karta (1940-1950):
- Kompiuteriai rėmėsi vakuuminiais vamzdžiais, o programavimas vyko tiesiogiai mašinine kalba, naudojant dvejetaines komandas.
- Asamblėjos kalba atsirado kaip skaitoma abstrakcija, naudojant mnemoninius kodus, vaizduojančius mašinos instrukcijas.
Antroji karta (1950–1960):
- Tranzistoriniai kompiuteriai pakeitė vakuuminius vamzdžius, suteikdami didesnį nuoseklumą ir meistriškumą.
- Surinkimo kalbos tapo sudėtingesnės, kad būtų galima valdyti sudėtingus šių naujų mašinų instrukcijų rinkinius. Tuo pačiu metu aukšto lygio programavimo kalbos patinka FORTRANAS ir COBOL pateikta Išplėstinė abstrakcija
Trečioji karta (1960–1970):
- Integrinės grandinės tapo standartine vieta, todėl sumažėjo, bet galingi kompiuteriai.
- Surinkimo kalbos vystėsi toliau, pristatant tokias funkcijas kaip makrokomandos ir simbolinės etiketės, kurios padidino programuotojo produktyvumą ir kodo skaitomumą.
Ketvirtoji karta (1970–1980):
- Mikroprocesorių atsiradimo pradžia pakeitė skaičiavimą, atverdama kelią mikrokompiuterių sistemoms, tokioms kaip IBM PC ir Apple II.
- Mikrokompiuterių surinkimo kalbos buvo perkurtos, kad būtų pagerintas vartotojo pasiekiamumas, sintaksės paryškinimas ir automatinis įtraukimas, taip padidinant įtraukimą į didesnę programuotojų grupę.
Penktoji karta (nuo 1980 m.):
- Šiai erai būdingas kelių skaičiavimo užduočių vykdymas vienu metu, šis metodas žinomas kaip lygiagretaus apdorojimo sistema ir sudėtingų programinės įrangos sistemų augimas
- Asamblėjos kalba toliau tobulėjo, kad atitiktų programuotojų poreikius, diegiant pažangiausius derinimo metodus ir įrankius, orientuotus į kodo našumo ir produktyvumo gerinimą.sudėtingoms sistemoms.
Kaip veikia asamblėjos kalba?
Asamblėjos kalbose yra mnemoniniai kodai, nurodantys, ką procesorius turi daryti. Mnemoninis kodas, kurį parašė programuotojas, buvo konvertuotas į mašinų kalbą (dvejetainę kalbą) vykdymui. Asembleris naudojamas surinkimo kodui konvertuoti į mašinos kalbą. Šis mašinos kodas yra saugomas vykdomajame faile vykdymo sumetimais.
Tai leidžia programuotojui tiesiogiai susisiekti su aparatine įranga, tokia kaip registrai, atminties vietos, įvesties/išvesties įrenginiai ar bet kuri kita aparatūra komponentai. Tai gali padėti programuotojui tiesiogiai valdyti aparatūros komponentus ir efektyviai valdyti išteklius.
Kaip vykdyti asamblėjos kalbą?
- Parašykite surinkimo kodą : Atidarykite bet kurį teksto rengyklę įrenginyje ir įrašykite jame mnemoninius kodus ir išsaugokite failą tinkamu plėtiniu pagal jūsų surinkėją. Pratęsimas gali būti .asm , .s , .asm x.
- Kodo surinkimas : konvertuokite kodą į mašinos kalbą naudodami a surinkėjas .
- Kuriamas objekto failas : Sugeneruos objekto failą, atitinkantį jūsų kodą. Jis turės pratęsimą. obj .
- Vykdomųjų failų susiejimas ir kūrimas : mūsų asamblėjos kalboje gali būti keli šaltinio kodai. Ir mes turime juos susieti su bibliotekomis, kad būtų galima vykdyti. Šiam tikslui galime naudoti linkerį, pvz., lk.
- Vykdoma programa : Sukūrę vykdomąjį failą galime jį paleisti kaip įprasta. Tai priklausys nuo programinės įrangos, kaip paleisti programą.
Asamblėjos kalbos komponentai
- Registrai: Registrai yra greitos atminties vietos, esančios procesoriaus viduje. Kas padeda EIK atlikti aritmetines operacijas ir laikinai saugoti duomenis. Pavyzdys: Ax (akumuliatorius), Bx, Cx.
- Komanda: Instrukcija surinkimo kode, žinoma kaip komanda, informuoja surinkėją, ką daryti. Surinkimo kalbos instrukcijose paprastai naudojamos save apibūdinančios santrumpos, kad žodynas būtų paprastas, pvz., ADD – papildymui, o MOV – duomenų judėjimui.
- Instrukcijos: Instrukcijos yra mnemoniniai kodai, kuriuos suteikiame procesoriui, kad jis atliktų konkrečias užduotis, tokias kaip LOAD, ADDITION, MOVE. Pavyzdys: PRIDĖTI
- Etiketės: Tai simbolinis pavadinimas / identifikatorius, suteikiamas tam tikrai vietai arba adresui surinkimo kode nurodyti. Pavyzdys: PIRMOJI, kad būtų nurodyta kodo vykdymo dalies pradžia.
- Mnemoninis: Mnemonika yra asamblėjos kalbos instrukcijos akronimas arba mašinos funkcijos pavadinimas. Kiekviena surinkimo mnemonika atitinka konkrečią mašinos instrukciją. Add yra vienos iš šių mašinos komandų iliustracija. CMP, Mul ir Lea yra tarp kitų atvejų.
- Makrokomandas: Makrokomandos yra programų kodai, kuriuos galima naudoti bet kurioje programos vietoje, kai ją apibrėžiame. Ir jis dažnai yra įterptas su surinkėjais ir kompiliatoriais. Turėtume jį apibrėžti naudodami direktyvą %macro. Pavyzdys: %macro ADD_TWO_NUMBERS 2
pridėti eax, %1
pridėti eax, %2
%endmacro - Operandai: Tai yra duomenys arba reikšmės, kurios mums suteikiamos nurodymu atlikti tam tikrą operaciją. Pavyzdys: Į ADD R1,R2 ; R1 ir R2 yra operandai.
- Opkodas: Tai yra mnemoniniai kodai, nurodantys procesoriui, kurią operaciją reikia atlikti. Pavyzdys: ADD reiškia papildymą.
Šešioliktainė skaičių sistema yra skaičių sistema, kuri naudojama įvairiems skaičiams pavaizduoti naudojant 16 simbolių, kurie yra iš Nuo 0 iki 9 skaitmenų ir nuo A iki F abėcėlė ir ji yra 16 bazinių skaičių sistema. Nuo 0 iki 9 dešimtainiu ir šešioliktainiu yra tas pats.
Dešimtainė iki šešioliktainė lentelė
Dešimtainė | Hex | Dešimtainė | Hex | Dešimtainė | Hex | Dešimtainė | Hex |
---|---|---|---|---|---|---|---|
0 | 0 | 10 | A | dvidešimt | 14 | 30 | 1E |
1 | 1 | vienuolika | B | dvidešimt vienas | penkiolika | 31 | 1F |
2 | 2 | 12 | C | 22 | 16 | 32 | dvidešimt |
3 | 3 | 13 | D | 23 | 17 | 33 | dvidešimt vienas |
4 | 4 | 14 | IR | 24 | 18 | 3. 4 | 22 |
5 | 5 | penkiolika | F | 25 | 19 | 35 | 23 |
6 | 6 | 16 | 10 | 26 | 1A | 36 | 24 |
7 pilna forma ide | 7 | 17 | vienuolika | 27 | 1B | 37 | 25 |
8 | 8 | 18 | 12 | 28 | 1 C | 38 | 26 |
9 | 9 | 19 | 13 | 29 | 1D | 39 | 27 |
Šešioliktainiai skaičiai gali būti lengvai konvertuojami į kitą formą, pavyzdžiui, dvejetainę skaičių sistemą, dešimtainę skaičių sistemą, aštuntainę skaičių sistemą ir atvirkščiai. Šiame straipsnyje mes sutelkiame dėmesį tik į šešioliktainį konvertavimą į dešimtainį ir atvirkščiai.
Perskaičiavimas iš dešimtainės į šešioliktainę:
1 veiksmas: įveskite dešimtainę reikšmę N.
2 veiksmas: padalykite N iš 16 ir išsaugokite likusią dalį.
3 veiksmas: Dar kartą padalykite koeficientą iš 16, gaukite 2 veiksme ir išsaugokite likutį.
3 veiksmas: kartokite 3 veiksmą, kol koeficientas taps 0.
4 veiksmas: parašykite likutį atvirkštine tvarka ir tai yra šešioliktainė skaičiaus reikšmė.
Pavyzdys: konvertuokite 450 dešimtainę reikšmę į šešioliktainę.
1 veiksmas: N = 450.
2 veiksmas: 450/16 suteikia Q = 28, R = 2.
3 veiksmas: 28/16 suteikia Q = 1, R = 12 = C.
4 veiksmas: 1/16 suteikia Q = 0, R = 1.
5 veiksmas: šešioliktainis skaičius 450 yra 1C2.
Šešioliktainė konversija į dešimtainę
Norėdami konvertuoti šešioliktainę į dešimtainę, kiekvieną skaitmenį padauginkite iš 16 iki jo padėties laipsnio, pradedant nuo dešinės, o tolimiausio dešiniojo skaitmens padėtis yra 0, tada pridėkite rezultatą.
Pavyzdys: Konvertuoti (A7B) 16 po kablelio.
(A7B)16= A × 162+7×161+ B × 160
⇒ (A7B)16= 10 × 256 + 7 × 16 + 11 × 1 (konvertuokite simbolius A ir B į jų dešimtainius ekvivalentus; A = 10, B = 11)
⇒ (A7B)16= 2560 + 112 + 11
⇒ (A7B)16= 2683
Todėl (A7B) dešimtainis ekvivalentas16yra (2683)10.
Asamblėjos kalbos pranašumai
- Tai užtikrina tikslų aparatinės įrangos valdymą ir padidina kodo optimizavimą.
- Tai suteikia tiesioginę prieigą prie aparatinės įrangos komponentų, pvz., registrų, todėl įgalina pritaikytus aparatinės įrangos problemų sprendimus.
- Efektyvus išteklių panaudojimas dėl žemo lygio valdymo, optimizuoto kodo, išteklių suvokimo, pritaikymo ir kt.
- Tai idealiai tinka programavimui mikrovaldikliai , jutikliai ir kiti techninės įrangos komponentai.
- Jis naudojamas saugumo tyrimuose ieškant saugumo spragų, grįžtamosios inžinerijos programinės įrangos sistemos saugumui.
- Tai labai svarbu gaminant Operacinės sistemos , branduolys ir įrenginių valdikliai kurio funkcionalumui reikalinga techninė sąveika.
Asamblėjos kalbos trūkumai
- Sudėtinga ir labai sunkiai išmokstama kalba, ypač pradedantiesiems.
- Tai labai priklauso nuo mašinos. Taigi, tai riboja nešiojamumą.
- Labai sunku išlaikyti kodą, ypač didelio masto projektams.
- Tai užima labai daug laiko, nes tai tikrai sunku suprasti ir labai ilgas kodas.
- Derinimas yra labai sudėtingas programuotojams.
Dažnai užduodami klausimai apie asamblėjos kalbą – DUK
Kur naudojama asamblėjos kalba?
- Operacinės sistemos kūrimas
- Įrenginio tvarkyklės kūrimas
- Įterptinių sistemų programavimas
- Realaus laiko programos
- Saugumo tyrimai
Kuo skiriasi asamblėjos kalba ir aukšto lygio kalba?
Assembly Language yra mnemoniniai kodai ir glaudžiai susiję su procesoriaus instrukcijų rinkiniu. HLL yra abstrakcija.
Kokią procesoriaus architektūrą turėčiau išmokti programuojant surinkimą?
8085 ir 8086 mikroprocesorių architektūros yra daug geriau suprantamos sąvokos.
Ar surinkimo kalba vis dar aktuali šiuolaikinėje kompiuterijoje?
Taip. Asamblėjos kalba išlieka aktuali.