Você está na página 1de 14

Interrupo no Microprocessador Intel 8086/8088

INTERRUPO NO MICROPROCESSADOR INTEL 8086/8088


Este material dedicado descrio do mecanismo de interrupo do microprocessador 8086/8088. Muito embora o objetivo seja proporcionar um conhecimento dos conceitos relacionados com o tema Microprocessadores em geral, impossvel obter uma compresso satisfatria sem dedicar ateno a algumas particularidades do microprocessador que serve como base para o curso. Apesar da descrio subsequente estar orientada famlia Intel, todos os aspectos conceituais relacionados implementao de um mecanismo de interrupo em sistemas baseados em microprocessadores sero abordados de tal maneira, que o estudo deste material facilitar a do mecanismo de interrupo de outro microprocessador, com que o estudante eventualmente venha a trabalhar no futuro. O comportamento do processador quanto ao procedimento de interrupo apresentado inicialmente. Em seguida apresentada uma introduo ao Controlador de Interrupo 8259A que deve ser complementada com a leitura do Data Sheet da Intel sobre o Controlador de Interrupo 8259. Para facilitar a compreenso daquele Data Sheet, faz-se neste texto um esclarecimento sucinto sobre os principais modos de operao do Controlador.

1. Tipos de Interrupo no 8086/8088


O 8086 e o 8088 tm um sistema de interrupo simples e verstil. A cada tipo de interrupo associado um cdigo de oito bits, chamado nmero do vetor de interrupo. Os microprocessadores possuem portanto at 256 tipos diferentes de interrupo, o nmero do vetor de interrupo pode assumir um valor entre 0 e 255. As interrupes podem ser divididas segundo a classificao abaixo: interrupes externas interrupo por software interrupo internas interrupo por erro de execuo interrupo passo - a - passo

Interrupo no Microprocessador Intel 8086/8088

1.1 Interrupes Externas O 8086 e o 8088 tm dois terminais (pinos) pelos quais dispositivos externos podem solicitar interrupo ao microprocessador: os pinos INTR (Interrupt Request) e NMI (Non Maskable Interrupt). A linha INTR usualmente ligada a um Controlador de Interrupo. Este dispositivo externo recebe solicitaes vindas de dispositivos de E/S. Ele determina qual dispositivo solicitante possui a maior prioridade, e ativa a linha INTR do microprocessador. INTR Quando INTR ativado, o microprocessador adota uma entre duas possveis aes, dependendo do estado do flag IF. Nada acontece, contudo, at que a instruo que est sendo executada seja completada. Se IF estiver desativado, significando que as solicitaes de interrupo pela linha INTR esto mascaradas, o microprocessador ignora a solicitao e prossegue na execuo das instrues. Para que uma solicitao de interrupo seja atendida preciso que o sinal no pino INTR seja mantido ativo at ser reconhecido pelo microprocessador. Se as interrupes pela linha INTR esto habilitadas (flag IF ativo), o microprocessador reconhece a solicitao e a atende. As solicitaes de interrupo so habilitadas pela execuo da instruo STI (set interrupt mask) e desabilitadas pela execuo da instruo CLI (clear interrupt mask). O microprocessador reconhece uma solicitao de interrupo externa executando dois ciclos de reconhecimento de interrupo (interrupt acknowledge INTA). Estes ciclos so muito semelhantes a um ciclo de leitura, com a diferena de que o sinal INTA ativado, ao invs do sinal de leitura ( MRDC ), que permanece inativo durante todo o ciclo (vide figura 1). No primeiro ciclo de reconhecimento de interrupo o microprocessador no l na verdade nenhuma informao. A funo deste primeiro ciclo de reconhecimento exclusivamente preparar o controlador de interrupo para fornecer no prximo ciclo de reconhecimento o cdigo que identifica o tipo de interrupo solicitada. No segundo ciclo de reconhecimento, ento, o microprocessador l do barramento de dados o cdigo que identifica o tipo de interrupo. Este valor deve ser fornecido pelo Controlador de Interrupo. O tempo que decorre desde que gerada uma solicitao de interrupo externa at o momento em que reconhecida, depende de quantos perodos de relgio ainda restam para completar a execuo da instruo corrente. Em alguns casos infreqentes, este tempo de espera poder se estender por mais de uma instrues. NMI Uma solicitao de interrupo tambm pode chegar por outro pino do microprocessador, o pino NMI (Non Maskable Interrupt). Este pino sensvel a transio, ao contrrio da linha INTR, que sensvel a nvel. Este sinal do microprocessador normalmente usado para informar o microprocessador de um evento catastrfico", tal como a iminente falta de energia eltrica, deteco de erro de memria ou erro de paridade do barramento. As interrupes solicitadas por NMI no podem ser desabilitadas e tm maior prioridade do que as solicitaes feitas pela linha INTR. Se uma solicitao de interrupo chega a cada uma destas linhas durante a execuo de uma instruo, NMI ser reconhecida primeiro. O microprocessador no precisa ser informado do tipo da interrupo nas
2

