Escolar Documentos
Profissional Documentos
Cultura Documentos
Microprocessadores 8086/8088
MICRO-
PROCESSADORES
8086 /8088
2
Microprocessadores 8086/8088
ÍNDICE:
INTRODUÇÃO -------------------------------------------------------------------------------------- 3
TERMINOLOGIA ---------------------------------------------------------------------------------------- 4
SOFTWARE ---------------------------------------------------------------------------------------------- 26
INTERRUPÇÕES --------------------------------------------------------------------------------------- 35
BIBLIOGRAFIA ---------------------------------------------------------------------------------------- 38
3
Microprocessadores 8086/8088
INTRODUÇÃO
CONCEITOS BÁSICOS
Eletrônica Analógica (ou linear) → É a técnica que estuda as correntes eletrônicas (ou tensões)
que assumem diversos valores durante um certo intervalo de tempo (dt).
ELETRÔNICA DIGITAL → É a técnica que estuda as correntes eletrônicas (ou tensões) que
assumem apenas 2 (dois) valores, 0 e 1 (ou BAIXO e ALTO), ou seja, ausência de tensão
(terra) ou tensão (+ 5VDC – TTL; + 15VDC/+ 12VDC – CMOS), num certo intervalo de
tempo (dt).
Os MPs de 8 bits que mais se destacaram foram o Z – 80 (ZILOG), 8085 (INTEL), 8080
(INTEL), 6809 (MOTOROLA) e 6502 (ROCKWEEL).
TERMINOLOGIA
Muitas vezes usa-se a palavra BUFFER como sinônimo de DRIVER. Devemos ter cuidado
com a utilização do termo no contexto para não interpretarmos de forma errônea.
SOFTWARE → Nome dado aos “programas” que são executados pelos sistemas, ou seja, é o
conjunto de instruções que o computador ou sistema recebem do ambiente externo.
DMA → Método pelo qual um periférico, acesa diretamente a memória do sistema para leitura
ou escrita, pedindo ao MP o domínio sobre os barramentos de dados e endereços, ou seja, by-
passando-o.
LATCH → Circuito eletrônico que tem a função de “reter” as informações que foram
colocadas na entrada da porta a habilitação de leitura da mesma.
COMPILADOR → Programa especial que traduz uma linguagem de médio ou alto nível em
sua interpretação de baixo nível correspondente. Citamos os compiladores COBOL, BASIC,
FORTRAN, PASCAL e outros.
Eles são maiores e mais poderosos, projetados para substituir ou auxiliar os microprocessadores
de 8 bits da década de 70.
Podem ser até, em determinadas configurações, 4000 vezes superiores aos circuitos integrados
de 8 bits custando o mesmo preço. Isso se da através da possibilidade da utilização de produtos
de inteligência significativa (programas aplicativos, utilitários), também de máquinas falantes e
ouvintes, display coloridos de três dimensões, rede de comunicação avançada dando acesso a
grandes bancos de dados via telefone e outros.
O 8086 foi a primeira pastilha de 16 bits (MP) que apareceu no mercado, estabelecendo assim o
maior volume de usuários e fornecedores de produtos de apoio.
Em agosto de 1981, a IBM lançou seu primeiro computador pessoal (PC) com o MP 8088.
O 8086/88 usa o conceito de memória cachê (fita de instrução), que contém vários bytes de
instrução, durante a busca da próxima instrução a ser executada, economizando tempo no
processamento de uma instrução e aumentando a velocidade de MP.
De A0 à A15 e D0 e D15, no 8086, existe a multiplexação em pinos comuns, de A16 à A19 são
multiplexados sinais de status.
É utilizado um gerador de clock externo (8284) e um controlador de via (8288) para gerar sinais
de controle.
No 8086 1.000 bytes são dedicados para 256 apontadores de vetores.
Existem 64 Kbytes de E/S na memória, acessados por instruções IN, OUT e suas derivadas.
Para que o MP 8086 trabalhe em conjunto com o co-processadores (8087) existe um pino
TESTE que em nível baixo permite que a CPU continue seu processamento e em caso contrário
coloca-o em estado passivo (de espera).
Existem 4 registradores de uso geral de 16 bits – 4 pares de registradores de 8 bits (para serem
usados em instruções de 8 bits) AX, (AH, AL), BX (BH,BL), CX (CH,CL) e DX (DH,DL), que
são equivalentes aos registradores do MP 8080 A (acumulador), HL, BC e DE.
Ainda compõem o 8086 4 registradores de 16 bits de segmentos, DC, SS, ES e CS, usados para
endereçar somado ao conteúdo do registrador de deslocamento (registrador não de segmento),
pertencente a unidade de execução, até 1MB de endereços externos a CPU.
Além disso, existem 4 registradores de 16 bits de base e índice BP, SP, DI e SI e 2 registradores
especiais de 16 bits IP ( = PC) e FLAGS (registros de condição).
O 8086 é muito rápido, as versões comerciais de clock mais usadas são 5 e 8 MHZ.
Esses dois circuitos integrados trabalhando juntos aos MPs 8086/88 formam a base de um
computador muito poderoso.
8
Microprocessadores 8086/8088
ARQUITETURA BÁSICA
Os sinais, a exceção de Vcc, terra e MN/MX , são compatíveis com níveis TTL (interpretam 0 e
1 de acordo com a faixa de variação correspondente).
No MP 8088, por ser o seu barramento de dados de 8 bits, A8 à A15 são usados somente para
endereçamento, em conseqüência não há necessidade de BHE e temos no pino 34 apenas um
sinal de estados, SS0.
A polaridade invertida de 10/M’ em relação ao 8086, torna o 8088 compatível com 8085
(permite a utilização de periféricos de 8 bits).
ALIMENTAÇÃO:
Pino 2 ao 16 (8086) e 39 – AD14 à AD0 e AD15 – Barramento de endereços (16 bits menos
significativos) multiplexado com a palavra de dados. Durante o 1º período de clock de um ciclo
de via, essas linhas contém os 16 bits de endereço de ordem mais baixa. Durante todos os
outros ciclos, elas contém dados.
Pino 9 ao 16 (8088) – AD7 à AD0 – Idem ao anterior no byte de mais baixa ordem.
Pino 35 ao 38 – A19/S6, A18/S5, A17/S4 e A16/S3 –São as 4 linhas de endereços de mais alta
ordem multiplexadas com linhas de estados em ambos os processadores. No 1º período de um
ciclo da via são linhas de endereço e nos outros períodos são informações de estados. Se uma
instrução de I/O for executada, essas linhas são mantidas baixas no primeiro período do ciclo de
via.
S3 e S4 – Especificam qual o registrador de segmento que esta sendo usado para a porção de
segmento do endereço.
Pino 34 – BHE’ /S7 (8086) – Discrimina o byte de mais alta ordem do byte de mais baixa
ordem da linha de dados, no 1° período de clock do ciclo de via (BHE’), transferindo dados
para a parte mais significativa da via de dados, D8 à D15. Este sinal e mantido 0 durante leitura,
escrita ou seqüências de reconhecimento de interrupção. Em conjunto com A0 e usado para
selecionar os bancos de memória . em T2, T3, e T4, S7 mantém o mesmo nível do 1° período
(A0 – seleciona endereço par, BHE’ – seleciona endereço impar).
Quando palavras de 16 bits estiverem localizadas em endereços impares, isto é, dois bytes
consecutivos com bytes menos significativos num endereço impar, são acessadas em dois ciclos
de vias, no 1° ciclo acessa-se o banco de memória impar (A0 = 1, BHE’ = 0) e no 2° ciclo o
banco de memória par (A0 = 0, BHE’ = 1). No entanto, no caso de palavras de 16 bytes
localizadas em endereços pares, ou seja, dois bytes consecutivos com o byte menos
significativo num endereço par, são acessadas em ciclo de via A0 e BHE’ = 0 habilitam ambos
os bancos simultaneamente, sendo este acesso mais rápido.
Pino 17 – NMI – Habilita em transição de nível alto o pedido de interrupção não mascarável,
que não e mascarada por software. O endereço da rotina de serviço não mascarável deve estar
no endereço de memória 00008H.
Pino 18 – INTR – Em nível alto habilita um pedido de interrupção que e testado pela CPU,
durante o período final de cada interrupção. Esta interrupção pode ser mascarada por software
através do bit de capacidade de interrupção.
Pino 19 – CLK – Relógio que varia de 2 MHz à 8 MHz (e assimétrico com duty cicle de 33%).
Pino 21 – RESET –Este sinal deve permanecer em nível 1 por pelo menos 4 períodos de clock
para ressetar a CPU. Quando há um RESET, o reinício do processamento ocorre a partir do
endereço FFFF0H ( FLAGS – 0000H DS, SS, ES, PC – 0000H CS – FFFFH).
Pino 22 – READY – Habilitado em nível alto, indica para a CPU que a memória ou E/S esta
pronta para a transferência de dados. O estado de espera e causado por nível baixo neste pino, e
durante o período de espera os barramentos não ficam em alta impedância.
Pino 23 – TEST – Este pino e examinado pela instrução WAIT, se 0, o processamento continua
normalmente, se 1, a CPU fica em estado de espera (sem executar nada) até que o sinal retorne
ao nível baixo. Este pino pode ser usado para o sincronismo de co-processadores com a CPU.
Pino 33 – MN/MX’ – Indica se a CPU esta trabalhando no modo mínimo (=1) ou máximo (=0).
Pino 29 – LOCK, WR
LOCK (modo máximo) indica que outros controladores da via (como processadores) quando
não devem assumir o controle do barramentos. Ativo em nível 0 pela instrução LOCK, mantém
este estado até o final da próxima instrução. Usado para proteção de programas.
WR (modo máximo) ativo em nível baixo, indica que o microprocessador esta executando uma
operação de escrita na memória ou dispositivo de entrada e saída.
O estado de retenção gera a alta impedância dos barramentos (3° estado). O estado de
PARADA (HALT), não.
Pino 32 – RD – sinal ativado em nível 0 que indica que o microprocessador esta efetuando uma
operação de leitura de memória ou dispositivo de E/S.
8088 8088
GND 1 40 VCC
A14 AD 14 2 39 AD 16 A15
A13 AD 13 3 38 A16/S8
A12 AD 12 4 37 A17/S4
A11 AD 11 5 36 A18/S5
A10 AD 10 6 35 A19/S6
A9 AD 9 7 34 BME/S7 SS 0
A8 AD 8 8 33 MN/MX
AD 7 9 32 RD
AD 6 10 31 RQ/GT0, HOLD
AD 5 11 8086 30 RQ/GT1, HODA
AD 4 12 29 LOCK, WR
AD 3 13 28 S2, M/WR S2, I0/M
AD 2 14 27 S1, DT/R
AD 1 15 26 S0, DEN
AD 0 16 25 QS 0, ALE
NMI 17 24 QS 1, INTA
INTR 18 23 TEST
CLK 19 22 READY
GND 20 21 RESET
12
Microprocessadores 8086/8088
512KB 512KB
FFFF FFFE
FFFD FFFC
* *
* *
5 4
3 2
1 0
REGISTRADOR
A17/S4 A16/S3 SEGMENTO
ES (extra)
0 0
SS (pilha)
0 1
CS (código)
1 0
DS (dados)
1 1
____
A0 BHE ENDEREÇO
0 1 1 byte (8 bits)
1 0 Byte (8 bits)
__ __ ___
IO/ M DT / R SS0 CICLO DA VIA
1 0 0 Reconhecimento de interrupção
1 0 1 Leitura de E / S
1 1 0 Escrita de E / S
1 1 1 Parado (“HATL”)
0 0 0 Carrega instrução
0 0 1 Leitura da memória
0 1 0 Escrita na memória
_ _ _
S2 S1 S0 CICLO DA VIA
0 0 0 Reconhecimento de interrupção
0 0 1 Leitura de E / S
0 1 0 Escrita de E / S
0 1 1 Parado (“HALT”)
1 0 0 Carrega instrução
1 0 1 Leitura da memória
1 1 0 Escrita na memória
É composta por um barramento de dados de 16 bits, pela unidade lógica e aritmética (ULA);
pelo registrador de flags (16 bits) e por 8 (oito) registradores de 16 bits.
BX: É o segundo, que é chamado registrador de base. Também divide-se em BH e BL. Pode ser
usado com base de endereços para manipulação de tabelas, além de trabalhar com dados.
DX: É o último, que é chamado registrador de dados. Divide-se em DH e DL. Pode ser usado
como a extensão de AX nas operações de multiplicação e divisão.
BP: É o ponteiro de base (BASE POINTER), que é usado para endereçamento de memória,
pode conter o endereçamento inicial de uma tabela que será manipulada pela CPU.
SI: É o indexador fonte (SOURCE INDEX), que é usado para a indexação de tabelas no
endereçamento indireto.
FLAGS: São armadas pela UE para refletir certas propriedades do resultado de uma operação
aritmética ou lógica. Existem certas instruções que habilitam um programa a alterar a sua
execução dependente dessas condições.
OF (Overflow): Em nível 1, indica que um bit excedente aritmético ocorreu, isto é, um digito
significativo foi perdido porque o tamanho do resultado excedeu a capacidade da localização de
destino.
17
Microprocessadores 8086/8088
DF (Direção): Em nível 1, indica que instruções para cadeias de símbolos são decrementadas
automaticamente (os símbolos são processados do endereço mais alto para o mais baixo). Em
nível 0, mostra que instruções para cadeias de símbolos são auto-incrementadas.
AF (Auxiliar): Em nível 1, indica que houve vai um dos 4 bits de mais baixa ordem para os 4
bits de mais alta ordem (soma) ou emprestam um dos 4 bits de mais alta ordem (subtração) de
uma quantidade de 8 bits (LSB). É usada em instruções aritméticas decimais.
PF (Paridade): Em nível 1, o resultado e par, ou seja, nos 8 bits de mais baixa ordem um
número par de bits 1. pode ser usado para detectarmos erros na transmissão de dados.
CF (Vai um): Em nível 1, houve vai um ou emprestou um, no bit de mais alta ordem do
resultado. É usada para instruções de soma ou subtração e rotação.
18
Microprocessadores 8086/8088
ARQUITETURA DO 8086
19
Microprocessadores 8086/8088
REGISTRADORES DE SEGMENTO
CS – Segmento de Código: Endereça o segmento onde devem estar as instruções a serem
executadas pela CPU.
SS – Segmento de Pilha: Endereça o segmento que esta reservado ao uso da pilha (STACK).
DS – Segmento de Dados: Acessa o segmento reservado aos dados a serem manipulados pela
CPU.
ES – Segmento Extra: Acessa outro segmento que contém dados, como manipulação de tabelas
e strings.
REGISTRADOR ESPECIAL
IP – Ponteiro de Instruções: Aponta para a instrução seguinte no segmento de código.
-
SEGMENTAÇÃO (paginação)
Podemos ter distâncias entre páginas maiores do que 64 KB, que podem conter programas e
dados, sem nos arriscarmos a sobrepô-los.
Os segmentos lógicos de um programa, por exemplo código e dados, não precisam ser de 664
KB, logo, o uso de múltiplos registros de segmentação, permite um uso eficaz da memória,
desde que seja tomado o cuidado para que durante a execução do programa não haja
interferência entre, Poe exemplo, uma área de dados e uma área de programa.
MODOS DE ENDEREÇAMENTO
Os MPs 8086/88 possuem 25 modos de endereçamento, dentre os quais destacamos:
SS:IP
MOV AX,(BP + 10)
OBS: Endereço efetivo (EE) é o deslocamento relativo que a unidade de execução (UE) calcula
para acessar um operando memória.
Ele tem 16 bits e expressa a distância do operando em bytes desde o começo do segmento em
que ele reside. Pode ser calculado de diversas maneiras (EA = effective adress).
É a adição de um deslocamento, com o conteúdo de um registrador de base (BX ou BP) e o
conteúdo de um registro de índice (SI ou DI).
23
Microprocessadores 8086/8088
ENDEREÇAMENTO DA MEMÓRIA
SSSS0H S é um dígito de um registro de segmento
0nnnnH n é um dígito hexadecimal do endereço efetivo
____
SrrrnH r é o dígito do resultado da soma = endereço
Memória
MEMÓRIA [EPROM]
ENDEREÇAMENTO
DIRETO
CS: IP
MOV AX, [08]
DS:OFF-SET
DS:OFF-SET
MEMÓRIA (PILHA)
ENDEREÇAMENTO
BASEADO
CÁLCULO
MEMÓRIA (RAM)
ENDEREÇAMENTO
INDEXADO
DS: VETOR
SOFTWARE
O conjunto de instruções dos MPs 8086/88 podem ser divididos em 6 grupos básicos: total de
100 instruções.
OBJETIVOS GENÉRICOS
- MOV Move um byte ou palavra
- PUSH Coloca uma palavra endereçada no topo da pilha
- POP Tira uma palavra do topo da pilha para destino
- XCHG Troca um byte ou palavra
- XLHT Traduz um byte
ENTRADA / SAÍDA
- IN Entrada de byte ou palavra
- OUT Saída de byte ou palavra
ENDEREÇO OBJETO
- LEA Carregue endereço efetivo
- LDS Carregue indicador usando DS
- LES Carregue indicador usando ES
TRANSFERÊNCIA DE FLAGS
- LAHF Carrega o registro AH com as flags
- SAHF Guarda o registro AH nas flags
- PUSHF Coloca as flags na pilha
- POPF Tira as flags da pilha para destino
Fig. A
27
Microprocessadores 8086/8088
INSTRUÇÕES ARITMÉTICAS
ADIÇÃO
- ADD Adiciona um byte ou uma palavra
- ADC Adiciona um byte ou palavra c/ transporte
- INC Incrementa um byte ou palavra de 1
- AAA Ajuste ascii para adição
- DAA Ajuste decimal para adição
SUBTRAÇÃO
- SUB Subtrai byte ou palavra
- SBB Subtrai byte ou palavra c/ empresta 1
- DEC Decrementa byte ou palavra de 1
- NEG Nega byte ou palavra
- CMP Compara byte ou palavra
- AAS Ajuste ascii para subtração
- DAS Ajuste decimal para subtração
MULTIPLICAÇÃO
- MUL Multiplica byte ou palavra
- IMUL Multiplica inteiros byte ou palavras
- AAM Ajuste ascii para multiplicação
DIVISÃO
- DIV Divide byte ou palavra positiva
- IDIV Divide inteiros byte ou palavra
- AAD Ajuste ascii para divisão
- CBM Converte byte para palavra
- CWD Converte palavra p/ palavra dupla
Fig. B
28
Microprocessadores 8086/8088
INSTRUÇÕES LÓGICAS
LÓGICAS
- NOT “não” um byte ou uma palavra
- AND “e” um byte ou uma palavra
- OR “ou” um byte ou uma palavra
- XOR “ou exclusivo” um byte ou uma palavra
- TEST “testa” um byte ou uma palavra
Fig. C
EXs: REP MOVS AX, BX (repete enquanto não for o final da strings de BX à AX).
AX-destino
BX-origem
INSTRUÇÕES DE STRINGS
- REP Repete
- REFE / REPZ Repete enquanto for igual / zero
- REPNE / REPNZ Repete enquanto não for igual / zero
- MOVS Move carreira de bytes ou palavras
- MOVSB/MOVSW Move cadeira de bytes ou palavras
- CMPS Compara cadeia de bytes ou palavra
- SCAS Busca uma cadeia byte ou palavra
- LODS Carrega uma cadeia byte ou palavra
- STOS Armazena uma cadeia byte ou palavra
Fig. D
29
Microprocessadores 8086/8088
desvie-se INT 3
JNS (SF = 0) 3 – tipo de interrupção
TRANSFERÊNCIA INCONDICIONAL
- CALL Chama uma subrotina
- RET Volta de uma subrotina
- JMP Desvia
TRANSFERÊNCIA CONDICIONAL
- JÁ / JNDE Desvie –se acima / não abaixo nem igual
- JAE / JNB Desvie –se acima ou igual / não abaixo
- JB / JNAE Desvie –se abaixo / não acima nem igual
- JBE / JNA Desvie –se abaixo ou igual / não acima
- JC Desvie –se transporte
- JE / JZ Desvie –se igual / zero
- JE / JNLE Desvie –se maior / não menor nem igual
- JGE / JNL Desvie –se maior nem igual / não menor
- JL / JNGE Desvie –se menor / não maior nem igual
- JLE / JNG Desvie –se menor ou igual / não maior
- JNC Desvie –se não transporte
- JNE / JNG Desvie –se diferente / não zero
- JNO Desvie –se não excesso
- JNP / JPO Desvie –se não paridade / paridade impar
- JNS Desvie –se não sinal
- JO Desvie –se excesso
- JP / JPE Desvie –se paridade / paridade real
- JS Desvie –se sinal
CONTROLE DE ITERAÇÃO
- LOOP Repetição
- LOOP/LOOPZ Repita se igual / zero
- LOOPNC/LOOPNZ Repita se não igual / não zero
- JCXZ Desvie –se registro CX = 0
30
Microprocessadores 8086/8088
INTERRUPÇÃO
- INT Executa rotina de interrupção
- INTO Interrupção se houver excesso (overflow,OF=1)
- IRET Retorno de interrupção
Fig. E
TRANSFERÊNCIA INCONDICIONAL
CALL Chama uma rotina
RET Volta de uma rotina
JMP Desvia
TRANSFERÊNCIA CONDICIONAL
JR/JNBE Desvie se acima / não abaixo nem igual
JAB/JNB Desvie se acima ou igual / não abaixo
JB/JNAE Desvie se abaixo / não acima nem igual
JBE/JNA Desvie se abaixo ou igual não acima
JC Desvie se transporte
JE/JZ Desvie se igual / zero
JE/JNLE Desvie se maior / não menor nem igual
JGE/JNC Desvie se maior ou igual / não menor
JL/JNGE Desvie se menor / não maior nem igual
JLE/JNG Desvie se menor ou igual / não maior
JNC Desvie se não transporte
JNE/JNZ Desvie se diferente / não zero
JNO Desvie se não excesso
JNP/JPO Desvie se não paridade / paridade impar
JNS Desvie se não sinal
JO Desvie se excesso
JP/JPE Desvie se paridade / paridade par
JS Desvie se sinal
CONTROLE DE ITERAÇÃO
LOP Repetição
LOOP/LOOPZ Repita se igual / zero
LOOPNC/LOOPNZ Repita se não igual / não zero
JCXZ Desvie se registro CX = 0
INTERRUPÇÃO
INT Interrompa
INTO Interrompa se excesso
IRET Retorno de interrupção
Fig. G
32
Microprocessadores 8086/8088
Operações com “strings” permitem o trabalho com blocos de dados contidos em memória.
Podemos através dessas instruções movimentar ou comparar, por exemplo, 2 posições de
memória, o que não e permitido com as instruções normais. Em conjunto com uma instrução de
prefixo (por exemplo “REPEAT”), uma operação de “strings” pode ser repetida o número de
vezes dado pelo registrador CX (contagem de LOOPS-repetidos). Com isso obtemos de forma
bastante simples transferência de uma área de memória para outra, ou, comparação entre duas
áreas.
- Desvio de LOOP;
Segmentos DEFAULT são determinados quando não existe pré-definição (prefixo override), de
registradores de segmento em algumas instruções. Tem prioridade de armazenamento em
operações executadas pela CPU. Indicadores (ponteiros) para a memória normalmente usam o
registrador DS como base de referencia; exceções incluem SP e BP que usam SS. Instruções
“strings” que baseiam SI e DI em ES além de DS, e IP que sempre referencia CS.
33
Microprocessadores 8086/8088
ES = 00 CS = 01 SS = 10 DS = 11
Concluímos que importantes novas instruções foram adicionadas as CPUs 8086/88, (em relação
ao 8080 e 8085), que em muito simplificaram e estendem o alcance do processamento. As
instruções são:
- transfira, busque (um elemento, “scan”) e compare são operações para cadeias com até 64 KB
de comprimento;
O número de clocks, dado em tabela, para cada instrução, e considerado após a instrução já
estar na fila interna da CPU (cachê) pois, quando se executa uma instrução a próxima já esta na
fila.
34
Microprocessadores 8086/8088
Toda a vez que trabalhamos com pilha o ponteiro (SP) estará sempre apontando para um
endereço decrementado da última posição utilizada.
35
Microprocessadores 8086/8088
INTERRUPÇÕES
Uma interrupção para o fluxo normal de programa transfere o controle da CPU para uma rotina
de serviço cujo endereço, ou vetor, ou indicador, está armazenado nos endereços de 0 à 3FFH
da memória ( = 1KB = 256 interrupções de 4 bytes) que é uma tabela de 256 vetores de
interrupção. (CS : IP).
Cada tipo de interrupção tem um número para identificá-la. Esse número e multiplicado por 4
pela CPU e o resultado e o endereço do primeiro byte do vetor de interrupção (endereço da
rotina).
3 – pela CPU em certos casos (erro de divisão, execução passo-a-passo), Fig. A’.
A própria rotina pode reabilitar IF para que pedidos de interrupção sejam aceitos na linha INTR
(uma rotina de interrupção pode ser sempre interrompida por um pedido na linha NMI).
Toda rotina de interrupção deve ser terminada por uma instrução IRET. Essa instrução assume
que a pilha esta nas mesmas condições de quando foi iniciada. Ela carrega (POP) as 3 words do
tipo da pilha nos registros CS, IP e flags, logo, voltando a instrução que seria executada quando
o fluxo foi interrompido.
E / S – mapeada em memória.
Vantagens:
Desvantagens:
Vantagens:
Desvantagens:
- só tem duas instruções e está restrito aos modos de endereçamento das mesmas;
- só pode acessar 64 KB de endereços.
37
Microprocessadores 8086/8088
MOV AX, 0
MOV BX, BUFFER
LOOPP1 – MOV [BX] (carrega 2 bytes com 0 a
partir de BUFFER)
INC BX
INC BX
INC AX
CMP AX, 50d
JB LOOP 1
BIBLIOGRAFIA
Título : Microprocessadores
Autor : Eng. Vidal Pereira da Silva Junior
Editora: Èrica