Buscar

Apostila 8086

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
1 
 
 
 
MICRO- 
PROCESSADORES 
 
8086 /8088 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
2 
 
ÍNDICE: 
 
INTRODUÇÃO -------------------------------------------------------------------------------------- 3 
 
TERMINOLOGIA ---------------------------------------------------------------------------------------- 4 
 
INFORMAÇÕES BÁSICAS SOBRE MPs 8086/8088 ---------------------------------------------- 5 
 
ARQUITETURA BÁSICA ------------------------------------------------------------------------------ 8 
 
PINAGEM DAS CPUs 8086/8088 --------------------------------------------------------------------- 12 
 
CICLO DAS VIAS 8086 ------------------------------------------------------------------------------- 13 
 
ARQUITETURA INTERNA DOS MICROPROCESSADORES ------------------------------- 16 
 
ARQUITETURA DO 8086 ---------------------------------------------------------------------------- 18 
 
UNIDADE DE INTERFACEAMENTO DE VIA -------------------------------------------------- 19 
 
SOFTWARE ---------------------------------------------------------------------------------------------- 26 
 
INTERRUPÇÕES --------------------------------------------------------------------------------------- 35 
 
BIBLIOGRAFIA ---------------------------------------------------------------------------------------- 38 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
3 
 
INTRODUÇÃO 
 
 
CONCEITOS BÁSICOS 
 
ELETRÔNICA → É a técnica que estuda a condução da corrente eletrônica nos diferentes 
meios (sólidos – fios/barramentos/cristais; líquidos – soluções eletrolíticas; gasosas – 
néon/hélio/argônio e vácuo) e os métodos, processos e componentes para estabelecer e 
controlar circuitos, sistemas e equipamentos baseados neste fenômeno. 
Ela se divide em Eletrônica Analógica (ou linear) e Eletrônica Digital. 
 
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). 
 
A eletrônica obteve um grande progresso na área de semicondutores, surgindo o circuito 
integrado (C.I.), que e o agrupamento de uma grande quantidade de elementos discretos 
(transistores/diodos) em um único componente. Com a aplicação dos tipos de circuitos 
integrados e a integração aumentada, chegou-se ao microprocessador. 
 
MICROPROCESSADORES → É um circuito integrado em larga escala de integração, 
devido as suas modernas técnicas de fabricação. Contem a maioria dos componentes lógicos 
digitais e consegue efetuar com rapidez varias funções e operações lógicas e aritméticas, sob 
controle de um PROGRAMA externo que determina para a máquina a SEQUENCIA das 
funções e os operandos a serem utilizados. 
 
 Ele e o principal componente de um microcomputador e é também uma máquina lógica 
seqüencial síncrona. 
 
 Os primeiros microcomputadores tinham o seu barramento de dados de 8 bits (1 byte) 
ou 4 bits (1 nible): 
 
 4 bits : P4040 (INTEL) 
 8 bits : 8080 (INTEL), 8085 (INTEL), Z – 80 (ZILOG), 6800 (MOTOLORA), 6809 
(MOTOROLA), 6502 (ROCKWEEL). 
 
Os MPs de 8 bits que mais se destacaram foram o Z – 80 (ZILOG), 8085 (INTEL), 8080 
(INTEL), 6809 (MOTOROLA) e 6502 (ROCKWEEL). 
 
O MP Z - 80 e utilizado nos microcomputadores das linhas MSX, SINCLAIR e TRS – 80, 
em equipamentos eletrônicos, dedicados e em automação industrial (CLPs, SINCLE-LOOP, 
MULT-LOOPs). 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
4 
O MP 8085 e utilizado nos microcomputadores antigos, em equipamentos eletrônicos 
dedicados e em automação industrial. 
 
O MP 8080 e utilizado em equipamentos eletrônicos dedicados e microcomputadores 
antigos. 
O MP 6809 e utilizado nos microcomputadores da linha TRS -80 COLOR, e em 
equipamentos eletrônicos dedicados. 
 