Interrupo no Microprocessador Intel 8086/8088

solicitaes que chegam por NMI. Tais interrupes so prdefinidas como sendo do tipo 2. O microprocessador no gera portanto ciclos de reconhecimento de interrupo.

Figura 1: Diagrama temporal para a CPU 8086 operando no modo mximo para os ciclos de escrita e reconhecimento de interrupo. 1.2 Interrupes internas Nesta classe de interrupes no gerado sinal de solicitao de interrupo em nenhum dos pinos do microprocessadores. Uma outra caracterstica que o cdigo do tipo de interrupo gerado internamente pelo prprio microprocessador, tornando-se portanto suprfluo os ciclos de reconhecimento de interrupo. As interrupes internas podem ser divididas em trs grupos: Interrupes por software Instruo INT d8: esta instruo gera uma interrupes imediatamente aps ter sido completada sua execuo. O cdigo com o tipo da
3

Interrupo no Microprocessador Intel 8086/8088

interrupo faz parte da prpria instruo (d8). Instruo INTO: gera uma interrupo do tipo 4, caso o flag de overflow OF esteja ativado.

Interrupes por erro de execuo O microprocessador CPU gera ainda uma interrupo do tipo 0 imediatamente aps a execuo da instruo DIV ou IDIV, se o quociente calculado no pode ser representado no nmero de bits do operando designado na instruo para receb-lo. Interrupo para execuo passo-a-passo Quando o flag armadilha (trap flag) est ativado o microprocessador gera uma interrupo do tipo 1 aps cada instruo. Isto chamado de modo de execuo passo-a-passo, muito utilizado pacotes de software de depurao de programas. As interrupes internas (INT, INTO, erro na diviso ou passo-a-passo) compartilham as seguintes caractersticas: 1. cdigo do tipo de interrupo est contido na prpria instruo ou prdefinido, 2. no ocorrem ciclos de reconhecimento de interrupo, 3. interrupes internas no podem ser desabilitadas, exceto a interrupo passo-apasso, e 4. qualquer interrupo interna (exceto a passo-a-passo) tm maior prioridade do que qualquer interrupo externa. Se uma solicitao de interrupo chega a NMI ou a INTR durante a execuo de uma instruo que causa uma interrupo, a interrupo interna processada em primeiro lugar.

2 Procedimento nas Interrupes Externas no 8088/8086


