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

  1. Registradores
  2. Modo Emulação
  3. Modo Nativo
  4. Registradores de Banco
  5. Descrição dos Registradores
  6. Valores iniciais

O 65816 é orientado à memória e possui apenas 1 registrador de dado(A) em comparação aos 7(16-bits) registradores do 8086 e aos 8(32-bits) do 68K.

Além de registradore de dados, registradores de banco, indexadores, contador de programa e stack pointer também estão incluídos.

Processadores variantes podem ter mais registradores, modos de endereçamento ou funcionamento diferentes. O manual de cada variante deve ser consultado.

O 65816, em modo emulação, possui 6 registradores que podem ser vistos em 65(C)02: Registradores que pode ser visto com mais informações.

Tab. 1: Registradores (E=1)
8-bits 16-bits
A PC
X -
Y -
PS -
SP -

No modo nativo, o 65816 possui ao todo 9 registradores que podem ser vistos na tabela separados por seus tamanhos. A descrição e uso de cada registrador será visto mais adiante.

Tab. 2: Registradores (E=1)
8-bits 8-bits 16-bits
B A A(C)
DBR X
S(PS) Y
DH DL DPR(D)
PBR(K) SP
PC

O nome de cada registrador segue abaixo:

  1. A: Byte menos significativo de A(C)
  2. B: Byte mais significativo de A(C)
  3. A(C): Acumulador 16-bits
  4. DBR: Data Bank Register. Banco para acessar Dados
  5. S(PS): Status do Processador. Flags de status
  6. DPR: Direct Page Register(Página Zero)
  7. DH: Byte mais significativo de DPR
  8. DL: Byte menos significativo de DPR
  9. PBR(K): Program Bank Register
  10. PC: Contador de Programa
  11. SP: Stack Pointer

Os registradores de banco possuem o tamanho de 8-bits e são utilizados para formar os endereços de 24-bits para acessar instruções e dados em memória.

Tab. 3: PBR/DBR
PBR/DBR X,Y Endereço
0Fh 1234h 0F1234h
FFh 1234h FF1234h

Abaixo a tabela resumo dos registradores de banco e seus registradores associados para formação de endereços 24-bits:

Tab. 4: Banco x Endereço 16/24-bits
Banco(8-bits) Registrador(16-bits) Endereço(24-bits)
DBR X DBR|X
DBR Y DBR|Y
01 SP 01|SP
PBR PC PBR|PC
00 DPR 00|DPR

No modo emulação(E=1) todos os registradores são iniciados e mantidos com o valor 00h para acessar informações no primeiro banco/página de 64K de memória.

Os bancos DBR e PBR podem ser sobrescritos com valores provenientes do operando imediato de instruções que utilizam o modo de endereçamento 24-bits para acessar código e dados.

Abaixo a descrição e uso básico dos registradores vistos nas tabelas 1 e 2 acima. O uso de alguns registradores será visto em Arquitetura: Modos de Endereçamento e outros são vistos em Instruções.

Tab. 5: Registradores (E=1)
8-bits 8-bits 16-bits
B A A(C)
DBR X
S(PS) Y
DH DL DPR(D)
PBR(K) SP
PC
A(C) - Acumulador

Abaixo a descrição e uso básico dos registradores vistos nas tabelas 1 e 2 acima. O uso de alguns registradores será visto em Arquitetura: Modos de Endereçamento e outros são vistos em Instruções.

X e Y - Indexadores

Registradores de índice para acessar dados em arrays, structs e outros tipos de dados que usam índice para acessar seus elementos. Esses registradores são combinados com o registrador DBR para acessar dados.

DBR - Data Bank Register

O registrador DBR armazena o banco de dado de memória para onde um dado deve ser buscado. Os registradores X ou Y são usados para formar um endereço de 24-bits. Pode ser sobrescrito com valor proveniente do operando imediato de algumas instruções.

DPR - Direct Page Register - Página Zero

