Cos'è il linguaggio assembly?

Cos'è il linguaggio assembly?

Quando parliamo di linguaggi di programmazione, la prima cosa che ci viene in mente sono linguaggi come C, C++, Java, Python, ecc. Ma questi linguaggi nascondono il funzionamento effettivo, ovvero che astrae molte cose dagli utenti. Ma esiste un linguaggio che in realtà si basa sui concetti di base dietro la programmazione o l'interazione tra l'hardware del computer.

Cos'è il linguaggio assembly?

linguaggio assembly è un linguaggio di basso livello che aiuta a comunicare direttamente con l'hardware del computer. Utilizza i mnemonici per rappresentare le operazioni che un processore deve eseguire. Che è una lingua intermedia tra le lingue di alto livello come C++ e il linguaggio binario. Utilizza valori esadecimali e binari ed è leggibile dagli esseri umani.

Evoluzione del linguaggio assembly?

Il linguaggio assembly si è evoluto di pari passo con i progressi nell'hardware dei computer e con le esigenze in evoluzione dei programmatori. Ecco uno sguardo più da vicino a ciascuna generazione:

Prima Generazione (1940-1950):

  • I computer si basavano su tubi a vuoto e la programmazione avveniva direttamente in linguaggio macchina, utilizzando istruzioni binarie.
  • Il linguaggio assembly è emerso come un'astrazione leggibile, che utilizza codici mnemonici per rappresentare le istruzioni della macchina.

Seconda Generazione (1950-1960):

  • I computer basati su transistor hanno sostituito i tubi a vuoto, offrendo maggiore coerenza e abilità.
  • I linguaggi assembly sono diventati più complessi per gestire i complessi set di istruzioni di queste nuove macchine. Allo stesso tempo, linguaggi di programmazione di alto livello come FORTRAN E COBOL fornito Astrazione avanzata

Terza generazione (1960-1970):

  • I circuiti integrati divennero un luogo standard, con il risultato di computer ridotti ma potenti.
  • I linguaggi assembly si sono evoluti ulteriormente, introducendo funzionalità come macro ed etichette simboliche, che hanno aumentato la produttività dei programmatori e la leggibilità del codice.

Quarta generazione (1970-1980):

  • L'avvento dei microprocessori trasformò l'informatica, aprendo la strada a sistemi di microcomputer come il PC IBM e l'Apple II.
  • I linguaggi assembly per i microcomputer sono stati riprogettati per migliorare l'accessibilità dell'utente, con evidenziazione della sintassi e rientro automatico, aumentando così l'inclusività per un gruppo più ampio di programmatori.

Quinta generazione (1980-oggi):

  • Questa era è caratterizzata dall'esecuzione simultanea di più attività computazionali, come è noto questo metodo sistema di elaborazione parallela e la crescita di sofisticati sistemi software
  • Il linguaggio assembly ha continuato ad evolversi per soddisfare le richieste dei programmatori, con l'implementazione di metodi e strumenti di debug all'avanguardia focalizzati sul miglioramento delle prestazioni del codice e della produttività per sistemi complessi.

Come funziona il linguaggio assembly?

I linguaggi assembly contengono codici mnemonici che specificano cosa dovrebbe fare il processore. Il codice mnemonico scritto dal programmatore è stato convertito in linguaggio macchina (linguaggio binario) per l'esecuzione. Un assemblatore viene utilizzato per convertire il codice assembly in linguaggio macchina. Quel codice macchina è memorizzato in un file eseguibile per motivi di esecuzione.

Consente al programmatore di comunicare direttamente con l'hardware come registri, posizioni di memoria, dispositivi di ingresso/uscita o qualsiasi altro hardware componenti. Ciò potrebbe aiutare il programmatore a controllare direttamente i componenti hardware e a gestire le risorse in modo efficiente.