Nesta seo so apresentados para o caso do microprocessador 8088/8086 todos os passos envolvidos desde o instante em que uma solicitao atendida at o momento em que a respectiva rotina de atendimento comea a ser executada. 1 Reconhecimento de Interrupo Como j foi mencionado na seo anterior, ao reconhecer uma interrupo o 8088/8086 gera dois ciclos de reconhecimento de interrupo. Estes tm praticamente o mesmo comportamento de um ciclo de leitura (fig. 1). Uma diferena entre os ciclos de reconhecimento de interrupo e um ciclo de leitura que ao invs de ser ativada a linha ( MRDC ), nos ciclos de reconhecimento de interrupo a linha INTA ativada. A figura 1 mostra o comportamento dinmico dos sinais nos pinos CLK, AD0AD7, ALE, INTR, INTA , MWTC do microprocessador 8088/8086 nos ciclos de reconhecimento de interrupo. O primeiro ciclo de reconhecimento tem um o papel de meramente dar tempo ao Controlador de Interrupo para executar certas aes que sero descritas na seo 4. O Controlador de Interrupo se apercebe deste ciclo de reconhecimento e se prepara para fornecer no ciclo de reconhecimento subsequente o nmero do vetor
4

Interrupo no Microprocessador Intel 8086/8088

de interrupo. No segundo ciclo de reconhecimento o microprocessador l das linhas AD0AD7 o nmero de vetor de interrupo que identifica quem gerou a interrupo. Este valor deve ser fornecido Controlador de Interrupo. 2 Salvamento do endereo de retorno Antes de salvar o endereo de retorno, este microprocessador guarda na pilha o contedo dos flags. Em seguida armazenado o endereo de retorno. No 8086/88 a funo de contador de programa exercida por dois registradores: o IP (instruction pointer) e o CS (code segment register). Assim, o salvamento do endereo de retorno implica no armazenamento na pilha do contedo destes dois registradores. Este processador possui duas instrues de retorno: uma para subrotinas convencionais (RET) e outra para rotinas de atendimento de interrupo (IRET). A instruo RET s desempilha o endereo de retorno, enquanto a instuo IRET desempilha tambm os flags. 03FF 03FC

0007 0004 0003 0000 Figura 2: Tabela de Ponteiros de Interrupo 3 Clculo do endereo do vetor de interrupo O nmero do vetor de interrupo serve como ndice para a tabela que contm os chamados vetores de interrupo. Esta tabela chamada na documentao da Intel Tabela de Ponteiros de Interrupo (interrupt pointer table). Tem o formato mostrado na figura 2 e ocupa o primeiro Kbyte do espao de endereamento de memria. Cada vetor de interrupo ocupa 4 bytes, o que implica em que a tabela pode conter at 256 vetores de interrupo diferentes. O 8088/86 multiplica internamente o nmero do vetor de interrupo por 4. O resultado desta multiplicao prprio endereo do vetor de interrupo na memria.

.4 Leitura do vetor de interrupo O 8088/86 utiliza o valor calculado para acessar a memria e buscar as duas palavras do vetor de interrupo. Isto envolve no 8088 4 acessos memria, e no 8086 apenas dois acessos. 5 Desvio para a rotina de atendimento As duas palavras do vetor de interrupo lido da tabela de interrupo so
5

Interrupo no Microprocessador Intel 8086/8088

carregadas em IP e CS.

