Objetivos
Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.
Interrupções
Interrupções são utilizadas para executar rotinas de tratamento para troca ou tratamento
de informações entre o 65816 e outros periféricos “ligados” a esse processador.
No modo emulação (E=1), o 65816 é compatível com as interrupções do 65(C)02 que podem ser
vistas em 6502: Interrupções e 6502:65C02.
O 65816 suporta as interrupções de hardware RESET, NMI, IRQ e ABORT, e as
interrupções de software COP e BRK. As quatro primeiras são assíncronas, enquanto as
duas últimas são síncronas.
A rotina de tratamento de cada tipo de interrupção deve salvar todos os registradores,
desabilitar e habilitar o reconhecimento de interrupções e indicar o seu término com as
instruções RTI.
VDI - Vetor de Interrupções
Os vetor de interrupções do 65816 é encontrado no primeiro banco de memória entre o endereço
00FFE0-FFE que pode ser visto na tabela abaixo com seus endereços, nomes, tipos e suas
prioridades:
Tab. 1: VDI 65816
| Vetor |
Nome |
Tipo |
Prioridade |
| 00FFE0,1 |
Reservado |
- |
- |
| 00FFE2,3 |
Reservado |
- |
- |
| 00FFE4,5 |
COP |
Software |
6 |
| 00FFE6,7 |
BRK |
Software |
5 |
| 00FFE8,9 |
ABORT |
Hardware |
2 |
| 00FFEA,B |
NMI |
Hardware |
3 |
| 00FFEC,D |
RESET |
Hardware |
1 |
| 00FFEE,F |
IRQ |
Hardware |
4 |
Diferente de seus antecessores, as interrupções IRQ/BRK finalmente têm seus vetores
de interrupção não mais compartilhados.
A flag I pode mascarar as interrupções IRQ, COP e BRK, mas não pode mascarar
ABORT e NMI.
Ex:
SEI ; desabilita
Quando ligado, o processador busca o endereço 16-bits do entry-point ou local onde
um programa deve iniciar para buscar a próxima instrução. Esse endereço está contido no vetor
de interrupção RESET, e é carregado no PC.
Fluxo automático:
RESB <- sinal
PS[I] <- 1
PS[D] <- 0
E <- 1 ;modo emulação
PS[M] <- 1
PS[X] <- 1
PBR <- 00
DBR <- 00
DPR <- 0000
SPH <- 01
PC <- ($FFEC)
A interrupção/Exceção ABORT ocorre quando há erro na leitura de memória ou em algum esquema de
gerenciamento de memória(MMU). Uma vez que uma ABORT ocorre, o fluxo de execução é transferido
para endereço 16-bits contido em seu vetor $00FFF8. Assim como a NMI, não é afetada pela flag I.
Fluxo automático:
ABORTB <- sinal
Termina instrução corrente. Registradores inalterados
(SP) <- PBR
(SP) <- PC ;instrução atual
(SP) <- PS
PS[I] <- 1
PS[D] <- 0
PBR <- 00
PC <- ($FFE8)
NMI - Non-Maskable Interrupt
A MNI é um tipo de interrupção de hardware não-mascarável que não pode ter seu
reconhecimento e execução negados. Uma vez que uma NMI ocorre, o fluxo de execução
é transferido para endereço 16-bits contido em seu vetor $00FFEA.
Fluxo automático:
NMIB <- sinal
Termina a instrução corrente
(SP) <- PBR
(SP) <- PC ;instrução atual
(SP) <- PS
PS[I] <- 1
PS[D] <- 0
PBR <- 00
PC <- ($FFEA)
O chip ou periférico que utiliza a NMI deve ter um mecanismo para desabilitar e habilitar o envio
de sinal para o pino NMI, inibindo assim a interrupção semelhante à ocorre com a IRQ.
Uma IRQ é uma interrupção de hardware do tipo mascarável que pode ter seu reconhecimento e
execução mascarados pela flag I quando a instrução CLI é executada.
Uma vez que uma IRQ ocorre, o fluxo de execução é transferido para o endereço 16-bits contido
em seu vetor $00FFEE.
Fluxo automático:
IRQB <- sinal
Termina a instrução atual
Se I = 1:
IRQ ignorada
Se I = 0:
(SP) <- PBR
(SP) <- PC ;instrução atual
PS[I] <- 1
PS[D] <- 0
(SP) <- PS
PBR <- 00
PC <- ($FFEE)
Uma IRQ pode ser mascarada ou ignorada pela COP ou BRK, pois I é setada(1)
automaticamente em seus fluxos.
A interrupção COP é acionada pela instrução de mesmo COP para troca de informações com
coprocessadores ligados ao 65816. Quando a COP é executada, o fluxo de execução é transferido
para endereço 16-bits contido em seu vetor $00FFE4.
Fluxo automático:
COP
Se I = 1:
COP ignorada
Se I = 0:
(SP) <- PBR
(SP) <- PC + 2 ;próxima instrução
(SP) <- PS
PS[I] <- 1
PS[D] <- 0
PBR <- 00
PC <- ($FFE4)
A instrução COP é uma instrução de dois bytes. Um byte imediato ou de controle é acompanhado
da instrução para armazenar informações para o coprocessador. O SP deve ser manipulado para
recuperar esse byte.
A interrupção COP pode ser mascarada por IRQ, BRK, ABORT e NMI.
A interrupção BRK é acionada pela instrução BRK tendo como finalidade a depuração ou alguma
rotina de tratamento do S.O, por exemplo. Quando BRK é executada, o fluxo de execução é
transferido para endereço 16-bits contido em seu vetor $00FFE6.
Fluxo automático:
BRK
Se I = 1:
BRK ignorada
Se I = 0:
(SP) <- PBR
(SP) <- PC + 2 ;próxima instrução
(SP) <- PS
PS[I] <- 1
PS[D] <- 0
PBR <- 00
PC <- ($FFE6)
A instrução BRK é uma instrução de dois bytes. Um byte imediato ou de controle é acompanhado
da instrução para armazenar informações para a depuração. O SP deve ser manipulado para
recuperar esse byte.
A interrupção BRK pode ser mascarada por IRQ, COP, ABORT e NMI.
Histórico de atualizações
- 26/02/2026 - versão inicial: Interrupções, VDI, RESET, NMI, IRQ, COP e BRK e ABORT
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.