O MP 6502 e utilizado nos microcomputadores da linha APPLE. 
 
 
TERMINOLOGIA 
 
 
BUFFER → É o circuito que tem por objetivo o armazenamento temporário de informações. 
Como exemplo citamos os buffers das impressoras que armazenam dados a serem impressos. 
 
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. 
 
DRIVER → É um circuito amplificador de corrente, usado para interligarmos equipamentos a 
uma grande distância, ou para ampliar a capacidade de fornecimento de uma porta (FAN–OUT). 
 
HARDWARE → É o conjunto de componentes eletrônicos e peças mecânicas de um 
computador, ou seja, tudo que se refere a parte “física” dos sistema. 
 
FIRMWARE → É o conjunto de instruções contidas na memória interna permanente do 
computador ou equipamento dedicado. É o programa associado ao hardware para executar 
funções específicas. 
 
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. 
 
PERIFÉRICOS → São equipamentos eletrônicos de entrada, saída e armazenamento de dados. 
 
MICROCOMPUTADOR → É o conjunto formado pelo hardware, firmware e periféricos de 
pequeno porte. 
 
MICROCOMPUTADOR DEDICADO → É um equipamento que utilize um 
microprocesador e um firmware específico, podendo vir a ter um software dedicado a uma 
determinada função. 
Ex: GEOCOMP, BT – 100, INFRARED ENG., GENINI. 
 
SISTEMA OPERACIONAL → É o conjunto de programas (software) básicos, que permitem 
ao operador usar um computador sem ter de conhecer seu funcionamento interno. É um 
gerenciador de programas. Temos como exemplos sistema operacional de discos (D.O.S) e o 
sistema operacional de fitas (T.O.S). 
 
Microprocessadores 8086/8088Engº Nilton Copelo dos Santos 
 
 
 
 
5 
 
MONITOR / SUPERVISOR → É o programa que gerencia as funções de um equipamento 
dedicado, em firmware ou software. 
 
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. 
 
MONTADOR → Programa que permite ao projetista de firmware, fazer o teste de seu 
programa em linguagem de baixo nível, sem ter que escrevê-los em códigos objetos e sim em 
mnemônicos. 
 
 
INFORMAÇÕES BÁSICAS SOBRE MPs 8086 / 8088 
 
Os microprocessadores de 16 bits consistem em uma geração mais recente de pastilhas (chips) 
para computadores. 
 
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. 
 
O 8086 é a pastilha de 16 bits mais barata. 
 
O 8086 é uma evolução do 8080 que é o MP mais antigo da INTEL. 
 
Os MPs de 16 bits sobressaem os de 8 bits devido: 
 
- Tratamento de informação de múltiplos de 16 bits/ 8 bits em lugar de 8 bits; 
- Mecanismo básico (arquitetura) e o dobro do de 8 bits; 
- Maior precisão e maior velocidade (lê 2 bytes por vez). 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
6 
 
No 8086/88 uma instrução em linguagem de máquina utiliza de 1 à 6 bytes de memória e no 
8080 utiliza de 1 à 3 bytes, logo o processador moderno terá um conjunto de instruções muito 
mais rico e versátil. 
 
No 8086 foi implementado um novo processo de manufatura de silício denominado HMOS, 
que permite a colocação de 70.000 ou mais transistores em um único CHIP, possibilitando a 
execução de tarefas mais sofisticadas. Como a decodificação de instruções de multiplicação e 
divisão, e a falta de necessidade de hardware adicional para controles de muitos dispositivos de 
E/S e implementação de estruturas de interrupções sofisticadas. 
 
Os 8086/88 tem capacidade de endereçar mais de 1 milhão de bytes de memória de 
escrita/leitura. Com essa capacidade aumentada os programadores podem projetar programas 
mais sofisticados e poderosos e a partir de 265 Kbytes e possível processar sistemas 
operacionais avançados. Possibilita que vários usuários utilizem o mesmo computador 8086, 
(compartilhem) através de terminais inteligentes (8088). 
 