Come eseguire il linguaggio Assembly?

  • Scrivi il codice assembly : Apri qualsiasi editor di testo nel dispositivo e scrivi i codici mnemonici al suo interno e salva il file con un'estensione adeguata in base al tuo assembler. L'estensione può essere .asm , .S , .asm X.
  • Assemblaggio del codice : converti il ​​tuo codice in linguaggio macchina utilizzando un file assemblatore .
  • Generazione del file oggetto : Genererà un file oggetto corrispondente al tuo codice. Avrà una proroga. ogg .
  • Collegamento e creazione di eseguibili : Il nostro linguaggio assembly potrebbe contenere più codici sorgente. E dobbiamo collegarli alle librerie per renderlo eseguibile. Possiamo usare un linker come lk per questo scopo.
  • Programma in esecuzione : Dopo aver creato un file eseguibile possiamo eseguirlo normalmente. Dipenderà dal software come eseguire il programma.

Componenti del linguaggio assembly

  • Registri: I registri sono le posizioni di memoria veloci situate all'interno del processore. Il che aiuta ANDARE per eseguire operazioni aritmetiche e memorizzazione temporanea dei dati. Esempio: Ascia (Accumulatore), Bx, Cx.
  • Comando: Un'istruzione nel codice assembly nota come comando informa l'assemblatore cosa fare. Le istruzioni in linguaggio assembly utilizzano tipicamente abbreviazioni autodescrittive per semplificare il vocabolario, come ADD per l'addizione e MOV per lo spostamento dei dati.
  • Istruzioni: Le istruzioni sono i codici mnemonici che diamo al processore per eseguire compiti specifici come LOAD, ADDITION, MOVE. Esempio: AGGIUNGI
  • Etichette: È un nome/identificatore simbolico fornito per indicare una particolare posizione o indirizzo nel codice assembly. Esempio: FIRST per indicare l'inizio dell'esecuzione della parte di codice.
  • Mnemonico: Un mnemonico è un acronimo per un'istruzione del linguaggio assembly o un nome dato a una funzione della macchina. Ogni mnemonico nell'assemblaggio corrisponde ad una specifica istruzione della macchina. Aggiungi è un'illustrazione di uno di questi comandi macchina. CMP, Mul e Lea sono tra gli altri esempi.
  • Macro: Le macro sono i codici di programma che possono essere utilizzati ovunque nel programma chiamandolo una volta definito. Ed è spesso integrato con assemblatori e compilatori. Dovremmo definirlo utilizzando una direttiva %macro. Esempio: %macro ADD_TWO_NUMBERS 2
    aggiungi eax, %1
    aggiungi eax, %2
    %endmacro
  • Operandi: Questi sono i dati o i valori che ci vengono forniti tramite le istruzioni per eseguire alcune operazioni su di essi. Esempio: In ADD R1,R2 ; R1 e R2 sono operandi.
  • Codice operativo: Sono i codici mnemonici che specificano al processore quale operazione deve essere eseguita. Esempio: ADD significa addizione.

Sistema numerico esadecimale è un sistema numerico utilizzato per rappresentare vari numeri utilizzando 16 simboli da Da 0 a 9 cifre e alfabeto da A a F e it è un sistema numerico in base 16. Da 0 a 9 in decimale ed esadecimale è lo stesso.

Tabella da decimale a esadecimale

Decimale

Esadecimale

Decimale

Esadecimale

Decimale

Esadecimale

Decimale

Esadecimale

0

0

10

UN

venti

14

30

1E

1

1

undici

B

ventuno

quindici

31

1F

2

2

12

C

22

16

32

venti

3

3

13

D

23

17

33

ventuno

4

4

14

E

24

18

3.4

22

5

5

quindici

F

25

19

35

23

6

6

16

10

26

1A

36

24

7

7

17

undici

27

1B

37

25

8

8

18

12

28

1 C

38

26

9

9

19

13

29

1D

39

27

