Dal calcolo al linguaggio macchina

Simulazione didattica: calcolatrice, processore, opcode, registri e numeri binari

Domanda di partenza

In che modo la calcolatrice che c’è in un PC “parla” col processore centrale e gli fa compiere le operazioni aritmetiche, ad esempio 2 + 2?

Spiegazione sintetica

L’app Calcolatrice non dice davvero al processore: “fai due più due” usando parole umane. Quando premi i tasti 2 + 2 =, il programma registra i dati, decide quale operazione deve essere eseguita e prepara una serie di istruzioni comprensibili dalla macchina.

  1. Tu inserisci un’operazione.
    Per esempio: 2 + 2.
  2. L’app interpreta la richiesta.
    Capisce che servono due numeri e un’operazione di addizione.
  3. I numeri vengono caricati in memoria o nei registri.
    In questa simulazione usiamo:
    LOAD R1, 2 LOAD R2, 2
  4. L’operazione viene indicata con un opcode.
    Un opcode è il codice binario dell’operazione da eseguire. In questa attività:
    ADD = 0001
  5. La CPU riceve un’istruzione macchina.
    Per esempio:
    ADD R1, R2, R3
    significa: somma il contenuto di R1 e R2 e metti il risultato in R3.
  6. L’istruzione viene eseguita elettronicamente.
    La CPU non “capisce” come una persona: riconosce configurazioni di bit e attiva circuiti logici.
  7. Il risultato torna all’app.
    Il risultato viene convertito in una forma leggibile e mostrato sullo schermo:
    2 + 2 = 4

Esempio completo: 2 + 2

Operazione umana: 2 + 2 Programma simbolico: LOAD R1, 2 LOAD R2, 2 ADD R1, R2, R3 Programma binario didattico: 0101 0001 000010 0101 0010 000010 0001 0001 0010 0011

Questa è una simulazione didattica: i codici sono inventati per l’attività, ma il principio è quello reale. Le CPU reali hanno molti più codici e istruzioni molto più complesse.

Numeri non interi in binario

Finora abbiamo usato solo numeri interi da 0 a 50. Ma anche i numeri con la virgola possono essere rappresentati in binario.

La parte intera funziona come abbiamo già visto: si usano le potenze di 2 positive. La parte dopo la virgola, invece, usa le potenze di 2 negative.

2⁻¹ = 1/2 = 0,5 2⁻² = 1/4 = 0,25 2⁻³ = 1/8 = 0,125 2⁻⁴ = 1/16 = 0,0625 2⁻⁵ = 1/32 = 0,03125

Esempio: 10,625

Separiamo il numero in due parti:

10,625 = 10 + 0,625

La parte intera è:

10 = 1010

La parte decimale è:

0,625 = 0,5 + 0,125 0,5 = 1/2 → primo bit dopo la virgola = 1 0,25 = 1/4 → secondo bit dopo la virgola = 0 0,125 = 1/8 → terzo bit dopo la virgola = 1

Quindi:

0,625 = 0,101

E il numero completo diventa:

10,625 = 1010,101

Attenzione

Non tutti i numeri decimali si possono rappresentare in modo finito in binario. Per esempio, il numero decimale 0,1 in binario non finisce: produce una sequenza periodica.

0,1 decimale ≈ 0,00011001100110011... binario

Per questo i computer spesso usano approssimazioni quando lavorano con numeri con la virgola. Nei processori reali questi numeri vengono gestiti con sistemi chiamati numeri in virgola mobile.

In questa attività restiamo però sui numeri interi, perché lo scopo principale è capire il rapporto tra operazione, opcode, registri e codice binario.

Idea di base

Operazione umana
2 × 2
Programma simbolico
LOAD R1, 2 LOAD R2, 2 MUL R1, R2, R3
Programma binario didattico
0101 0001 000010 0101 0010 000010 0011 0001 0010 0011

La pagina usa un linguaggio macchina semplificato. Non riproduce una CPU reale, ma mostra il principio: un’istruzione viene tradotta in blocchi di bit.

Passaggio fondamentale:
LOAD carica i numeri nei registri. ADD, SUB, MUL, DIV lavorano sui registri.

Simulatore: dal calcolo al programma binario

Scegli un’operazione e due numeri. Il simulatore mostra il programma completo.

Scegli i dati e premi il pulsante.

Esercizi per gli allievi

Esercizio 1: riconosci il codice operativo

Esercizio 2: scrivi il programma binario completo

Esercizio 3: inventa tu l’operazione

Scrivi o scegli un’operazione con numeri decimali da 0 a 50. Poi costruisci sotto il programma binario completo.

Promemoria

LOAD R1, numero LOAD R2, numero OPERAZIONE R1, R2, R3

Le prime due righe contengono i numeri. La terza riga contiene solo registri.