Escolar Documentos
Profissional Documentos
Cultura Documentos
Interrupes
Uma interrupo equivalente a uma chamada de procedimento. A chamada equivalente a um CALL gerado pela execuo de uma instruo. As interrupes so casos especiais de chamadas de procedimentos. Em ambos os casos o procedimento que executado designa-se rotina de servio interrupo ou interrupt handler. O retorno do procedimento ou rotina de servio interrupo feito com a instruo IRET.
109
As interrupes possveis numa CPU so normalmente pr-definidas numa TABELA DE VECTORES DE INTERRUPO.
Um VECTOR DE INTERRUPO um nmero de 4 bytes. A tabela de vectores de interrupo est armazenada nos primeiros 1K de memria (endereos de 0 a 3FFh).
Existem 256 vectores diferentes de interrupo. Cada vector contem o endereo do procedimento de servio interrupo (valores para IP e CS). Primeiros 2 bytes tm o IP e os 2 ltimos bytes o CS.
110
111
113
114
115
Interrupes de software:
so meras instrues assembly do CPU - INT n geram um apontador para uma posio da tabela de vectores de interrupo tal como uma interrupo de hardware. Exemplo: IRQ0 - salta para a posio 08h da tabela de vectores de interrupo INT 8 - emula o IRQ0, saltando para a mesma posio da tabela O MS-DOS utiliza as interrupes de software 20h a 3Fh para comunicao com os seus mdulos e com as aplicaes
116
117
O pino INTR utilizado para desencadear, atravs de um sinal externo, um dos 256 tipos de interrupo (geralmente entre 20H - 0FFH). Estas interrupes podem ser mascaradas, atravs da colocao a zero da flag IF pela instruo CLI. Pode ser habilitada atravs da instruo STI.
118
Se a entrada NMI estiver activa, ocorre uma interrupo do tipo 2. O sinal INTA , tambm, um pino de interrupo, no entanto, utilizado como sada para responder ao pedido efectuado em INTR de modo a ser colocado, pelo perifrico, o nmero do tipo de vector de interrupo no barramento de dados D7 - D0.
119
Interrupo
Diviso por Zero NMI INTR Passo a Passo
Prioridade
Mais Elevada
Mais Baixa
Supondo que o pino INTR se encontra habilitado, e que recebe um sinal de interrupo durante uma operao de diviso que resulta numa diviso por zero. Como a interrupo gerada internamente (interrupo tipo 0) tem maior prioridade que a interrupo gerada pelo pino INTR, ser atendida a interrupo interna.
120
121
122
123
124
125
127