O 8086/88 divide o processamento em subfunções executadas por outros circuitos integrados 
dedicados como co-processadores matemáticos em ponto flutuante (8087), gerenciadores de 
E/S (8089), que liberam a CPU para outras funções e executam essas funções especiais com 
mais recursos, velocidade e precisão, também economizando memória (não precisa fazer sub-
rotina para instruções matemáticas e de interrupção pois possuem sua própria linguagem). 
 
Melhorias e relação ao 8 bits: 
 
- Realocação de programas (segmentação); 
- Reforço na verificação de erros (envio de mensagens a tela devolvendo o comando ao 
programa); 
- Possibilidade de gravação digital, análise espectral, síntese de música, reconhecimento 
da fala, comunicação; 
- Maior inteligência ao sistema; 
- Multiprocessamento. 
 
Em agosto de 1981, a IBM lançou seu primeiro computador pessoal (PC) com o MP 8088. 
 
O 8086 foi utilizado posteriormente em PC’s e em outros computadores pessoais (PC). 
 
O 8086 tem barramento de dados e arquitetura interna de 16 bits. 
 
O 8088 tem barramento de dados de 8 bits e arquitetura interna de 16 bits. 
 
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. 
 
O 8086 possui 6 bytes de memória cachê (6 registradores). 
 
O 8088 possui 4 bytes de memória cachê (4 registradores). 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
7 
 
O 8086/88 utiliza o processo de segmentação para endereçamento de memória, através de 
registradores de segmento fornecendo endereços básicos que são automaticamente 
acrescentados a cada endereço de usuário de 16 bits na máquina. 
 
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. 
 
Os 2 co-processadores que auxiliam os MPs 8086/8088 são: 
 
- O 8087 que é um processador de dados numéricos; 
- O 8089 que é um processador E/S. 
 
Esses dois circuitos integrados trabalhando juntos aos MPs 8086/88 formam a base de um 
computador muito poderoso. 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088Engº Nilton Copelo dos Santos 
 
 
 
 
8 
 
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 1 – terra (GND) 
Pino 20 – terra (GND) 
Pino 40 – 5 volts (Vcc) +/- 10% 
 
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 2 ao 8 e 39 (8088) – A14 à A8 e A15 – Durante um ciclo da via contém os bits de 
endereços 8 à 15. Não são multiplexados. 
 
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. 
 
S5 – Reflete o estado da capacidade de interrupção no 1° período do ciclo de via e é atualizada 
a cada inicio de período do clock. 
 
S6 – Apresenta nível 0 se os MPs 8086/88 estiverem controlando o barramento, caso o controle 
esteja sendo feito por outro MP ou co-processador, ou periférico, apresenta nível 1. 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
9 
 
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 34 – SS0 (8088) – É o equivalente lógico de S0 no modo máximo: a combinação de SS0, 
Io/M e DT/R permitem ao sistema decodificar o estado do ciclo de via no 8088. 
 
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). 
 
No modo mínimo os 2 MPs trabalham de forma mais autônoma. 
 
No modo máximo há a possibilidade de trabalhar em conjunto com os processadores 80887 e 
8089, e depende de C.I.S periféricos como 8288 (controlador de barramentos), para gerar todos 
os sinais para o barramento de controle. 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
10 
 
Pino 24 – QS1, INTA’ 
QS1 (modo máximo) representa o estado da fila de instrução valido durante o período de clock 
seguinte a uma operação na fila. 
INTA’ (modo mínimo) é o reconhecimento da interrupção pedida por um dispositivo externo, 
pela CPU, ativo em nível baixo. 
 
Pino 25 – QS0, ALE 
QS0 (modo máximo) representa o estado da fila de instrução valida durante o período de clock 
seguinte a uma operação na fila. 
ALE – (modo mínimo) é ativo em nível alto no 1° período de clock de qualquer ciclo da via, 
tem a função de introduzir o endereço nas pastilhas “latch” de endereço 8282/8283. 
 