3 Rotinas de Interrupo
As rotinas de interrupo so tambm chamadas de rotinas de atendimento de interrupo, ou rotinas de servio de interrupo. Alm de tratarem do atendimento ao dispositivo que gerou a solicitao, elas devem executar algumas aes exigidas pelo mecanismo de interrupo. So elas Habilitar o processador para outras interrupes: Quando a execuo de uma rotina de interrupo iniciada, os flages, e o contedo dos registradores CS e IP tero sido carregados na pilha. Alm disso, os flages TF e IF so automaticamente desativados. Desta forma, o microprocessador no poder mais atender solicitaes de interrupes geradas na linha INTR, e a execuo passo-a-passo estar suspensa. Estas interrupes s sero habilitadas pela execuo das instrues STI ou por qualquer outra instruo que aletere TF no registrador de estado. Uma rotina de interrupo pode, contudo, ser interrompida por uma solicitao que chegue pelo pino NMI. Interrupes por software e as interrupes geradas por erros na execuo podem tambm interromper a execuo de uma rotina de atendimento de interrupo, independentemente do estado do flag IF. A rotina de atendimento deve portando incluir uma instruo do tipo STI, a partir do ponto de seu cdigo em que se admite que o processador atenda outras solicitaes de interrupo. Constitui boa poltica desabilitar interrupes externas estritamente em trechos crticos do cdigo das rotinas de interrupo, aquelas sees que no podem ser interrompidas sob risco de produzir resultados errneos. Por outro lado, se as interrupes externas permanecerem desabilitadas por perodos muito longos, pode-se perder uma solicitao colocada em INTR. Salvar os registradores utilizados no corpo da rotina: De modo semelhante ao que ocorre com todas as subrotinas, as rotinas de interrupo devem logo no incio salvar na pilha o contedo de todos os registradores que ela altera durante sua execuo. Isto se faz pela incluso de instrues PUSH. Corpo da Rotina O corpo da rotina contm as instrues que tratam o dispositivo que gerou a interrupo e portanto especfico de dispositivo e aplicao. Alm de atender o dispositivo externo que gerou a solicitao de interrupo, a rotina de atendimento poder ter que gerar comandos ao dispositivo para que este retire a solicitao de interrupo. Comunicao com o Controlador de Interrupo O cdigo da rotina de atendimento deve conter instrues para leitura do estado ou envio de comando para o Controlador de Interrupo. Para
6

Interrupo no Microprocessador Intel 8086/8088

compreender que instrues Sheet.

so estas, recomenda-se a leitura do Data

Restaurar os registradores utilizados no corpo da rotina: Os registradores salvos no incio, devem ser restaurados no final da rotina, atravs de instrues do tipo POP. Retorno ao programa interrompido: A ltima instruo de todas as rotinas de interrupo deve ser a instruo IRET. Esta instruo retira da pilha o contedo de IP e CS, retornando na prtica instruo cuja execuo estava para ser iniciada quando a interrupo comeou a ser atendida. Alm disso, a instruo IRET restaura tambm o contedo do registrador de estado. Isto implica, entre outras coisas, que os flags IF e TF sero habilitados novamente.

4. Introduo ao Controlador de Interrupo 8259A


O texto precedente mencionou o importante papel de um dispositivo externo ao microprocessador no mecanismo de interrupo, Controlador de Interrupo. Um dos mais utilizados controladores de interrupo o 8259A. Computadores pessoais mais modernos no utilizam diretamente este Circuito Integrado em seu projeto, mas muitos dos circuitos utilizados com esta finalidade implementam exatamente as mesmas funes do 8259A, no que diz respeito aos modos de operao e ao conjunto de comandos e informaes de estado. Justifica-se, portanto, a apresentao a seguir sobre o 8259A. Para compreender o funcionamento deste dispositivo adequadamente, faz-se necessrio o estudo do Data Sheet do 8259A. Este documento pressupe que o leitor domine alguns conceitos relativos ao mecanismo de interrupo. Esta seo tem o objetivo de apresentar alguns conceitos adicionais, de modo a facilitar a compreenso do Data Sheet. Sugere-se a nota de aplicao AP-59 Using the 8259A Programmable Interrupt Controller da Intel como leitura auxiliar.

4.1 Configurao Bsica A figura 3 mostra a configurao bsica de um sistema que utiliza o 8086 juntamente com o Controlador de Interrupo 8259A. Note-se que se trata de um dispositivo de E/S ligado ao barramento do sistema da forma usual. O pino de endereo A0 est ligado ao barramento de endereo, assim como os 8 pinos de dados D0-7 esto ligados ao barramento de dados do sistema. Como se trata de um dispositivo de E/S, os pinos RD e WR esto ligados s linhas IORDC e AIOWC . O pino CS recebem sinal gerado por um decodificador de endereo, no presente na figura.
7

Interrupo no Microprocessador Intel 8086/8088

