Objetivos
O 6502 possui ao todo seis registradores: PS, PC, SP, A, X e Y que estão
listados de forma resumida nas tabelas abaixo. A descrição e uso desses registradores serão explicados mais adiante.
Registrador |
Descrição |
Tamanho(bits) |
A |
Accumulator/Acumulador |
8 |
X |
Registrador/Indexador X |
8 |
Y |
Registrador/Indexador Y |
8 |
SP |
Stack Pointer |
8 |
PC |
Program Counter |
16 |
PS |
Processor Status |
8 |
PS - Processor Status
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
N |
V |
- |
B |
D |
I |
Z |
C |
Como os registradores residem na memória interna do processador, o acesso para leitura e escrita de dados é muito mais
rápido do que utilizar a memória pois não utiliza o barramento de acesso a RAM que consome mais tempo.
A - Accumulator - Acumulador
O registrador A é um registrador de 8-bits que é utilizado em operações aritméticas, lógicas, pilha, carregamento e
armazenamento de dados. Quase todas as instruções utilizam o acumulador.
X e Y - Registradores de indexação
O 6502 possui dois registradores de índice, X e Y, que são usados tanto para acessar valores em memória quanto utilizados para armazenar valores.
Ambos têm o tamanho de 8-bits.
Program Counter - Contador de Programa
O PC é um registrador de 16-bits que armazena o endereço da próxima instrução que será executada pelo processador.
Este registrador é incrementado automaticamente à medida que as instruções vão sendo executadas ou modificadas por algumas instruções de desvio de fluxo.
Stack Pointer - Ponteiro para Pilha
O SP é um registrador de 16-bits que armazena o endereço disponível na pilha. Este registrador é incrementado
automaticamente pelas instruções PUSH e PULL e modificado por outras instruções.
Processor Status - Status do Processador - Flags
O 6502 possui um grupo de flags para que possamos entender seu status após a execuções de suas instruções. Abaixo,
a explicação das flags:
PS - Processor Status
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
N |
V |
- |
B |
D |
I |
Z |
C |
Bit 0: Carry
A flag C(Carry), pode ser entendida como o “Vai-um ou Vem-um” em operações aritméticas de soma e subtração.
Em instrução de deslocamento e rotação de bits armazena os bits mais e menos significativos.
Bit 1: Zero
A flag Z(Zero) indica que o valor carregado em um registrador ou memória é igual a zero ou não.
Se for igual a zero, a flag recebe o valor 1, caso contrário recebe o valor de 0.
Bit 2 : Interrupt Enable/Disable
Flag utilizada para habilitar e desabilitar o reconhecimento de interrupções.
Quando seu valor é 0, nenhuma interrupção é reconhecida. Quando seu valor é 1, as interrupções são reconhecidas e executadas. Uma Interrupção não-mascarável(NMI) não é afetada pela flag.
Bit 3: Decimal
Flag utilizada para instruções aritméticas com números decimais.
Bit 4: Break
Flag utilizada pela instrução BRK(Break) para depuração de código. Essa flag existe apenas quando o PS é salvo na pilha.
Bit 5: -
Bit 6: Overflow
A flag O(Overflow) é utilizada em operações que envolvem aritmética sinalizada indicando um extravasamento no armazenamento.
Por exemplo, se dois valores de mesmo sinal são somados e um valor de sinal contrário é gerado, há overflow. Havendo overflow, a flag recebe o valor 1, caso contrário recebe o valor 0.
A flag V pode ser setada(1) atráves do pino SO presente no 6502.
Bit 5: Negative
A flag N(Negative) indica a sinalização de um valor armazenado em um registrador. Se um valor for positivo,
a flag recebe valor 0, caso seja negativo recebe o valor 1. Um valor sinalizado é indicado pelo bit 7,
bit mais significativo.
"Flags" : Bit 5 e B
A flag B existe apenas quando o PS é salvo na pilha. Quando o PS é restaurado por PHP ou RTI, essa flag é descartada.
É setada(1) pelas instruções BRK e PHP e resetada(0) quando uma interrupção de hardware(IRQ ou MNI) ocorre. Essa flag
é utilizada para diferencar entre a interrupção de software BRK e a interrupção de hardware IRQ.
A Bit 5, é setada sempre que o PS for salvo(PHP) na pilha e ignorado quando o PS for restaurado(PLP, RTI).
Histórico de atualizações
- 11/03/2025 - revisão 2 - adição de tópico sobre flags B e Bit 5, Info sobre SO em flag V
- 04/10/2023 - revisão 1 - correção em de links, layout e navegação e descrição SP
- 28/04/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.