La RAM conserva dati e istruzioni in celle numerate. In Johnny Simulator puoi osservarne il contenuto, inserire valori e seguire le operazioni di lettura e scrittura.
Per seguire gli esempi è utile riconoscere memoria, accumulatore e bus nell’interfaccia. L’obiettivo è distinguere le celle che contengono comandi da quelle usate per i dati e inserire correttamente entrambi.
1. Che cos’è la RAM
La memoria di lavoro conserva i dati e le istruzioni utilizzati durante l’esecuzione.
RAM significa Random Access Memory, memoria ad accesso casuale: si può selezionare direttamente una posizione tramite il suo indirizzo, senza leggere prima tutte le posizioni precedenti. “Casuale” descrive il modo di accedere, non una scelta casuale dei dati.
Nel modello di Von Neumann, dati e istruzioni condividono la memoria principale. La CPU legge un’istruzione, la interpreta e può leggere o modificare altre celle per svolgere il lavoro richiesto.
La RAM dei computer reali è normalmente volatile: richiede alimentazione per conservare le informazioni. Salvare un documento su un’unità di archiviazione è un’operazione diversa dal tenerlo in RAM. In Johnny, il salvataggio su file conserva una rappresentazione della memoria simulata che puoi riaprire in seguito.
Il simulatore semplifica la macchina e mostra numeri decimali. Le sue celle non vanno confuse con byte reali o con la capacità della RAM del computer su cui lo esegui.
2. La tabella RAM in Johnny 1.01
Riconoscere le colonne aiuta a leggere i dati senza confonderli con istruzioni.

