logo

Ce este limbajul de asamblare?

Când vorbim despre limbaje de programare, primul lucru care ne vine în minte sunt limbaje precum C, C++, Java, Python etc. Dar acele limbaje ascund funcționarea reală, adică, care abstrag multe lucruri de la utilizatori. Dar există un limbaj care se află într-adevăr pe concepte de bază din spatele programării sau interacțiunii dintre hardware-ul computerului.

Ce este limbajul de asamblare?

limbaj de asamblare este un limbaj de nivel scăzut care ajută la comunicarea directă cu hardware-ul computerului. Folosește mnemonice pentru a reprezenta operațiunile pe care trebuie să le facă un procesor. Care este un limbaj intermediar între limbile de nivel înalt, cum ar fi C++ și limbajul binar. Folosește valori hexazecimale și binare și este ușor de citit de oameni.



Evoluția limbajului de asamblare?

Limbajul de asamblare a evoluat mână în mână cu progresele în hardware-ul computerelor și cu nevoile în evoluție ale programatorilor. Iată o privire mai atentă asupra fiecărei generații:

Prima generație (1940-1950):

  • Calculatoarele se bazau pe tuburi vidate, iar programarea era direct în limbajul mașinii, folosind instrucțiuni binare.
  • Limbajul de asamblare a apărut ca o abstractizare lizibilă, folosind coduri mnemonice pentru a reprezenta instrucțiunile mașinii.

A doua generație (1950-1960):



  • Calculatoarele bazate pe tranzistori au înlocuit tuburile cu vid, oferind consistență și pricepere îmbunătățite.
  • Limbajele de asamblare au devenit mai complicate pentru a gestiona seturile complexe de instrucțiuni ale acestor noi mașini. Simultan, limbaje de programare de nivel înalt precum FORTRAN și COBOL furnizat abstractizare avansată

A treia generație (1960-1970):

  • Circuitele integrate au devenit un loc standard, rezultând calculatoare diminuate, dar puternice.
  • Limbajele de asamblare au evoluat în continuare, introducând funcții precum macrocomenzi și etichete simbolice, care au sporit productivitatea programatorului și lizibilitatea codului.

A patra generație (1970-1980):

  • Începutul microprocesoarelor a transformat calculul, deschizând calea pentru sisteme de microcalculatoare precum IBM PC și Apple II.
  • Limbajele de asamblare pentru microcalculatoare au fost reproiectate pentru a îmbunătăți accesibilitatea utilizatorilor, prezentând evidențierea sintaxei și indentarea automată, crescând astfel incluziunea pentru un grup mai mare de programatori.

A cincea generație (1980-prezent):



  • Această epocă este caracterizată prin executarea simultană a mai multor sarcini de calcul, această metodă este cunoscută ca sistem de procesare paralelă și creșterea sistemelor software sofisticate
  • Limbajul de asamblare a continuat să evolueze pentru a satisface cerințele programatorilor, odată cu implementarea metodelor și instrumentelor de depanare de ultimă oră, concentrate pe îmbunătățirea performanței codului și a productivității.pentru sisteme complexe.

Cum funcționează limbajul de asamblare?

Limbajele de asamblare conțin coduri mnemonice care specifică ce ar trebui să facă procesorul. Codul mnemonic care a fost scris de programator a fost convertit în limbaj mașină (limbaj binar) pentru execuție. Un asamblator este folosit pentru a converti codul de asamblare în limbaj mașină. Codul mașinii este stocat într-un fișier executabil de dragul execuției.

matrice în programarea c

Acesta permite programatorului să comunice direct cu hardware-ul, cum ar fi registre, locații de memorie, dispozitive de intrare/ieșire sau oricare altul hardware componente. Ceea ce ar putea ajuta programatorul să controleze direct componentele hardware și să gestioneze resursele într-un mod eficient.

