Operaciones de Pila en 8085: PUSH, POP y el Stack Pointer

El 8085 usa una pila Last-In-First-Out (LIFO) en RAM externa, gestionada por el Puntero de Pila (SP) de 16 bits.

PUSH rp / PSW

Acción: SP ← SP – 2; M[SP] ← byte alto; M[SP+1] ← byte bajo.
Ciclos: 12 T-estados (rp) / 12 (PSW).
Ejemplo: PUSH B almacena B (alto) en SP, C (bajo) en SP+1.

POP rp / PSW

Acción: byte bajo ← M[SP]; byte alto ← M[SP+1]; SP ← SP + 2.
Ciclos: 10 T-estados.
Ejemplo: POP H carga H desde SP, L desde SP+1.

Usos Clave

  • Dirección de retorno de subrutina: CALL empuja PC; RET desapila PC.
  • Preservación de registros: Guarda registros entre interrupciones/subroutinas.
  • Paso de parámetros: Empuja argumentos antes de CALL; desapila dentro.
  • Datos temporales: Resultados intermedios en rutinas matemáticas.

Inicialización

Siempre configura SP al inicio: LXI SP, STACK_TOP (ej., 8000H). La pila crece hacia abajo desde STACK_TOP.

Sin verificación de límites—el desbordamiento de pila corrompe datos; el insuficiencia lee basura.