Operazioni sullo Stack in 8085: PUSH, POP e Stack Pointer
L'8085 usa uno stack Last-In-First-Out (LIFO) in RAM esterna, gestito dal Stack Pointer (SP) a 16 bit.
PUSH rp / PSW
Azione: SP ← SP – 2; M[SP] ← byte alto; M[SP+1] ← byte basso.
Cicli: 12 T-stati (rp) / 12 (PSW).
Esempio: PUSH B memorizza B (alto) a SP, C (basso) a SP+1.
POP rp / PSW
Azione: byte basso ← M[SP]; byte alto ← M[SP+1]; SP ← SP + 2.
Cicli: 10 T-stati.
Esempio: POP H carica H da SP, L da SP+1.
Usi Chiave
- Indirizzo di Ritorno Subroutine: CALL inserisce PC; RET estrae PC.
- Preservazione Registri: Salva registri attraverso interrupt/subroutine.
- Passaggio Parametri: Inserisci argomenti prima di CALL; estrai dentro.
- Dati Temporanei: Risultati intermedi in routine matematiche.
Inizializzazione
Imposta sempre SP presto: LXI SP, STACK_TOP (es. 8000H). Lo stack cresce verso il basso da STACK_TOP.
Nessun controllo dei limiti—overflow dello stack corrompe i dati; underflow legge spazzatura.