A Stack(Pilha) do 8080, diferente do 6502, não possui um local pré-definido ou fixo. A pilha do
8080 pode ser configurada para residir em qualquer local dos 64K disponíveis. O valor inicial do
SP é indefinido e pode ser configurado utilizando a instrução LXI.
Ex: SP apontando para fim da memória
LXI SP,0FFFFh
O registrador SP é responsável por armazenar o endereço/ponteiro do topo da pilha,
e através dele as instruções para armazenar e recuperar dados da pilha são feitas.
As instruções do tipo PUSH e POP são responsáveis pelo armazenamento
e remoção de dados na pilha respectivamente.
O SP é decrementado em duas unidades quando a instruções PUSH é executada e
incrementado em duas unidades quando a instrução POP é executada.
Tab. 1: Pilha e PUSH/POP
Pilha |
PUSH |
POP |
$FFFF (Topo) |
SP-2
↓ |
SP+2
↑ |
|
|
|
|
|
$XXXX (Base) |
A ordem recuperação dos dados da pilha, o POP, deve ser inversa a a
ordem de do PUSH. Caso os dados da pilha sejam recuperados de forma errada, ocorrerá erros no
funcionamento do programa.
Ex: SP apontando para fim da memória
PUSH B ; salva BC
PUSH PSW ; salva AF
POP PSW ; restaura AF
POP B ; restaura B(BC)