Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

O 65816 possui um barramento de memória de 24-bits o que permite o endereçamento de 16MB de bytes de memória ou endereços entre 000000h e FFFFFFh.

Os dados são armazenados em formato Little-Endian quando os tipos de dados 16-bits(word) ou 24-bits que são utilizados tanto para dados quanto para dados quanto endereços de memória.

Nesta parte do tutorial vamos discutir sobre a memória, modos de operação, armazenamento de dados, bancos de memória, registradores mapeados em memória e vetores de interrupção.

No modo emulação, o 65816 define uma memória endereçável de 64K. A forma "flat" pode ser vista abaixo:

Tab. 1: RAM modo E=1
Endereço Uso
0000-00FF Zero Page
0100-01FF Stack
0200-FFF9 IO/ROM/RAM
FFFA-FFFF Vetor de interrupções

Para mais informações sobre como a memória é organizada no modo emulação, visite 6502: Memória.

No modo nativo, a memória endereçável é de 16MB(24-bits). Em sua forma "flat" pode ser vista abaixo:

Tab. 2: RAM modo E=0
Endereço Uso
000000-00FFF9h Direct Page
00FFFA-00FFFFh VDI
010000-01FFFFh Stack
020000-FFFFFFh IO/RAM/ROM/SRAM

As páginas que antes eram de 256 bytes no processador 65(C)02 agora foram expandidas para bancos de 64KB no 65816. O termo Zero Page foi substituído pelo termo Direct Page.

Tab. 3: Bancos/Páginas de memória
Banco Endereço Uso
0 000000-00FFF9h Direct Page
00FFFA-00FFFFh VDI
1 010000-01FFFF Stack
2 020000-02FFFF Uso geral
(...) (...) (...)
FF FF0000-FFFFFF Uso geral

Os registradores DBR(X e Y) e PBR(PC) são usados para "alcançar" instruções e dados sendo carregados com o valor do Banco na tabela acima para formar endereços 24-bits.

Para código, caso o endereço da instrução ultrapasse o limite do banco, o efeito de wrap-around ou efeito circular ocorre. Para dados, o endereço para ultrapassar o limite do banco normalmente tendo o DBR apontando para o próximo banco.

A memória é vista como uma array de byte. Os dados 16/24-bits armazenados em memória utilizam o formato Little-endian(LE). Isso significa que um valor ou endereço tem seu byte menos significativo é armazenado primeiro seguido de seu byte mais significativo.

Abaixo, uma abstração da memória contendo os valores 1234h e 123456h armazenados no formato LE.

Tab. 4: valores LE.
RAM 00 01 02 03 04 05 06 07 (...)
0000 34h 12h - - - - - - (...)
0010 - - - - 56h 34h 12h - (...)

Quando valores 16/24-bits são carregados nos registradores são armazenados no formato Big-endian.

Semelhante aos antecessores, o 65816 não possui mapeamento de bancos de memória nativo, exceto Stack e Direct Page que possuem bancos ou páginas predefinidas de acordo com o modo de operação do processador.

Como um mapeamento de memória, podemos utilizar a memória para armazenar dados específicoss de acordo com os periféticos ou outros coprocessadores.

Abaixo, é mostrada uma tabela que contém um layout da memória em que suas áreas seguem o mapeamento definido por um hardware real.

Tab. 5: Mapeamento de memória
Banco Endereço Tamanho Uso
00-3F $0000-$1FFF 8K RAM
$2000-$20FF 256B -
$2000-$20FF 256B I/O
$2100–$21FF 4K I/O
$3000–$3FFF 256B I/O
$4000–$40FF 256B I/O
$4100–$41FF 256B -
$4200–$44FF 768B I/O
$4500–$5FFF 4K Não usado
$6000–$7FFF 8K Reservado
$8000-$FFFF 32K ROM

O hardware que utiliza o 65816 deve fornecer os chips necessários para os recursos de gerenciamento de bancos de memória.

Uma forma de se comunicar ou trocar informações com periféricos ligados ao processador é via registrador mapeado em memória. O 65816 não possui instruções de Input/Output como o 8086 da Intel.

Esses tipo de registrador possui um endereço fixo em memória destinado à leitura e escrita de dados de configuração ou processamento externo, por exemplo.

Tab. 6: Registrador em memória
Registrador Valor 8-bits
$4016 Joystick 1
$4017 Joystick 1
$43x0-$43xFh DMA
$2140-$2143 Áudio
$2115h-$2119 VRAM
Ex:
lda $4016 ; lê joystick 1
;checagem de botões pressionados

O hardware que utiliza o 65816 deve fornecer os chips e a documentação necessária para os recursos de registradores de I/O em memória.

O 65816 com seu barramento de memória de 24-bits e páginas de 64KB pode ter um chip MBC(Memory Bank Controller) "ligado" a ele para gerenciar seus 16MB de memória, como virtual, e carregar dados de outros tipos de memória em suas bancos expandindo assim sua memória.

Tab. 7: bancos de memória
Registrador Banco destino Uso Configuração
0 000000-00FFF0 Fixo
00FFF4-00FFFF VDI Fixo
1 010000-01FFFF Stack Fixo
2 020000-02FFFF Programação Fixo
3 030000-03FFFF Programação Fixo
4 040000-04FFFF Programação Fixo
(...) (...) (...) (...)
A 0A0000-0AFFFF Programação Fixo
B 0B0000-0BFFFF Áudio Trocável
C 0C0000-0CFFFF Vídeo Trocável
D 0D0000-0DFFFF SRAM Trocável
E 0E0000-0EFFFF SRAM Fixo

Cada MBC têm seu funcionamento particular sendo o funcionamento de registradores em memória utilizados para informar qual banco da memória física deve ser carregado e em qual banco de memória deve ser seu destinado.

Ex:
lda #$FF
sta $200B ; Banco B 

Sistemas operacionais e kernels podem utilizar bancos de memória para carregar partes de softwares com realocação código, sendo possível que seja executado a partir de qualquer banco.

Nenhum MBC nativo está disponível no 65816 ficando na responsabilidade do hardware que usa esse processador como sendo principal ou secundário.

Há uma região especial na memória para armazenar os ponteiros para as rotinas de tratamento de interrupções. Essa região contém o Interrupt Vector Table localizado no intervalo de endereço 00FFF4-00FFFF(E=0).

Tab. 8: VDI
Endereço Nome Tipo
00FFE0 Reservada -
00FFE2 Reservada -
00FFE4 COP Software
00FFE6 BRK Software
00FFE8 ABORT Hardware
00FFEA NMI Hardware
00FFEC RESET Hardware
00FFEE IRQ Hard/Soft

A vetor da interrupção COP foi adicionada ao 65816 estando disponível apenas no modo nativo. O vetor da interrupção ABORT foi adicionado ao seu antecessor 65C02.

O vetor IRQ/BRK do 65(C)02 agora foi separado em vetores distintos, evitando assim a necessidade de verificação de flag B e byte extra de da instrução BRK.

O vetor de interrupções(IVT) do 6502 bem como seus tipos de interrupções podem ser visto em 6502: Interrupções. O mesmo assunto, porém voltado para o 65816, pode ser visto em 65816: Interrupções.

  1. 24/02/2026 - versão inicial: Memória, Armazenamento, Mapeamento, registrador em memória, bancos e VDI