Pino 26 – S0, DEN 
S0 (modo máximo) é uma informação de estado gerada para o 8288 para que ele forneça sinais 
de acesso a memória 3 dispositivos de E/S. 
DEN (modo mínimo) é usado para controlar os transceptores 8286/8287 habilitando a sua 
operação, indicando que a CPU esta apta para a transferência de dados, ativo em nível 0. 
 
Pino 27 – S1, DT/R 
S1 (modo máximo) idem a S0. 
DT/R (modo mínimo) é uma sinal de controle para os buffers transceptores 8286/8287 
indicando a direção do fluxo de dados. Em nível 0 indica recepção (leitura) em nível 1 indica 
transmissão de dados (escrita). 
 
Pino 28 – S2, M/IO 
S2 (modo máximo) idem a S0. 
M/IO (modo mínimo) é usado para indicar quando uma operação refere-se a memória (nível 1) 
ou E/S (nível 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 deentrada e saída. 
 
Pino 30 – RQ/GT1, HLDA 
RQ/GT1 (modo máximo) é usado para forçar a CPU a ceder a via local, no final da instrução 
atual, para outro processador, tem menor prioridade e, e ativo em nível 0. 
HLDA (modo mínimo) é o reconhecimento, pela CPU, do pedido de retenção por outro C.I., 
periféricos ou sistema, e ativo em nível alto. 
 
Pino 31 – RQ/GT0, HOLD 
RQ/GT0 (modo máximo) é usado simultaneamente a RQ/GT1 só que tem maior prioridade 
sobre o mesmo. 
HOLD (modo mínimo) é o pedido de retenção da CPU, por outro sistema ou C.I., para o uso 
dos barramentos de dados e de endereços, é ativo em terceiro estado os barramentos locais e as 
linhas de controle. 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
11 
 
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
A14
A13
A12
A11
A10
A9
A8
AD 14
AD 13
AD 12
AD 11
AD 10
AD 9
AD 8
VCC
AD 16 A15
A16/S8
A17/S4
A18/S5
A19/S6
BME/S7
MN/MX
RD
RQ/GT0, HOLD
RQ/GT1, HODA
LOCK, WR
S2, M/WR
S1, DT/R
S0, DEN
QS 0, ALE
QS 1, INTA
TEST
READY
RESET
AD 7
AD 6
AD 5
AD 4
AD 3
AD 2
AD 1
AD 0
NMI
INTR
CLK
GND
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
SS 0
S2, I0/M
8086
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
12 
 
PINAGEM DAS CPUs 8086/8088 
 
As colunas laterais cujo titulo lê-se 8088 correspondem aos pinos que diferem do 
8086. A barra ( / ) separa sinais multiplexados e a vírgula ( , ) sinais de modos 
máximo e mínimo de utilização da CPU. 
 
 
ENDEREÇAMENTO FÍSICO DO 8086 
 
 
 
 
 
 
 
 
 
 
 
 
FFFF 
 
FFFD 
 
* 
* 
 
5 
 
3 
 
1 
 
FFFE 
 
FFFC 
 
* 
* 
 
4 
 
2 
 
0 
 
512KB 512KB 
A19 – A1 D15 – D8 ____ 
BHE 
D7 – D0 A0 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
13 
CICLO DAS VIAS 8086 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
14 
 
 
A17/S4 
 
A16/S3 
REGISTRADOR 
SEGMENTO 
 
0 0 
ES (extra) 
 
0 1 
SS (pilha) 
 
1 0 
CS (código) 
 
1 1 
DS (dados) 
 
 
 
A0 
____ 
BHE ENDEREÇO 
 
0 0 1 palavra (16 bits) 
 
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 
 
0 1 1 Passivo (sem ciclo) 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
15 
 
 
QS1 QS0 CARACTERÍSTICAS 
0 0 Nenhuma operação 
 
0 
 
 
1 
 
Primeiro byte de uma instrução da fila está 
sendo executado 
1 0 A fila está sendo esvaziada 
 
1 
 
 
1 
 
Um byte subseqüente da fila está sendo 
executado 
 
 
 _ 
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 
 
1 1 1 Passivo (sem ciclo) 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
16 
ARQUITETURA INTERNA DOS MICROPROCESSADORES 
 
 
UNIDADE DE EXECUÇÃO (UE) 
 
É responsável por todo o processamento das instruções (decodificação, interpretação e 
execução). 
 
É 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. 
 
REGISTRADORES DE USO GERAL 
 
AX: É o primeiro, que é chamado acumulador. É dividido em AH, byte mais significativo e AL, 
byte menos significativo, podendo cada um deles ser acessados separadamente. Este registrador 
e usado para manipulação de dados e endereços de I/O. 
 
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. 
 
CX: É o terceiro, que é o chamado registrador de contagem. Divide-se em CH e CL. Trabalha 
com dados e pode realizar contagens de LOOPS. 
 
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. 
 
REGISTRADORES DE BASE E ÍNDICE 
 
SP: É o ponteiro da pilha (STACK POINTER), que demonstra o topo da memória tipo pilha. 
 
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 (SOURCEINDEX), que é usado para a indexação de tabelas no 
endereçamento indireto. 
 
DI: É o indexador destino (DESTINATION INDEX), também é usado para a indexação 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. 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
17 
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. 
 
IF (Interrupção): Em nível 1, a CPU reconhece sinais de requisição de interrupção externos 
(mascaráveis). Em nível 0, os pedidos de requisição estão desabilitados. Não representa 
interrupções externas não mascaráveis ou geradas internamente. 
 
TF (Trap): Em nível 1, indica que o MP entrou no modo passo-a-passo para observação de 
erros (debuggins). Nesse modo a CPU gera uma interrupção interna depois de cada instrução, 
permitindo que um programa seja inspecionado depois da execução de cada instrução. 
 
SF (Sinal): Em nível 1, representa um número negativo (representado em complemento de 2). 
Em nível 0, indica um número positivo. 
 
ZF (Zero): Em nível 1, o resultado da operação lógica ou aritmética foi 0. 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
18 
 
ARQUITETURA DO 8086 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
19 
 
UNIDADE DE INTERFACEAMENTO DE VIA (BIU) 
 
O interfaceamento das vias de dados e de endereços com a unidade de execução, gera todo o 
endereçamento de memória (1MB) e E / S (64KB). 
 
É composto de 4 registradores de segmento, 1 registrador especial, uma estrutura de 
armazenamento tipo fila com capacidade de 6 bytes (4 no 8088) de instruções, e um sistema 
para gerar o endereçamento de 20 bits (1MB), a partir de registrados de 16 bits cada. 
 
 
Registro de Estado com 9 bits de condições 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
20 
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 está 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. 
 
A fila de instrução, também chamada de memória cachê ou QUEUE, tem a função de 
armazenar os próximos 6 (ou 4) bytes de instruções a serem executadas pela CPU. É uma 
estrutura FIFO (First In First Out), usada para aumentar a velocidade de acesso às instruções 
pois, enquanto a UE executa uma instrução, a BIU está buscando uma nova instrução, que será 
armazenada na QUEUE para ser executada futuramente pela UE. 
 
 
SEGMENTAÇÃO (paginação) 
 
A capacidade de endereçamento linear de 1 MB (10
6
 bytes) = 512 KW (16) a partir de 
registradores de 16 bits é uma característica marcante das CPUs 8086/88. 
 
O endereçamento completo de memória, também chamado de endereço físico, é obtido através 
da soma de dois endereços, o de segmento e o de deslocamento, também chamado de endereço 
lógico (o que vem com a instrução) ou off-set. 
 
O processo consiste em deslocar o conteúdo do registrador de segmento para a esquerda de 4 
bits (o mesmo que multiplicar por 16), sendo que os 4 bits menos significativos são preenchidos 
com 0’s. A esse endereço (agora já com 20 bits) é somado o endereço de deslocamento (16 bits), 
que resultará assim o endereço físico externo. 
 
A notação usual para um endereço segmentado e nnnn:nnnn (n é um dígito na base 
hexadecimal), onde os 4 dígitos a esquerda dos dois pontos é o segmento (conteúdo do 
registrador de segmento) e os 4 dígitos a direita dos dois pontos é o deslocamento relativo. 
A memória sendo acessada por segmentos, permite o seu uso para a multiprogramaçao. 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
21 
O 1 MB de memória está dividido em 16 segmentos (ou paginas) de 64 KB. 
 
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 64 
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 modosde endereçamento, dentre os quais destacamos: 
 
1) Endereçamento direto: 16 bits de endereço contidos na instrução. Uso típico e no acesso 
de variáveis escalares. 
EX: MOV AX,(08) (08) = Conteúdo do endereço 08 
 
