L'Assembly x86 è un linguaggio di programmazione a basso livello che fornisce una rappresentazione simbolica leggibile dall'uomo delle istruzioni eseguite direttamente dal microprocessore (CPU).
Specifico per l'architettura dei processori Intel e AMD a 32 bit (IA-32) e alle sue evoluzioni a 64 bit (x86-64), l'Assembly consente al programmatore di manipolare direttamente l'hardware: gestire i registri della CPU, accedere alla memoria RAM, controllare lo stack e comunicare con le periferiche di I/O senza l'intermediazione di compilatori per linguaggi ad alto livello come C o Java.
Tipo Linguaggio
Linguaggio a basso livello (corrispondenza 1:1 con il linguaggio macchina).
A chi è rivolto
Studenti di Informatica, sviluppatori firmware/embedded e analisti di sicurezza.
Architettura
Microprocessori x86 / CISC (Intel Pentium, Core, AMD Ryzen).
Strumenti
Assemblati con NASM, MASM o GAS (GNU Assembler).
La programmazione in Assembly richiede la comprensione delle componenti hardware interne della CPU:
Registri Interni
Manipolazione diretta delle celle ad altissima velocità della CPU: registri generali (EAX, EBX, ECX, EDX) e di controllo.
Istruzioni Mnemoniche
Uso di comandi essenziali per lo spostamento dati (MOV), calcolo aritmetico (ADD, SUB) e salti condizionati (JMP, JE).
Gestione dello Stack
Gestione della memoria LIFO tramite le istruzioni PUSH e POP per chiamate a sottofunzioni e passaggio parametri.
Accedi ai migliori strumenti di assemblaggio, documentazione e simulatori online per esercitarti con x86:
Sito Ufficiale NASM
Scarica Netwide Assembler (NASM), uno dei più diffusi assemblatori open source per x86.
Scarica NASMDocumentazione Intel
I manuali di riferimento ufficiali Intel Software Developer per l'architettura x86 e x64.
Leggi ManualiGodbolt Explorer
Strumento online per convertire istantaneamente codice C/C++ in Assembly x86 interattivo.
Prova OnlineQuadri di sintesi e definizioni chiave per comprendere l'architettura dei registri, le istruzioni fondamentali e la gestione della memoria nell'Assembly x86:
Mappa Concettuale: Assembly x86
ASSEMBLY X86 │ ├── 1. ARCHITETTURA & REGISTRI CPU (Celle di memoria ultra-veloci) │ └── Definizione: Piccole locazioni di memoria interne al processore per l'elaborazione immediata. │ ├── Registri Generali (EAX, EBX, ECX, EDX) > Accumulatore, Base, Contatore per i cicli e Dati │ ├── Registri Indice (ESI, EDI) ─────────────> Sorgente e Destinazione per le operazioni su stringhe/array │ └── Puntatori (ESP, EBP, EIP) ──────────────> Stack Pointer, Base Pointer del frame e Instruction Pointer │ ├── 2. ISTRUZIONE & SINTASSI BASE (Comandi fondamentali) │ └── Definizione: Operazioni elementari eseguibili direttamente dall'Unità Logico-Aritmetica (ALU). │ ├── Trasferimento Dati (MOV, LEA) ─────────> Copia di valori tra registri/memoria (MOV) e calcolo indirizzi (LEA) │ ├── Aritmetica e Logica (ADD, SUB, AND, XOR) > Somma, sottrazione e operazioni bit a bit sui registri │ └── Sintassi Intel vs AT&T ──────────────────> Destinazione a sinistra (Intel: MOV EAX, 1) o a destra (AT&T) │ ├── 3. FLUSSO DI ESECUZIONE & SALTI (Controllo delle istruzioni) │ └── Definizione: Meccanismi per realizzare selezioni (if) e cicli (loop) tramite il Registro di Stato (FLAGS). │ ├── Confronti (CMP, TEST) ─────────────> Confronto tra operandi e aggiornamento dei flag (Zero Flag, Carry Flag) │ ├── Salti Incondizionati (JMP) ────────────> Salto diretto ad un'etichetta di codice senza verificare condizioni │ └── Salti Condizionati (JE, JNE, JG, JL) ───> Salti eseguiti solo se la condizione sui flag risulta vera │ └── 4. GESTIONE STACK & CHIAMATE (Struttura della memoria LIFO) └── Definizione: Area di memoria usata per salvare variabili locali, parametri e indirizzi di ritorno. ├── Operazioni Stack (PUSH / POP) ───────> Inserimento ed estrazione di dati dalla cima dello Stack └── Procedure (CALL / RET) ───────────────> Salto ad una funzione salvando l'indirizzo di ritorno e rientro
Glossario dei Termini (IT / EN)
| Termine Italiano | Termine Inglese | Definizione Sintetica |
|---|---|---|
| Registro della CPU | Processor Register | Piccola cella di memoria ad altissima velocità integrata direttamente nel processore per elaborazioni immediate. |
| Mnemonico | Mnemonic | Abbreviazione testuale (es. MOV, ADD, JMP) che rappresenta un'istruzione in codice macchina leggibile dall'uomo. |
| Pila di Memoria | Stack | Struttura dati in memoria RAM di tipo LIFO (Last In, First Out) usata per salvataggio temporaneo, parametri e chiamate a funzioni. |
| Registro dei Flag | EFLAGS Register | Registro speciale contenente singoli bit (flag) che indicano lo stato o il risultato dell'ultima operazione aritmetico-logica (es. Zero Flag). |
| Assemblatore | Assembler | Programma software (es. NASM, MASM) che traduce il codice sorgente Assembly nel codice macchina binario eseguibile. |
| Puntatore alle Istruzioni | Instruction Pointer (EIP) | Registro speciale che contiene l'indirizzo di memoria della prossima istruzione che la CPU deve eseguire. |
| Salto Condizionato | Conditional Jump | Istruzione di controllo del flusso che devia l'esecuzione ad un'altra parte del codice solo se i flag di stato soddisfano il criterio. |