Keď hovoríme o programovacích jazykoch, prvá vec, ktorá nám príde na myseľ, sú jazyky ako C, C++, Java, Python atď. Tieto jazyky však skrývajú skutočnú prácu, t. j. mnohé veci abstrahujú od používateľov. Existuje však jazyk, ktorý skutočne spočíva na základných konceptoch programovania alebo interakcie medzi počítačovým hardvérom.
Čo je jazyk symbolických inštrukcií?
Montážny jazyk je nízkoúrovňový jazyk, ktorý pomáha priamo komunikovať s počítačovým hardvérom. Používa mnemotechnické pomôcky na znázornenie operácií, ktoré musí procesor vykonať. Čo je stredný jazyk medzi jazykmi na vysokej úrovni, napr C++ a binárny jazyk. Používa hexadecimálne a binárne hodnoty a je čitateľný pre ľudí.
Evolúcia jazyka symbolických inštancií?
Assembler sa vyvíjal ruka v ruke s pokrokom v počítačovom hardvéri a vyvíjajúcimi sa potrebami programátorov. Tu je bližší pohľad na každú generáciu:
Prvá generácia (1940-1950):
- Počítače sa spoliehali na vákuové trubice a programovanie prebiehalo priamo v strojovom jazyku pomocou binárnych inštrukcií.
- Jazyk symbolických inštrukcií sa objavil ako čitateľná abstrakcia využívajúca mnemotechnické kódy na reprezentáciu strojových inštrukcií.
Druhá generácia (1950-1960):
- Počítače založené na tranzistoroch nahradili vákuové elektrónky a ponúkajú vylepšenú konzistenciu a zdatnosť.
- Jazyky symbolických inštrukcií sa stali zložitejšími, aby zvládli komplexné inštrukčné sady týchto nových strojov. Súčasne programovacie jazyky na vysokej úrovni ako FORTRAN a COBOL poskytovaná Pokročilá abstrakcia
Tretia generácia (1960-1970):
- Integrované obvody sa stali štandardným miestom, čo viedlo k zmenšeným, ale výkonným počítačom.
- Jazyky assembleru sa ďalej vyvíjali a zaviedli funkcie, ako sú makrá a symbolické štítky, čo zvýšilo produktivitu programátora a čitateľnosť kódu.
Štvrtá generácia (1970-1980):
- Začiatok mikroprocesorov zmenil výpočtovú techniku a pripravil pôdu pre mikropočítačové systémy ako IBM PC a Apple II.
- Jazyky symbolických inštrukcií pre mikropočítače boli prepracované, aby sa zlepšila prístupnosť používateľov, pričom obsahovali zvýraznenie syntaxe a automatické odsadenie, čím sa zvýšila inkluzivita pre väčšiu skupinu programátorov.
Piata generácia (1980 – súčasnosť):
- Táto éra je charakterizovaná vykonávaním viacerých výpočtových úloh súčasne, táto metóda je známa ako systém paralelného spracovania a rast sofistikovaných softvérových systémov
- Jazyk symbolických inštrukcií sa naďalej vyvíjal, aby spĺňal požiadavky programátorov, s nasadením špičkových metód a nástrojov ladenia zameraných na zlepšenie výkonu a produktivity kódu v zložitých systémoch.
Ako funguje jazyk symbolických inštrukcií?
Montážne jazyky obsahujú mnemotechnické kódy, ktoré špecifikujú, čo má procesor robiť. Mnemotechnický kód, ktorý napísal programátor, bol na vykonanie prevedený do strojového jazyka (binárny jazyk). Assembler sa používa na prevod kódu zostavy do strojového jazyka. Tento strojový kód je uložený v spustiteľnom súbore kvôli vykonaniu.
Umožňuje programátorovi komunikovať priamo s hardvérom, ako sú registre, pamäťové miesta, vstupno/výstupné zariadenia alebo akékoľvek iné hardvér komponentov. Čo by mohlo pomôcť programátorovi priamo riadiť hardvérové komponenty a efektívne riadiť zdroje.
Ako vykonať Assembly Language?
- Napíšte kód zostavy : Otvorte ľubovoľný textový editor v zariadení a napíšte doň mnemotechnické kódy a uložte súbor so správnou príponou podľa vášho assembleru. Predĺženie môže byť .asm , .s , .asm X.
- Zostavenie kódu : Preveďte svoj kód do strojového jazyka pomocou assembler .
- Generovanie objektového súboru : Vygeneruje objektový súbor zodpovedajúci vášmu kódu. Bude mať predĺženie . obj .
- Prepájanie a vytváranie spustiteľných súborov : Náš assembler môže obsahovať viacero zdrojových kódov. A musíme ich prepojiť s knižnicami, aby to bolo spustiteľné. Na tento účel môžeme použiť linker ako lk.
- Bežiaci program : Po vytvorení spustiteľného súboru ho môžeme spustiť ako obvykle. To bude závisieť od softvéru, ako spustiť program.
Komponenty assembleru
- Registre: Registre sú miesta rýchlej pamäte vo vnútri procesora. Čo pomáha Ísť vykonávať aritmetické operácie a dočasné ukladanie údajov. Príklad: Ax (Akumulátor), Bx, Cx.
- príkaz: Inštrukcia v assemblerovom kóde známa ako príkaz informuje assembler, čo má robiť. Inštrukcie v jazyku symbolických inštrukcií zvyčajne používajú samoopisné skratky na zjednodušenie slovnej zásoby, napríklad ADD na pridanie a MOV na presun údajov.
- Inštrukcie: Inštrukcie sú mnemotechnické kódy, ktoré dávame procesoru na vykonávanie špecifických úloh, ako je LOAD, ADDITION, MOVE. Príklad: ADD
- Štítky: Je to symbolický názov/identifikátor určený na označenie konkrétneho miesta alebo adresy v kóde zostavy. Príklad: FIRST na označenie začiatku vykonávania časti kódu.
- Mnemotechnická pomôcka: Mnemotechnická pomôcka je skratka pre inštrukciu v jazyku symbolických inštrukcií alebo názov daný funkcii stroja. Každá mnemotechnická pomôcka pri zostavovaní zodpovedá konkrétnej strojovej inštrukcii. Add je ilustráciou jedného z týchto príkazov stroja. CMP, Mul a Lea patria medzi ďalšie príklady.
- Makro: Makrá sú programové kódy, ktoré možno použiť kdekoľvek v programe prostredníctvom volania, keď ho definujeme. A často je vložený do assemblerov a kompilátorov. Mali by sme ho definovať pomocou direktívy %makra. Príklad: %macro ADD_TWO_NUMBERS 2
pridať eax, %1
pridať eax, %2
%endmacro - Operandy: Sú to údaje alebo hodnoty, ktoré dostávame prostredníctvom inštrukcií, aby sme s nimi vykonali nejakú operáciu. Príklad: V ADD R1,R2 ; R1 a R2 sú operandy.
- Operačný kód: Toto sú mnemotechnické kódy, ktoré špecifikujú procesoru, ktorá operácia musí byť vykonaná. Príklad: ADD znamená Addition.
Hexadecimálna číselná sústava je číselný systém, ktorý sa používa na reprezentáciu rôznych čísel pomocou 16 symbolov, ktoré sú od 0 až 9 číslic a abecedy A až F a podobne je číselná sústava so základom 16. 0 až 9 v desiatkovej a hexadecimálnej sústave je rovnaké.
Desatinná až hexadecimálna tabuľka
Desatinné | Hex | Desatinné | Hex | Desatinné | Hex | Desatinné | Hex |
---|---|---|---|---|---|---|---|
0 | 0 | 10 | A | dvadsať avl rotácia stromu | 14 | 30 | 1E |
1 | 1 | jedenásť | B | dvadsaťjeden | pätnásť | 31 | 1F |
2 | 2 | 12 | C | 22 | 16 | 32 | dvadsať |
3 | 3 | 13 charat java | D | 23 | 17 | 33 | dvadsaťjeden |
4 | 4 | 14 | A | 24 | 18 | 3. 4 | 22 |
5 | 5 | pätnásť | F | 25 webový ovládač | 19 | 35 | 23 |
6 | 6 | 16 | 10 | 26 | 1A | 36 | 24 |
7 | 7 | 17 | jedenásť | 27 | 1B | 37 | 25 |
8 | 8 | 18 | 12 | 28 | 1 C | 38 | 26 |
9 | 9 | 19 podreťazec java string | 13 | 29 | 1D | 39 | 27 |
Hexadecimálne čísla možno ľahko previesť do inej formy, ako je binárna číselná sústava, sústava desiatkových čísel, sústava osmičkových čísel a naopak. V tomto článku sa zameriame iba na prevod hexadecimálnych čísel na desatinné a naopak.
Prevod z desatinného miesta na hexadecimálny:
Krok 1: Zadajte desiatkovú hodnotu N.
Krok 2: Vydeľte N číslom 16 a zvyšok uložte.
Krok 3: Opäť vydeľte podiel 16, získajte v kroku 2 a uložte zvyšok.
Krok 3: opakujte krok 3, kým sa podiel nestane 0.
Krok 4: Zapíšte zvyšok v opačnom poradí a toto je hexadecimálna hodnota čísla.
Príklad: Preveďte 450 desatinnú hodnotu na hexadecimálnu.
krok 1: N = 450.
Krok 2: 450/16 dáva Q = 28, R = 2.
Krok 3: 28/16 dáva Q = 1, R = 12 = C.
Krok 4: 1/16 dáva Q = 0, R = 1.
Krok 5: hexadecimálne číslo 450 je 1C2.
Hexadecimálny prevod na desatinné číslo
Ak chcete previesť hexadecimálne číslo na desatinné, vynásobte každú číslicu 16 na mocninu jej pozície začínajúc sprava a pozícia číslice úplne vpravo je 0, potom pridajte výsledok.
Príklad: Konvertovať (A7B) 16 na desatinné číslo.
(A7B)16= A × 162+7×161+ B × 160
⇒ (A7B)16= 10 × 256 + 7 × 16 + 11 × 1 (previesť symboly A a B na ich desatinné ekvivalenty; A = 10, B = 11)
⇒ (A7B)16= 2560 + 112 + 11
⇒ (A7B)16= 2683
Preto desatinný ekvivalent (A7B)16je (2683)10.
Výhody assembleru
- Poskytuje presnú kontrolu nad hardvérom a tým zvýšenú optimalizáciu kódu.
- Umožňuje priamy prístup k hardvérovým komponentom, ako sú registre, takže umožňuje prispôsobené riešenia problémov s hardvérom.
- Efektívne využitie zdrojov vďaka nízkej úrovni kontroly, optimalizovanému kódu, informovanosti o zdrojoch, prispôsobeniu atď.
- Je ideálny na programovanie mikrokontroléry , senzory a ďalšie hardvérové komponenty.
- Používa sa v bezpečnostných výskumoch na nájdenie bezpečnostných zraniteľností, softvér reverzného inžinierstva na zabezpečenie systému.
- Je to veľmi dôležité pre výrobu operačné systémy , jadro a ovládače zariadení ktorý pre svoju funkčnosť vyžaduje hardvérovú interakciu.
Nevýhody assembleru
- Komplexné a veľmi ťažké sa naučiť jazyk, najmä pre začiatočníkov.
- Je vysoko závislý od stroja. Takže to obmedzuje prenosnosť.
- Je naozaj ťažké udržiavať kód, najmä pre veľké projekty.
- Je to veľmi časovo náročné, pretože je naozaj ťažké pochopiť a veľmi dlhý kód.
- Ladenie je pre programátorov veľmi náročný.
Často kladené otázky o jazyku symbolických inštrukcií – často kladené otázky
Kde sa používa assembler?
- Vývoj operačného systému
- Vytvorenie ovládača zariadenia
- Programovanie vstavaných systémov
- Aplikácie v reálnom čase
- Bezpečnostný výskum
Rozdiel medzi jazykom symbolických inštrukcií a jazykom vysokej úrovne?
Assembly Language sú mnemotechnické kódy a úzko súvisia s inštrukčnou sadou CPU. V HLL existuje abstrakcia.
Ktorú architektúru CPU by som sa mal naučiť pre programovanie zostavy?
Architektúry mikroprocesorov 8085 a 8086 sú oveľa lepšie na pochopenie konceptov.
Je jazyk assembleru stále relevantný v modernej výpočtovej technike?
Áno. Jazyk zhromaždenia zostáva relevantný.