2) Endereçamento indireto: O endereço de memória esta contido em um registrador de 
base ou de índice. 
EX: MOV AL,(BX) 
 
3) Endereçamento baseado: O endereço é calculado pela soma de uma constante 
(deslocamento) com o conteúdo de um dos registradores de base BX ou BP. Usado para 
endereçar estruturas, onde um dos registradores acima aponta para base da estrutura e 
com um deslocamento podemos acessar os seus elementos. Esse recurso permite o 
trabalho do 8086/88 com compiladores para linguagem de alto nível e também banco de 
dados. 
EX: MOV AX,(BX + 10) 
 DS:IP 
 
 SS:IP 
 MOV AX,(BP + 10) 
 
4) Endereçamento indexado: O endereço é calculado somando uma constante 
(deslocamento) ao conteúdo de um registrador de índice SI ou DI. Usado para acesso de 
elementos de matrizes. Uma constante define o endereço inicial da matriz e o conteúdo 
de um registrador de índice define o elemento. 
EX: MOV AL,VETOR (SI) 
 
5) Endereçamento baseado/indexado: O endereço é gerado pela soma dos conteúdos de um 
registrador de base com um índice e uma constante. É usado em matrizes de duas 
dimensões. 
EX: MOV AL,(BX + 2) (SI) RECORD (Label) 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
22 
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). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
23 
 
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 
 