Cum se execută limbajul de asamblare?

  • Scrieți codul de asamblare : Deschideți orice editor de text în dispozitiv și scrieți codurile mnemonice în el și salvați fișierul cu o extensie adecvată, conform asamblatorului dvs. Extinderea poate fi .asm , .s , .asm X.
  • Asamblarea codului : convertiți codul în limbajul mașinii folosind un asamblator .
  • Se generează fișierul obiect : va genera un fișier obiect corespunzător codului dumneavoastră. Va avea o extensie. obj .
  • Conectarea și crearea de executabile : limbajul nostru de asamblare poate conține mai multe coduri sursă. Și trebuie să le conectăm la biblioteci pentru a-l face executabil. Putem folosi un linker precum lk în acest scop.
  • Program de rulare : După crearea unui fișier executabil, îl putem rula ca de obicei. Va depinde de software cum să rulați programul.

Componentele limbajului de asamblare

  • Înregistrări: Registrele sunt locațiile de memorie rapidă situate în interiorul procesorului. Ceea ce ajută MERGE pentru a efectua operații aritmetice și stocarea temporară a datelor. Exemplu: Ax (Acumulator), Bx, Cx.
  • Comanda: O instrucțiune în codul de asamblare cunoscută sub numele de comandă informează asamblatorul ce trebuie să facă. Instrucțiunile din limbajul de asamblare folosesc de obicei abrevieri autodescriptive pentru a simplifica vocabularul, cum ar fi ADD pentru adăugare și MOV pentru mutarea datelor.
  • Instrucțiuni: Instrucțiunile sunt codurile mnemonice pe care le dăm procesorului pentru a efectua sarcini specifice precum LOAD, ADDITION, MOVE. Exemplu: ADD
  • Etichete: Este un nume/identificator simbolic dat pentru a indica o anumită locație sau adresă în codul de asamblare. Exemplu: FIRST pentru a indica începutul execuției unei părți a codului.
  • Mnemonic: Un mnemonic este un acronim pentru o instrucțiune în limbaj de asamblare sau un nume dat unei funcții de mașină. Fiecare mnemonic în asamblare corespunde unei anumite instrucțiuni de mașină. Add este o ilustrare a uneia dintre aceste comenzi de mașină. CMP, Mul și Lea sunt printre alte exemple.
  • Macro: Macro-urile sunt codurile de program care pot fi folosite oriunde în program prin apelarea acestuia odată ce îl definim. Și este adesea încorporat cu asamblatori și compilatoare. Ar trebui să-l definim folosind o directivă %macro. Exemplu: %macro ADD_TWO_NUMBERS 2
    adăugați eax, %1
    adăugați eax, %2
    %endmacro
  • Operanzi: Acestea sunt datele sau valorile pe care ni le oferă prin instrucțiuni de a efectua o operațiune asupra lor. Exemplu: În ADD R1,R2 ; R1 și R2 sunt operanzi.
  • Opcode: Acestea sunt codurile mnemonice care specifică procesorului ce operație trebuie făcută. Exemplu: ADD înseamnă Adăugare.

Sistemul numeric hexazecimal este un sistem numeric care este folosit pentru a reprezenta diverse numere folosind 16 simboluri care provin din 0 până la 9 cifre și alfabetul de la A la F și acesta este un sistem numeric de bază 16. 0 până la 9 în zecimală și hexazecimal este același.

Tabel zecimal până la hexazecimal

Zecimal

Hex

Zecimal

Hex

Zecimal

Hex

Zecimal

Hex

0

0

10

A

douăzeci

14

30

1E

1

1

unsprezece

B

douăzeci și unu

cincisprezece

31

1F

2

2

12

C

22

16

32

douăzeci

3

3

13

Logica propozițională

D

23

17

33

douăzeci și unu

4

4

14

ȘI

24

18

3. 4

22

5

5

cincisprezece

F

25

19

35

23

6

6

16

10

26

1A

36

24

7

declarație de caz verilog

7

17

unsprezece

27

1B

37

25

8

8

18

12

28

1 C

38

26

9

9

19

13

29

1D

39

27

