A pilha do Z80 também é utilizada para a passagem de argumentos para subrotinas. O registrador
SP é manipulado para recuperar esses argumentos e também armazenar valores de retorno.
Tab. 2: Argumentos na pilha
| SP |
Argumentos |
Descrição |
| +6 |
$aabb |
arg 1 |
| +4 |
$ccdd |
arg 2 |
| +2 |
$eeff |
arg 3 |
| SP |
- |
- |
Para armazenar espaço para valores de retorno, a stack deve ser decrementada de acordo com os
valores de retorno.
Tab. 3: Espaço para retorno
| SP |
Retorno |
Descrição |
| +6 |
- |
retorno 1 |
| +4 |
- |
retorno 2 |
| +2 |
- |
retorno 3 |
| SP |
- |
- |
Tanto quanto argumentos quanto espaço para retorno, após o retorno da subrotina o
registrador SP deve ter seu valor restaurado para manter a consistência.
Como o Z80 possui um número considerável de registradores de uso geral, é comum o uso desses
para a passagem de parâmtros para subrotinas. Caso os registradores não sejam suficientes,
a RAM é usada.
É possível a manipulação manualmente o SP utilizando instruções de Aritméticas, Exchange e
Movimentação e outras para manipulações mais complexas que envolvam parâmetros/argumentos.
O Z80 não possui instrução para criação de stack frame que é um espaço de memória alocado.
Isso deve ser feito manualmente via manipulação do SP com as instruções mencionados no parágrafo
anterior.