Xxxxxxxxxxxxxxxx0000 Conteúdo do registro de segmento 
0000yyyyyyyyyyyyyyyy Deslocamento relativo 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ 
xxxxzzzzzzzzzzzzzzyyyy Endereço real apresentado 
 
Memória 
 
 
 
nnnn : nnnn 
 
 
 
 
 
 
64KB 
 64KB 
1MB 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
24 
 
 
ACESSO A VÁRIOS SEGMENTOS, USANDO OS REGISTRADORES DE 
SEGMENTOS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
25 
 
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 
 
Push BX MOV BX, [BP+2] 
Push AX MOV AX, BP 
MOV BP,SP * 
 * 
CALL RET 4 
 
 
MEMÓRIA (RAM) 
 
 ENDEREÇAMENTO 
 INDEXADO 
 
 DS: VETOR 
 
SI – pré-definido entre [0] e [N] 
MOV AL, VETOR [SI] 
ARRAY (MATRIZ) 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
26 
 
 
SOFTWARE 
 
O conjunto de instruções dos MPs 8086/88 podem ser divididos em 6 grupos básicos: total de 
100 instruções. 
 
- movimentação de dados: Fig. A 
 
EXs: MOV AX, CX PUSH ES POP DX 
AX – registro destino ES –registro segmento origem DX – registro destino 
CX – registro origem 
 
 
INSTRUÇÕES DE TRANSFERÊNCIA DE DADOS 
 
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 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
27 
 
 
- instruções aritméticas: Fig. B 
 
EXs: ADD TEMP, CL MUL BL (AL X BL = AX) 
 TEMP- reg. Destino BL-reg. Origem 
 CL- reg. Origem MUL BX (AX X BX = AX, DX) 
 
 DIV ALBA (AX, DX / (ALBA) = AX + DX) 
 ALBA-origem 
 DX-resto 
 
 
 
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 palavrac/ 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 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
28 
 
 
- instruções lógicas: Fig. C 
 