Numerele hexazecimale pot fi convertite cu ușurință într-o altă formă, cum ar fi sistemul de numere binar, sistemul de numere zecimale, sistemul de numere octale și invers. În acest articol ne concentrăm doar pentru a converti Hexazecimal în zecimal și invers.

Conversie zecimală în hexazecimală:

Pasul 1: luați o valoare zecimală introdusă N.

Pasul 2: Împărțiți N cu 16 și păstrați restul.

Pasul 3: Împărțiți din nou coeficientul cu 16, obțineți în Pasul 2 și păstrați restul.

Pasul 3: repetați Pasul 3 până când coeficientul devine 0.

pasul 4: scrieți restul în ordine inversă și aceasta este valoarea hexazecimală a numărului.

Exemplu: Convertiți valoarea 450 zecimală în hexazecimal.

pasul 1: N = 450.

Pasul 2: 450/16 dă Q = 28, R = 2.

Pasul 3: 28/16 dă Q = 1, R = 12 = C.

altfel dacă java

Pasul 4: 1/16 dă Q = 0, R = 1.

Pasul 5: hexazecimalul de 450 este 1C2.

Conversie hexazecimală în zecimală

Pentru a converti Hexazecimal în Decimal, înmulțiți fiecare cifră cu 16 la puterea poziției sale începând din dreapta și poziția cifrei din dreapta este 0, apoi adăugați rezultatul.

Exemplu: Convertiți (A7B) 16 la zecimală.

(A7B)16= A × 162+7×161+ B × 160

⇒ (A7B)16= 10 × 256 + 7 × 16 + 11 × 1 (conversia simbolurilor A și B în echivalentele lor zecimale; A = 10, B = 11)

⇒ (A7B)16= 2560 + 112 + 11

⇒ (A7B)16= 2683

Prin urmare, echivalentul zecimal al lui (A7B)16este (2683)10.

Avantajele limbajului de asamblare

  • Oferă un control precis asupra hardware-ului și, prin urmare, o optimizare sporită a codului.
  • Permite accesul direct la componentele hardware, cum ar fi registrele, astfel încât permite soluții personalizate pentru problemele hardware.
  • Utilizarea eficientă a resurselor datorită controlului la nivel scăzut, codului optimizat, cunoașterii resurselor, personalizării etc.
  • Este ideal pentru programare microcontrolere , senzori și alte componente hardware.
  • Este folosit în cercetările de securitate pentru găsirea vulnerabilităților de securitate, software de inginerie inversă pentru securitatea sistemului.
  • Este foarte esențial pentru realizarea sisteme de operare , nucleu și controlere de dispozitiv care necesită interacțiune hardware pentru funcționalitatea sa.

Dezavantajele limbajului de asamblare

  • Limba complexă și foarte greu de învățat, mai ales pentru începători.
  • Este foarte dependent de mașină. Deci, limitează portabilitatea.
  • Este foarte greu să mențineți codul, mai ales pentru proiectele la scară largă.
  • Este foarte consumator de timp, deoarece este foarte greu de înțeles și este foarte lungă de cod.
  • Depanare este foarte provocator pentru programatori.

Întrebări frecvente despre limbajul de asamblare – Întrebări frecvente

Unde este folosit limbajul de asamblare?

  • Dezvoltarea sistemului de operare
  • Crearea driverului de dispozitiv
  • Programarea sistemelor încorporate
  • Aplicații în timp real
  • Cercetare de securitate

Diferența dintre limbajul de asamblare și limbajul de nivel înalt?

Limbajul de asamblare este coduri mnemonice și strâns legate de setul de instrucțiuni al CPU. În HLL există abstractizare.

Ce arhitectură CPU ar trebui să învăț pentru programarea de asamblare?

Arhitecturile microprocesoarelor 8085 și 8086 sunt mult mai bune pentru a înțelege concepte.

Este limbajul de asamblare încă relevant în calculul modern?

Da. Limbajul de asamblare rămâne relevant.