Objetivos
Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.
Instruções de interrupção
As instruções de interrupções são responsáveis por forçar a geração de interrupções ou lançar interrupções
de acordo com situações de erro, debug e outros.
Visite o tópico VDI(Vetor e Interrupções)
onde os vetores TRAPV e TRAP estão explicados em caso de dúvida.
Tanto TRAP quanto TRAPV podem ser utilizados por sistemas operacionais. Porém, não são
de uso obrigatório para outros tipos de programas como jogos e aplicativos que não
são executados sobre um S.O.
Abaixo, a notação utilizada ao longo dos tópicos abordados nesta parte do tutorial:
Tab. 1: Notação utilizada
Símbolo |
Descrição |
|
|
<- |
Atribuição |
SSP |
SP em modo privilegiado |
S |
Flag Supervisor |
SR |
Status Register |
  |
  |
CCR |
|
- |
Não sofre alteração |
a |
Sofre alteração |
RESET - Jump Inconditionally - Pular Incondicionalmente
Com a instrução RESET podemos forçar o pino RESET do 68K fazendo com que todos os periféricos ligados
sejam resetados. Essa instrução trabalha em modo privilegiado e não tem efeito na operação do processador.
Operação
se S = 1
RESET
senao
TRAP
Endereçamento Origem
-
Tamanho do dado
-
CCR
X: -
N: -
Z: -
V: -
C: -
Sintaxe
RESET
Ex
;...
RESET
;...
RTE - Return From Interrupt - Retornar de Interrupção
A instrução RTE é utilizada restaurar/retornar o fluxo de execução após a execução
de uma interrupção continuando o fluxo anterior à chamada de uma interrupção.
Para restaurar o fluxo de execução, o registrador SR é restaurado a partir da pilha assim
como PC respectivamente. O fluxo continua a partir do PC restaurado.
Operação
SR <- (SP)
SP <- SP + 2
PC <- (SP)
SP <- SP + 4
Endereçamento Origem
-
Endereçamento Destino
-
Tamanho do dado
Longword
CCR
X: a
N: a
Z: a
V: a
C: a
Sintaxe
RTE
Ex
;...
;rotina para gerenciar interrupção
vetor_level1:
;...
RTE
STOP - Load SR e Stop - Carregar SR e Parar
Utilizando a instrução STOP podemos para a execução do 68k até que ele seja "acordado" por um
interrupção. Essa instrução é privilegiada.
A registrador SR recebe um valor Word imediato, o PC avança para a próxima instrução e o processador entra
em modo espera até que um interrupção de reset, Level 1-7 ou outra ocorra para acordar.
Um reset externo(Vetor #1) irá causar um reset geral reiniciando o processador e destruindo os dados
gerados na instrução STOP, PC e SR.
Operação
SR <- valor_imediato
PC <- proxima_instrucao
STOP
Endereçamento Origem
#imediato.W
Tamanho do dado
Word
CCR
X: a
N: a
Z: a
V: a
C: a
Sintaxe
STOP #imediato ; resetar CCR e I =7 e S = 1
Ex
STOP #2700
TRAP - Forçar interrupção
Utilizando a instrução TRAP podemos forçar o processo de interrupção. Essa instrução conta com 16 vetores
de interrupção contido no VDI, TRAP #0-15, que é passado como valor imediato para a instrução.
TRAP é utilizado para chamadas de sistemas operaciones ou támbem pode ser utilizada para fins de debug.
É de uso livre do usuário. Em um S.O, por exemplo, pode ser utilizada em modo privilegiado.
Apenas os 4 bits menos significativos do valor imediato contendo o vetor de traps é utilizado.
Operação
S <- 1
SSP <- SSP - 4
(SSP) <- PC
SSP <- SSP - 2
(SSP) <- SR
PC <- vetor_trap
Endereçamento Origem
#imediato.B
Tamanho do dado
Byte
CCR
X: -
N: -
Z: -
V: -
C: -
Sintaxe
TRAP #vetor_trap
Ex
MOVE D7, #$01 ; linha
MOVE D6,#$01 ; coluna
TRAP #15 ; posicionar cursor
TRAPV - Forçar interrupção para Overflow
A instrução TRAPV é semelhante a instrução TRAP, mas utiliza implicitamente
o vetor TRAPV #7 contido no endereço 0x000001C0 do VDI e funciona apenas quando a flag V é igual a 1.
TRAPV é utilizada para chamadas de sistemas operacionais para lidar com erros aritméticos de overflow sendo
o uso não obrigatório caso não haja.
Apenas os 4 bits menos significativos do valor imediato contendo o vetor de traps informado é utilizado.
Operação
S <- 1
SSP <- SSP - 4
(SSP) <- PC
SSP <- SSP - 2
(SSP) <- SR
PC <- vetor_trap
Endereçamento Origem
#imediato.B
Tamanho do dado
Byte
CCR
X: -
N: -
Z: -
V: -
C: -
Sintaxe
TRAP #vetor_trap
Ex
MOVE D7, #$01 ; linha
MOVE D6,#$01 ; coluna
TRAP #15 ; posicionar cursor
ILLEGAL - Forçar interrupção Ilegal
Assim como TRAP, a instrução ILLEGAL força o processo de interrupção, mas
para uma instrução ilegal
desviando o fluxo de execução para o endereço contido no vetor #4 do VDI que também é
invocada quando um opcode
ilegal é executado.
A ILLEGAL pode ser utilizada para fins de debug quando precisamos verificar se um trecho
de código executando quando não deveria.
Operação
SSP <- SSP - 4
(SSP) <- PC
SSP <- SSP - 2
(SSP) <- SR
PC <- vetor_4
Endereçamento Origem
-
Tamanho do dado
Longword
CCR
X: -
N: -
Z: -
V: -
C: -
Sintaxe
ILLEGAL
Ex
ILLEGAL
Histórico de atualizações
- 05/09/2024 - revisão 1 - Correção em introdução, link VDI e erros gramaticais
- 30/08/2024 - revisão 1 - Correção em links de objetivos
- 08/04/2024 - 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.