EXs: NOT AX AND AL, BL 
 AX-destino AL-destino 
 BL-origem 
 
 
 
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 
 
 
- manipulação com “strings”: Fig. D 
 
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 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
29 
 
- transferência de controle: Fig. E: 
 
EXs: CALL DEBUG JA (CF ou ZF = 0) 
desvie-se 
 DEBUG-nome da rotina 
 
 desvie-se INT 3 
 JNS (SF = 0) 3 – tipo de interrupção 
 
 LOOP NOVA (transfere o controle para o operando NOVA se CX = 0) 
 
 
INSTRUÇÕES DE TRANSFERÊNCIA DE CONTROLE 
 
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 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
30 
 
INTERRUPÇÃO 
- INT Executa rotina de interrupção 
- INTO Interrupção se houver excesso (overflow,OF=1) 
- IRET Retorno de interrupção 
Fig. E 
 
 
 
- controle do processador: Fig F 
 
EXs: HLT (parada) CLD (zera a flag direção) 
 
 CMC (complementa a flag carry) 
 
 
 
INSTRUÇÕES DE CONTROLE DO PROCESSADOR 
 
OPERAÇÕES NAS FLAGS 
- STC Arma a flag transporte (carry) 
- CLC Zera a flag transporte (carry) 
- CMC Complementa a flag transporte (carry) 
- STD Arma a flag direção 
- CLD Zera a flag direção 
- STI Arma a flag habilitação de interrupção 
- CLI Zera a flag habilitação de interrupção 
SINCRONIZAÇÃO EXTERNA 
- HLT Para até interrupção ou reinício 
- WAIT Espere pelo pino test ativo 
- EXC Fuga escape para o processador externo 
- LOCK Tranque a via durante a próxima instrução 
NENHUMA OPERAÇÃO 
- NOP Nenhuma operação 
Fig. F 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
31 
 
- manipulação de bits: Fig. G 
 
EXs: SHR SI 1 (desloca os bits do registrador SI, para a direita de 1 bit). 
 SI-destino 
 1-contagem 
 
INSTRUÇÕES DE TRANSFERÊNCIA DE CONTROLE 
 
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 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
32 
 
 
As instruções de movimentação de dados, aritméticas e lógicas podem operar com constantes, 
registradores ou posições de memória, usando qualquer uma das funções de endereçamento 
citadas anteriormente. 
 
A instrução aritmética compõe-se em 4 operações básicas, podendo ser operações com 8 ou 16 
bits, números positivos e negativos (aritmética sinalizada com valores na notação de 
complemento 2). 
 
Os MPs 8086/88ainda executam as 4 operações aritméticas básicas em decimal, através da 
utilização das instruções de ajuste decimal. 
 
As instruções lógicas também podem utilizar operandos de 8 ou 16 bits. 
 
Tanto as operações lógicas como as aritméticas (com exceção da multiplicação e divisão) 
podem ter como operandos qualquer um dos registradores, com exceção dos registradores de 
segmentos, e o resultado da operação e colocado em um dos registradores usados. 
 
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. 
 
As instruções de transferência de controle podem ser divididas em; 
 
- Desvios incondicionais: chamadas e retorno de sub-rotinas; 
- Desvios condicionais; 
 
- Desvio de LOOP; 
 
- Interrupção por software. 
 
As instruções de controle do processador permitem manipular FLAGS forçar a parada de 
processador (HALT), etc. 
 
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. 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
33 
 
 
As codificações destes prefixos em instruções são: 
 
CS = 2EH ES = 26H DS = 3EH SS = 36H 
 
As codificações dos registradores de segmento, implícitos numa instrução (DEFAULT), dentro 
do modo de endereçamento são: 
 
