Por qué el microprocesador Intel 8085 es arquitectura basada en acumulador

El Intel 8085 (1976) se clasifica como microprocesador basado en acumulador (o "acumulador único") porque su registro A (Acumulador) es el operando implícito y central para la gran mayoría de operaciones aritméticas, lógicas y de movimiento de datos. Este diseño refleja limitaciones de los 70: transistores limitados, codificación de instrucciones simple, y modelo de programación optimizado para código con pocos registros.

Cinco razones por las que el acumulador es central

1. Destino principal aritmético/lógico

Casi toda instrucción ALU usa el acumulador como una fuente y el destino:

ADD B ; A ← A + B
SUB M ; A ← A - (HL)
ANA C ; A ← A AND C
XRA A ; A ← 0 (limpiar)
ORA M ; A ← A OR (HL)
CMP D ; Ajusta flags según A - D (A inalterado)

Resultado siempre cae en A. Flags (S, Z, AC, P, CY) reflejan resultado de A.

2. Almacenamiento temporal de datos

El acumulador bufferiza resultados intermedios en cálculos multi-paso:

LDA 2050H ; Carga operando 1 a A
MOV B, A  ; Guarda en B
LDA 2051H ; Carga operando 2 a A
ADD B     ; A ← A + B (resultado en A)
STA 2052H ; Almacena resultado

Sin operaciones ALU registro-registro de propósito general, A es el "espacio de trabajo".

3. Operaciones registro-acumulador dominan

El movimiento de datos gira en torno a A:

  • Cargar a A: LDA dir, LHLD dir (a HL), MOV A, r, MVI A, dato
  • Almacenar desde A: STA dir, SHLD dir, MOV r, A, MOV M, A
  • Intercambiar: XCHG (HL↔DE), pero no movimiento directo reg-reg salvo vía A o memoria.

4. Acumulador como fuente para operaciones memoria/registro

MOV M, A ; Almacena A en memoria (HL)
MOV B, A ; Copia A a registro
STA 3000H ; Almacena A en dirección directa

A es el único registro que puede escribir directamente en memoria (vía STA, MOV M,A). Otros registros deben pasar por A o usar HL indirecto.

5. Condiciones de salto dependen de flags del acumulador

Saltos/llamadas/retornos condicionales testean flags establecidos por operaciones del acumulador:

JC LOOP  ; Salta si Acarreo (último ADD/SUB/ANA en A)
JZ EQUAL ; Salta si Cero (resultado A fue 0)
JP POS   ; Salta si Positivo (bit signo A 0)
JPE EVEN ; Salta si Paridad Par (paridad A)

No existen instrucciones "test registro B" directas — hay que mover a A primero (MOV A,B luego ORA A).

Contexto: ¿Por qué este diseño?

  • Presupuesto transistores: ~6.500 transistores. Banco registros propósito general con ALU multi-puerto era demasiado costoso.
  • Codificación instrucciones: Opcode 1 byte (ej. 0x80 ADD B) usa 3 bits para campo registro — eficiente para ops centradas en acumulador.
  • Modelo software: Programadores ensamblador esperaban flujo centrado en acumulador (como 8008, 8080, Z80, 6502).
  • Conjunto registros: Seis registros 8-bit propósito general (B,C,D,E,H,L) + A. Pares (BC, DE, HL) para 16-bit/direccionamiento. A es registro "principal".

Contraste: Arquitecturas ricas en registros

CPUs posteriores (8086, 68000, ARM, RISC-V) proveen ALU registro-registro (ADD R1, R2, R3) y múltiples registros propósito general, reduciendo cuello botella acumulador. La acumulador-centricidad del 8085 es sello de su generación.

En esencia: El acumulador del 8085 no es solo un registro — es el fulcro arquitectónico alrededor del cual pivota todo el conjunto de instrucciones, flujo de datos y modelo de programación.