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

  1. Visão geral dos registradores
  2. Acumulador(A)
  3. X e Y
  4. Program Counter
  5. Stack Pointer
  6. Flags - PS
  7. Flags B e Bit 5

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.

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.

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.

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.

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.

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: -

Não utilizado

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.

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).

  1. 11/03/2025 - revisão 2 - adição de tópico sobre flags B e Bit 5, Info sobre SO em flag V
  2. 04/10/2023 - revisão 1 - correção em de links, layout e navegação e descrição SP
  3. 28/04/2023 - versão inicial