Figura 3: Configurao Bsica de um sistema que utiliza um 8259A. importante atentar para os sinais INT, INTA e o conjunto de linhas IR0-IR7. Os dispositivos de E/S geram solicitaes de interrupo ao ativar uma das linhas IR0-IR7 do Controlador de Interrupo. A cada uma destas linhas est associado um nvel de prioridade, que levado em conta de vrias formas pelo 8259A. O 8259A possui ainda um registrador interno atravs do qual as linhas IR0-IR7 podem ser mascaradas individualmente pelo microprocessador, atravs de instrues do tipo OUT port,AL. Quando pelo menos um dos sinais IR0-IR7 no mascarados ativado, o 8259A ativa sua sada INT que, como se pode ver na figura 3, deve estar ligada linha INTR do microprocessador. Desta forma, o microprocessador levado a interromper a execuo do programa corrente e atender a solicitao. Note-se ainda que o 8259A possui um pino INTA que ligado diretamente ao pino de mesmo nome do controlador de barramento 8288. Como se viu, h certa altura o microprocessador gera, no caso atravs do 8288, os dois ciclos de reconhecimento de interrupo. No segundo ciclo o 8259A coloca nos 8 bits menos significativos do barramento de dados o cdigo correspondente solicitao no mascarada ativada na sua linha IR de maior prioridade. 4.2 Modos de Operao do 8259A O controlador de interrupo 8259A pode operar em sistemas baseados no microprocessadores 8080/8085 e 8086/8088. Esta seo se restringir a considerar a operao do 8259A com sistemas baseados no microprocessadores do segundo tipo.
8

Interrupo no Microprocessador Intel 8086/8088

O Data Sheet do 8259A apresenta 5 modos de operao: Modo Cascata Modo Bufferizado Modo Totalmente Aninhado, Moto Totalmente Aninhado Especial, e Modo Mscara Especial. O modo cascata deve ser ativado quando mais de um 8259A esto cascateados no sistema para criar um nmero de linhas de solicitao de interrupo superior a 8. O modo bufferizado prov um mecanismo de controle para buffers de dados, quando se tem um sistema de complexidade mdia para alta. Os trs ltimos modos de operao esto relacionados com a operao do mecanismo de prioridade. Um 8259A opera em apenas um destes trs modos. Convm aqui deter-se um pouco para esclarecer o primeiro e cada um dos trs ltimos modos. 4.2.1 Modo Cascata - Cascade Mode O 8259A pode ser cascateado de modo a prover aos dispositivos de E/S do sistema mais do que 8 linhas de solicitao de interrupo. Em tais casos o sistema consiste de um 8259A agindo como mestre de at 8 controladores que agem como escravos. A figura 4 mostra como feita a ligao em hardware entre o mestre e os escravos. Observe que o pino INT de cada escravo ligado diretamente a um pino IR do mestre. As linhas CAS0-2 so ligadas todas em curto para todos os controladores. Estes pinos funcionam como sadas para o mestre e como entrada para os escravos. Por estas linhas o mestre indica a cada primeiro ciclo de reconhecimento de interrupo, qual o escravo que deve colocar na barra de dados, durante o segundo ciclo de reconhecimento, o nmero do vetor de interrupo correspondente. Observe ainda que todos os 8259A esto ligados ao sinal INTA do barramento de controle. Os demais pinos esto ligados aos barramentos do sistema. Durante a programao necessria para iniciar cada controlador de interrupo, o mestre ser informado em quais de suas linhas IR est ligado o pino INT de um escravo. Durante a iniciao de cada escravo, o microprocessador deve informar a cada escravo a qual linha IR do mestre ele est conectado.

Interrupo no Microprocessador Intel 8086/8088

