Specifications

MICROPROCESSADORES
O MICROPROCESSADOR 8086
1
Luís Miguel Charrua Figueiredo 1 - 13 E.N.I.D.H.
Interrupções não mascaráveis
O 8086 tem apenas um pino de
interrupto mascarável e que tem prioridade mais elevada que
os mascaráveis. Esta interrupção é activada no flanco ascendente.
A interrupção NMI deve ter uma duração mínima de 2 ciclos de
clock, mas não é necessário que
esteja sincronizada com este. Na transição 0-1 deste pino, é activada a
latch interna do
processador, e a interrupção será atendida no fim da instrução actual, ou entre movimentos de
instruções de bloco.
Interrupções mascaráveis (INTR)
O 8086 tem apenas uma entrada de interrupção mascarável (INTR). Que pode ser mascarada
(codificada) internamente por
software.
Esta interrupção é activada por nível, e é internamente sincronizada com cada ciclo de
clock no
seu flanco ascendente. Para ser atendida, deve estar a ‘1’ durante o último ciclo de
clock do final
da instrução corrente, ou no final das instruções de movimento de bloco.
Durante a sequência de resposta a INTR, todas as outras interrupções são desabilitadas. E é feito
um
reset ao bit de enable como resposta a qualquer interrupção (INTR, NMI, Software e single-
step), embora o registo de
flags seja automaticamente colocado na stack, o mesmo reflicte o
estado do processador antes da interrupção, até que o registo de
flags seja retirado da stack o bit
de
enable fica a ‘0’, a não ser que seja alterado por software.
Durante a sequência de resposta (ver figura 10) o processador executa dois ciclos completos de
interrupt acknowladge (INTA). O processador activa a linha LOCK no T
2
do primeiro ciclo de bus,
até ao T
2
do segundo.
Um pedido de HOLD do
buso será atendido até ao fim do segundo ciclo de INTA. Durante o
segundo ciclo de
bus é lido um byte do sistema externo de interrupt (ex.: 8259A PIC) que identifica
o tipo e origem da interrupção. Este valor é utilizado para apontar o controlo de programa para a
rotina apropriada através da tabela de vectores de interrupção.
Enquanto a linha INTR estiver a ‘1’, o processador continua a responder a esses pedidos de
interrupção. No fim da rotina de interrupção as
flags originais são retiradas da stack e colocadas no
registo de
flags.