ES = 00 CS = 01 SS = 10 DS = 11 
 
 
1º BYTE 2º BYTE 3º BYTE 4° BYTE 
 
 
: COD. DE OPER. : 7 6 5 4 3 2 1 0 : DADOS : DADOS
 : 
 
 byte de modo :----------------------- deslocamento --------------------
--------: 
 de 
 endereçamento 
 
7 6 = mod. (operação em memória ou registradores) 
5 4 3 = reg. (registrador referenciado) 
2 1 0 = r/m (modo de endereçamento) 
 
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: 
 
- multiplicação e divisão de números binários relativos (inteiros) e positivos, e também de 
decimais, na forma não codificada (os dígitos 0-9 representados num byte); 
 
- transfira, busque (um elemento, “scan”) e compare são operações para cadeias com até 64 KB 
de comprimento; 
 
- teste de bits não destrutivos; 
 
- tradução de bytes entre um código e outro; 
- interrupção gerada por software; 
 
- um grupo de instruções que pode ajudar ou coordenar as atividades de sistemas de 
multiprocessadores. 
 
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. 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
34 
 
 
Não existe transferência de conteúdo de memória para memória. 
 
Não existe transferência de conteúdo de um certo endereço para um registro de segmento. 
 
EX: MOV SS, (05) – não existe 
 
Toda a vez que trabalhamos com pilha o ponteiro (SP) estará sempre apontando para um 
endereço decrementado da última posição utilizada. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
35 
 
 
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). 
 
As interrupções podem ser indicadas: 
 
1 – por periféricos na linha INTR (mascarável) e NMI (não mascarável); 
 
2 – através da execução de instrução apropriada (INTO, INTn); 
 
3 – pela CPU em certos casos (erro de divisão, execução passo-a-passo), Fig. A’. 
 
Quando uma rotina de interrupção e iniciada o registro de condições (flags), CS e IP são 
armazenadas (PUSH) na pilha e as flags TF e IF são zeradas. Logo depois a CPU “chama” a 
rotina de serviço carregando o vetor da tabela (tipo *4) nos registros CS e IP. Ao terminar, 
restaura as flags, CS e IP com os valores, salvos há pilha (IRET). 
 
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. 
 
Portas de um sistema, são dispositivos de E / S de informações do sistema com periféricos. São 
acessadas através de endereçamento por instruções de memória ou de E / S (IN, OUT). 
 
E / S – mapeada em memória. 
 
Vantagens: 
 
- utilizar o poderoso set de instruções dos MPs 8086/88; 
- tem a seu dispor 1 MB de endereço. 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
36 
 
 
Desvantagens: 
 
- instruções maiores e mais lentas. 
 
 
E / S – não mapeada em memória.Vantagens: 
 
- utiliza instruções mais rápidas (IN, OUT); 
- tem compatibilidade com instruções de 8 bits, no caso do MP 8088. 
 
Desvantagens: 
 
- só tem duas instruções e está restrito aos modos de endereçamento das mesmas; 
- só pode acessar 64 KB de endereços. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
37 
 
 
PROGRAMA: Preencher 100 bytes à partir de BUFFER com 00H 
 
 
 
 
 
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 
 
 
 
 
 
ORIGEM DAS INTERRUPÇÕES 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microprocessadores 8086/8088 
 Engº Nilton Copelo dos Santos 
 
 
 
 
38 
 
 
BIBLIOGRAFIA 
 
 
Título : 8086 – 8088 Microprocessadores 
Autor : Morgan/Waite 
Editora: Mc GranHill 
 
 
Título : Hardware e Software de Sistemas Baseados em MP 8086/8088 
Autor : Roberto Gleman Waissman 
Editora: Érica 
 
 
Título : IBM PC-xt 
Autor : Raphael Machado Silva Salvador 
Editora: Érica 
 
 
Título : Microprocessadores 
Autor : Eng. Vidal Pereira da Silva Junior 
Editora: Èrica 
 
 
Título : Periféricos Magnéticos Para Computadores 
Autor : Raimondo Cuocolo 
Editora: Érica

Outros materiais