Figura 4: Esquema da ligao em hardware de 8259A cascateados. Faz ainda parte do procedimento de iniciao, a indicao para cada 8259A presente no sistema, seja ele mestre ou escravo, qual o nmero do vetor de interrupo associado a cada uma de suas linhas IR. O procedimento de interrupo no modo cascata envolve os seguintes passos. Suponhamos que uma entrada IR de um escravo recebe uma solicitao de interrupo. Admitindo que esta solicitao escolhida pelo seu mecanismo de prioridade para ser atendida, o escravo repassa a solicitao a uma das linhas IR do mestre atravs de seu pino INT. Admitindo novamente que o mecanismo de prioridade do mestre elege esta solicitao para ser atendida, o mestre repassa a solicitao ao processador por sua sada INT. Em algum instante posterior o microprocessador gerar os ciclos de reconhecimento. Do ponto de vista do microprocessador os ciclos de INTA so idnticos independentemente de o controlador de interrupo operar ou no em cascata. Assim, no primeiro pulso de INTA , o 8259A mestre coloca em suas linhas CAS0-2 o cdigo da sua linha IR que est sendo atendida. Se no h escravo ligado a esta linha, o prprio mestre cuidar de fornecer o nmero do vetor correspondente no segundo ciclo de reconhecimento. Se a esta linha estiver ligado um escravo, o segundo ciclo de reconhecimento de interrupo ser respondido por este escravo. No segundo pulso de INTA , o escravo indentificado pelo cdigo em CAS0-2 coloca no barramento de dados o nmero do vetor de interrupo associado sua linha IR por onde chegou a solicitao original. .

10

Interrupo no Microprocessador Intel 8086/8088

4.2.2 Modo Totalmente Aninhado - Fully Nested Mode O modo totalmente aninhado est ativo aps o procedimento de RESET. Logo aps ao procedimento de iniciao, associada linha IR0 a maior prioridade e a IR7 o menor nvel de prioridade. O modo totalmente aninhado no est, contudo, vinculado a esta distribuio de prioridade, sendo compatvel com situaes em que a prioridade est distribuda de outra forma entre as linhas. De um modo geral, quando uma solicitao de interrupo reconhecida, o Controlador de Interrupo marca a linha que est sendo atendida num registrador interno de 8 bits (um bit para cada linha IR) chamado ISR (in service register). Assim que o 8259A coloca o nmero do vetor de interrupo no barramento de dados no segundo ciclo de reconhecimento, o correspondente bit de ISR ativado. Este bit de ISR permanece ativo at que um comando especial (end of interrupt EOI ) seja enviado pelo microprocessador ao 8259A, em algum ponto da execuo da rotina de atendimento. As diversas formas de gerar os comando EOI so discutidas no Data Sheet. No modo totalmente aninhado, enquanto uma solicitao estiver sendo atendida, todas as subsequentes solicitaes de interrupo com prioridade igual ou inferior estaro inibidas. Uma solicitao de maior prioridade poder, no entanto, gerar uma interrupo. Deve-se lembrar neste ponto que, do ponto de vista do microprocessador, uma solicitao de interrupo s ser honrada, se o flag IF estiver ativo. Assim que uma interrupo atendida, este flag automaticamente desativado. 4.2.4 Modo totalmente Aninhado Especial - Special Fully Nested Mode Considere um sistema operando em cascata em que tanto mestre quanto escravos operam no modo totalmente aninhado. Considere ainda a situao em que um escravo recebe uma solicitao de interrupo de maior prioridade do que uma outra que est sendo servida, oriunda do mesmo escravo. Este escravo repassa a solicitao ao mestre. Neste procedimento o bit de ISR do mestre e o do escravo so ativados de modo coerente. Note que esta segunda solicitao no ser honrada pelo mestre. O seguinte raciocnio leva a esta concluso. O bit de ISR do mestre, correspondente ao escravo em questo, j est ativado, pois esta nova solicitao tem a mesma prioridade da que est sendo atendida. Com o mestre operando no modo totalmente aninhado, a solicitao vinda do mesmo escravo no ser repassada pelo mestre ao microprocessador. Claramente na situao descrita, a estrutura totalmente aninhada no funciona no nvel dos escravos. Se desejo do usurio manter uma estrutura totalmente aninhada para todo o conjunto, incluindo os escravos, deve ser usado o modo totalmente aninhado especial (special fully nested). Este modo programado somente no mestre, enquanto os escravos operaro em modo totalmente aninhado. Nesta condio, o mestre ignorar apenas as solicitaes de interrupo de menor prioridade, e aceitar as solicitaes de prioridade maior ou igual s que esto sendo atendidas. Nesta estrutura uma solicitao de maior prioridade vinda de um escravo pode interromper o atendimento de outra solicitao de menor prioridade vinda do mesmo escravo.
11

