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.