Introduzione :
UN microprocessore è un dispositivo elettronico multiuso, programmabile, azionato da un orologio e basato su registri che legge istruzioni binarie da un dispositivo di archiviazione chiamato memoria, accetta dati binari come input ed elabora i dati in base a tali istruzioni e fornisce risultati come output. Un microprocessore 8085, è un microprocessore a 8 bit di seconda generazione ed è la base per lo studio e l'utilizzo di tutti i microprocessori disponibili sul mercato.
Perché utilizzare i registri nel microprocessore 8085?
Ecco alcuni motivi per cui vengono utilizzati i registri nel microprocessore 8085:
- Archiviazione temporanea: i registri vengono utilizzati come posizioni di archiviazione temporanea per i dati che devono essere elaborati dal microprocessore. Ad esempio, quando si eseguono operazioni aritmetiche, gli operandi vengono generalmente memorizzati nei registri.
- Indirizzamento: i registri vengono utilizzati per indirizzare le posizioni di memoria nel microprocessore 8085. Il registro del contatore del programma (PC) tiene traccia della posizione di memoria dell'istruzione corrente, mentre il registro del puntatore dello stack (SP) tiene traccia della parte superiore dello stack.
- Ingresso/Uscita: i registri vengono utilizzati per comunicare con dispositivi di ingresso/uscita (I/O). Ad esempio, il registro dell'accumulatore (A) viene utilizzato per comunicare con il bus dati, che è collegato ai dispositivi I/O.
- Informazioni sullo stato: i registri vengono utilizzati per memorizzare informazioni sullo stato del microprocessore. Ad esempio, il registro flag memorizza informazioni sui risultati delle operazioni aritmetiche e logiche, incluso se un risultato è negativo, zero o carry.
- Ottimizzazione: i registri vengono utilizzati per ottimizzare le prestazioni del microprocessore. Utilizzando i registri per memorizzare dati e istruzioni utilizzati di frequente, il microprocessore può accedere a queste informazioni più rapidamente che se dovesse recuperarle dalla memoria.
Registri nell'8085:
(a) Registri per scopi generali – L'8085 dispone di sei registri generici per memorizzare dati a 8 bit; questi sono identificati come B, C, D, E, H e L. Questi possono essere combinati come coppie di registri: BC, DE e HL, per eseguire alcune operazioni a 16 bit. Questi registri vengono utilizzati per memorizzare o copiare dati temporanei, utilizzando istruzioni, durante l'esecuzione del programma.
(b) Registri per scopi specifici –
- Accumulatore: l'accumulatore è un registro a 8 bit (può memorizzare dati a 8 bit) che fa parte dell'unità aritmetica e logica (ALU). Dopo aver eseguito operazioni aritmetiche o logiche, il risultato viene memorizzato nell'accumulatore. L'accumulatore è anche definito come registro A. Registri flag:
Il registro flag è un registro per scopi speciali ed è completamente diverso dagli altri registri del microprocessore. È composto da 8 bit e solo 5 di essi sono utili. Gli altri tre sono lasciati vacanti e verranno utilizzati nelle future versioni Intel. Questi 5 flag vengono impostati o ripristinati (quando il valore del flag è 1, allora si dice che sia impostato e quando il valore è 0, allora si dice che sia ripristinato ) dopo un'operazione in base alla condizione dei dati del risultato nell'accumulatore e in altri registri. I 5 registri delle bandiere sono:- Flag di segno: occupa il settimo bit del registro flag, noto anche come bit più significativo. Aiuta il programmatore a sapere se il numero memorizzato nell'accumulatore è positivo o negativo. Se il flag di segno è impostato, significa che il numero memorizzato nell'accumulatore è negativo e, se ripristinato, il numero è positivo. Zero Flag: : Occupa il sesto bit del registro flag. Viene impostato quando l'operazione eseguita nell'ALU dà come risultato zero (tutti gli 8 bit sono zero), altrimenti viene ripristinato. Aiuta a determinare se due numeri sono uguali o meno. Flag di riporto ausiliario: occupa il quarto bit del registro dei flag. In un'operazione aritmetica, quando un flag di riporto viene generato dal terzo bit e passato al quarto bit, viene impostato il flag di riporto ausiliario. In caso contrario, il flag viene ripristinato. Questo flag viene utilizzato internamente per le operazioni BCD (numero decimale con codifica binaria). Nota - Questo è l'unico registro flag nell'8085 che non è accessibile all'utente. Flag di parità: occupa il secondo bit del registro dei flag. Questo flag verifica il numero di 1 nell'accumulatore. Se l’accumulatore contiene un numero pari di 1, allora viene impostato questo flag e si dice che sia pari. D’altra parte, se il numero di 1 è dispari, viene ripristinato e si dice che sia parità dispari. Carry Flag: occupa il bit zero del registro flag. Se l'operazione aritmetica risulta in un riporto (se il risultato è superiore a 8 bit), viene impostato il flag di riporto; altrimenti viene ripristinato.
(c) Registri di memoria – Sono presenti due registri a 16 bit utilizzati per contenere gli indirizzi di memoria. La dimensione di questi registri è di 16 bit poiché gli indirizzi di memoria sono di 16 bit. Sono :-
- Contatore del programma: questo registro viene utilizzato per sequenziare l'esecuzione delle istruzioni. La funzione del contatore del programma è di indicare l'indirizzo di memoria da cui deve essere prelevato il byte successivo. Quando viene recuperato un byte (codice macchina), il contatore del programma viene incrementato di uno per puntare alla posizione di memoria successiva. Stack Pointer: viene utilizzato come puntatore di memoria. Punta a una posizione di memoria nella memoria di lettura/scrittura, chiamata stack. Viene sempre incrementato/decrementato di 2 durante l'operazione push e pop.
- Flag di segno (7° bit): è resettato (0), il che significa che il numero memorizzato nell'accumulatore è positivo. Flag Zero (6° bit): viene resettato (0), quindi il risultato delle operazioni eseguite nell'ALU è diverso da zero. Flag di carry ausiliario (4° bit): possiamo vedere che b3 genera un carry che viene preso da b4, quindi il flag di carry ausiliario viene impostato (1). Flag di parità (2° bit): è resettato (0), significa che la parità è dispari. L’accumulatore contiene un numero dispari di 1. Carry Flag (0° bit): è impostato (1), l'output risulta in più di 8 bit.
Usi dei registri del microprocessore 8085:
Ecco alcuni usi comuni dei diversi registri nel microprocessore 8085:
- Registro dell'accumulatore (A): il registro dell'accumulatore è il registro più comunemente utilizzato nel microprocessore 8085. Viene utilizzato per operazioni aritmetiche e logiche, nonché per operazioni di input/output (I/O). L'accumulatore viene utilizzato anche come posizione di archiviazione temporanea per i dati.
- Registro del contatore del programma (PC): il registro PC viene utilizzato per tenere traccia della posizione di memoria dell'istruzione corrente. Quando viene eseguita un'istruzione, il registro PC viene automaticamente incrementato per puntare all'istruzione successiva in memoria.
- Registro Stack Pointer (SP): il registro SP viene utilizzato per tenere traccia della parte superiore dello stack. Lo stack viene utilizzato per la memorizzazione temporanea di dati e indirizzi di ritorno durante le chiamate alle subroutine.
- Registro flag: il registro flag viene utilizzato per memorizzare informazioni sullo stato dei risultati delle operazioni aritmetiche e logiche, incluso se un risultato è negativo, zero o carry.
- Registri per scopi generici (B, C, D, E, H e L): questi registri vengono utilizzati per l'archiviazione di dati per scopi generici, nonché per indirizzare posizioni di memoria. Possono essere utilizzati in coppia come registri a 16 bit, come BC, DE e HL, per un indirizzamento più efficiente delle posizioni di memoria.
- Registro delle istruzioni (IR) e Registro del ciclo della macchina (MCR): questi registri vengono utilizzati internamente dal microprocessore per decodificare le istruzioni e controllare la temporizzazione dei cicli della macchina.
Le caratteristiche di questi registri sono:
- Tutti i registri del microprocessore 8085 sono direttamente accessibili dall'unità aritmetica e logica (ALU), consentendo un'elaborazione efficiente dei dati.
- Il registro dell'accumulatore viene utilizzato come destinazione predefinita per la maggior parte delle istruzioni aritmetiche e logiche, semplificando la programmazione.
- I registri di uso generale possono essere utilizzati per memorizzare dati durante i calcoli, ma possono anche essere utilizzati per contenere indirizzi di memoria, rendendoli utili per accedere alle posizioni di memoria.
- I registri del contatore del programma e del puntatore dello stack sono cruciali per la gestione del flusso di istruzioni e dati all'interno di un programma.
- Il registro dei flag fornisce preziose informazioni sui risultati delle operazioni aritmetiche e logiche, consentendo un processo decisionale efficiente nei programmi.
- Il registro delle istruzioni memorizza l'istruzione corrente in esecuzione, consentendo un'efficiente decodifica e generazione del segnale di controllo da parte dell'unità di controllo.
Vantaggi:
- Accesso rapido: i registri forniscono un modo rapido ed efficiente per accedere ai dati ed eseguire operazioni. Poiché i registri si trovano all'interno del processore, è possibile accedervi rapidamente senza dover attendere che i dati vengano recuperati dalla memoria. Accesso ridotto alla memoria: l'uso dei registri può aiutare a ridurre il numero di accessi alla memoria richiesti, migliorando così le prestazioni complessive del sistema. Funzionalità specializzate: ogni registro del microprocessore 8085 ha una funzione specifica, come l'accumulatore per le operazioni aritmetiche e il contatore del programma per memorizzare l'indirizzo dell'istruzione successiva. Questa funzionalità specializzata può semplificare la programmazione e il debug. Complessità ridotta: fornendo registri dedicati per scopi specifici, il microprocessore 8085 riduce la complessità del processo di programmazione ed esecuzione.
Svantaggi:
- Capacità di archiviazione limitata: il microprocessore 8085 ha un numero limitato di registri, che può limitare la quantità di dati che possono essere archiviati e manipolati in un dato momento. Modalità di indirizzamento complesse: alcune delle modalità di indirizzamento utilizzate nel microprocessore 8085 possono essere complesse, il che può rendere più difficile la programmazione. Cambio di contesto: in alcuni casi, il passaggio tra diversi set di registri può aggiungere sovraccarico e complessità al processo di programmazione. Mancanza di flessibilità: il numero fisso e la funzione dei registri nel microprocessore 8085 possono limitare la flessibilità del sistema e rendere più difficile l'adattamento alle mutevoli esigenze.