Architettura PC

Macroistruzioni

Programma RAM, comandi della barra Macro Code e significato delle macroistruzioni.

1. Macro Code: il programma nella RAM

Una macroistruzione esprime un’operazione completa.

Il Macrocode è il programma contenuto nella RAM: una sequenza di macroistruzioni come TAKE, ADD e SAVE, ciascuna con una funzione specifica.

Barra Macro Code: nuovo, apri, salva RAM, macro passo, esecuzione automatica, regolatore di velocità, pausa e reset
I comandi sono descritti da sinistra verso destra.
IconaFunzioneQuando usarla
Nuova RAM: azzera la memoriaAzzera la RAM.Per iniziare un programma nuovo, dopo aver salvato quello precedente.
Apri memoria RAMApre un file della memoria RAM.Per caricare un programma salvato.
Salva memoria RAMSalva la RAM.Per conservare dati e istruzioni del programma.
Macro passoEsegue un macro passo.Per completare una macroistruzione e osservarne il risultato.
Esecuzione automaticaAvvia il programma automaticamente.Per proseguire senza un clic per ogni istruzione.
Regolatore della velocitàRegola la velocità dell’esecuzione automatica.Per rendere più facile seguire i cambiamenti.
PausaInterrompe l’esecuzione.Per fermarsi a osservare lo stato della macchina.
Reset dei registriAzzera PC e gli altri registri del processore.Per ripartire; verifica anche i dati RAM prima di una nuova prova.
Ctrl: mostra o nasconde unità di controlloMostra o nasconde i dettagli dell’unità di controllo e la barra Micro Code.Per osservare registri, contatore e sequenze interne.

Reset e nuova RAM sono diversi: Reset agisce sui registri; il foglio con la stella azzera la memoria. Il triangolo singolo è il macro passo; i due triangoli avviano l’automatismo.

2. Da dove inizia una macroistruzione?

Prima si preleva il comando, poi lo si interpreta e si esegue la sua operazione.

Il punto di partenza è il Program Counter (PC, contatore del programma), che conserva l’indirizzo della cella RAM da cui leggere il comando. Dopo Reset, PC = 000: il prelievo parte quindi dalla cella 000.

PC → ABSelezionare la cella del programma
RAM → DBLeggere il contenuto della cella
DB → INSCaricare il registro istruzione
Decodifica → esecuzioneScegliere e svolgere il comando
Prossima istruzioneRipetere il prelievo dall’indirizzo in PC

AB — Address Bus è il bus degli indirizzi: indica dove leggere. DB — Data Bus è il bus dei dati: trasporta il contenuto. INS — Instruction Register conserva l’istruzione prelevata.

FaseOperazione in JohnnyChe cosa avviene
1. Selezionepc->abL’indirizzo conservato in PC viene copiato su AB. La RAM seleziona quella cella.
2. Letturaram->dbIl contenuto della cella selezionata viene copiato nel bus dei dati. In questa fase è il codice del comando.
3. Caricamento del comandodb->insIl registro istruzione riceve il codice operativo e l’operando.
4. Scelta della sequenzains->mcIl codice operativo seleziona la sequenza interna che realizza il comando. MC è il Microcode Counter, contatore del microcodice.
5. EsecuzioneDipende dalla macroistruzioneTAKE carica un dato, ADD lo somma, SAVE scrive un risultato; ciascun comando usa la propria sequenza.
6. ContinuazioneAggiornamento di PC e ritorno al prelievoNei normali comandi sequenziali PC avanza con pc++ e mc:=0 riporta il controllo al prelievo. Salti e condizioni possono cambiare l’indirizzo successivo; HLT arresta il programma.

Non serve un comando ab->ram: AB indica la posizione, non contiene il dato da scrivere. Per leggere si usa ram->db; per scrivere si usa db->ram, sempre nella cella indicata da AB.

Due letture diverse: il comando e il suo dato

Se RAM[000] contiene TAKE 005 e RAM[005] contiene 7, il prelievo legge prima la cella 000: DB riceve 01 005. Poi l’esecuzione seleziona 005 con ins->ab e legge di nuovo la RAM con ram->db: questa volta DB riceve 00 007.

La selezione di una cella e la lettura sono due azioni distinte. Cambiare AB non aggiorna automaticamente DB. I dettagli delle operazioni interne sono sviluppati nella pagina Microistruzioni e negli esempi TAKE e ADD.

3. Le macroistruzioni

La lettera a rappresenta l’indirizzo operando.

Codice HiMacroistruzioneSignificato
01TAKE aCopia RAM[a] in ACC.
02ADD aSomma RAM[a] ad ACC.
03SUB aSottrae RAM[a] da ACC.
04SAVE aCopia ACC in RAM[a].
05JMP aRiprende il programma dalla cella a.
06TST aSe RAM[a] è zero, salta l’istruzione successiva; altrimenti prosegue normalmente.
07INC aIncrementa il contenuto di RAM[a].
08DEC aDecrementa il contenuto di RAM[a].
09NULL aImposta RAM[a] a zero.
10HLT 000Termina l’esecuzione; l’operando non indica un dato da caricare.

Torna all’indice della lezione