As instruções que manipulam a pilha são responsáveis por salvar e recuperar dados da Stack.
Normalmente, utilizadas para realizar backup de registradores durante a execução de programas e também
endereços de retorno de subrotinas.
Nenhuma flag é afetada pelas instruções de pilha, exceto POPF, e apenas os valores de 16-bits podem ser salvos
ou restaurados.
A recuperação de dados da pilha deve ser feita de forma inversa ao armazenamento para que os dados salvos
sejam restaurados na ordem correta.
A pilha é acessada utilizando o registrador de Segmento SS, Stack Segment, em conjunto com o registrador SP na
forma SS:[SP].
Os registradores CS e IP não podem ser operandos das instruções de pilha. Apenas instruções
como CALL e RET manipulam esses registradores.
O uso da pilha de forma incorreta ao armazenar e restaurar dados, ou manipular endereços CS e IP, pode
acarretar em erros na execução de um programa.
Os registradores SI e DI também podem ser utilizados para backup, mas esse uso ser feito com cuidado para
evitar erros.
Notação utilizada:
|
|
| ; |
Comentário |
| [] |
Conteúdo de memória |
| <- |
Atribuição |
| MEM |
Endereço de memória |
| REG |
Registradores de uso geral |
| SREG |
Registradores de segmento |
Mais informações sobre os registradores e flags podem ser vistas
em Registradores e Flags.
O funcionamento da Pilha no 8086 pode ser vista em
Pilha.