db->ram e ram->db indicano due trasferimenti con direzioni opposte.Leggere le colonne della RAM
| Nome | Descrizione |
|---|---|
Adr | Indirizzo della cella di memoria, per esempio 005. Identifica la posizione della cella, non il valore che contiene. |
Hi | Parte alta del contenuto numerico: le prime due cifre. Quando il valore è interpretato come istruzione, identifica il codice operativo; per esempio 01 corrisponde a TAKE. |
Lo | Parte bassa del contenuto numerico: le ultime tre cifre. Quando il valore è interpretato come istruzione, rappresenta l’operando, normalmente l’indirizzo della cella coinvolta. |
Asm | Nome simbolico dell’istruzione associata al codice operativo, per esempio TAKE, ADD o SAVE. |
Opnd | Operando dell’istruzione mostrato in forma leggibile. In TAKE 005, l’operando 005 indica la cella da cui leggere il dato. |
Hi e Lo sono due parti dello stesso valore: 01 005 rappresenta il numero 1005 e, con il set standard, l’istruzione TAKE 005. Le colonne Asm e Opnd ne mostrano l’interpretazione; non sono celle di memoria aggiuntive.
Hi e Lo sono parti dello stesso contenuto, non due celle distinte: 01 010 rappresenta il numero 1010. Con il set standard, quando eseguito come istruzione, corrisponde a TAKE 010. Il ruolo del numero dipende da come il programma lo utilizza.
La RAM di Johnny 1.01 ha 1000 celle, con indirizzi da 000 a 999; ciascuna conserva un valore da 0 a 19999. Questi limiti appartengono al modello didattico.
I due riquadri della RAM mostrano porzioni della stessa memoria. Sono utili per tenere visibili istruzioni e dati in zone diverse; non rappresentano due memorie indipendenti.
Un esempio: macroistruzioni e dati nella stessa RAM
Le celle da 000 a 003 contengono le macroistruzioni del programma. Le celle 005, 006 e 007 sono usate come dati e risultato. Indirizzo e contenuto hanno ruoli diversi: la cella 000 contiene il comando che leggerà un’altra cella, la 006.
Come leggere l’esempio: il programma carica il numero 2, aggiunge 3 e conserva il risultato 5 nella cella 005.
La tabella qui sotto descrive le singole righe. La figura è uno schema esplicativo, non una schermata dell’applicazione.
| Adr | Hi | Lo | Asm | Opnd | Significato |
|---|---|---|---|---|---|
| 000 | 01 | 006 | TAKE | 006 | Carica in accumulatore il numero della cella 006. |
| 001 | 02 | 007 | ADD | 007 | Somma al valore in accumulatore il contenuto della cella 007. |
| 002 | 04 | 005 | SAVE | 005 | Copia il risultato dell’accumulatore nella cella 005. |
| 003 | 10 | 000 | HLT | 000 | Termina il programma. Qui 000 non indica una cella da leggere. |
| 005 | 00 | 005 | — | — | Cella del risultato: nella schermata contiene 5 dopo la somma. |
| 006 | 00 | 002 | — | — | Primo dato: il numero 2. |
| 007 | 00 | 003 | — | — | Secondo dato: il numero 3. |
Il programma calcola 2 + 3 = 5: TAKE legge il primo dato, ADD somma il secondo, SAVE scrive il risultato e HLT conclude l’esecuzione.
Hi e Lo formano un unico contenuto numerico. Per esempio 01 006 è il valore 1006, interpretato come TAKE 006. Asm e Opnd mostrano questa interpretazione, non altre celle. Il ruolo di comando o dato dipende da come il programma usa il contenuto.
La cella 004 contiene zero e non viene eseguita in questo programma, che si arresta alla cella 003. Un valore zero è comunque un contenuto valido della memoria.
3. Lettura e scrittura attraverso i bus
Il bus degli indirizzi sceglie la cella; il bus dei dati trasporta il contenuto.
Prima di leggere o scrivere, imposta sul bus degli indirizzi (AB, Address Bus) l’indirizzo della cella RAM coinvolta. Il bus dei dati (DB, Data Bus) trasporta invece il valore da leggere o da scrivere.
| Comando | Operazione e direzione | Che cosa succede |
|---|---|---|
ram->db | LETTURA DELLA RAM Dalla cella RAM al bus dei dati. | Il contenuto della cella indicata da AB viene copiato nel bus dei dati. La cella RAM conserva lo stesso valore: leggere non lo cancella e non lo modifica. |
db->ram | SCRITTURA NELLA RAM Dal bus dei dati alla cella RAM. | Il contenuto del bus dei dati viene copiato nella cella indicata da AB, sostituendo il valore che conteneva prima. In Johnny il valore sul bus dei dati resta disponibile anche dopo la scrittura. |
Esempio di lettura: dalla RAM al bus dei dati
La cella 010 contiene 7. Imposta AB = 010 e premi ram->db: nel bus dei dati compare 7 e la cella 010 continua a contenere 7. Il numero è stato copiato, non spostato cancellando la sorgente.
Esempio di scrittura: dal bus dei dati alla RAM
Il bus dei dati contiene 7 e la cella 012 contiene 25. Imposta AB = 012 e premi db->ram: la cella 012 ora contiene 7 al posto di 25. Il valore 25 è stato sovrascritto; il valore sul bus dei dati resta 7.
Cambiare l’indirizzo non esegue una lettura: selezionare una cella con AB non ne copia automaticamente il contenuto su DB. Per leggerlo devi premere ram->db.
LABORATORIO
Inserire numeri interi e istruzioni nella RAM
Tempo: 25 minuti.
Lavora nell’editor delle celle, senza avviare il programma. Salva prima eventuali lavori precedenti.
Per aprire la finestra di inserimento, fai clic con il mouse su una cella della tabella RAM. Si apre la finestra Edit RAM Line, che permette di modificarne il contenuto. Controlla l’indirizzo della cella prima di inserire un valore.
1. Conoscere la finestra di inserimento nella RAM
| Elemento | Significato e utilizzo |
|---|---|
| Address | Indirizzo della cella RAM che stai modificando, per esempio 006. Identifica la posizione della cella. |
| Data | Contenuto numerico della cella, suddiviso nelle parti Hi e Lo. |
| Hi | Le prime due cifre del contenuto. Per i piccoli numeri dell’esercizio resta 00; quando inserisci un’istruzione, identifica il codice operativo. |
| Lo | Le ultime tre cifre del contenuto. Per scrivere il numero 25, imposta Hi a 00 e Lo a 025. |
| Menu delle istruzioni | Il menu sotto Hi permette di scegliere una macroistruzione, come TAKE o ADD. Verrà usato nell’attività sull’inserimento dei comandi. |
| Tastierino numerico | Permette di inserire le cifre nella parte attiva. Controlla Hi e Lo prima di confermare; il tasto << permette di correggere l’immissione. |
| Pulsante 00 000 | Azzera il valore nell’editor. Per scrivere la modifica nella RAM devi poi confermarla. |
| Pulsante con freccia verso RAM | Conferma il valore inserito e lo scrive nella cella, sostituendo il contenuto precedente. |
| Cancel | Chiude la finestra senza confermare la modifica. |
2. Inserire un numero intero
- Apri la cella 010 e verifica l’indirizzo.
- Azzera il valore nell’editor. Per questi piccoli numeri mantieni Hi = 00 e inserisci 7 nella parte Lo; controlla
00 007. - Conferma con il pulsante di scrittura RAM, poi controlla la tabella principale.
- Ripeti: cella 011 = 25; cella 012 = 0; cella 013 = 123.
- Riapri 011, modifica il valore in 9 e premi Cancel. Verifica che in RAM sia rimasto 25.
Numeri consentiti: in Johnny 1.01 i valori sono interi da 0 a 19999. Per questo esercizio usa numeri interi non negativi; non inserire virgole decimali o segni meno.
3. Inserire un’istruzione

- Apri la cella 000 e azzera il valore dell’editor.
- Nel menu sotto Hi scegli
01: TAKE. - Imposta Lo a 010: è l’indirizzo del dato da caricare, non il dato stesso.
- Controlla
01 010e conferma la scrittura. Nella tabella RAM verificaTAKE 010. - Inserisci nella cella 001
ADD 011, nella 002SAVE 012e nella 003HLT 000, scorrendo il menu quando necessario.
Non occorre scrivere il nome del comando come testo libero: seleziona l’istruzione nel menu e imposta l’operando. Il dato 7 nella cella 010 e il comando TAKE nella cella 000 sono entrambi numeri conservati nella stessa RAM, usati con ruoli diversi.
4. Salvare e controllare
Salva la RAM con il dischetto della barra Macro Code. Riapri il file e verifica istruzioni e dati. Il programma salvato potrà essere riaperto ed eseguito in seguito.
Documentazione
Le etichette e le procedure qui descritte si riferiscono alla versione desktop 1.01 mostrata nella schermata.