Excepções
Designam-se por excepções os eventos a que o processador é sensível e que constituem alterações, normalmente pouco frequentes, ao fluxo normal de instruções de um programa.
As excepções podem ter origem externa (correspondentes à activação de pinos externos do processador) ou interna (decorrentes tipicamente de erros na execução das instruções).
Existem alguns pinos do PEPE (INT0 a INT3) que originam excepções explicitamente para interromper o fluxo do programa com o fim de lidar com eventos assíncronos ao programa e associados tipicamente com os periféricos. Essas excepções designam-se por interrupções.
A cada excepção está associada uma rotina de tratamento da excepção (ou rotina de serviço da excepção, ou simplesmente rotina de excepção), cujo endereço consta da Tabela de Excepções, que contém uma palavra (o endereço da rotina de tratamento) para cada uma das excepções suportadas pelo processador.
A Tabela de Excepções começa no endereço indicado pelo registo BTE (Base da Tabela de Excepções), que deverá ser previamente inicializado com um valor adequado.
A tabela seguinte descreve as excepções que o PEPE suporta.
Endereço |
Excepção |
Causa |
Ocorre em |
Mascarável |
Atendimento |
Prioridade |
0002H |
INT0 |
O pino INT0 do processador é activado (com IE=1, IE0=1). |
Qualquer altura |
Sim |
Após instrução em que ocorre |
2 |
0004H |
INT1 |
O pino INT1 do processador é activado (com IE=1, IE1=1). |
Qualquer altura |
Sim |
Após instrução em que ocorre |
3 |
0006H |
INT2 |
O pino INT2 do processador é activado (com IE=1, IE2=1). |
Qualquer altura |
Sim |
Após instrução em que ocorre |
4 |
0008H |
INT3 |
O pino INT3 do processador é activado (com IE=1, IE3=1). |
Qualquer altura |
Sim |
Após instrução em que ocorre |
5 |
000AH |
EXCESSO |
Uma operação aritmética gera excesso (overflow) se TV=1 no RE |
Execução |
Sim |
Imediato |
1 |
000CH |
DIV0 |
Uma operação de divisão falha por o quociente ser zero se TD=1 no RE |
Execução |
Sim |
Imediato |
1 |
000EH |
SOFTWARE |
A instrução SWE (Software Exception) é executada. Usada tipicamente como chamada ao sistema operativo |
Execução |
Não |
Incluído na execução da instrução |
7 |
0010H |
COD_INV |
A Unidade de Controlo encontra uma combinação inválida de opcode. Pode ser encarada como uma excepção SWE com opcode próprio e portanto permite extender o conjunto de instruções por meio de software (rotina de excepção que verifica qual o opcode que gerou a excepção e invoca uma rotina adequada). |
Descodifi-cação |
Não |
Incluído na descodificação da instrução |
7 |
0012H |
D_DESALINHADO |
É feito um acesso de 16 bits à memória (dados) especificando um endereço ímpar |
Execução |
Não |
Imediato |
1 |
0014H |
I_DESALINHADO |
É feita uma busca à memória (fetch) tendo o PC um endereço ímpar |
Busca |
Não |
Encadeado |
6 |