Registrador que armazena parte do endereço(DH) de página zero para o modo de endereçamento Direct Page(Página Zero). Seu registrador de banco é sempre zero. O DL é fornecido pelas instruções que usam o modo DP.

SP(S) - Stack Pointer

O registrador S(SP) aponta para o topo da pilha ou o próximo espaço disponível na pilha para armazenamento. Alterado por instruções PUSH/PULL, subrotina e interrupção. Seu registrador de banco é sempre 00h.

PBR(K) - Program Bank Register

O registrador de banco de programa armazena o banco de memória para onde uma instrução deve ser buscada para execução. O registrador PC é usado para formar um endereço de 24-bits. Pode ser sobrescrito com valor proveniente do operando imediato de algumas instruções.

PC - Program Counter

O PC armazena o endereço da próxima instrução a ser executada pelo processador. Alterado a cada execução de acordo com o tamanho da instrução e também por instruções de controle de fluxo e interrupção. Seu registrador de banco PBR é usado para formar um endereço 24-bits.

O registrador P(PS) armazena as flags de status do processador. Após a execução de algumas instruções específicas, seus conteúdos são alterados para 0 ou 1 ou não sofrem alteração.

As flags na tabela abaixo são mostradas tanto para o modo nativo quanto para o modo emulação:

Tab. 6: Registrador PS
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 E=1
N V 1 B D I Z C
N V M X D I Z C E=0
Bit 7 - Negative

Armazena o status de sinalização contida no bit 7/15 do registrador acumulador A(C).

  1. 0: Positivo
  2. 1: Negativo
Bit 6 - V - Overflow

A flag V armazena o extravasamento de instruções aritméticas sinalizadas.

  1. 0: Overflow
  2. 1: Sem overflow
Bit 5 - M - Accumulator/Memory Select

  1. 0: 16-bits
  2. 1: 8-bits
Bit 4 - X - Index Register Select

A flag M seleciona o tamanho em bits do acumulador e dados em memória para operação.

  1. 0: 16-bits
  2. 1: 8-bits
Bit 3 - D - Modo Decimal

Essa flag é usada para configurar o tipo de operação realizada na adição ou subtração.

  1. 0: Binário
  2. 1: BCD
Bit 2 - I - IRQ Disable

A flag I é usada para configurar o reconhecimento de requisições de interrupção do tipo mascarável(IRQ).

  1. 0: IRQ Habilitada
  2. 1: IRQ Desabilitada
Bit 1 - Z - Zero

A flag Z indica se o valor contido no acumulador é igual a zero.

  1. 0: Overflow
  2. 1: Sem overflow
Bit 0 - C - Carry

A Carry armazena o status de empréstimo ou “vai-um” em operações aritméticas, bits menos/ mais significativos em operações de deslocamento e rotação.

  1. Adição:
  2. 0: não extravasamento
  3. 1: houve extravasamento
  1. Subtração:
  2. 1: sem empréstimo
  3. 0: houve empréstimo
Bit 0 - Flag E - Emulation

A flag E é uma flag lógica ou fantasma que armazena a configuração do modo de operação do processador.

  1. 0: modo nativo
  2. 1: modo emulação

No hard reset do 65816, seus registradores e modos são iniciados para o modo emulação (e=1) como listados abaixo:

  1. flag E <- 1. Modo emulação
  2. PS:
  3. M <- 1
  4. X <- 1
  5. D <- 0
  6. I <- 1
  7. A/B: indefinido
  8. X e Y: 00??
  9. D: 0000h
  10. DBR: 00h
  11. PBR:00h
  12. PC <- ($FFFC) ;Modo emulação

A configuração do modo Nativo do processador deve ser feito nas primeiras linhas de código, ou boot, como no trecho de código abaixo:

Ex:
CLC ; Carry <- 0
XCE ; E < - 0
REP #$30	; M/X <- 0
; configurações áudio
; configurações vídeo
; configurações mapeamento
; outras
  1. 24/02/2026 - versão inicial: Registradores, flags e valores iniciais