Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Instruções de Pilha
  2. PHP
  3. PHA
  4. PLA
  5. PLP

As instruções que manipulam a pilha são responsáveis por escrever e recuperar dados da pilha. Normalmente utilizadas para realizar backup de registradores. Nenhuma flag é afetada, exceto por PLA e PLP.

Nas instruções de PUSH o registrador SP é decrementado e nas instruções de PULL o SP é incrementado.

Para transferir os valores dos registradores X, Y e SP é necessário transferí-los para o registrador A antes. Ver instruções de Transferência.

Notação utilizada:
#$NN Valor hexadecimal imediato
MNEMÔNICO Abreviação do nome de uma instrução
; Comentário
() Conteúdo de memória
<- Atribuição
M Endereço de Memória em
Flags
a Alterada de acordo com resultado
- Não sofre alteração
0 Sempre zero
1 Sempre um

Mais informações sobre os registradores, flags e pilha podem ser vistas em Registradores e Pilha.

Com essa instrução PHA, podemos armazenar ou empilhar o valor contido no registrador A no topo da Stack/Pilha.

Operação
(SP) <- A
SP <- SP - 1
Endereçamento:
Implícito PHA
F(Flags)
N: -
V: -
B: - 
D: -
Z: -
C:-
Ex:

LDA #$FF
PHA

Com a instrução PHP, podemos armazenar ou empilhar o registrador PS no topo da Stack.

Operação
(SP) <- PS
SP <- SP - 1
Endereçamento:
Implícito PHP
F(Flags)
N: -
V: -
Bit 5: 1
B: 1
D: -
Z: -
C:-
Ex:
LDY #$FF
TYA
PHP
; trecho omitido
PLP

A instrução PLA é utilizada para recuperar ou desempilhar o valor do topo da Stack e transferí-lo para o registrador A. As flags N e Z são atualizadas de acordo com valor transferido para A.

Operação
A <- (SP)
SP <- SP + 1
Endereçamento:
Implícito PLA
F(Flags)
N: A[Bit7]
V: -
B: - 
D: -
Z: A == 0 ? 1 : 0
C:-
Ex:
PHA ;salva A
; trecho de código omitido
PLA ; restaura A

A instrução PLP é utilizada para recuperar ou desempilhar o valor do topo da Stack e transferí-lo para o registrador PS. Os Bits 5 e 4 são ignorados.

Operação
PS <- (SP)
SP <- SP + 1
Endereçamento:
Implícito PLP
F(Flags)
N:(SP)[bit7] 
V: (SP)[bit0]
Bit 5: -
B: -
D: (SP)[bit3]
I: (SP)[bit2]
Z: (SP)[bit1]
C: (SP)[bit0]
Ex:
PHP
; trecho omitido
PLP
  1. 11/05/2026 - revisão 5 - Ajustes: objetivos, intro, ajustes em descrições, flags PHP; Adição: como setar flags em PLA
  2. 12/03/2025 - revisão 4 - Correção em flags afetadas na introdução; Ajustes pontuais
  3. 11/09/2024 - revisão 3 - adição de flags afetadas
  4. 30/08/2024 - revisão 2 - correção em links de objetivos
  5. 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
  6. 28/04/2023 - versão inicial