Competenze:
L’Assembly è il linguaggio di programmazione che si avvicina di più al linguaggio nativo della macchina.
È un ponte tra il mondo umano e quello dei processori: permette di controllare direttamente l’hardware,
istruendo la CPU passo dopo passo. A differenza dei linguaggi ad alto livello, qui ogni operazione è esplicita,
ogni istruzione conta, e nulla viene “nascosto” dal compilatore.- Distinguere tra linguaggi di programmazione di alto e basso livello.
- Comprendere il ruolo dell'Assembly come interfaccia diretta con l'hardware.
- Identificare la funzione e la struttura dei registri del microprocessore 8086.
- Acquisire familiarità con l'ambiente EMU8086 per la scrittura, compilazione e simulazione del codice.
- Implementare e verificare istruzioni Assembly basilari (MOV, ADD, RET) in emu8086.
Studiare Assembly significa imparare a ragionare come un computer: capire come gestisce la memoria, come esegue le istruzioni, come utilizza i registri e come comunica con le periferiche. Non è solo un esercizio tecnico, ma un modo per sviluppare una comprensione profonda dell’architettura dei sistemi e del funzionamento interno dei programmi.
Esempio
Codice in linguaggio macchina: 1010 0101 0011 1010 Codice in linguaggio assembly: MOV R0, R1Il linguaggio macchina è composto da sequenze binarie che il processore interpreta direttamente. Il linguaggio assembly, invece, è una rappresentazione più leggibile per gli esseri umani, dove ogni istruzione binaria corrisponde a un'operazione mnemonica. In questo caso, l'istruzione MOV R0, R1 indica che il contenuto del
registro R1 viene copiato nel registro R0.
- Tra linguaggio macchina e linguaggio assembly esiste una corrispondenza 1:1: a ogni istruzione in linguaggio macchina corrisponde una singola istruzione in assembly.
- Tra linguaggio macchina e linguaggi di alto livello la relazione è N:1: servono N istruzioni macchina per eseguire una singola istruzione scritta in un linguaggio ad alto livello.
🔍 Perché ogni architettura ha il suo Assembly
Ogni architettura hardware, come x86, ARM, MIPS o RISC‑V, è costruita con un insieme specifico di registri, modalità di indirizzamento e istruzioni. Questo insieme prende il nome di Instruction Set Architecture (ISA). L’Assembly è semplicemente la forma leggibile dall’uomo di quell’ISA.Poiché l’Assembly è un linguaggio che descrive esattamente ciò che la CPU deve fare, deve adattarsi alla struttura interna della CPU stessa. Se l’hardware cambia, cambia anche il linguaggio che lo controlla: non esiste un Assembly universale, ma un Assembly per ogni architettura.
❓ Cos’è l’Assembly (Assembly x86)
L’Assembly è un linguaggio di programmazione di basso livello, estremamente vicino al funzionamento reale del processore. Ogni istruzione Assembly corrisponde quasi direttamente a un’operazione eseguita dalla CPU.Caratteristiche:
- È dipendente dall’architettura (qui: Intel 8086 / x86)
- Non è pensato per scrivere grandi programmi moderni
- Serve per capire come funziona davvero il computer
- Richiede precisione più che “furbizia” di linguaggio
🧩 Che cos'è EMU8086
EMU8086 è un emulatore che simula un processore 8086, permettendoci di vedere passo passo cosa succede nella CPU.Consente di:
- Eseguire il codice istruzione per istruzione e vedere: registri (AX, BX, CX…), memoria, flag
- Capire come cambia lo stato del processore a ogni istruzione
Assembly è come guardare dentro il motore del computer: all’inizio sembra complicato, ma quando capisci i pezzi, tutto il resto diventa più chiaro.