Interrupo no Microprocessador Intel 8086/8088

4.2.4 Modo de Mscara Especial - Special Mask Mode Na estrutura totalmente aninhada, descrita at aqui, todos os nveis de prioridade menores do que a da rotina em servio so inibidos. Em vrios casos prticos pode ser desejvel habilitar interrupes de mais baixa prioridade do que as rotinas em servio. Uma maneira de produzir este comportamento apresentada pelo modo de mscara especial (special mask mode). Neste modo o 8259A ignora apenas as solicitaes que estiverem mascaradas. Neste modo todo o controle quanto a que nvel de interrupo deve ou no ser ignorado feito definindo convenientemente a mscara do 8259A.

5. Exerccios
Leia o Data Sheet do 8259A e resolva os seguintes exerccios: 1 Questo: Escreva um trecho de programa em ASM86 que inicie um 8259 solitrio para operar em fully-nested-mode, sensvel a nvel. Os vetores de interrupo correspondentes esto armazenados a partir do endereo 120H. 2 Questo: Tem-se um sistema com um 8259 mestre ligado por sua linha IR3 a um 8259 escravo, operando o conjunto na estrutura fully-nested. Escreva um trecho de programa que faa o EOI adequadamente. Endereo do mestre/escravo=2XH/3XH. 3 Questo: As linhas do nico 8259 do sistema operam sensveis nvel em fully nested mode. Num ciclo de INTA o processador leu do 8259 o valor 32H. Determine como foi programada a 8259.(indicar os bits indeterminados com um "X"). 4 Questo: O 8259 pode operar em trs modos; fully nested, special fully nested e special mask. Para permitir que outras solicitaes de interrupo sejam atendidas, devese enviar ao 8259 um comando end-of-interrupt (EOI). Novamente trs possiblidades existem: specific, non-specific e automatic. Indique abaixo quais modos de operao so ou no compatveis com os comandos de EOI, explicando o por que nos casos negativos? 5 Questo: Voc tem um 8259 escravo ligado linha IR2 de um 8259 mestre. O mestre trabalha em special fully nested mode, enquanto o escravo opera em fully nested mode. Ambos operam com prioridade fixa. Escreva um trecho de programa em ASM86 que gere adequadamente os comandos de EOI para o mestre e para o escravo. O pino CS do escravo ativado para A7A6A5A4 = 1111 e o para o mestre para A7A6A5A4 = 0000. Os pinos A0 dos integrados esto ligados linha A0 do barramento de endereos.
12

Interrupo no Microprocessador Intel 8086/8088

6 Questo: Tem-se um sistema com um controlador de interrupo 8259 mestre (CIM) e quatro controladores de interrupo 8259 escravos (CISX, CISY, CISZ e CISW) ligados em cascata ao controlador mestre. A tabela abaixo mostra a ICW1, a ICW2 a ICW3 e a OCW1 com que foram programados cada um. As OCW1s so enviadas aos controladores uma nica vez ao logo de todo o processamento. A tabela mostra tambm o contedo dos respectivos registradores IRR e ISR num determinado instante. Observe que a tabela no fornece o valor de alguns bits do IRR do mestre. Admita que neste sistema todos os sinais ativos aplicados s linhas IR dos controladores permanecem neste estado at serem atendidas as respectivas solicitaes. Admita que o contedo dos registradores contidos na tabela no se alterar at a chegada de um eventual pulso de INTA. Determine, se nesta condio a CPU 8086 poder vir a gerar ciclos de reconhecimento de interrupo e, em caso afirmativo, quais sero os valores colocados na barra de dados em cada ciclo de INTA, considerando que a) opera-se em modo 8086 e que o controlador mestre opera em modo Special Fully Nested, enquanto todos os escravos operam no modo Fully Nested. b) escravo e mestre operam em modo Fully Nested. CI CIM CISx CISy CISz ICW1 ICW2 ICW3 OCW1 IRR ISR

