Perché il Microprocessore Intel 8085 È un'Architettura basata sull'Accumulatore
L'Intel 8085 (1976) è classificato come un microprocessore basato sull'accumulatore (o "singolo accumulatore") perché il suo registro A (Accumulatore) è l'operando implicito e centrale per la stragrande maggioranza delle operazioni aritmetiche, logiche e di movimentazione dati. Questo design riflette i vincoli degli anni '70: transistor limitati, semplice codifica delle istruzioni e un modello di programmazione ottimizzato per codice con pochi registri.
Cinque Motivi per cui l'Accumulatore è Centrale
1. Destinazione Primaria Aritmetica/Logica
Quasi ogni istruzione ALU usa l'accumulatore come una sorgente e destinazione:
ADD B ; A ← A + B
SUB M ; A ← A - (HL)
ANA C ; A ← A AND C
XRA A ; A ← 0 (clear)
ORA M ; A ← A OR (HL)
CMP D ; Imposta flag basati su A - D (A invariato)
Il risultato atterra sempre in A. I flag (S, Z, AC, P, CY) riflettono il risultato di A.
2. Conservazione Dati Temporanea
L'accumulatore bufferizza risultati intermedi durante calcoli multi-step:
LDA 2050H ; Carica operando 1 in A
MOV B, A ; Salva in B
LDA 2051H ; Carica operando 2 in A
ADD B ; A ← A + B (risultato in A)
STA 2052H ; Memorizza risultato
Senza operazioni ALU registro-registro generiche, A è l'"area di lavoro."
3. Operazioni Registro-Accumulatore Dominano
Il movimento dati ruota attorno ad A:
- Carica in A: LDA addr, LHLD addr (in HL), MOV A, r, MVI A, data
- Memorizza da A: STA addr, SHLD addr, MOV r, A, MOV M, A
- Scambio: XCHG (HL↔DE), ma nessun movimento diretto reg-reg tranne tramite A o memoria.
4. Accumulatore come Sorgente per Operazioni Memoria/Registro
MOV M, A ; Memorizza A in memoria (HL)
MOV B, A ; Copia A in registro
STA 3000H ; Memorizza A in indirizzo diretto
A è l'unico registro che può scrivere direttamente in memoria (tramite STA, MOV M,A). Altri registri devono passare tramite A o usare HL indiretto.
5. Condizioni di Salto Basate sui Flag dell'Accumulatore
Salti/richiami/ritorni condizionali testano flag impostati da operazioni sull'accumulatore:
JC LOOP ; Salta se Carry (dall'ultima ADD/SUB/ANA su A)
JZ EQUAL ; Salta se Zero (risultato A era 0)
JP POS ; Salta se Positivo (bit segno A 0)
JPE EVEN ; Salta se Parità Pari (parità A)
Non esistono istruzioni "test registro B" dirette—devi prima spostare in A (MOV A,B poi ORA A).
Contesto: Perché Questo Design?
- Budget Transistor: ~6.500 transistor. Un file di registri generici con accesso multi-porta ALU era troppo costoso.
- Codifica Istruzioni: Opcode a 1 byte (es. 0x80 ADD B) usa 3 bit per il campo registro—efficiente per operazioni incentrate sull'accumulatore.
- Modello Software: I programmatori assembly si aspettavano un flusso centrato sull'accumulatore (come 8008, 8080, Z80, 6502).
- Set di Registri: Sei registri generici 8-bit (B,C,D,E,H,L) + A. Coppie (BC, DE, HL) per 16-bit/indirizzamento. A è il registro "principale".
Contrasto: Architetture Ricche di Registri
CPU successive (8086, 68000, ARM, RISC-V) forniscono ALU registro-registro (ADD R1, R2, R3) e molti registri generici, riducendo il collo di bottiglia dell'accumulatore. La centralità dell'accumulatore dell'8085 è un marchio della sua generazione.
In sostanza: l'accumulatore dell'8085 non è solo un registro—è il fulcro architettonico attorno al quale ruotano l'intero set di istruzioni, il flusso dati e il modello di programmazione.