Pourquoi le microprocesseur Intel 8085 est une architecture à accumulateur
L'Intel 8085 (1976) est classé comme microprocesseur **à accumulateur** (ou "accumulateur unique") car son **registre A (Accumulateur)** est l'opérande implicite, central, pour la grande majorité des opérations arithmétiques, logiques, et de mouvement de données. Ce design reflète les contraintes des années 70 : budget transistors limité, encodage d'instructions simple, et modèle de programmation optimisé pour code à registres rares.
Cinq raisons pour lesquelles l'accumulateur est central
1. Destination principale Arithmétique/Logique
Presque toute instruction ALU utilise l'accumulateur comme une source ET la destination :
ADD B ; A ← A + B SUB M ; A ← A - (HL) ANA C ; A ← A AND C XRA A ; A ← 0 (effacement) ORA M ; A ← A OR (HL) CMP D ; Définit drapeaux selon A - D (A inchangé) Résultat **toujours** dans A. Drapeaux (S, Z, AC, P, CY) reflètent résultat de A.
2. Maintien données temporaire
L'accumulateur tamponne résultats intermédiaires pendant calculs multi-étapes :
LDA 2050H ; Charge opérande 1 dans A MOV B, A ; Sauvegarde dans B LDA 2051H ; Charge opérande 2 dans A ADD B ; A ← A + B (résultat dans A) STA 2052H ; Stocke résultat Sans opérations ALU registre-registre générales, A est l'"espace de travail".
3. Opérations Registre-vers-Accumulateur dominent
Mouvement données tourne autour de A :
- Chargement vers A : LDA addr, LHLD addr (vers HL), MOV A, r, MVI A, data
- Stockage depuis A : STA addr, SHLD addr, MOV r, A, MOV M, A
- Échange : XCHG (HL↔DE), mais pas de move reg-reg direct sauf via A ou mémoire.
4. Accumulateur comme source pour opérations Mémoire/Registre
MOV M, A ; Stocke A en mémoire (HL) MOV B, A ; Copie A vers registre STA 3000H ; Stocke A à adresse directe A est le **seul** registre qui peut écrire directement en mémoire (via STA, MOV M,A). Autres registres doivent passer par A ou utiliser HL indirect.
5. Conditions branchement dépendent drapeaux accumulateur
Sauts/appels/retours conditionnels testent drapeaux définis par opérations sur accumulateur :
JC BOUCLE ; Saut si Retenue (dernier ADD/SUB/ANA sur A) JZ EGAL ; Saut si Zéro (résultat A était 0) JP POS ; Saut si Positif (bit signe A 0) JPE PAIR ; Saut si Parité Paire (parité A) Pas d'instructions "test registre B" direct — doit déplacer vers A d'abord (MOV A,B puis ORA A).
Contexte : Pourquoi ce design ?
- Budget transistors : ~6 500 transistors. Registre général multi-port avec accès ALU était trop coûteux.
- Encodage instructions : Opcode 1 octet (ex: 0x80 ADD B) utilise 3 bits pour champ registre — efficace pour ops centrées accumulateur.
- Modèle logiciel : Programmeurs assembleur attendaient flux centré accumulateur (comme 8008, 8080, Z80, 6502).
- Jeu registres : Six registres 8-bit généraux (B,C,D,E,H,L) + A. Paires (BC, DE, HL) pour 16-bit/adressage. A est le registre "principal".
Contraste : Architectures riches en registres
CPU ultérieurs (8086, 68000, ARM, RISC-V) fournissent ALU registre-registre (ADD R1, R2, R3) et registres généraux multiples, réduisant goulot accumulateur. La centricité accumulateur du 8085 est une marque de sa génération.
En essence : L'accumulateur du 8085 n'est pas juste un registre — c'est le **fulcrum architectural** autour duquel pivotent tout le jeu d'instructions, flux de données, et modèle de programmation.