10011101 00010110 01110100 00010110 1???0?00 01000000 01011001 01001111 00000101 10010110 00100100 00100100 00100100 00101001 00000010 01100000 10001000 00001000 01111001 10010011 00000100 00100000 10010000 01010000

CISw 11111101 10101110 00000110 01001011 00011000 00100000 7 Questo: Voc tem a seu sistema dois 8259, um mestre e outro escravo. O escravo est ligado linha IR0 do mestre. Os bits 0, e 3 a 7 de IRR, ISR e IMR do mestre so zero. O escravo opera em fully-neted-mode. Mestre e escravo operam com prioridade fixa. Nesta situao so gerados dois ciclos de INTA, sendo que no segundo ciclo de INTA colocado na barra de dados o valor 1111 1010. Quais so todas as configuraes possveis dos bits 1 e 2 destes registradores imediatamente antes destes ciclos de INTA, considerando que: a) o mestre opera em fully-neted-mode, b) o mestre opera em special-fully-neted-mode, e c) o mestre opera em special-mask-mode.

8 Questo: Considere que temos num sistema uma 8259 mestre ligada a quatro 8259 escravos.
13

Interrupo no Microprocessador Intel 8086/8088

A tabela mostra as ICW3 e a OCW1 com que foram programadas e ainda o contedo de IRR e ISR de cada escravo. Admita que todas funcionam com prioridade fixa. Determine o contedo de IRR do mestre e justifique, admitindo que todos os escravas operam em: a) fully-neted-mode, b) special-fully nested-mode, e b) special-mask-mode. ICW3 OCW1 IRR ISR ESCRAVAX 00000000 11100111 00110100 00011000 ESCRAVAY 00000010 10100100 10010000 01001000 ESCRAVAZ 00000100 00100100 00110100 01001100 ESCRAVAW 00000110 00000101 11100010 01100000 9 Questo: Voc tem um sistema baseado no 8086 que possui um 8259 mestre a cujo pino IR2 est ligado um 8259 escravo. Sabe-se que o sistema deve operar mantendo a estrutura fully-nested do conjunto. O mestre cobre os vetores de interrupo 20H e 27H, enquanto o escravo 70H a 7FH. O escravo est localizado numa placa remota recebendo do mestre a informao do nmero do escravo pela prpria barra de endereos. CS do mestre/escravo ativos para A7A6 = 11/01. Escreva as rotinas. a) IMSTR que inicia o mestre e mascara todas as linhas IR mpares do mestre. b) ISLAV que inicia o escravo e mascara todas as linhas IR pares do escravo. 10 Questo: Um sistema tem um 8259 mestre cujo CS ativado em A7A6A5A4 = 1111. a) escreva a rotina LEISR que devolva em AL o contedo de ISR do 8259 b) escreva a rotina LEIMR que devolva em AL o contedo de IMR do 8259 c) escreva a rotina LEIRR que devolva em AL o contedo de IRR do 8259 d) escreva a rotina FNM que aplique o mesmo algoritmo empregado pelo 8259, operando em fully-nested-mode para decidir qual das linhas IR ser atendida. A rotina deve retornar em AL o ndice da linha IR. e) escreva a rotina SFNM que aplique o mesmo algoritmo empregado pelo 8259, operando em special-fully-nested-mode para decidir qual das linhas IR ser atendida. A rotina deve retornar em AL o ndice da linha IR. f) escreva a rotina SMM que aplique o mesmo algoritmo empregado pelo 8259, operando em special-mask-mode para decidir qual das linhas IR ser atendida. A rotina deve retornar em AL o ndice da linha IR.

14

Você também pode gostar