I numeri esadecimali possono essere facilmente convertiti in un'altra forma come il sistema di numeri binari, il sistema di numeri decimali, il sistema di numeri ottali e viceversa. In questo articolo ci concentriamo solo sulla conversione da esadecimale a decimale e viceversa.

Conversione da decimale a esadecimale:

Passaggio 1: prendi un valore decimale di input N.

Passaggio 2: dividi N con 16 e memorizza il resto.

Passaggio 3: dividere nuovamente il quoziente per 16 ottenuto nel passaggio 2 e memorizzare il resto.

Passaggio 3: ripetere il passaggio 3 finché il quoziente non diventa 0.

passo 4: Scrivi il resto in ordine inverso e questo è il valore esadecimale del numero.

Esempio: convertire il valore decimale 450 in esadecimale.

passaggio 1: N = 450.

Passaggio 2: 450/16 dà Q = 28, R = 2.

Passaggio 3: 28/16 dà Q = 1, R = 12 = C.

Passaggio 4: 1/16 dà Q = 0, R = 1.

Passaggio 5: l'esadecimale di 450 è 1C2.

Conversione da esadecimale a decimale

Per convertire esadecimale in decimale moltiplicare ciascuna cifra per 16 alla potenza della sua posizione partendo da destra e la posizione della cifra più a destra è 0, quindi aggiungere il risultato.

Esempio: Converti (A7B) 16 al decimale.

(A7B) 16 = A×16 2 +7×16 1 + B×16 0

⇒ (A7B) 16 = 10 × 256 + 7 × 16 + 11 × 1 (converti i simboli A e B nei loro equivalenti decimali; A = 10, B = 11)

⇒ (A7B) 16 = 2560 + 112 + 11

⇒ (A7B) 16 = 2683

Pertanto, l’equivalente decimale di (A7B) 16 è (2683) 10 .

Vantaggi del linguaggio assembly

  • Fornisce un controllo preciso sull'hardware e quindi una maggiore ottimizzazione del codice.
  • Consente l'accesso diretto ai componenti hardware come i registri, quindi consente soluzioni su misura per problemi hardware.
  • Utilizzo efficiente delle risorse grazie al controllo di basso livello, al codice ottimizzato, alla consapevolezza delle risorse, alla personalizzazione, ecc.
  • È ideale per la programmazione microcontrollori , sensori e altri componenti hardware.
  • Viene utilizzato nelle ricerche sulla sicurezza per individuare vulnerabilità della sicurezza, software di reverse engineering per la sicurezza del sistema.
  • È molto essenziale per realizzare il sistemi operativi , nocciolo E controllori del dispositivo che richiede l'interazione hardware per la sua funzionalità.

Svantaggi del linguaggio assembly

  • Complesso e molto difficile da imparare, soprattutto per i principianti.
  • Dipende fortemente dalla macchina. Quindi, limita la portabilità.
  • È davvero difficile mantenere il codice, soprattutto per progetti su larga scala.
  • Richiede molto tempo poiché è davvero difficile da capire e il codice è molto lungo.
  • Debug è molto impegnativo per i programmatori.

Domande frequenti sul linguaggio Assembly – Domande frequenti

Dove viene utilizzato il linguaggio assembly?

  • Sviluppo del sistema operativo
  • Creazione del driver del dispositivo
  • Programmazione di sistemi embedded
  • Applicazioni in tempo reale
  • Ricerca sulla sicurezza

Differenza tra linguaggio Assembly e linguaggio di alto livello?

Il linguaggio assembly è costituito da codici mnemonici e strettamente correlati al set di istruzioni della CPU. In HLL c'è l'astrazione.

Quale architettura CPU dovrei imparare per la programmazione in assembly?

Le architetture dei microprocessori 8085 e 8086 sono molto migliori per comprendere i concetti.

Il linguaggio assembly è ancora rilevante nell'informatica moderna?

SÌ. Il linguaggio assembly rimane rilevante.