logo

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

matrici nella programmazione c

UN

venti

14

30

1E

1

proposizione logica

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

astrazione in Java

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

stringa.format stringa java

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×162+7×161+ B×160

⇒ (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.

cos'è l'uovo di pasqua di Android?

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.