Você está na página 1de 135

Universidade Federal de Gois

Escola de Engenharia Eltrica e de Computao

Notas de Aula

Microprocessador 8085
Microprocessador 8088

Prof. Jos Wilson Lima Nerys

Ncleo de Estudo e Pesquisa em


Processamento da Energia e Qualidade

Goinia, 2006

Observaes

1. Esta apostila destina-se ao ensino de Microprocessadores e Microcontroladores para alunos da 4a


Srie de Engenharia Eltrica da Escola de Engenharia Eltrica e de Computao da Universidade
Federal de Gois
2. No se pretende, com o uso desta apostila, dispensar os livros didticos indicados na referncia
bsica, mas apenas facilitar o ensino da disciplina em questo, reunindo num s volume o
material a ser usado em sala de aula.

3. A apostila est distribudas em captulos que cobrem dois dos trs temas principais, que so:
Microprocessador 8085 - Neste tpico so abordados desde a estrutura bsica de um
microprocessador, at a aplicao do mesmo num sistema mnimo com microprocessador,
memria, portas de entrada e sada e outros perifricos. As instrues em assembly do 8085 so
empregadas na soluo de vrios problemas de cunho didtico, com auxlio do simulador
ABACUS.
Microprocessador 8088 - O objetivo deste tpico fazer um estudo comparativo entre um
microprocessador de 16 bits e o microprocessador 8085 (8 bits) e estudar o princpio de
funcionamento do 8088/8086. utilizado um simulador digital para a execuo de alguns
programas simples.
O captulo sobre o microcontrolador 8051 est disponvel parte.

4. Os tpicos abordados so acompanhados de experimentos de laboratrio.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

Informaes sobre a Disciplina


Disciplina:
Cdigo:
Carga Horria:
Grade Curricular:
Ano Letivo:
Aulas Tericas:
Aulas de Laboratrio:
Professor:

MICROPROCESSADORES E MICROCOMPUTADORES
13.05.035
96 horas (tericas) e 32 horas (de laboratrio)
1992 - (disciplina do 4o ano)
2006
Quarta-feira: 13:30h s 15:10h (alternando com Controle)
Sexta-feira: 15:30h s 17:10h
Segunda-feira tarde (13:30 s 18:30h)
Jos Wilson Lima Nerys

Obs.: As 96 horas de aulas tericas sero ministradas em 48 aulas de 2 horas cada uma.
As 32 horas de aulas prticas sero ministradas em 16 aulas de 2 horas cada uma.

BIBLIOGRAFIA BSICA
Microprocessador 8085:
1. ZILLER, Roberto M., Microprocessadores Conceitos Importantes, Edio do autor,
Florianpolis, 2000. ISBN 85-901037-2-2
2. NERYS, Jos Wilson L., Apostila de Microprocessadores
Microprocessador 8086:
3. ZILLER, Roberto M., Microprocessadores Conceitos Importantes, Edio do autor,
Florianpolis, 2000. ISBN 85-901037-2-2
4. ZELENOVSKY, Ricardo e MENDONA, Alexandre, "PC: Um Guia Prtico de Hardware e
Interfaceamento," Intercincia, Rio de Janeiro, 1996. ISBN: 85-7193-001-5
5. NERYS, Jos Wilson L., Apostila de Microprocessadores
Microcontrolador 8051:
6. SILVA JR., Vidal Pereira da, Aplicaes Prticas do Microcontrolador 8051, rica, So Paulo,
1994.
7. GIMENEZ, Salvador P., Microcontroladores 8051: Teoria do hardware e do software /
Aplicaes em controle digital / Laboratrio e simulao, Pearson Education do Brasil Ltda, So
Paulo, 2002. ISBN: 85.87918-28-1
8. NERYS, Jos Wilson L., Apostila de Microprocessadores
EMENTA
Conceitos bsicos de microprocessadores e microcontroladores. Arquitetura de microprocessadores e
microcontroladores. Princpio de funcionamento de microprocessadores e microcontroladores. Modos
de endereamento. Programao de microcontroladores. Entrada/sada. Dispositivos perifricos.
Interrupes. Temporizadores. Acesso direto memria. Barramentos padres. Expanso e
mapeamento de memria. Ferramentas para anlise, desenvolvimento e depurao.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

PROGRAMA
1 - Introduo aos Computadores e Microprocessadores:
- Histrico
- Computador (definies)
- Estrutura Bsica do Computador
- Unidade Central de Processamento - CPU
- Memria
- Unidade de Entrada e Sada
- Microprocessadores e Microcontroladores
- Outros Conceitos Bsicos
- Ciclo de Clock, Ciclo de Mquina e Ciclo de Instruo
- Memria ROM e Memria RAM
- Memria RAM Esttica e Memria RAM Dinmica
- Registradores
- Diagrama de Blocos de uma CPU Genrica
- Sistemas de Numerao
2 - Arquitetura do 8085:
- Princpio Bsico de Operao de um Microprocessador
- Diagrama de Blocos do Microprocessador 8085
- Pinagem;
- Principais Caractersticas;
- O Sistema Mnimo;
- Modos de Endereamento;
- Busca e Execuo de Instrues.
3 - Conjunto de Instrues do 8085:
- Transferncia de Dados;
- Aritmticas e Lgicas;
- Rotao e Deslocamento;
- Desvio;
- Entrada e Sada;
- Controle.
4 - Princpios Bsicos de Interfaceamento de Micros:
- Interface Paralela
- Interface Serial
- Unidade de Temporizao
- Controlador de Interrupo
- Controlador de DMA (DMAC)
- Integrados de Suporte
- Arquitetura atual de um PC
5 - Arquitetura do 8086/8088 - Famlia 80x86:
- Diagrama em Blocos;
- Registradores;
- Segmentao de Memria;
- Pinagem;
- Modos de Endereamento;
- Evoluo dos processadores da famlia 80X86.
6 - Introduo ao Microcontrolador 8051
- Arquitetura da Famlia do Microcontrolador 8051
- Caractersticas Principais
- Programao em Linguagem Assembly
Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

Interrupes
Temporizadores
Comunicao Serial
Simulao Digital
Construindo um Sistema Baseado no Microcontrolador 8051

7 - Projeto Experimental usando Microcontrolador da famlia 8051


8 - Atividades de Laboratrio
LABORATRIO
Laboratrio
1

Contedo
Uso do Kit do 8085
Programa de Simulao ABACUS

Instrues de transferncia de dados (uso do Kit e do simulador ABACUS)

Instrues aritmticas (uso do Kit e do simulador ABACUS)

Instrues lgicas (uso do kit e do simulador ABACUS)

Programao 8085 (uso do kit e do simulador ABACUS)

Programao 8085 com Interrupo

Programao 8085 com Interrupo

Microprocessador 8086: caractersticas bsicas

Microcontrolador 8051: Sequncia de LEDs e Motor de passo (uso de Kit e de


simulador)

10

Microcontrolador 8051: Motor de corrente contnua (uso de Kit e de simulador)

11

Microcontrolador 8051: Conversores AD e DA (uso de Kit e de simulador)

12

Projeto usando 8051

13

Projeto usando 8051

14

Projeto usando 8051

15

Projeto usando 8051

16

Projeto usando 8051


AVALIAO
Nota
Nota 1
Nota 2
Nota 3
Nota 4

Microprocessadores e Microcomputadores

Tipo de
Avaliao

Valor
Mximo

Prova 1
Laboratrio
Prova 2
Laboratrio
Prova 3
Laboratrio
Prova 4
Projeto Experimental

8,0
2,0
8,0
2,0
8,0
2,0
5,0
5,0

Prof. Jos Wilson Lima Nerys

1. INTRODUO AOS COMPUTADORES E MICROPROCESSADORES................................9


1.1
1.2
1.3
1.4
1.4.1
1.4.2
1.4.3
1.4.4
1.5
1.6
1.7
1.8
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.9
1.10

HISTRICO SOBRE COMPUTADORES ............................................................................................9


NMERO DE TRANSISTORES EM UM MICROPROCESSADOR .....................................................13
DEFINIES E CLASSIFICAES BSICAS .................................................................................14
ESTRUTURA BSICA DE UM COMPUTADOR ...............................................................................15
UNIDADE CENTRAL DE PROCESSAMENTO (CPU) ......................................................................16
MEMRIA ...................................................................................................................................16
UNIDADE DE ENTRADA E SADA (I/O) .......................................................................................16
BARRAMENTO ............................................................................................................................16
NDICE DE DESEMPENHO DE PROCESSADORES .........................................................................17
MICROPROCESSADOR MICROCONTROLADOR .......................................................................17
OUTROS CONCEITOS BSICOS: ...................................................................................................17
SISTEMAS DE NUMERAO .........................................................................................................19
SISTEMA DECIMAL .....................................................................................................................19
SISTEMA BINRIO ......................................................................................................................19
SISTEMA BCD (BINARY-CODED DECIMAL) ..............................................................................19
SISTEMA OCTAL .........................................................................................................................19
SISTEMA HEXADECIMAL ............................................................................................................20
EXERCCIOS PROPOSTOS ............................................................................................................20
REFERNCIAS BIBLIOGRFICAS...............................................................................................21

2. ARQUITETURA E PRINCPIO DE FUNCIONAMENTO DO 8085........................................22


2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8

DIAGRAMA DE BLOCOS DO MICROPROCESSADOR 8085...........................................................22


UNIDADES INTERNAS E REGISTRADORES DO 8085....................................................................23
FREQUNCIA DE CLOCK .............................................................................................................25
PINAGEM DO 8085........................................................................................................................25
SISTEMA BSICO DE TEMPORIZAO E PRINCPIO DE OPERAO ........................................27
FORMATO DAS INSTRUES .......................................................................................................30
EXERCCIOS PROPOSTOS ............................................................................................................31
REFERNCIAS BIBLIOGRFICAS.................................................................................................32

3. CONJUNTO DE INSTRUES DO MICROPROCESSADOR 8085.......................................33


3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12

SIMBOLOGIA DAS INSTRUES...................................................................................................33


MODOS DE ENDEREAMENTO ....................................................................................................33
GRUPOS DE INSTRUES.............................................................................................................34
INSTRUES DE TRANSFERNCIA DE DADOS ............................................................................35
INSTRUES ARITMTICAS ........................................................................................................39
INSTRUES LGICAS.................................................................................................................43
INSTRUES DE DESVIO ..............................................................................................................46
INSTRUES DE CONTROLE, PILHA E ENTRADA E SADA ........................................................49
FUNCIONAMENTO DA PILHA .......................................................................................................51
EXEMPLOS DE PROGRAMAS EM ASSEMBLY DO 8085..............................................................52
EXERCCIOS PROPOSTOS ..........................................................................................................54
REFERNCIAS BIBLIOGRFICAS...............................................................................................56

4. SIMULADOR DIGITAL ABACUS ...............................................................................................57


4.1
4.2
4.3

SIMULADOR ABACUS PARA O MICROPROCESSADOR 8085.....................................................57


EXEMPLOS DE PROGRAMAS EM ASSEMBLY PARA O ABACUS................................................59
EXERCCIOS PROPOSTOS ............................................................................................................60

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

4.4

REFERNCIAS BIBLIOGRFICAS.................................................................................................62

5. KIT DIDTICO E ROTEIROS DE LABORATRIO ...............................................................63


5.1
5.2
5.3
5.4

SUB-ROTINAS DO PROGRAMA MONITOR DO KIT DIDTICO ....................................................63


PRINCIPAIS COMANDOS E ORIENTAES PARA USO DO KIT DIDTICO ..................................64
ROTEIROS DE EXPERIMENTOS....................................................................................................66
REFERNCIAS BIBLIOGRFICAS.................................................................................................74

6. INTERRUPOES E OPERAES DE ENTRADA E SADA ..................................................75


6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8

INSTRUES DE RECOMEO .......................................................................................................75


INTERRUPES ............................................................................................................................75
CIRCUITOS DE INTERRUPO .....................................................................................................76
SETAGEM E LEITURA DA MSCARA DE INTERRUPO ............................................................79
AMPLIANDO A CAPACIDADE DE INTERRUPO ........................................................................80
DISPOSITIVOS DE ENTRADA E SADA..........................................................................................81
EXERCCIOS PROPOSTOS ............................................................................................................83
REFERNCIAS BIBLIOGRFICAS.................................................................................................84

7. ENTRADA E SADA SERIAL E PASTILHAS INTEGRADAS DE SUPORTE ......................85


7.1
7.2
7.2.1
7.2.2
7.3
7.4

INTERFACE SERIAL NO PC..........................................................................................................85


INTEGRADOS DE SUPORTE ..........................................................................................................88
MEMRIAS RAM E ROM...........................................................................................................88
DECODIFICADOR 74LS138.........................................................................................................94
EXERCCIOS PROPOSTOS ............................................................................................................95
REFERNCIAS BIBLIOGRFICAS.................................................................................................97

8. INTERFACE ANALGICA ..........................................................................................................98


8.1
8.2
8.3
8.4

CONVERSOR DIGITAL-ANALGICO ...........................................................................................98


CONVERSOR ANALGICO-DIGITAL .........................................................................................101
EXERCCIOS PROPOSTOS ..........................................................................................................102
REFERNCIAS BIBLIOGRFICAS...............................................................................................103

9. MICROCONTROLADORES 8086/8088.....................................................................................104
9.1
9.2
9.3
9.3.1
9.3.2
9.3.3
9.3.4
9.4
9.5
9.6
9.7
9.8
9.9
9.9.1

INTRODUO .............................................................................................................................104
DIAGRAMA DE BLOCOS DO 8088 ..............................................................................................106
OS REGISTRADORES DO 8088 ...................................................................................................108
REGISTRADORES DE DADOS.....................................................................................................109
REGISTRADORES APONTADORES E NDICES ............................................................................109
REGISTRADORES DE SEGMENTO ..............................................................................................110
APONTADOR DE INSTRUES ..................................................................................................111
A PINAGEM DO 8088 ..................................................................................................................112
CICLOS DE BARRAMENTO DO 8086 ..........................................................................................114
ENDEREAMENTO DE MEMRIA..............................................................................................116
LINGUAGEM DE PROGRAMAO ASSEMBLY DO 8086 ........................................................118
MODOS DE ENDEREAMENTO E ENDEREOS DE MEMRIA EFETIVO ..................................119
INTERRUPES DO 8086............................................................................................................121
ESTRUTURA DE INTERRUPO DO 8086: .................................................................................121

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

9.9.2
9.9.3
9.9.4
9.10
9.10.1
9.10.2
9.10.3
9.10.4
9.10.5
9.10.6
9.11
9.11.1
9.11.2
9.11.3
9.11.4
9.12
9.13
9.14
9.15

INTERRUPES PR-DEFINIDAS, RESERVADA OU EXCEES...................................................122


INTERRUPES POR HARDWARE .............................................................................................122
INTERRUPES POR SOFTWARE ...............................................................................................122
CONJUNTO DE INSTRUES DO 8088/86 ................................................................................123
INSTRUES DE TRANSFERNCIA DE DADOS ........................................................................123
INSTRUES DE STRINGS .......................................................................................................126
INSTRUES LGICAS ............................................................................................................128
INSTRUES ARITMTICAS ....................................................................................................129
INSTRUES DE DESVIO.........................................................................................................129
INSTRUES DE CONTROLE ...................................................................................................130
CARACTERSTICAS DE I/O DO PC-XT....................................................................................130
DIVISO DOS ENDEREOS DOS DISPOSITIVOS DE I/O DO PC-XT ..........................................130
ENDEREOS DOS DISPOSITIVOS DA PLACA PRINCIPAL (PLACA ME) ..................................131
ENDEREOS DOS DISPOSITIVOS DOS SLOTS...........................................................................132
O SLOT DO PC (ISA 8 BITS) ...................................................................................................132
DECODIFICAO DE ENDEREOS...........................................................................................133
EXEMPLOS GERAIS ..................................................................................................................133
PROBLEMAS PROPOSTOS ........................................................................................................134
REFERNCIAS BIBLIOGRFICAS.............................................................................................135

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

1. INTRODUO AOS COMPUTADORES E


MICROPROCESSADORES

1.1

Histrico sobre Computadores

4000 A.C - BACO Inveno do baco pelos babilnios. Instrumento usado para realizar operaes
aritmticas, onde cada coluna representa uma casa decimal. Era o principal instrumento de clculo do
sculo XVII e usado at hoje.

baco

Octograma chins Yin Yang

Data da mesma poca do baco o octograma chins Yin Yang, o qual tido como a primeira representao
binria dos nmeros de 0 a 8. Foi criado pelo imperador chins Fou-Hi para representar a interao entre as duas
energias que juntas so o fundamento da totalidade.
1614 LOGARITMO O cientista escocs JOHN NAPIER criou os logaritmos. Atravs das tabelas criadas,
as operaes de multiplicao e diviso tornaram-se mais simples, pois eram substitudas por operaes
de adio e subtrao, reduzindo o tempo de processamento.

Tabela de logaritmos

Pascaline

1623 RELGIO DE CALCULAR WILHELM SHICKARD, professor de matemtica da Universidade de


Tbingen, Alemanha, inventou um relgio de calcular que considerado a primeira mquina mecnica
de calcular da histria. Fazia multiplicao e diviso, mas requeria vrias intervenes do operador.
Usava o princpio desenvolvido por Napier (Napiers bones). Essa calculadora foi desenvolvida para
auxiliar o matemtico e astrnomo Johannes Kepler.
1642 PASCALINE O cientista francs BLAISE PASCAL criou uma calculadora capaz de realizar
operaes de adio e subtrao. A mquina implementada utilizava rodas e engrenagens, com as quais
era possvel representar nmeros decimais de 0 a 9. Pascal desenvolveu essa mquina para ajudar seu
pai na coleta de impostos. A mquina teve mais de 50 verses diferentes em uma dcada.
1671 O matemtico alemo francs GOTTFRIED LEIBNIZ criou uma calculadora de 4 funes, capaz de
realizar operaes de adio, subtrao, multiplicao e diviso. a antecessora das calculadoras atuais.
O problema comum s calculadoras at esta poca era a necessidade de entrar com todos os resultados
intermedirios.

Calculadora de 4 funes de Leibniz


Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

10
1738 ANDROIDES PROGRAMVEIS O cientista francs JACQUES VAUCANSON criou (robs
imitando a aparncia humana). Eram capazes de tocar flautas. Sua criao mais famosa foi O Pato.
Esse pato mecnico era capaz de imitar todos os movimentos de um pato real (bater asas, movimentar a
cabea, fazer barulho equivalente, comer e evacuar. ( www.automates-anciens.com). Em 1749 ele
construiu o primeiro TEAR AUTOMTICO, que aceitava comandos atravs de um cilindro de metal
perfurado.

Tear de Vaucanson

Tear de Jacquard

1801 CARTO PERFURADO O Tecelo francs JOSEPH MARIE JACQUARD aperfeioou o tear
construdo por Vaucanson. Ele construiu uma mquina de tear que memorizava em cartes perfurados
os padres de desenho dos tecidos e depois os reproduzia com fidelidade, lendo comandos na presena
ou ausncia de orifcios. A verso seguinte do Tear, em 1804, era totalmente automatizada e podia fazer
desenhos muito complicados. Esse considerado o primeiro registro de programao semelhante de
computadores modernos.
1822 MQUINA DE DIFERENA e MQUINA ANALTICA Aborrecido pelos inmeros e freqentes
erros que encontrava nas tabelas de logaritmos, o professor de matemtica CHARLES BABBAGE
(ingls) decidiu construir uma mquina que eliminasse o trabalho repetitivo de fazer esses clculos, a
"Mquina de Diferena". O modelo apresentado em 1822 encantou o Governo Britnico que decidiu
financi-lo na construo de uma mquina de diferena completa, movida a vapor e completamente
automtica, comandada por um programa de instruo fixo capaz de imprimir as tabelas. Baseada em
operaes de adio e subtrao e na tcnica de diferenas finitas, era capaz de resolver funes
polinomiais e trigonomtricas (clculo de tabelas de navegao).

Mquina de diferenas

mquina analtica

O projeto da sua nova mquina levou 10 anos e foi abandonada em 1833, quando decidiu criar a
Mquina Analtica, um computador mecnico-automtico totalmente programvel, funo que
designou para sua esposa, a condessa Ada Lovelace (filha de Lord Byron).
O novo computador decimal paralelo a vapor operaria nmeros de 50 dgitos e proveria de uma
memria de 1000 nmeros, usando cartes perfurados e condicionais (IF), alm de instrues de desvio.
Apesar de ter uma estrutura correta, a metalurgia da poca no permitia a simetria e resistncia das
peas, razo ao qual a mquina nunca funcionou. Seria capaz de fazer uma adio em 1 segundo e uma
multiplicao em 1 minuto.
1885 - O CARTO DE HOLLERITH Herman Hollerith , funcionrio do Departamento de Estatstica dos
Estados Unidos, construiu uma mquina de carto perfurado para fazer o recenseamento da populao
americana. Antes da mquina o recenseamento durava 7 anos e ocupava 500 empregados. Com a
mquina o recenseamento de 1890 durou 1 ano e ocupou 43 empregados. A mquina foi aproveitada
nas mais diversas aplicaes em reparties pblicas, comrcio e indstria, e aperfeioada para realizar
operaes aritmticas elementares. Em 1896 Hollerith fundou a TMC (Tabulation Machine Company).

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

11
Para ampliar seus negcios, a TMC se uniu com duas pequenas empresas para formar a CTRC
(Computing Tabulation Recording Company), em 1914. Em 1924, a CTRC se tornou uma empresa
internacional e mudou seu nome para IBM (Internacional Business Machine).

Mquina de Herman Hollerith

Z4

1936 COMPUTADORES Z1, Z3 e Z4 O cientista alemo KONRAD ZUSE criou o computador - Z1,
baseado em rel eletro-mecnico. Criou tambm o computador Z3, que foi o primeiro computador de
propsito geral controlado por programa. Criou ainda o Z4, computador projetado para o
desenvolvimento de msseis. Ele foi destrudo por bomba na 2a. guerra mundial.
1943 COLOSSO Na Inglaterra, em 1943, Alan Turing, do Servio de Inteligncia Britnico, construiu o
Colosso, de dimenses gigantescas. A mquina, abrigada em Bletchley Park, tinha 2000 vlvulas e lia
smbolos perfurados numa argola de fita de papel, inserida na mquina de leitura fotoeltrica,
comparando a mensagem codificada com sequncias conhecidas at encontrar uma coincidncia.
Processava cerca de 5 mil caracteres por segundo e foi usada para descodificar as mensagens dos
alemes, tendo sido decisiva no resultado final da guerra.

Colosso

Mark I

1944 MARK I Na Universidade de Harvard em 1937, o professor Howard Aiken, financiado pela IBM,
comeou a construir o Mark I, concludo em 1944. Baseado em um sistema decimal, manipulava
nmeros de at 23 dgitos e tinha medidas grotescas: 15 m de comprimento e 2,5 m de altura; 760.000
peas envoltas em vidro e ao inoxidvel brilhante; 800 km de fios e 420 interruptores para
controle.trabalhava sob o controle de um programa perfurado em uma fita de papel. Adio e subtrao
em 0,3 s, multiplicao em 3 s e diviso em 12 s,
1946 ENIAC (Electronic Numerical Integrator and Computer) - 1o Computador de propsito geral a
vlvula: 18.000 vlvulas, 30 toneladas, 15.000 ps quadrados, 140 kW, representao e aritmtica com
nmeros decimais, 5.000 adies /seg. Projetado pela Ballistics Research Labs. Foi aproveitado no
desenvolvimento da Bomba H.
1946 VON NEWMANN MACHINE A Mquina de Von Newman, ou Mquina de Touring introduziu o
conceito de programa armazenado (Stored Programa Concept) no qual a memria conteria, alm de
dados, programas. Os computadores modernos so baseados na mquina de Von Newman.
1950 UNIVAC (Universal Automatic Computer) Lanado pela SPERRY, foi o 1o Computador de
aplicao cientfica e comercial. Seguiram UNIVAC II e UNIVAC 1100 series .

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

12
1953 IBM 701 Computador desenvolvido para aplicaes cientficas.
1947 TRANSISTOR Inveno do transistor pelos cientistas John Bardeen, William Shockley e Walter
Brattain. Passou a ser usado em escala comercial somente em 1952 pela Bell Laboratories.
1958 CIRCUITO INTEGRADO O engenheiro Jack Kilby, da Texas Instruments, criou o Circuito
Integrado.
1960 IBM 7090, 7094 Computador transistorizado. Utilizao de linguagens de programao de alto nvel,
tais como FORTRAN, COBOL e PASCAL.
1964 IBM 360 Primeira famlia planejada de computadores.
DEC PDP 8 Introduziu o conceito de Minicomputador. Criou a estrutura de barramento, ou seja,
unidadade de Entrada e Sada, Memria e CPU interligados por um conjunto de condutores.
1971 4004 (INTEL) - 1o microprocessador a ser lanado, de 4 bits, com aplicao voltada para calculadoras
(manipulao de nmeros em BCD) - 45 instrues - 640 Bytes de memria - clock de 108 KHz 60.000 instrues/seg. (OBS: desempenho superior ao ENIAC) - 2.300 transistores.
1972 8008 (INTEL) - 1o microprocessador de 8 bits, com aplicao voltada para terminais (que trabalham com
caracteres - codificao ASCII) - 48 instrues - 16KB de memria - clock de 200 KHz - 300.000
instrues/seg. 3500 transistores.
1974 8080 (INTEL) - Processador de 8 bits, de propsito geral - 72 instrues - opera com 12V - clock de 2
MHz - 640.000 instrues/s. 64KB de memria. 6.000 transistores.
1975 Z80 (ZILOG), 6502 (MOS) Utilizado pelo 1o APPLE (APPLE 1) em 1976 por Steve Wozniak e Steve
Jobs (data da fundao da APPLE).
1976 8085 (INTEL) 8080 operando com 5V - 2 instrues a + que o 8080 - melhor performance. 5 MHz 370.000 instrues/s. 6500 transistores.
1978 8086 (INTEL) - Processador 16 bits (barram. externo de 16 bits e registradores de 16 bits). 5 MHz - 0.33
MIPS, 8 MHz - 0.66 MIPS e 10 MHz - 0.75 MIPS. 29.000 transistores.
1979 8088 (INTEL) - Processador 16 bits (barram. externo de 8 bits e registradores de 16 bits) - 133
instrues - chip utilizado no primeiro PC em 1981. O PC/XT seria lanado em 1983 com HD de 10
MB e 128 Kbyte RAM. 29.000 transistores. Lanado o 68.000 (MOTOROLA) que foi utilizado no
Machintosh em 1984
1980 Coprocessador 8087 (processador matemtico).
8051 (INTEL Lanado o microcontrolador 8051: microprocessador + perifricos (RAM, ROM,
Serial, Timer, Controlador de Interrupo, etc.) num nico chip, voltado para aplicaes de controle
1982 80186/188 - 80286 - 80287 (INTEL) PC/AT 16 bits, modo protegido, 24 linhas endereos.
1985 80386 (INTEL) Processador de 32 bits - bus ext. de dados de 32bits - 275.000 transistores. 16MHz 2.5 MIPS, 20 MHz - 2.5 MIPS, 25 MHz - 2.7 MIPS, 33 MHz - 2.9 MIPS.
1989 80486 (INTEL) - Processador de 32 bits: 386 que incorpora o 387 (coprocessador), cache interna (L1)
de 8KB e maior performance - 235 instrues - 1,2 milhes de transistores. 25 MHz - 20 MIPS, 33
MHz - 27 MIPS, 50 MHz - 41 MIPS.
1991 WEB Tim Berners-Lee desenvolve a Rede Mundial de Computadores (World Wide Web). O primeiro
servidor Web lanado. O conceito de conexo de vrios usurios a um nico computador por via
remota nasceu no MIT no final da dcada de 50 e incio da dcada de 60. As idias bsicas da Internet
foram desenvolvidas em 1973 por Bob Kahn e Vint Cerf.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

13
1993 Pentium 60 MHz e 66 MHz - Processador de 32 bits bus ext. de 64 bits - 5V - 3 milhes de
transistores. Primeiro processador de 5a gerao.
1994 Pentium 90 MHz e 100 MHz - Alimentao de 3,3V (maior confiabilidade). 3.2 milhes de transistores.
1996 Pentium Pro 200 - Incorpora cache L2 de 256kB, utilizando tecnologia MCM (Multi-Chip Module) - 5
milhes de transistores - idealizado para programas de 32 bits. Usa memria de 64 bits.
1997 Pentium 200MMX (Pentium MultiMidia eXtensions): contm 57 novas instrues dedicadas para
programas de Multimdia. 4.5 milhes de transistores. 200 MHz e 166 MHz. Barramento de 64 bits.
Cada instruo MMX equivale a vrias instrues comuns.
1997 Pentium II 233, 266, 300MHz utiliza o slot I. 7,5 milhes de transistores (tecnologia 0.35 micron),
cache L2 com 512kB - 242 pinos - 64GB de memria enderevel. Poder de processamento de 32 bits
do Pentium Pro e maior eficincia no processamento de 16 bits. Instrues MMX.
1998 Pentium II 450 MHz - Cache L2 de 512 kB, 7.5 milhes de transistores, tecnologia 0.25 micron,
barramento de 64 bits. 64 GB de memria enderevel.
1999 Pentium III 450 e 500 MHz (at 1,2 GHz) Barramento de sistema de 100 MHz ou 133 MHz, cache L2
de 512 kB, processador de 32 bits, 9,5 milhes de transistores, tecnologia 0.25 micron, 64 GB de
memria enderevel. 70 novas instrues voltadas para multimdia e processamento 3D.
2000 Pentium IV at 2 GHz, barramento de sistema de 400 MHz, Cach L1 de 32 kB e L2 de 256 kB, 42
milhes de transistores.

Alguns Exemplos de Aplicao de Microprocessadores e Microcontroladores


Microcomputadores, Calculadoras, Relgios Digitais, Controle de Fornos Micro-ondas, Lavadora de
Roupas, Video Games e outros brinquedos, Controle de Motores, Controle de Trfego, Alarmes e Sistemas de
Segurana, Telefone Celular.

1.2

Nmero de Transistores em um Microprocessador

O nmero de transistores num nico microprocessador um dos indicadores da evoluo acentuada


nessa rea nos ltimos anos. Dr. Gordon E. Moore, co-fundador da Intel, afirmou em 1965 que o nmero de
transistores em um microprocessador dobraria a cada dois anos. O grfico e a tabela a seguir confirmam a
previso de Moore nos ltimos 30 anos.

Fig. 1.1: Evoluo do nmero de transistores no microprocessador

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

14

Tabela: Evoluo do nmero de transistores no microprocessador


Processador

Ano de
Introduo

Nmero de
transistores

Barramento de
dados (bits)

Capacidade de
endereamento

4004
8008
8080
8085
8086
8088
286
386
486 DX
Pentium
Pentium II
Pentium III
Pentium 4

1971
1972
1974
1976
1978
1979
1982
1985
1989
1993
1997
1999
2000

2.250
2.500
5.000
6.500
29.000
29.000
120.000
275.000
1.180.000
3.100.000
7.500.000
24.000.000
42.000.000

4
8
8
8
16
16
16
32
32
32
32
32
32

1 kB
16 kB
64 kB
64 kB
1 MB
1 MB
16 MB
4 GB
4 GB
4 GB
4 GB
4 GB
4 GB

A quantidade cada vez maior de transistores numa nica pastilha foi acompanhada da reduo do
tamanho fsico dos transistores. Essa reduo mostrada na Fig. 1.2.
A reduo do tamanho do transistor resulta no aumento da velocidade de operao e tambm na reduo
das conexes internas, alm de permitir a insero de um nmero cada vez maior de transistores numa nica
pastilha. O aumento da capacidade de integrao de transistores resulta ainda na reduo do consumo de energia
eltrica e do custo dos microprocessadores. H um postulado que diz que o gate de um transistor no pode ser
menor do a largura correspondente a 10 tomos. A previso de pesquisadores da Intel a dimenso do gate dos
transistores alcanaro esse valor por volta do ano 2017 (http://www.intel.com/update/archive/issue2/focus.htm).

Fig. 1.2: Reduo do tamanho fsico dos processadores

1.3

Definies e Classificaes Bsicas

COMPUTADOR (definies):
-

Mquina destinada a reduzir cmputos (clculos) e tomadas de decises;


Mquina que executa uma seqncia de operaes (descritas por um programa) sobre um determinado
dado e produz uma sada;
Dispositivo com a habilidade de ser programado para operar (armazenar, relembrar e processar) dados
sem a interveno humana.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

15

COMPUTADOR (classificao quanto velocidade de processamento, nmero de


registradores da CPU, complexidade do sistema operacional etc ):
Microcomputador:
- Computador que tem a CPU implementada em um nico chip: o microprocessador

Minicomputador:
- Multi-usurio;
- grande capacidade de armazenamento;
- operao com matrizes e ponto flutuante melhorada;

Mainframes ( computadores de grande porte) :


- suporta grandes bases de dados (organizaes governamentais, grandes empresas);
- alta performance;
- processamento distribudo;
Supercomputador:
- Computador idealizado para resolver problemas matemticos de processos reais, tais como:
aerodinmica, meteorologia, fsica, etc
- altssima performance (GFLOPs) para repetidas operaes aritmticas (iterao);
- operaes com matrizes e nmeros em ponto flutuante;
- mercado limitado.

COMPUTADOR (classificao quanto grandeza manipulada):


Computadores Analgicos:
- operam diretamente com grandeza fsica (variveis contnuas);

Computadores Digitais:
- operam com variveis discretas (nmeros).

COMPUTADOR (funes bsicas):


-

1.4

processamento de dados (ex.: execuo de uma adio ou de uma funo lgica);


armazenamento de dados (ex.: armazenamento temporrio na memria RAM, Disco, DAT, etc.);
movimentao de dados (comunicao com mundo exterior: teclado, monitor, impressora);
controle (controle das funes anteriores).

Estrutura Bsica de um Computador


CPU

Fig. 1.3: Estrutura bsica de um computador

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

16

1.4.1

Unidade Central de Processamento (CPU)

A Unidade Central de Processamento a responsvel por buscar e executar instrues, que ficam
armazenadas na memria. A CPU possui internamente os seguintes blocos, dentre outros:
Control Unit - Unidade de Controle (UC) - tem por funo bsica o controle das demais unidades da CPU de
uma forma lgica e sincronizada.
ALU (Aritmetic and Logic Unit) - Unidade Lgica e Aritmtica (ULA) - realiza funes bsicas de
processamento de dados (adio, subtrao, funes lgicas, etc.).
Registers - Registradores - So usados para o armazenamento interno da CPU. Existem diversos registradores na
CPU e o principal deles chamado de Acumulador.
CPU interconnection - o barramento interno da CPU; ele permite a comunicao entre a Unidade de
Controle, a Unidade Lgica e Aritmtica e os Registradores.

1.4.2

Memria

o local de armazenamento de dados e programas. Possui palavras de tamanho fixo, sendo cada
palavra vinculada a um endereo nico. Possui ainda linhas de controle, sendo as principais: READ (leitura) /
WRITE (escrita).
Existem dois tipos bsicos de memria: Memria somente para leitura (ROM), onde ficam
armazenados permanentemente informaes fundamentais para o funcionamento do computador e cujos dados
no so perdidos na falta de energia; e a memria RAM, que permite gravar e apagar dados de acordo com os
interesses do usurio, e cujo contedo perdido quando o computador desligado. A memria RAM divide-se
ainda em Memria Dinmica (DRAM) e memria esttica (SRAM), que sero melhor detalhadas
posteriormente. A principal caracterstica a ser destacada neste ponto a baixa velocidade de acesso da memria
RAM.
Com o passar dos anos os processadores tornaram-se cada vez mais rpidos, o mesmo no acontecendo
com as pastilhas de memria, que evoluram de forma bem menos acentuada (em particular, a memria
dinmica, que possui velocidade de acesso bem menor que a esttica, mas bem mais barata). Para evitar com
que a baixa velocidade de acesso da memria comprometesse o desempenho dos processadores mais modernos,
um tipo especial de memria RAM foi criado: a memria CACHE.
A memria CACHE consiste numa pequena quantidade de memria RAM esttica (SRAM) usada para
acelerar o acesso RAM dinmica. Quando h necessidade de ler dados da memria dinmica, estes so antes
transferidos para a memria cache. Enquanto o processador l dados da memria cache, mais dados so
antecipadamente transferidos da memria dinmica para a memria cache, de forma que o processamento tornase mais rpido.

1.4.3

Unidade de Entrada e Sada (I/O)

a unidade atravs da qual o usurio se comunica com o sistema. Ela abriga componentes
responsveis pelo interfaceamento do sistema com perifricos tais como teclado, LCD, mouse, impressora e
monitor. tambm atravs da unidade de entrada e sada que so enviados sinais de interrupo para a CPU.

1.4.4

Barramento

Barramento o meio fsico usado para o transporte de um conjunto de sinais digitais usados para
comunicao entre o processador, a memria e o meio externo. O barramento especfico para a comunicao
entre o processador e a memria chamado de barramento de sistema. Para a comunicao com os perifricos os
trs tipos mais comuns de barramento hoje so: barramento ISA, usado para interfaces seriais, paralelas,
interface para drivers e alto falante; barramento PCI, usado para interfaces IDE e USB; e barramento AGP,
usado para placas de vdeo 3D de alto desempenho.
Um barramento constitudo de um barramento de dados, um barramento de endereos e um
barramento de controle. O barramento de dados nos computadores mais modernos possui at 64 linhas (bits) e
permite o fluxo bidirecional de dados. O microprocessador 8085, objeto de estudo na primeira parte do presente
curso, possui 8 bits de dados e, por esta razo, denominado de processador de 8 bits.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

17
A quantidade de posies de memria que um computador pode acessar ditada pela quantidade de bits
do barramento de endereos. Um barramento com 32 bits pode acessar at 4.294.967.296 (232) posies de
memria, o que corresponde a 4 GB de memria (4.294.967.296 = 4 1024 1024 1024 = 4 GB). Todos os
processadores da classe Pentium possuem barramento de endereo com 32 bits. Os processadores Pentium II,
Pentium III e Celeron possuem barramento de endereo de 36 bits, podendo ento acessar at 64 GB de
memria.
O barramento de controle de um computador comporta uma srie de sinais com finalidades diversas.
Alguns exemplos so: sinal RW que indica se a operao uma leitura ou uma escrita, sinal MIO, que indica se
a operao envolve a memria ou a unidade de entrada e sada, sinal de RESET, entradas das interrupes, sinal
de CLOCK, etc.
Barramento ISA - O barramento ISA (Industry Standard Architecture) formado por slots de 8 e 16 bits
existentes nas placas de CPU e foi originado no IBM PC, na verso de 8 bits, e aperfeioado no IBM PC AT,
quando foi criada a verso de 16 bits. Permite transferncia de dados em grupos de 8 ou 16 bits a um clock de
8 MHz. Embora possua velocidade de transferncia pequena para os padres atuais, o barramento ISA ainda
muito utilizado para placas tais como fax/modem, placas de som e placas de rede, cujos desempenhos no
ficam comprometidos com a baixa velocidade de transferncia do barramento.
Barramento PCI - O barramento PCI (Peripheral Component Interconnect) foi desenvolvimento pela Intel,
quando do desenvolvimento do processador Pentium. Ele opera com 32 ou 64 bits, apresenta taxa de
transferncia de at 132 MB/s, com 32 bits e possui suporte para o padro PnP (Plug and Play). Seu clock
geralmente de 33 MHz, para valores de clock interno acima de 150 MHz.
Barramento AGP - O barramento AGP (Accelerated Graphics Port) foi devolvido pela Intel com o intuito de
aumentar a taxa de transferncia entre a CPU e a placa de vdeo, melhorando o desempenho de operao com
grficos. Esse barramento foi incorporado CPU de processadores Pentium II mais modernos. A principal
vantagem do AGP o uso de maior quantidade de memria para armazenamento de texturas para objetos
tridimensionais, alm de alta velocidade no acesso a essas texturas para aplicao na tela.

1.5

ndice de Desempenho de Processadores


O aumento de desempenho (velocidade de processamento) de processadores gira em torno de pontos

chaves:

1.6

Aumento de clock
Aumento do nmero interno de bits
Aumento do nmero externo de bits
Reduo do nmero de ciclos para executar cada instruo
Aumento da capacidade e velocidade da memria cache
Execuo de instrues em paralelo

Microprocessador Microcontrolador

Microprocessador - a CPU de um computador construdo num nico Circuito Integrado. Contm


essencialmente a unidade de controle, a unidade lgica e aritmtica e registradores. Precisa de perifricos tais
como memria e unidade de entrada e sada, para a formao de um sistema mnimo.
Microcontrolador - um computador completo construdo num nico Circuito Integrado. Os
microcontroladores so normalmente utilizados para aplicaes especficas. Eles contm normalmente
facilidades tais como portas seriais, portas de entrada e sada paralelas, timers, contadores, controles de
interrupo, conversor analgico para digital, memrias RAM e ROM.

1.7

Outros conceitos bsicos:

MIPS -

Millions of Instructions Per Seconds (Milhes de Instrues Por Segundo): uma unidade de
desempenho do microprocessador.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

18
FLOPS - FLOating point instructions Per Seconds (Instrues com Ponto Flutuante Por Segundo). tambm
uma unidade de desempenho do microprocessador. Indica a capacidade de trabalhar com nmeros
decimais.
Representao em Ponto Fixo - Sistema numrico no qual o ponto est implicitamente fixo ( direita do digito
mais a direita);
Representao em Ponto Flutuante - Sistema numrico no qual um nmero real representado por um par
distinto de numerais: uma mantissa (ou significante) e um expoente. Possibilita representao de
nmeros fracionrios.
Bit - Abreviatura para 'Binary Digit', ou, Dgito Binrio. Pode assumir valor 0, que corresponde a tenso O V, ou
1, que representa normalmente uma tenso de 5 V ou 3.3 V.
Byte - Conjunto (cordo) de 8 bits. a unidade bsica de dados nos computadores, que tambm utilizam alguns
mltiplos de 8, tais como 16 bits (Word) e 32 bits (Dword).
BYTE
nibble superior
nibble inferior
Bit 7
Bit 6
Bit 5
Bit 5
Bit 3
Bit 2
Bit 1
Bit 0
Nibble, Word, Dword Palavra digital composta de 4, 16, 32 bits, respectivamente.
Set de instrues - Conjunto de Instrues. Conjunto de Mnemnicos (siglas que fazem lembrar uma ao) que
representam todas as instrues do processador. Cada processador possui o seu set de instrues
particular.
CISC - Complex Instruction Set Computer: Tecnologia atribuda s CPUs de um modo geral, que contm set de
instrues complexo. O barramento de comunicao entre as unidades que compem a CPU comum a
todas as unidades, ou seja, no h comunicao direta entre unidades, atravs de um barramento
exclusivo.
RISC - Reduced Instruction Set Computer: Computador com set de instrues reduzido. Principais
caractersticas:
Conjunto de instrues limitado e simples;
Grande nmero de registradores de propsito geral;
Pipeline otimizado. Em outras palavras, h comunicao direta entre algumas unidades, atravs de
barramento exclusivo, possibilitando, assim, o processamento paralelo de intrues.
BIOS - Basic Input/Output System o conjunto mnimo de instrues necessrias para a inicializao do
computador. Tambm gerencia o fluxo de dados entre o sistema operacional do computador e os
dispositivos perifricos conectados.
Memria EPROM - (Erasable Programmable Read Only Memory) - So memrias somente de leitura usadas
para a gravao de programas. A gravao feita atravs de uma gravadora especfica e os dados
gravados podem ser apagados atravs de raios ultravioletas. Pode-se repetir esse processo gravar/apagar
por vrias vezes.
Memria EEPROM ou E2PROM - (Electrically Erasable Programmable Read Only Memory) - So memrias
que podem ser usadas tanto para leitura quanto para escrita porque a gravao pode ser atravs de
gravadora especfica ou pelo sistema. So apagadas eletricamente. o feita atravs de uma gravadora
especfica e os dados gravados podem ser apagados atravs de raios ultravioletas. Pode-se repetir esse
processo gravar/apagar por vrias vezes.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

19

1.8
1.8.1

Sistemas de Numerao
Sistema Decimal
O sistema decimal utiliza 10 dgitos, que vo de 0 a 9. Exemplo: 34610
1o dgito: Armazena as unidades (ou 100 = 1). No ex.: seis unidades (ou 6 100);
2o dgito: Armazena as dezenas (ou 101 = 10). No ex.: quatro dezenas (ou 4 101);
3o dgito: Armazena as centenas (ou 102 = 100). No ex.: trs centenas (ou 3 102);
A soma destas parcelas eqivale a: 6 + 40 + 300 = 34610
A ponderao dada pelo nmero 10 elevado potncia representada pela coluna, sendo que a 1a
coluna da direita 0.

1.8.2

Sistema Binrio

O sistema binrio o sistema de numerao que o computador entende. Utiliza 2 dgitos, 0 e 1 ou (OFF
e ON) ou (0V e 5V), ou (0V e 3,3V). Exemplo: 110010112
1o dgito: Armazena o equivalente a 20 (1). No ex.: 1 20
2o dgito: Armazena o equivalente a 21 (2). No ex.: 1 21
3o dgito: Armazena o equivalente a 22 (4). No ex.: 0 22

8o dgito: Armazena o equivalente a 27 : No ex.: 1 27


A soma destas parcelas resulta no seguinte equivalente decimal:
1 + 2 + 0 + 8 + 0 + 0 + 64 + 128 = 20310
A ponderao dada pelo nmero 2 elevado potncia representada pela coluna, sendo que a 1a coluna
0, a segunda coluna 1 e assim sucessivamente.
1 kbyte = 210 = 1.024 bytes;
1 Mbyte = 210 x 210 = 1.048.576 bytes = 1.024 kbytes;
1 Gbyte = 210 x 210 x 210 = 1.073.741.824 bytes = 1.024 Mbytes

1.8.3

Sistema BCD (Binary-Coded Decimal)

O Sistema BCD o sistema em que se combina o sistema binrio e o sistema decimal. utilizado como
formato de sada de instrumentos. Utiliza 2 dgitos: 0 e 1 que so dispostos em grupos de 4 dgitos, utilizados
para representar um dgito decimal (nmero 0 at 9). A representao de um nmero maior que 9 deve ser feita
por outro grupo de 4 bits, com a ponderao dada pelo sistema decimal. Exemplo: 97310 = 1001 0111 0011.
Note a diferena entre este valor e o valor do nmero binrio 1001011100112 = 241910

1.8.4

Sistema Octal

O Sistema Octal baseado nos mesmos princpios do decimal e do binrio, apenas utilizando base 8.
Utiliza 8 dgitos: 0 a 7. Exemplo: 32078
1o dgito: Armazena o equivalente a 80 (1).
o

2 dgito: Armazena o equivalente a 8 (8).


Microprocessadores e Microcomputadores

No ex.: 7 80
No ex.: 0 81
Prof. Jos Wilson Lima Nerys

20
3o dgito: Armazena o equivalente a 82 (64). No ex.: 2 82
4o dgito: Armazena o equivalente a 83 (512). No ex.: 3 83
O equivalente decimal : 7 + 0 + 128 + 1536 = 167110

1.8.5

Sistema Hexadecimal

O Sistema Hexadecimal baseado nos mesmos princpios do decimal, apenas utiliza base 16. Utiliza 16
dgitos: 0 a 9, A, B, C, D, E e F. Exemplo: Ex.: 20DH ou 20Dh ou 20D16
1o dgito: Armazena o equivalente a 160 (1).

No ex.: 13 160

2 dgito: Armazena o equivalente a 16 (16). No ex.: 0 161


o

3o dgito: Armazena o equivalente a 162 (256). No ex.: 2 162


O equivalente decimal : 13 + 0 + 512 = 52510
O sistema hexadecimal mais fcil de trabalhar que o sistema binrio e geralmente utilizado para
escrever endereos. Cada dgito hexadecimal convertido em 4 dgitos binrios equivalentes. Cada nmero
binrio convertido em hexadecimal convertendo-se grupos de 4 bits em seus dgitos hexadecimais
equivalentes.
Ex.: 7 D 3 F16 = 0111 1101 0011 11112
Ex.: 10100001101110002 = 1010 0001 1011 10002 = A 1 B 816

1.9

Exerccios Propostos

1 - Quais as funes bsicas de um computador?


2. Em que consiste a CPU de um computador?
3. Como feita a conexo da CPU com as demais unidades de um computador?
4. Diferencie memria DRAM de memria SRAM
5. Qual a finalidade da memria CACHE?
6.

Quantas posies de memria podem ser endereadas com um barramento de endereos de 16 bits? E de
20 bits?

7.

Como os indicadores abaixo contribuem para o aumento do desempenho de um processador?


(a) aumento da freqncia de clock
(b) reduo do nmero de ciclos para executar uma instruo
(c) processamento paralelo de instrues

8.

Qual a diferena entre microprocessador e microcontrolador?

9.

Diferencie bit, nibble e byte.

10. Diferencie EPROM e EEPROM.


11. Converta os nmeros abaixo (que esto na base indicada) para hexadecimal

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

21
(a)
(b)
(c)
(d)
(e)
(f)

34510 = _________ h
101001112 = _________ h
101010108 = _________ h
25510 = _________ h
12810 = _________ h
101001110112 = ___________ h

1.10 Referncias Bibliogrficas

[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Edio do Autor, Florianpolis, SC,
2000.
[2] http://www.intel.com/research/silicon/moorespaper.pdf
[3] www.maebee.com.br
[4] http://www.intel.com/intel/intelis/museum/exhibits/hist_micro/hof/
[5] http://www.computerhistory.org/timeline/

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

22

2. ARQUITETURA E PRINCPIO DE FUNCIONAMENTO DO 8085


2.1

Diagrama de Blocos do Microprocessador 8085

Fig. 2.1: Diagrama de blocos do microprocessador 8085

Principais Caractersticas:
microprocessador de 8 bits de propsito geral (com 6.200 transistores);
opera com +5V e GND. O 8080, seu antecessor, opera com +12V, +5V e -5V;
100% compatvel em software com o 8080A;
conjunto de instrues com 74 instrues. Estas 74 instrues resultam num total de 246 opcodes distintos;
instrues do 8085 possuem 1, 2 ou 3 bytes;
H 2 registradores temporrios de 8 bits (W e Z) no aparentes ao programador (no endereveis);
8 linhas de dados: barramento bidirecional e com 3S (three state);
16 linhas de endereo; permite endereamento de at 64kbytes = 65.536 posies de memria;
barramento de dados multiplexado com parte baixa do barramento de endereo (o hardware deve conter um
latch (ex.: 74373) para armazenar os endereos baixos: A0 a A7);
possui pino de seleo de Entrada (I) e Sada (O) - (IO/M)

possui gerador de clock interno ( necessrio apenas um cristal externo, juntamente com dois capacitores).
Reset do 8085: PC em 0000h; Flip-Flop IE (Interrupt Enable) em 0 (indicando interrupes desabilitadas);
HLDA em 0; demais registradores com valores indeterminados; Interrupes RST 5.5, RST 6.5, RST 7.5
mascaradas; SOD em 0.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

23

2.2

Unidades Internas e Registradores do 8085

Unidade "Controle de Interrupo"


Unidade responsvel pelo tratamento das 5 interrupes externas do 8085. Essas interrupes so
vetoradas, o que significa que h um endereo fixo, pr-definido, para cada uma (RST n salta para a
posio de memria 8 vezes n: RST 5.5 = 4410 = 2Ch; RST 6.5 = 34h; RST 7.5 = 3Ch.). As interrupes
RST 5.5, RST 6.5 e RST 7.5 podem ser mascaradas, ou seja, elas podem ser bloqueadas via "software". J a
interrupo TRAP no pode ser bloqueada e a interrupo de maior prioridade do 8085. Ela normalmente
ativada quando h problemas de falta de energia, para um desligamento seguro do microprocessador. A
interrupo INTR, na verdade, um canal para expanso da capacidade de interrupo. Atravs desse canal
um CI especial (Exemplo: CI 8259) conectado ao 8085, de modo a permitir um nmero maior de
interrupes. O sinal INTA\ faz parte da comunicao entre o 8085 e o CI usado para expanso da
capacidade de interrupo.
Unidade "Controle de Entrada/Sada Serial"
atravs dessa unidade que o microprocessador recebe e envia dados de forma serial, ou seja, bit a bit, ao
invs de um byte por vez. O pino SID (Serial Imput Data) usado para a entrada de dados de forma serial e
o pino SOD (Serial Output Data) usado para a sada de dados de forma serial.
Unidade "Temporizao e Controle"
Esta unidade responsvel por gerar todos os sinais de controle do 8085, tais como os sinais de leitura
(RD\) e escrita (WR\) de memria, os sinais de liberao de barramento para um perifrico (HLDA) e o
sinal de habilitao de endereo para um perifrico (ALE). Todas as unidades internas do 8085 so
controladas por esta unidade, que contm, dentre outros, um contador em anel para sincronizao da
operao de todas as unidades do 8085. Os sinais de controle para outras unidades so enviados aps a
decodificao das instrues vindas do Registrador de Instrues (IR). Recebe ainda sinais do registrador
de Flags e da unidade de interrupes.
Unidade "Unidade Lgico-Aritmtica (ULA ou ALU)"
responsvel por todo o processamento realizado na CPU (execuo de instrues aritmticas e lgicas).
controlada por sinais internos emitidos pela Unidade de Controle. Tem como entrada os registradores A
(Acumulador) e TEMP (Temporrio). responsvel pela sinalizao de status das operaes (FLAGS).
um registrador de 8 bits.
Registrador "Acumulador"
o principal registrador da CPU. utilizado como Buffer temporrio de entrada da Unidade Lgica e
Aritmtica (ALU ou ULA). Freqentemente o registrador de entrada ou sada da CPU. utilizado
implicitamente na maioria das instrues. um registrador de 8 bits, o que permite trabalhar com nmeros
sem sinal de 0 a 255 e nmeros com sinal de -128 a +127. O resultado das operaes resultantes da ULA
enviado para o Acumulador.
Registrador "TEMP"
um registrador auxiliar usado para a entrada de dados da Unidade Lgico-Aritmtica. Os dados desse
registrador so enviados para a ULA juntamente com os dados do Acumulador.
Registrador "Flip-flops dos flags"
tambm conhecido como registrador F (de Flags), ou registrador PSW (Program Status Word) um
registrador de 8 bits (mas somente 5 bits so utilizados) que armazena o estado da ltima operao
realizada na ULA. So 5 as flags do 8085, conforme mostrado a seguir:
Registrador F
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
S
Z
AC
P
CY

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

24

S = Flag de Sinal - assume o valor 1 quando o resultado de uma operao negativo


Z = Flag de Zero - assume o valor 1 quando o resultado de uma operao zero
AC = Auxiliar de Carry = flag usada como auxiliar de transporte. Assume valor 1 quando h transporte do
bit 3 para o bit 4. usada em operaes BCD
P = Flag de Paridade = assume valor 1 quando h um nmero de par de algarismos 1 no acumulador
CY = Flag de Carry (transporte) = assume valor 1 quando h transporte do bit 7.
Exemplos de operao e os Flags resultantes:
AC=1

CY=1
1

0
1
0

0
1
0

0
1
0

0
1
0

1
1
1

1
1
0

0
0
1

1
1
0

P=1
CY=1
1

0
1
0

0
1
0

0
1
0

1
1
0

0
0
0

0
0
0

0
0
0

0
0
0

P=1eZ=1

Houve transporte do bit 3 para o bit 4, da, AC = 1


Houve transporte do bit 7 para o bit 8, da, CY = 1
H quantitade par de bits "1" no resultado (o resultado
est nos 8 primeiros bits porque todos os registradores
possuem apenas 8 bits). Da, P = 1.
O resultado da operao diferente de zero, da, Z=0.
O bit 7 do resultado da operao zero. Da, S = 0.
No houve transporte do bit 3 para o bit 4, da, AC = 0
Houve transporte do bit 7 para o bit 8, da, CY = 1
H quantitade par de bits "1" no resultado (o resultado
est nos 8 primeiros bits porque todos os registradores
possuem apenas 8 bits). Da, P = 1.
O resultado da operao igual a zero, da, Z = 1.
O bit 7 do resultado da operao zero. Da, S = 0.

"Registrador de Instruo" (IR - Instruction Register)


um registrador de 8 bits que armazena o primeiro byte da instruo (OPCODE), ou seja, o contedo da
memria apontado (endereado) pelo registrado PC.
Registrador "Decodificador de Instruo e Codificador de Ciclo de Mquina"
o registrador responsvel pela decodificao de cada instruo e de definio dos ciclos de mquina que
sero controlados pela unidade de controle.
Registradores B, C, D, E, H e L
So registradores de propsito geral de 8 bits e que podem ser combinados aos pares para formar
registradores par (rp: register pair) para armazenar endereos (16 bits). Os pares formados so: BC, DE e
HL. O primeiro registrador de cada par armazena o byte mais significativo, isto , B, D e H.
Registrador par HL
Registrador usado como apontador de dados na memria RAM, semalhana do registrador PC, que
aponta instrues e dados na memria ROM (como ser visto numa seo posterior). O registrador HL
usado implicitamente em vrias instrues e referenciado nessas instrues M, de Memory.
Registrador "Apontador de Pilha"
O registrador apontador de pilha SP (Stack Pointer) um registrador de 16 bits usado como apontador de
dados numa regio especial da memria RAM, denominada de Pilha (Stack). Esse espao de memria
especialmente destinado a guardar temporariamente informaes de registradores que sero usados em
outra tarefa. A ordenao de elementos na pilha tal que somente um dado pode ser acessado num
determinado instante e a ltima palavra digital que entra a primeira que sai (Lista LIFO - Last In First

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

25
Out). O apontador de pilha (registrador SP) aponta sempre para o topo desta pilha (top of stack), ou seja,
para o ltimo dado que foi armazenado. Os dados normalmente armazenados so endereos de
chamadas/retornos de subrotina e endereos de retorno de interrupes, que automaticamente armazenados
pelo 8085 e ainda outros dados que podem ser armazenados pelo programador usando a instruo PUSH.
Posteriormente esses dados so retirados da pilha usando a instruo POP.
Registrador "Contador de Programa"
O registrador "Contador de Programa" PC (Program Counter) o registrador que armazena o endereo da
prxima instruo a ser executada. incrementado pela unidade de controle aps a execuo de uma
instruo. (OBS: as instrues esto localizadas na memria e precisam ser transferidas para dentro da
CPU). Sendo um registrador de 16 bits o registrador PC pode indicar at 65536 diferentes endereos (0 a
65535 ou 0000h a FFFFh).

2.3

Frequncia de Clock

A freqncia de clock do 8085A deve ficar na faixa de 500 kHz a 3,125 MHz. J a freqncia de clock
do 8085A-2 deve ficar entre 500 kHz e 5 MHz. A freqncia de clock metade da freqncia do cristal
oscilador, como mostrado na expresso que segue. Isso ocorre porque o flip-flop que gera o clock divide o sinal
de entrada por 2.

f cristal
2

f clock =

X1

fcristal
X2

CL

CL

Fig. 2.2: Conexo do cristal oscilador para a gerao da frequncia de clock

2.4

Pinagem do 8085

A Fig. 2.3 mostra uma pastilha do microprocessador 8085 com a pinagem completa e a funo de cada
pino. A tabela a seguir mostra, atravs dos pinos IO/M\, S1 e S0, o estado em que se a encontra a CPU durante a
execuo de uma instruo.

Estado do ciclo de mquina:


IO/M
0
0
0
1
1
1
3S
3S
3S

S1
0
1
1
0
1
1
0
x
x

S0
1
0
1
1
0
1
0
x
x

Microprocessadores e Microcomputadores

ESTADO
escrita em memria
leitura de memria
busca de opcode
escrita em porta (instruo OUT porta)
leitura de porta (instruo IN porta)
reconhecimento de interrupo (INTA)
HLT (parada: sai com INT, HOLD ou RESET
Hold
Reset

Prof. Jos Wilson Lima Nerys

26
.

Pinos de conexo do cristal. X1 pode ser uma onda


quadrada. Nesse caso, X2 pode ficar aberto.

Pino de alimentao. Vcc = +5 V


Requerimento de barramento. Ativo alto.

Indicas aos perifricos que a CPU est sendo ressetada

Reconhecimento de HOLD. Indica que pedido foi aceito.

Pino de sada de dado serial.

Sada de clock para os demais chips do sistema

Pino de entrada de dado serial.

Reset do sistema. PC = 0000 h. Interrupes com mscara.

Pino da interrupo de maior prioridade. No mascarvel.

1 memria ou perif. prontos para acesso. 0 wait

Pino da interrupo que desvia para o endereo 3C h.

Indica se a operao de entrada/sada ou com memria

Pino da interrupo que desvia para o endereo 34 h.

Com S0 e IO/M\ indicam estados do ciclo de mquina

Pino da interrupo que desvia para o endereo 2C h.

Sinal que habilita perifrico ou memria para leitura

Pino usado para expandir a capacidade de interrupo.

Sinal que habilita perifrico ou memria para escrita

Reconhecimento de pedido de interrupo.

Sinal para carga da parte baixa do endereo (no latch 74373)

Com S1 e IO/M\ indicam estados do ciclo de mquina


Byte menos significativo do endereo e barramento de
dados.

Byte mais significativo do endereo

Pino de terra (GND).

Fig. 2.3: Pinagem do microprocessador 8085

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

27

2.5

Sistema Bsico de Temporizao e Princpio de Operao


M1

M2

CLK

T1

T2

T3

PC FORA

PC+1PC

INST IR

T4

T1

AD7- AD0

T3

PC+1PC

INST IR

SBE
PC FORA

A15 - A8

T2

PC S

PC S

PC I

INST

PC I

INST

ALE

RD\

WR\

IO-M\

Fig. 2.4: Diagrama bsico de temporizao do 8085

M1

M2

CLK

T1
PC FORA

T2

Twait

T3
INST IR

PC+1PC

T4

T1
PC FORA

A15 - A8

AD7- AD0

PC S

PC I

T2

T3

PC+1PC

INST IR

SBE

PC S

INST

PCI

INST

ALE

RD\

WR\

IO-M\

Fig. 2.5: Diagrama bsico de temporizao com perodo de espera Twait

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

28
O diagrama de temporizao mostra os sinais essenciais no processo de busca e execuo de cada
instruo. Observa-se, por exemplo, que a cada novo ciclo de mquina, no estado T1, um novo valor de endereo
colocado no barramento pelo contador de programa PC. Esse novo endereo pode ser o endereo da prxima
instruo ou os bytes restantes (ou o byte restante) da instruo em andamento. O sinal ALE o sinal de
habilitao do Latch do endereo, ou seja, o endereo transferido para a memria ROM, de onde ser lida a
instruo.
O sinal RD\ vai a zero aps o estado T1 indicando que haver uma operao de leitura. Como o sinal
IO-M\ permanece zero durante todo o tempo, figura mostrada, significa que trata-se de leitura de memria, e no
de qualquer dispositivo de entrada e sada. Assim, a memria ROM lida nesse intervalo. O sinal WR\
permanece alto durante todo o intervalo mostrado, indicando que no h operao de escrita, seja na memria,
seja em dispositivo de entrada e sada.
No estado T3 a instruo lida da ROM transferida para o Registrador de Instruo (IR), encerrando a
o ciclo de busca. A instruo decodificada e sinais de controle so emitidos da Unidade de Temporizao e
Controle de forma que o ciclo de execuo j tenha incio a partir do estado T4.
Muitas das instrues do 8085, depois do ciclo de busca, precisam apenas de mais um ciclo de clock
para o ciclo de execuo. O ciclo de execuo pode ocorrer no estado T4, ou no prximo estado T2, durante o
cilco de busca da prxima instruo. No ltimo caso diz-se que houve sobreposio dos ciclos de busca e
execuo (SBE).
No diagrama da Fig. 2.4 aparece um estgio a mais, denominado de Perodo de Espera (Twait). Ele
gerado quando h necessidade de retardar o processo de busca da instruo, em funo de atraso no
processamento de informaes por um perifrico. Esse intervalo de espera aparece sempre aps o estado T2.
Para exemplificar o princpio de operao do 8085 mostrado a seguir o processo de busca e execuo
das instrues ADD B (adio do contedo do registrador B ao contedo do registrador A. O resultado
guardado em A) e MOV B,A ( move - copia - o contedo do registrador A no registrador B ).
Microprocessador (CPU)
Contador de Programa
(PC)

Acumulador
A ou ACC

Outros
Registradores:
B, C, D, E, H, L

Barramento
de Endereos

Barramento de Dados

Registrador de
Instrues (IR)
Opcode
ROM
Unidade de
Decodificao de
Instrues

Endereo
0000 h
0001 h

Instruo
ADD B
MOV B,A

Unidade de Controle
RAM
Endereo

Contedo

Unidade Lgica e Aritmtica


(ALU)

Fig. 2.6: Diagrama de blocos simplificado de um computador


O barramento de endereos de 16 bits, sendo que os 8 bits menos significativos so usados tambm
para a transferncia de dados, enquanto que os 8 bits mais significativos so exclusivos para endereos. Assim, a
chave de trs estados desempenha um papel essencial na operao do microprocessador. Durante a comunicao
entre dois blocos os outros blocos encontram-se no estado de alta impedncia, no havendo, portanto,
transferncia de dados desses blocos para o barramento ou do barramento para estes blocos. O diagrama de
temporizao para as duas instrues mostrado na Fig. 2.6.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

29

M1

M2

CLK

T1
ADD B

PC FORA

T2

T3

T4

T1

T2

PC+1PC

INST IR

B TMP

SBE

A+TMPA

PC FORA

PC+1PC

MOV B,A

A15 - A8

AD7- AD0

PC S

PC I

T3
INST IR

A TMP

PC S

INST

PC I

INST

ALE

RD\

WR\

IO-M\

Fig. 2.7: Diagrama de temporizao das instrues de adio e transferncia

Supondo-se que o acumulador contenha o valor 10h e que o registrador B (que faz parte do bloco
denominado "outros registradores") contenha o valor 5h, a adio do contedo de B ao contedo de A obtido
com a instruo ADD B. O resultado guardado no prprio acumulador. Posteriormente, com a instruo MOV
B,A o contedo de A copiado em B. Os passos para execuo das duas instrues em seqncia so dados a
seguir:
CICLO DE BUSCA:
1
2
3

4
5
6

Na descida do sinal de clock em T1 o Contador de Programa (PC) ativado, colocando o endereo atual no
barramento de 16 bits. O sinal ALE o trigger para a transferncia dos endereos de PC para o barramento.
Na subida do sinal de clock em T1 o endereo transferido do barramento para a memria ROM.
Na descida do sinal de clock (estado T2) o PC incrementado em 1, ficando pronto para apontar a prxima
instruo. O barramento est disponvel para outras operaes. Nesse instante, tambm, O sinal RD\ tornase baixo, habilitando uma operao de leitura. Como o sinal IO/M\ permanece baixo, trata-se de leitura de
memria.
Na subida do sinal de clock (ainda estado T2) nenhum bloco est ativo. O barramento continua disponvel.
Na descida do sinal de clock (estado T3) o cdigo da instruo ADD B, lida da memria ROM (endereo
transferido do barramento para a memria ROM no passo 2) transferido para o barramento.
Na subida do sinal de clock o bloco IR (Registrador de Instruo) carrega a instruo vinda da ROM e que
est presente no barramento. Termina o ciclo de busca da instruo ADD B.

CICLO DE EXECUO DE ADD B E BUSCA DE MOV B,A:


7
8
9

Na descida do sinal de clock, no incio do estado T4, o contedo de B transferido para o barramento.
Na subida do clock no estado T4 o contedo de B, presente no barramento, transferido para um registrador
temporrio (TMP), para, depois, ser transferido para a unidade lgica e aritmtica.
Durante o estado T1 do ciclo de mquina M2 no h nenhuma operao na instruo ADD B, da uma outra
instruo pode utilizar o barramento para iniciar o ciclo de busca. No caso mostrado d-se incio ao ciclo de

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

30
busca da instruo MOV B,A. Portanto, h "sobreposio busca-execuo" (SBE). Busca da instruo
MOV B,A e execuo da instruo ADD B.
10 No estado T2 do ciclo de mquina M2 a instruo iniciada (MOV B,A) no usa o barramento de
dados/endereos. Nessa fase a instruo ADD B encerrada. Na descida do sinal de clock em T2 os
contedos de A (10 h) e do registrador temporrio TMP (B = 5 h) so simultaneamente transferidos para a
Unidade Lgica e Aritmtica (ULA), de onde o resultado da adio sai direto para o barramento. Na subida
do sinal de clock em T2 o resultado da operao carregado no acumulador (A = 15 h). Encerra a
execuo da instruo ADD B.
11 No estado T3 do ciclo de mquina M2 a instruo MOV B,A lida da ROM transferida para o Registrador
de Instrues e decodificada, encerrando o ciclo de busca dessa instruo.
12 No estado T4 do ciclo M2 o contedo de A transferido para um registrador temporrio para,
posteriormente, ser transferido para o registrador B.

2.6

Formato das Instrues

As instrues de adio e de transferncia de dados, mostradas na seo anterior, so instrues de


apenas 1 (um) byte, que chamado de OPCODE (Operation Code). Nesse caso toda a informao necessria
para a execuo das duas instrues est contida no byte nico. Algumas instrues, no entanto, precisam de
informaes adicionais para sua execuo. Assim, alm das instrues de 1 byte, o 8085 tambm tem instrues
de 2 bytes e de 3 bytes. Os bytes adicionais so chamados de OPERANDOS. No caso da instruo de 2 bytes
tem-se o Opcode e 1 operando e no caso da instruo de 3 bytes tem-se o Opcode e 2 operandos. mostrado a
seguir o formato dos trs tipos de instruo. Antes, porm, importante mostrar o formato dos dados no 8085.
D7
MSB

D6

D5

D4

D3

D2

D1

D0
LSB
MSB = Most Significant Bit (Bit mais significativo)
LSB = Least Significant Bit (Bit menos significativo)

a) Instrues de 1 byte:
Opcode (byte 1)
Exemplo:

D7

D6

D5

D4

D3

D2

D1

D0

ADD B - Adiciona o contedo de B ao acumulador


(A) (A) + (B)

Opcode (byte 1)

= 80 h

b) Instrues de 2 bytes:
Opcode (byte 1)
Operando (byte 2)
Exemplo:

D7
D7

D6
D6

D5
D5

D4
D4

D3
D3

D2
D2

D1
D1

D0
D0

MVI A, 32h - Move imediatamente o contedo 32h para A


(A) (byte 2)

Opcode (byte 1)
Operando (byte 2)

0
0

0
0

1
1

1
1

1
0

1
0

1
1

0
0

Opcode (byte 1)
Operando 1 (byte 2=LSB)
Operando 2 (byte 3 = MSB)

D7
D7
D7

D6
D6
D6

D5
D5
D5

D4
D4
D4

D3
D3
D3

D2
D2
D2

D1
D1
D1

= 3E h
= 32 h

c) Instrues de 3 bytes:
D0
D0
D0

Os bytes 2 e 3 contm um dado ou um endereo de 16 bits. O byte 2 armazena o byte menos significativo
do endereo (low-order addr) ou o byte menos significativo do dado de 16 bits (low-order data). O byte 3

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

31
armazena o byte mais significativo do endereo (high-order addr) ) ou o byte mais significativo do dado (highorder data)
Exemplo: STA 1234h - guarda o contedo do acumulador na posio de memria indicada pelo
endereo addr
((byte 3)(byte 2) (A)
Opcode (byte 1)
Operando 1 (byte 2)
Operando 2 (byte 3)

0
0
0

0
0
0

1
1
0

1
1
1

0
0
0

0
1
0

1
0
1

0
0
0

= 32 h
= 34 h
= 12 h

No ciclo de busca (primeiro ciclo de mquina) o microprocessador 8085 transfere o primeiro byte da
instruo (opcode = cdigo de operao) para o Registrador de Instruo (IR). Nos ciclos de mquina que se
seguem os outros bytes so buscados na memria. Primeiro o byte 2 transferido para um registrador
temporrio (Z), depois o byte 3 que transferido para um registrador temporrio (W).
Cada uma das instrues pode ser visualizada com um diagrama de temporizao que mostra cada passo
da instruo.
O primeiro ciclo de mquina do 8085 flexvel podendo ter de 4 a 6 ciclos de clock; os demias ciclos
de mquina contm 3 ciclos de clock. O ciclo de instruo pode ter de 1 a 5 ciclos de mquina, como mostrado a
seguir, onde M o ciclo de mquina e T o estado dentro do ciclo de mquina:

T1

2.7

T2

T3

M1
T4

T5

T6

T1

M2
T2

T3

T1

M3
T2

T3

T1

M4
T2

T3

T1

M5
T2

T3

Exerccios Propostos

1.

Enumerar todos os registradores (endereveis ou no) do microprocessador 8085. Qual a capacidade (em
bits) de cada um deles?

2.

Quais os possveis registradores pares do 8085?

3.

Com que finalidade usado o registrador-par HL?

4.

Qual a funo dos registradores PC e SP?

5.

Qual a funo dos registradores W e Z?

6.

Qual a funo do registrador TEMP?

7.

Descreva a estrutura interna da CPU?

8.

Qual a funo de cada uma das FLAGS do 8085?

9.

Dizer, em poucas palavras, a funo de cada um dos seguintes pinos do 8085: HOLD, HLDA, INTR,
INTA, RST5.5, TRAP, READY, ALE, IO/M\, SID e SOD.

10. Apresentar um circuito combinacional para decodificar os sinais dos pinos RD\, WR\ e IO/M\ em
MEM_RD, MEM_WR, IO_RD, IO_WR. OBS: Utilizar apenas gates.
11. Codifique as instrues da tabela a seguir, coloque o endereo de cada instruo, escreva o significado de
cada instruo e responda s questes relativas tabela.
Operao
(SP) 2090 h
(H,L) 2050 h
(A) 53 h
(B) 0F h
(A) (A) + (B)
((H,L)) (A)

End.
2000

Mnemnico

Microprocessadores e Microcomputadores

Comentrio

Prof. Jos Wilson Lima Nerys

32
(a) Qual o valor final do registrador A?
(b) Quais os valores das flags de carry, de sinal, de zero, auxiliar de carry e paridade, aps a ltima
instruo da tabela?
12. O diagrama de temporizao a seguir refere-se s instrues ADD B e MOV B,A do microprocessador
8085.

CLK

ADD B

T1

T2

T3

T4

T1

T2

PC FORA

PC+1PC

INST IR

B TMP

SBE

A+TMPA

PC FORA

PC+1PC

MOV B,A

A15 - A8

AD7- AD0

PC S

PC I

T3

T4

INST IR

AB

PC S

INST

PC I

INST

ALE

RD\

WR\

IO-M\

Use o diagrama dado para responder s questes que seguem.


(c) Marque, no diagrama, os estados T que correspondem ao perodo de execuo da instruo MOV B,A;
(d) Marque, no diagrama, com simbologia diferente da usada no item (a), os estados T que correspondem
ao perodo de busca da instruo ADD B;
(e) Explique o significado dos sinais RD\, WR\ e IO-M\ no diagrama dado.

2.8

Referncias Bibliogrficas

[1] Ziller, Roberto M., "Microprocessadores - Conceitos Bsicos,"2a. Ed., Editora do Autor,
Florianpolis, SC, 2000.
[2] Kleitz, William, "Digital and Microprocessor Fundamentals - Theory and Applications," Prentice Hall,
Englewood Cliffs, New Jersey, 1990
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

33

3. CONJUNTO DE INSTRUES DO MICROPROCESSADOR 8085


3.1

Simbologia das Instrues

addr = address (endereo) = quantidade de 16 bits.

dado8 = dado de 8 bits

dado16 = dado de 16 bits

byte 2 = segundo byte da instruo

byte 3 = terceiro byte da instruo

r, r1, r2 = Um dos registradores: A, B, C, D, E, H, L

= operador lgico AND

= operador lgico OR

Exemplo 1:
Instruo
Indicao simblica

: MOV r1, r2
: (r1) (r2)

Significado: O contedo do registrador r2 transferido (copiado) para o registrador r1. O valor de SSS identifica
o registrador r2 (origem) e o valor de DDD identifica o registrador r1 (destino).
Para transferir o contedo do registrador B para o registrador A, o mnemnico da instruo MOV A,B. A cada
mnemnico corresponde um cdigo de operao (opcode) em hexadecimal. No caso dessa instruo 78 h.
Para transferir o contedo do registrador E para o registrador D, o mnemnico da instruo MOV D,E. O
opcode 53 h.
Exemplo 2:
Instruo
Indicao simblica

: LDA addr
: (A) ((byte 3)(byte 2))

Significado: O contedo da memria, cujo endereo especificado nos bytes inferior (byte 2) e superior (byte 3),
transferido (copiado) para o registrador A. uma instruo de 3 bytes (opcode + byte 3 + byte 2)
Para transferir o contedo do endereo 234B h da memria, a instruo e o cdigo da instruo seriam:
LDA 234B h
Opcode: 3A 4B 23 (O contedo do byte menos significativo digitado primeiro)

3.2

Modos de Endereamento

As instrues do 8085 fazem referncia aos dados de forma explcita ou implcita. H 4 maneiras
distintas de se fazer esta referncia:
IMEDIATO: A instruo contm o dado no byte ou bytes seguintes ao Opcode.
Exemplos: MVI r, dado8 = move o dado especificado para o registrador r
( r ) (byte 2)
ADI dado8 = adiciona o dado especificado ao acumulador
(A) (A) + (byte 2)

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

34
DIRETO: O 2o e o 3o bytes da instruo contm o endereo da posio de memria onde se encontra o dado.
Exemplo:
LDA addr = carrega o acumulador com o dado do endereo indicado
(A) ((byte 3)(byte 2))
REGISTRO: A instruo especifica o registrador ou o par de registradores onde o dado est armazenado.
Exemplo: MOV r1, r2 = move contedo do registrador r2 para o registrador r1
(r1) (r2)
ADD r = adiciona o contedo do registrador r ao acumulador
(A) (A) + ( r )
INDIRETO POR REGISTRO: A instruo especifica o registrador par (rp) que contm o endereo da posio
de memria onde o dado est armazenado.
Exemplo: MOV r, M = move para o registrador r o contedo da memria localizado na posio
indicada pelo para HL
( r ) ((H)(L))

3.3

Grupos de Instrues
As instrues do 8085 so distribudas em 5 grupos, cujas caractersticas so dadas a seguir:

1.

Grupo de Transferncia de Dados - Move dados entre registradores ou posies de memria e


registradores. Inclui movimentos, cargas, armazenamentos a troca de dados.
Exemplo: MVI M, dado8 = move o dado especificado para a posio de memria indicada pelo
registrador par HL.
((H)(L)) (byte 2)

2.

Grupo Aritmtico - Adies, subtraes, incrementos, ou decrementos de dados em registradores ou


memria.
Exemplo: SUB r = o contedo do registrador r subtrado do acumulador. O resultado guardado de
volta no acumulador
(A) (A) - ( r )

3.

Grupo Lgico - ANDs, ORs, XORs, comparaes, rotaes, ou complementos de dados em registradores
ou entre memria e um registrador.
Exemplo: ANA r = os contedos do acumulador e do registrador r so submetidos ao operador
lgico AND. O resultado guardado de volta no acumulador.
(A) (A) (r)

4.

Grupo de Desvio - Inicia desvios condicionais ou incodicionais, chamadas de subrotina, retornos e


reincios.
Exemplo: JMP addr = desvia incodicionalmente para o endereo indicado
(PC) (byte 3) (byte 2)

5.

Grupo de Controle, Pilha, Entrada e Sada - Inclui instrues para manuteno da pilha, leitura de portas,
escritas para portas, setar e ler mscaras de interrupo e setar e limpar flags.
Exemplo: IN porta = O dado de 8 bits presente na porta de entrada indicada carregado no
acumulador
(A) (data)

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

35

3.4

Instrues de Transferncia de Dados

(r) (byte 2)
(r1) (r2)
(r) ((H)(L))

NO de
Ciclos
2
1
2

No de
Estados
7
4
7

MOV M, r

((H)(L)) (r)

MVI M,
dado8

((H)(L)) (byte 2)

10

LXI rp,
dado16

(rh) (byte 3)
(rl) (byte 2)

LDA addr

(A) ((byte 3)(byte 2))

STA addr

Mnemnico
Genrico

Simbologia

MVI r, dado8

MOV r1, r2
MOV r, M

10

Modo de
Endereamento
Imediato
Registrador
Indireto por
registrador
Indireto por
registrador
Indireto por
registrador e imediato
Imediato

nenhuma

13

direto

nenhuma

((byte 3)(byte 2)) (A)

13

direto

nenhuma

LHLD addr

(L)((byte 3)(byte 2))


(H)((byte 3)(byte 2) + 1)

16

direto

nenhuma

SHLD addr

((byte 3)(byte 2)) (L)


((byte 3)(byte 2) + 1) (H)

16

direto

nenhuma

LDAX rp

(A) ((rp))

Indireto por
registrador

nenhuma

STAX rp

((rp)) (A)

Indireto por
registrador

nenhuma

XCHG

(H) (D)
(L) (E)

registrador

nenhuma

Microprocessadores e Microcomputadores

Flags
Afetadas
nenhuma
nenhuma
nenhuma
nenhuma
nenhuma

Comentrio
move o dado para o registrador r indicado
move o contedo do registrador r2 para o registrador r1
move para o registrador r o dado presente no endereo de memria
especificado pelo registrador par H-L
move o contedo do registrador r para a posio de memria
especificada pelo registrador par H-L.
Carrega o dado na posio de memria especificada pelo registrador
par H-L.
Carrega o dado de 16 bits no registrador par indicado em rp. O byte 2
da instruo colocado no registrador de menor ordem, ou byte
menos significativo, rl. O byte 3 da instruo colocado no
registrador de maior ordem, ou byte mais significativo, rh
Carrega acumulador com o dado armazenado na posio de memria
indicada pelo endereo addr. O byte 2 armazena o byte inferior do
endereo. O byte 3 da instruo armazena o byte superior do
endereo.
Move o contedo do acumulador para a posio de memria indicada
pelo endereo addr. O byte 2 armazena o byte inferior do endereo.
O byte 3 da instruo armazena o byte superior do endereo.
Carrega o contedo da posio de memria dada por addr ((byte
3)(byte 2)) no registrador L. Carrega o contedo da posio
subsequente ((byte 3)(byte 2) + 1) no registrador H.
Move o contedo do registrador L para a posio de memria dada
por addr ((byte 3)(byte 2)). Move o contedo do registrador H para
a posio subsequente de memria ((byte 3)(byte 2) + 1).
Carrega acumulador com o contedo da posio de memria indicada
pelo registrador par rp. rp pode ser B (do registrador para BC) ou D
(do registrador par DE).
Move o contedo do acumulador para a posio de memria indicada
pelo registrador par rp. rp pode ser B (do registrador para BC) ou D
(do registrador par DE).
O contedo do registrador H trocado com o contedo do registrador
D. O contedo de L trocado com o contedo de E.

Prof. Jos Wilson Lima Nerys

36

As instrues apresentadas na tabela anterior esto na forma genrica. Cada uma dessas instrues
representada por diferentes cdigos de operao (OPCODES) para diferentes registradores. Na tabela a seguir as
instrues de transferncia de dados so desmembradas em seus diferentes opcodes.
MNEMNICO
LDA adr
LDAX B
LDAX D
LHLD addr
LXI B, Dado16
LXI D, Dado16
LXI H, Dado16
LXI SP, Dado16
MOV A,B
MOV A,C
MOV A,D
MOV A,E
MOV A,H
MOV A,L
MOV A,M
MOV B,A
MOV B,B
MOV B,C
MOV B,D
MOV B,D
MOV B,E

OPCODE MNEMNICO OPCODE MNEMNICO OPCODE


3A
0A
1A
2A
01
11
21
31
78
79
7A
7B
7C
7D
7E
47
40
41
42
42
43

MOV B,H
MOV B,L
MOV B,M
MOV C,A
MOV C,B
MOV C,C
MOV C,D
MOV C,E
MOV C,H
MOV C,L
MOV C,M
MOV D,A
MOV D,B
MOV D,C
MOV D,D
MOV D,E
MOV D,H
MOV D,L
MOV D,M
MOV E,A
MOV E,B

44
45
46
4F
48
49
4A
4B
4C
4D
4E
57
50
51
52
53
54
55
56
5F
58

MOV E,C
MOV E,D
MOV E,E
MOV E,H
MOV E,L
MOV E,M
MOV H,A
MOV H,B
MOV H,C
MOV H,D
MOV H,E
MOV H,H
MOV H,L
MOV H,M
MOV L,A
MOV L,B
MOV L,C
MOV L,D
MOV L,E
MOV L,H
MOV L,L

59
5A
5B
5C
5D
5E
67
60
61
62
63
64
65
66
6F
68
69
6A
6B
6C
6D

MNEMNICO OPCODE
MOV L,M
MOV M,A
MOV M,B
MOV M,C
MOV M,D
MOV M,E
MOV M,H
MOV M,L
MVI A, Dado8
MVI B, Dado8
MVI C, Dado8
MVI D, Dado8
MVI E, Dado8
MVI L, Dado8
MVI M, Dado8
SHLD addr
STA addr
STAX B
STAX D
XCHG

6E
77
70
71
72
73
74
75
3E
06
0E
16
1E
2E
36
22
32
02
12
EB

Exemplos de uso de instrues de transferncia de dados:


Mnemnico

Cdigo

MVI H,10h
MVI L,00h
MVI A,0Ah
MOV M,A
MOV C,M
MVI M,2Bh

26 10
2E 00
3E 0A
77
4E
36 2B

Mnemnico

Cdigo

LXI B,1000h
LXI D,2000h
LXI H,3000h
LXI SP,4000h
LDA 1000h
STA 2000h

01
11
21
31
3A

00
00
00
00
00

10
20
30
40
10

32 00 20

Comentrio
Carrega acumulador H com valor 10h
Carrega registrador L com valor 00h
Carrega acumulador com valor 0Ah
Move contedo de A para posio 1000h de memria
Move contedo da posio 1000h para registrador C. C = 0Ah
Coloca valor 2Bh na posio 1000h de memria
Comentrio
Carrega registrador duplo BC com valor 1000h
Carrega registrador duplo DE com valor 2000h
Carrega registrador duplo HL com valor 3000h
Carrega registrador duplo SP (apontador de pilha) com valor 4000h
Carrega acumulador com valor armazenado na posio de memria
1000h
Move contedo do acumulador para a posio de memria 2000h

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

37
Mnemnico

Cdigo

Comentrio

LHLD 1000h

2A 00 10

SHLD 2000h

22 00 20

LXI H,3000h
LXI B,4000h
LXI D,5000h
LDAX B

21 00 30
01 00 40
11 00 50
0A

STAX D

12

XCHG

EB

Carrega contedo da posio 1000h no registrador L. Carrega contedo


da posio 1001h no registrador H
Move o contedo do registrador L para a posio 2000h. Move o
contedo do registrador H para a posio de memria 2001h.
Carrega registrador duplo HL com valor 3000h
Carrega registrador duplo BC com valor 4000h
Carrega registrador duplo DE com valor 5000h
Carrega acumulador com o contedo da posio de memria indicada
pelo registrador duplo BC, ou seja, posio 4000h
Move contedo do acumulador para a posio de memria indicada
pelo registrador duplo DE, ou seja, posio 5000h
O contedo de H (30h) trocado com o contedo de D (50h).
O
contedo de L (00h) trocado com o contedo de E (00h).
Depois da instruo, temos: HL = 5000h e DE = 3000h

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

39

3.5

Instrues Aritmticas

Obs.: A menos que seja indicado, todas as instrues desse grupo afetam todas as Flags: Zero, Sinal, Paridade, Transporte (Carry) e Auxiliar de Transporte (Auxiliar de Carry)

(A) (A) + ( r )
(A) (A) + ( (H) + (L))

NO de
Ciclos
1
2

No de
Estados
4
7

Modo de
Endereamento
registrador
registrador

Flags
Afetadas
todas
todas

ADI dado8
ADC r

(A) (A) + (byte 2)


(A) (A) + ( r ) + (CY)

2
1

7
4

imediato
registrador

todas
todas

ADC M

imediato por
registrador
imediato

todas

ACI dado8

(A) (A) + ( (H)(L)) +


(CY)
(A) (A) + (byte 2) + (CY)

SUB r
SUB M

(A) (A) - ( r )
(A) (A) - ( (H)(L))

1
2

4
7

SUI dado8
SBB r

(A) (A) - (byte 2)


(A) (A) - ( r ) - (CY)

2
1

7
4

SBB M

(A) (A) - ( (H)(L)) (CY)

SBI dado8

(A) (A) - (byte 2) - (CY)

INR r

(r) (r) + 1

INR M

Mnemnico
Genrico
ADD r
ADD M

Simbologia

registrador
indireto por
registrador
imediato
registrador

todas
todas
todas
todas
todas

indireto por
registrador
imediato

todas

registrador

Z, S, P e AC

((H)(L)) ((H)(L)) + 1

10

Z, S, P e AC

DCR r

(r) (r) - 1

indiretor por
registrador
registrador

DCR M

((H)(L)) ((H)(L)) - 1

10

INX rp

(rh)(rl) (rh)(rl) + 1

Microprocessadores e Microcomputadores

indireto por
registrador
registrador

todas

Z, S, P e AC
Z, S, P e AC
nenhuma

Comentrio
O contedo do registrador r adicionado ao contedo do acumulador.
O contedo da posio de memria indicado pelo par HL adicionado
ao contedo do acumulador.
O valor dado em data adicionado ao contedo do acumulador.
O contedo do registrador r adicionado com carry ao contedo do
acumulador.
O contedo da posio indicada pelo par HL adicionado com carry ao
contedo do acumulador.
O valor dado em data adicionado com carry ao contedo do
acumulador.
O contedo do registrador r subtrado do contedo do acumulador.
O contedo da posio de memria indicado pelo par HL subtrado
do contedo do acumulador.
O valor dado em data subtrado do contedo do acumulador.
O contedo do registrador r subtrado com carry do contedo do
acumulador.
O contedo da posio indicada pelo par HL subtrado com carry do
contedo do acumulador.
O valor dado em data subtrado com carry do contedo do
acumulador.
O contedo do registrador r adicionado de 1. Todas as Flags so
afetadas, exceto CY.
O contedo da posio apontada pelo par HL incrementado de 1.
O contedo do registrador r decrementado. Todas as Flags so
afetadas, exceto CY.
O contedo da posio apontada pelo par HL decrementada de 1.
O contedo do registrador par rp adicionado de 1. Nenhuma Flag
afetada.

Prof. Jos Wilson Lima Nerys

40

Instrues Aritmticas - Continuao


Mnemnico
Genrico
DCX rp
DAD rp

Simbologia
(rh)(rl) (rh)(rl) - 1
((H)(L))((H)(L))+ (rh)(rl)

DAA

NO de
Ciclos
1

No de
Estados
6

Modo de
Endereamento
registrador

Flags
Afetadas
nenhuma

10

registrador

CY

registrador

todas

Comentrio
O contedo do registrador par rp decrementado de 1.
O contedo do registrador par rp adicionado ao contedo do
registrador par HL. Somente a Flag de Carry (CY) afetada.
Faz o ajuste decimal do nmero no acumulador. O nmero de 8 bits do
acumulador ajustado para formar dois nmeros de 4 bits em BCD.
A regra seguida a seguinte:
1. Se o nmero representado pelo nibble inferior for maior do que 9,
ou se a Flag AC estiver setada, o nmero 6 adicionado ao
contedo do acumulador.
2. Se o nmero representado pelo nibble superior for maior do que 9,
ou se a Flag CY estiver setada, o nmero 6 adicionado ao nibble
superior.

Na tabela a seguir as instrues aritmticas de dados so desmembradas em seus diferentes opcodes.


MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE
ACI Dado8

CE

ADD B

80

DAD H

29

DCX D

1B

INX B

03

SBB M

9E

ADC A

8F

ADD C

81

DAD SP

39

DCX H

2B

INX D

13

SBI Dado8

DE

ADC B

88

ADD D

82

DCR A

3D

DCX SP

3B

INX H

23

SUB A

97

ADC C

89

ADD E

83

DCR B

05

INR A

3C

INX SP

33

SUB B

90

ADC D

8A

ADD H

84

DCR C

0D

INR B

04

SBB A

9F

SUB C

91

ADC E

8B

ADD L

85

DCR D

15

INR C

0C

SBB B

98

SUB D

92

ADC H

8C

ADD M

86

DCR E

1D

INR D

14

SBB C

99

SUB E

93

ADC L

8D

ADI Dado8

C6

DCR H

25

INR E

1C

SBB D

9A

SUB H

94

ADC M

8E

DAA

27

DCR L

2D

INR H

24

SBB E

9B

SUB L

95

ADD A

87

DAD B

09

DCR M

35

INR L

2C

SBB H

9C

SUB M

96

DAD D

19

DCX B

0B

INR M

34

SBB L

9D

SUI Dado8

D6

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

41
Exemplos de uso de intrues aritmticas:
Mnemnico
MVI A,05h
MVI C,02h
ADD C
ADI 10h
ADC A

Cdigo
3E 05
0E 02
81
C6 10
8F

ACI 03h

CE 03

Comentrio
Carrega acumulador com valor 05h
Carrega registrador C com valor 02h
Adiciona contedo de C ao contedo de A. A = 05 + 02 = 07h
Adiciona 10h ao contedo de A. A = 07h + 10h = 17h
Adiciona o contedo de A ao prprio contedo de A, incluindo o valor
de carry. A = 17h + 17h + 0 = 2Eh. O carry aqui Zero.
Adiciona 03h ao contedo do acumulador. A = 2Eh+03h = 31h

Mnemnico

Cdigo

Comentrio

MVI A,05h
MVI C,02h
LXI H,2050h
MVI M,08h
SUB C
SUI 02h
SBB C

3E 05
0E 02
21 50 20
36 08
91
D6 02
99

SBI 03h

DE 03

SBB M

9E

Carrega acumulador com valor 05 h


Carrega registrador C com valor 02 h
Carrega registrador duplo HL com valor 2050 h
Move valor 08h para posio 2050 h (apontada por HL)
Subtrai o contedo de C do contedo de A. A = 05 - 02 = 03h
Adiciona 10h ao contedo de A. A = 03h - 02h = 01h
Subtrai o contedo de C do contedo de A, incluindo o valor de carry.
A = 01h - 02h - 0 = FFh. O carry antes Zero. Depois passa para 1.
Subtrai 03h do contedo do acumulador, incluindo carry. A = FFh 03h 1h = FBh. A Flag CY passa para Zero. CY = 0.
Subtrai com carry o contedo da posio de memria 4100h do
contedo do acumulador. A = FBh 08h 0 = F3h

Obs.: No se esquecer de que a subtrao no 8085 no feita diretamente. A subtrao feita atravs de uma
adio com o complementar de 2.
Ex.:

Subtrao direta:
Subtrao com complementar de 2:

A = 03 02 = 01h
A = 03 + (FD + 1) = 01h

Na operao com complementar de 2 houve um transporte (carry), mas na subtraao no 8085 a Flag CY
o complementar do carry, ou seja, CY = 0, como deveria ser o resultado de uma subtrao direta.
Outros exemplos para verificao da Flag de Transporte CY:
Exemplo 1: Operao de adio

1 1 1 1 0 0 0 1
+ 0 0 0 0 1 0 0 0
1 1 1 1 1 0 0 0
Carry = 0 CY = 0

1 1 1 1 1 1 1 1
+ 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0
Carry = 1 CY = 1

Exemplo 2: Operao de subtrao


Obs.: As operaes de subtrao so executadas pelo 8085 usando o complementar de 2

subtrao normal
0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 1
0 0 0 0 1 1 1 0
Carry = 0 CY = 0

Microprocessadores e Microcomputadores

subtrao usando complementar de 2


0 0 0 0 1 1 1 1
+ 1 1 1 1 1 1 1 1
1 0 0 0 0 1 1 1 0
Carry = 1 CY = 0

Prof. Jos Wilson Lima Nerys

42
Exemplo 3: Operao de subtrao
subtrao normal
0 0 0 0 1 1 0 0
- 0 0 0 1 0 0 1 0
1 1 1 1 1 1 0 1 0
Carry = 1 CY = 1

subtrao usando complementar de 2


0 0 0 0 1 1 0 0
+ 1 1 1 0 1 1 1 0
1 1 1 1 1 0 1 0
Carry = 0 CY = 1

Exemplo: Suponhamos que o acumulador contm o valor 1Bh e a instruo DAA usada. O resultado depois da
instruo DAA 21 h.
Exemplo:
Mnemnico
MVI A,09h
MVI B,03h
MVI C,10h
LXI D,1234h
LXI H,0123h
INR A
DCR C
INX D
DCX B
DAD B

Cdigo
3E 09
06 03
0E 10
11 34 12
21 23 01
3C
0D
13
0B
09

DAA

27

Comentrio
Carrega acumulador com valor 09h
Carrega registrador B com valor 03h
Carrega registrador C com valor 10h
Carrega registrador duplo DE com valor 1234h
Carrega registrador duplo HL com valor 0123h
Incrementa 1 ao acumulador. A = 09h + 01h = 0Ah
Decrementa 1 do contedo de C. C = 10h - 01h = 0Fh
Incrementa 1 ao registrador par DE. DE = 1234h + 1h = 1235h
Decrementa 1 do contedo do registrador par BC. BC = 030Fh - 1h = 030Eh
Adiciona ao registrador par HL o contedo do registrador par BC. HL =
0123h + 0310h = 0433h
Corrige para decimal os nibbles inferior e superior do acumulador. Antes: A
= 0Ah. Depois: A = 10h

Exemplo especial: Programa em assembly do 8085 para fazer a adio de dois nmeros com mais de 8 bits
(maiores que 255). Os nmeros so: 452 e 926. 452 decimal = 1C4 h. 926 decimal = 39E h
Mnemnico
MVI A,C4h
MVI B,01h
MVI C,9Eh
MVI D,03h
ADD C
MOV L,A
MOV A,B
ADC D
MOV H,A

Cdigo

Comentrio
Carrega registradores com bytes inferior e superior das parcelas

Adiciona parcelas dos bytes inferiores ( A = A + C)


Guarda resultado dos bytes inferiores em L
Carrega acumulador com uma das parcelas do byte superior
Adiciona parcelas dos bytes superiores, incluindo o bit de Carry
Guarda resultado dos bytes superiores em H

Obs.: Aps a primeira adio (ADD C), a flag auxiliar de carry AC assume o valor 1, porque h transporte do
bit 3 para o bit 4. Tambm h transporte do bit 7 para o bit 8 (o qual est fora da capacidade do acumulador. A
ilustrao da adio acima mostrada abaixo em decimal, hexadecimal e binrio.
Decimal
1

Binrio

Hexa
1

Byte Superior
1

Microprocessadores e Microcomputadores

Byte Inferior
1

Prof. Jos Wilson Lima Nerys

43

3.6

Instrues Lgicas

Obs.: Com exceo dos casos indicados, todas as intrues lgicas afetam as Flags
Mnemnico
Simbologia
NO de
No de
Modo de
Genrico
Ciclos Estados
Endereamento
1
4
registrador
ANA r
(A) (A) (r)

Flags
Afetadas
todas

ANA M

(A) (A) ((H)(L))

indireto por
registrador

todas

ANI dado8

(A) (A) (byte 2)

imediato

todas

XRA r

(A) (A) (r)

registrador

todas

XRA M

(A) (A) ((H)(L))

indireto por
registrador

todas

XRI dado8

(A) (A) (byte 2)

imediato

todas

ORA r

(A) (A) (r)

registrador

todas

ORA M

(A) (A) ((H)(L))

indireto por
registrador

todas

ORI dado8

(A) (A) (byte 2)

imediato

todas

CMP r

(A) - (r)

registrador

todas

CMP M

(A) (A) - ((H)(L))

indireto por
registrador

todas

Microprocessadores e Microcomputadores

Comentrio
O contedo do acumulador passa por uma operao lgica AND com o
contedo do registrador indicado em r. A flag CY zerada e a flag AC
setada.
O contedo do acumulador passa por uma operao lgica AND com o
contedo da posio de memria apontada pelo registrador par HL. A
flag CY zerada e a flag AC setada.
o contedo do acumulador passa por uma operao lgica AND com o
dado fornecido no byte 2 da instruo. A flag CY zerada e a flag AC
setada.
O contedo do acumulador passa por uma operao lgica XOR com o
contedo do registrador r indicado. As flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica XOR com o
contedo do endereo de memria apontado pelo registrador par HL. As
flags CY e AC so zeradas.
o contedo do acumulador passa por uma operao lgica XOR com o
dado fornecido no byte 2 da instruo. As flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica OR com o
contedo do registrador indicado em r. As flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica OR com o
contedo da posio de memria apontada pelo registrador par HL. As
flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica OR com o
dado presente no byte 2 da instruo. As flags CY e AC so zeradas.
Compara o contedo do registrador r com o contedo do acumulador. Na
operao o contedo de r subtrado do contedo de A, sem que o
resultado seja guardado em A. Se o resultado da subtrao for zero, ou
seja (A) = (r), a flag de zero Z = 1. Caso contrrio, Z = 0. Se (A) < (r), a
flag de carry CY = 1. Caso contrrio, CY = 0.
Compara o contedo da posio apontada pelo par HL com o contedo
do acumulador. Na operao o contedo da posio apontada por HL
subtrado do contedo de A, sem que o resultado seja guardado em A. Se
o resultado da subtrao for zero, ou seja (A) = ((H)(L)), a flag de zero Z

Prof. Jos Wilson Lima Nerys

44

CPI dado8

(A) (A) - (byte 2)

RLC

(An+1) (An)
(A0) (A7)
(CY) (A7)

CY

RRC

(An) (An+1)
(A7) (A0)
(CY) (A0)

CY

RAL

(An+1) (An)
(CY) (A7)
(A0) (CY)

CY

RAR

(An) (An+1)
(CY) (A0)
(A7) (CY)

CY

CMA

(A) (A\)

nenhuma

CMC

(CY) (CY\)

CY

STC

(CY) 1

CY

Microprocessadores e Microcomputadores

imediato

todas

= 1. Caso contrrio, Z = 0. Se (A) < ((H)(L)), a flag de carry CY = 1.


Caso contrrio, CY = 0.
Compara o contedo do byte 2 da instruo com o contedo do
acumulador. Na operao o contedo do byte 2 subtrado do contedo
de A, sem que o resultado seja guardado em A. Se o resultado da
subtrao for zero, ou seja (A) = (byte 2), a flag de zero Z = 1. Caso
contrrio, Z = 0. Se (A) < (byte 2), a flag de carry CY = 1. Caso
contrrio, CY = 0.
(Rotate Left) = (Rotacionar Esquerda) = O contedo do acumulador
rotacionado uma posio esquerda. O contedo do ltimo bit (bit 7)
transferido tanto para a posio do bit 0, quanto para o Carry. O
contedo do bit 'i' transferido para o bit 'i + 1'. Somente a flag de
carry afetada.
(Rotate Right) = (Rotacionar Direita) = O contedo do acumulador
rotacionado uma posio direita. O contedo do bit menos significativo
(bit 0) transferido tanto para a posio do bit 7, quanto para o Carry. O
contedo do bit 'i' transferido para o bit 'i - 1'. Somente a flag de carry
CY afetada.
(Rotate Left through Carry) = (Rotacionar Esquerda atravs do Carry)
= O contedo do acumulador rotacionado uma posio esquerda,
incluindo o bit de carry como o oitavo bit. Assim, o contedo do bit 7
transferido para o bit de Carry (CY) e o contedo do bit de Carry
transferido para o bit menos significativo (bit 0). Somente a flag de
carry afetada.
(Rotate Right through Carry) = (Rotacionar Esquerda) = O contedo do
acumulador rotacionado uma posio direita, incluindo o carry como
oitavo bit. Assim, o contedo do ltimo bit de Carry (CY) transferido
para a posio do bit 7 e contedo do bit 0 transferido para o bit de
Carry. Somente a flag de carry afetada.
(Complement Accumulator) = (Complementa Acumulador) = O
contedo do acumulador complementado, bit a bit. Os bits zero
tornam-se 1 e os bits 1 tornam-se zero. Nenhuma flag afetada.
(Complement Carry) = (Complementa Carry) = O contedo da flag de
Carry complementado. Nenhuma outra flag afetada.
(Set Carry) = (Seta o bit de Carry) = A flag de Carry (CY) feita igual a
1. Nenhuma outra flag afetada.

Prof. Jos Wilson Lima Nerys

45

Resumo das condies da instruo CMP r


Condio
(A) = (r)
(A) > (r)
(A) < (r)

Z
1
0
0

CY
0
0
1

Opcode e Mnemnico das Instrues Lgicas:


MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE
ANA A

A7

ORA B

B0

RLC

07

ANA B

A0

ORA C

B1

RNC

D0

ANA C

A1

ORA D

B2

RRC

0F

ANA D

A2

ORA E

B3

XRA A

AF

ANA E

A3

ORA H

B4

XRA B

A8

ANA H

A4

ORA L

B5

XRA C

A9

ANA L

A5

ORA M

B6

XRA D

AA

ANA M

A6

ORI Dado8

F6

XRA E

AB

ANI Dado8

E6

RAL

17

XRA H

AC

CMC

3F

RAR

1F

XRA L

AD

ORA A

B7

RC

D8

XRA M

AE

Exemplo de programa usando instrues lgicas:


Mnemnico
MVI A,0Fh
MVI C,52h
MVI B,46h
ANA C
ANI 44h
XRI 23h
CPI 33h
RLC
CMP B
CMC
RAR

Cdigo
3E 0F
0E 52
06 46
A1
E6 44
EE 23
FE 33
07
B8
3F
1F

Comentrio
Carrega acumulador com valor 0Fh
Carrega registrador C com valor 52h
Carrega registrador B com valor 46h
Faz operao A AND C, ou, 0F AND 52h A = 02h
Faz A AND 44h, ou, 02h AND 44h. A = 00h
Faz A XOR 23h, ou, 00h XOR 23h A = 23h
Faz A - 33h, sem alterar A. Ou, 23 - 33h Z = 0 e CY = 1
Rotaciona A esquerda. Resultado: A = 46h e CY = 0
Faz A - B, sem alterar A. Ou, 46h - 46h Z = 1 e CY = 0
Complementa flag de Carry. CY = 1
Rotaciona A direita com Carry A = A3h e CY = 0

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

46

3.7

Instrues de Desvio

(a) As instrues desse grupo alteram o fluxo normal do programa.


(b) Nenhuma flag afetada por qualquer das instrues do grupo de instrues de desvio.
(c) As instrues de desvio so divididas em: instrues de desvio condicional e instrues de desvio
incondicional.
(d) As instrues de desvio incondicional simplesmente alteram o fluxo do programa alterando o valor do
contador de programa PC.
(e) As instrues de desvio condicional examinam o estado (status) de uma das quatro flags (Z, S, P e CY),
para verificar se o desvio indicado deve ser executado. As condies que podem ser especificadas so dadas
a seguir:
Smbolo
NZ
Z
NC
C
PO
PE
P
M

Condio indicada
Not Zero (Z = 0)
Zero (Z = 1)
No Carry (CY = 0)
Carry (CY = 1)
Parity odd = Paridade mpar (P = 0)
Parity Even = Paridade Par (P = 1)
Plus Positivo (S = 0)
Minus Negativo (S = 1)

bits de identificao
C
C
C
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1

Instrues possveis: JNZ, JZ, JNC, JC, JPO, JPE, JP e JM

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

47
Instrues de Desvio:
Mnemnico
Simbologia
Genrico
(PC) (byte 3)(byte 2)
JMP addr

NO de
Ciclos
3

No de
Estados
10

Modo de
Endereamento
imediato

Flags
Afetadas
nenhuma

Jcondio addr

Se (CCC), ento,
(PC) (byte 3)(byte 2)

2/3

7/10

imediato

nenhuma

JNZ addr

Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)

2/3

7/10

imediato

nenhuma

2/3

7/10

imediato

nenhuma

2/3

7/10

imediato

nenhuma

2/3

7/10

imediato

nenhuma

2/3

7/10

imediato

nenhuma

2/3

7/10

imediato

nenhuma

2/3

7/10

imediato

nenhuma

JM addr

Se (CCC), ento,
(PC) (byte 3)(byte 2)

2/3

7/10

imediato

nenhuma

CALL addr

((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) (SP) - 2
(PC) (byte 3)(byte 2)

18

imediato e
indireto por
registrador

nenhuma

Ccondition addr

((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) (SP) - 2
(PC) (byte 3)(byte 2)

2/5

9/18

imediato e direto
por registrador

nenhuma

JZ addr
JNC addr
JC addr
JPO addr
JPE addr
JP addr

Microprocessadores e Microcomputadores

Comentrio
(Jump to address) = O controle transferido incondicionalmente para a instruo
cujo endereo dado no segundo e no terceiro bytes da instruo de desvio.
(Jump to address if CCC) = Se a condio indicada for verdadeira o controle
transferido para a instruo cujo endereo dado no segundo e no terceiro bytes
da instruo de desvio. Caso a condio seja falsa, o processamento continua
sequencialmente.
(Jump if Not Zero) = Desvia para o endereo indicado se o resultado da operao
aritmtica anterior a esta instruo no for zero, ou seja, desvia se Z = 0.
(Jump if Zero) = Desvia para o endereo indicado se o resultado da operao
aritmtica anterior a esta instruo for igual a zero, ou seja, desvia se Z = 1.
(Jump if No Carry) = Desvia para o endereo indicado se a flag de Carry estiver
zerada (CY = 0).
(Jump if Carry) = Desvia para o endereo indicado se a flag de Carry estiver
setada (CY = 1).
(Jump if Parity Odd) = Desvia para o endereo indicado se a paridade for mpar,
ou seja, se a flag de Paridade for zero (P = 0).
(Jump if Parity Even) = Desvia para o endereo indicado se a paridade for Par,
ou seja, se a flag de Paridade estiver setada (P = 1).
(Jump if Plus) = Desvia para o endereo indicado se o valor no acumulador for
um nmero positivo, ou seja, tiver o stimo bit zerado, ou ainda se a flag de Sinal
estiver zerada (S = 0).
(Jump if Minus) = Desvia para o endereo indicado se o valor no acumulador for
um nmero negativo, ou seja, tiver o stimo bit setado, ou ainda se a flag de
Sinal estiver setada (S = 1).
(Call address) = Chamada de subrotina. O processamento desviado para o
endereo indicado em addr, que dado pelos bytes 2 e 3 da instruo. Antes do
desvio para a subrotina, o endereo da prxima instruo guardado na pilha. O
byte superior do endereo da prxima instruo guardado na posio SP - 1 da
pilha e o byte inferior guardado na posio SP - 2 da pilha. Ao final da
subrotina a instruo RET faz o processamento voltar para o programa principal
no endereo que foi guardado na pilha.
(Call address if CCC is true) = Chamada de subrotina condicional. O
processamento desviado para o endereo indicado em addr se a condio
indicada em CCC for verdadeira. O endereo dado pelos bytes 2 e 3 da
instruo. Antes do desvio para a subrotina, o endereo da prxima instruo
guardado na pilha. O byte superior do endereo da prxima instruo guardado
na posio SP - 1 da pilha e o byte inferior guardado na posio SP - 2 da pilha.
Ao final da subrotina a instruo RET faz o processamento voltar para o
programa principal no endereo que foi guardado na pilha.

Prof. Jos Wilson Lima Nerys

48
RET

(PCL) (SP)
(PCH) (SP + 1)
(SP) (SP) + 2

10

indireto por
registrador

nenhuma

Rcondio

(PCL) (SP)
(PCH) (SP + 1)
(SP) (SP) + 2

1/3

6/12

indireto por
registrador

nenhuma

RST n

((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) (SP) - 2
(PC) 8 * (NNN)

12

indireto por
registrador

nenhuma

PCHL

(PCH) (H)

registrador

nenhuma

(PCL) (L)

Microprocessadores e Microcomputadores

Casos possveis: CNZ, CZ, CNC, CC, CPO, CPE, CP, CM


(Return) = Retorno de Subrotina. O processamento volta para o local de onde
partiu (instruo seguinte). O endereo de retorno buscado na pilha. O
contedo da posio SP o byte menos significativo do endereo de retorno. O
contedo da posio SP + 1 o byte mais significativo do endereo de retorno.
Aps essas duas operaes de transferncia o valor de SP ainda incrementado
novamente de forma que SP ter sido incrementado de 2 ao final da operao de
busca da pilha.
(Conditional Return) = Retorno de Subrotina Condicionado a que CCC seja
verdadeiro. O processamento volta para o local de onde partiu (instruo
seguinte) se a condio dada em CCC for verdadeira. O endereo de retorno
buscado na pilha. O contedo da posio SP o byte menos significativo do
endereo de retorno. O contedo da posio SP + 1 o byte mais significativo do
endereo de retorno. Aps essas duas operaes de transferncia o valor de SP
ainda incrementado novamente de forma que SP ter sido incrementado de 2 ao
final da operao de busca da pilha.
(Restart) = Reincio. O processamento desviado para o endereo indicado por 8
* (NNN). No entanto, antes do desvio, o endereo da prxima instruo
guardado na pilha.
(Jump H and L inderect - move H and L to PC) = O contedo do registrador H
transferido para o byte mais significativo de PC. O contedo do registrador L
transferido para o byte menos significativo de PC.

Prof. Jos Wilson Lima Nerys

49

3.8

Instrues de Controle, Pilha e Entrada e Sada


Obs.: As instrues desse grupo no afetam as flags, a menos que seja indicado.
Mnemnico
Genrico
PUSH rp

Simbologia
((SP) - 1 (rh)

NO de
Ciclos
3

No de
Estados
12

Modo de
Endereamento
indireto por
registrador

Flags
Afetadas
nenhuma

12

indireto por
registrador

nenhuma

10

indireto por
registrador

nenhuma

10

indireto por
registrador

todas

16

indireto por
registrador

nenhuma

((SP) - 2 (rl)
(SP) (SP) - 2

PUSH PSW

((SP) - 1 (A)
((SP) - 2 (F)
(SP) (SP) - 2

POP rp

(rl) ((SP))
(rh) ((SP) + 1)
(SP) (SP) + 2

POP PSW

(F) ((SP))
(A) ((SP) + 1)
(SP) (SP) + 2

XTHL

(L) ((SP))
(H) ((SP) + 1)

SPHL

(SP) (H) (L)

registrador

nenhuma

IN porta

(A) (dado 8 bits)

10

direto

nenhuma

OUT porta

(dado 8 bits) (A)

10

direto

nenhuma

Microprocessadores e Microcomputadores

Comentrio

(Push) = O contedo do registrador de mais alta ordem (byte superior) do


par de registradores guardado na posio de memria indicada por SP 1. O contedo do registrador que contm o byte inferior da instruo
guardado na posio de memria indicada por SP - 2. O registrador par
rp pode ser B (de BC), D (de DE) ou H (de HL). O registrador SP
decrementado de 2.
(Push Processor Status Word) = O contedo dos registradores A
(acumulador) e F (flags) guardado na pilha. O contedo do
Acumulador guardado na posio de memria indicada por SP - 1. O
contedo do registrador F guardado na posio de memria indicada
por SP - 2.
O contedo da posio de memria indicada por SP movido para o
registrador que representa o byte inferior (C, E ou L). O contedo da
posio de memria indicada por SP + 1 movido para o registrador que
representa o byte superior da instruo (B, D ou H). O contedo do
registrador SP incrementado de 2.
O contedo da posio de memria indicada por SP movido para o
registrador que guarda o estado das Flags (registrador F). O contedo da
posio de memria indicada por SP + 1 movido para o acumulador. O
contedo do registrador SP incrementado de 2.
(Exchange Stack Top with H and L) = O contedo da posio de
memria indicada por SP trocado com o contedo do registrador L e o
contedo da posio de memria indicada por SP + 1 trocado pelo
contedo do registrador H.
(Move HL to SP) = O contedo do registrador par HL movido para o
registrador de 16 bits SP.
(Input = Entrada) = O dado colocado na porta indicada transferido para
o acumulador atravs do barramento de dados (8 bits).
(Output = Sada) = O dado do acumulador transferido para a porta
indicada atravs do barramento de dados (8 bits).

Prof. Jos Wilson Lima Nerys

50
EI

nenhuma

DI

nenhuma

HLT

1+

nenhuma

NOP

nenhuma

RIM

nenhuma

SIM

nenhuma

(Enable Interrupt = Habilita Interrupes) = A interrupo do sistema


habilitada aps a execuo da instruo seguinte. Nenhuma interrupo
reconhecida durante a execuo da intruo EI.
(Disable Interrupt = Desabilita Interrupes) = A interrupo do sistema
desabilitada imediatamente aps a execuo da instruo DI. Nenhuma
interrupo reconhecida durante a execuo da intruo DI.
A instruo HLT faz o processador parar o processamento. Os
registradores e flags permanecem inalterados.
(No Operation) = Nenhuma operao realizada. Os registradores e
flags ficam inalterados.
(Read Interrupt Mask = L Mscara de Interrupo) = Esta instruo
carrega no acumulador os dados relativos s interrupes e entrada
serial. Ser melhor detalhada posteriormente.
(Set Interrupt Mask = Define Mscara de Interrupo) = Esta instruo
usa o contedo do acumulador para definir as mscaras de interrupo.
Ser melhor detalhado posteriormente.

Cdigos de Operao das Instrues de Desvio e de Controle


MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE
CALL adr
CC adr
CM adr
CMA
CMC
CMP A
CMP B
CMP C
CMP D
CMP E

CD
DC
FC
2F
3F
BF
B8
B9
BA
BB

CMP M
CNC adr
CNZ adr
CP adr
CPE adr
CPI D8
CPO adr
CZ adr
DI
EI

BE
D4
C4
F4
EC
FE
E4
CC
F3
FB

JM adr
JMP adr
JNC adr
JNZ adr
JP adr
JPE adr
JPO adr
JZ adr
NOP
ORI D8

FA
C3
D2
C2
F2
EA
E2
CA
00
F6

POP B
POP D
POP H
POP PSW
PUSH B
PUSH D
PUSH H
PUSH PSW
RC
RET

C1
D1
E1
F1
C5
D5
E5
F5
D8
C9

RNC
RNZ
RP
RPE
RPO
RST 0
RST 1
RST 2
RST 3
RST 4

D0
C0
F0
E8
E0
C7
CF
D7
DF
E7

CMP H

BC

IN D8

DB

OUT D8

D3

RIM

20

RST 5

EF

CMP L

BD

JC adr

DA

PCHL

E9

RM

F8

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

RST 6
RST 7
RZ
SIM
SPHL
STC
XCHG
XRI D8
XTHL

F7
FF
C8
30
F9
37
EB
EE
E3

51

3.9

Funcionamento da Pilha

Como j foi dito anteriormente, a Pilha uma regio da memria RAM, definida pelo usurio, para
guardar valores que sero usados posteriormente. Assim, o usurio pode guardar o contedo de qualquer
registrador (dois a dois: A e Flags, B e C, D e E, H e L) na pilha e o microprocessador guarda automaticamente
os endereos de retorno de subrotinas comuns e de subrotinas de interrupes. A seguir ilustrada a regio da
memria definida como Pilha (Stack).
Observaes:
(a) O contedo guardado na pilha sempre de 16 bits. Assim, o microprocessador normalmente guarda
o contedo de PC, que j de 16 bits, mas o usurio normalmente guarda o contedo de
registradores de 8 bits, que ento so associados 2 a 2;
(b) Os registradores duplos que podem ser guardados na pilha so PSW (= A + Flags), B (= B + C), D (=
D + E) e H (= H + L);
(c) Para guardar o contedo de um desses registradores duplos usa-se a instruo PUSH rp;
(d) Para recuperar o contedo que foi guardado na pilha usa-se a instruo POP rp;
(e) Quando uma informao enviada para a pilha o byte mais significativo guardado primeiro; isso
significa que o byte menos significativo vai ser retirado primeiro porque o ltimo dado armazenado
o primeiro a ser retirado;
(f) A pilha do 8085 evolui do maior endereo para o menor, ou seja, a cada vez que uma informao (2
bytes) enviada para a pilha, o endereo do topo da pilha reduzido de 2. Ele acrescido de 2
quando a informao retirada da pilha;
(g) O apontador de pilha SP aponta sempre para o topo da pilha, mas ele incrementado de 1 antes de
cada byte ser armazenado.
Exemplo de armazenamento na pilha:
Supondo que inicialmente SP = 2090 h, A = 01 h, F = 23 h, B = 45 h e C = 67 h, as figuras a seguir
mostram a evoluo da pilha aps cada instruo dada. A regio em destaque corresponde posio apontada
por SP aps a instruo.
PUSH PSW
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
208D
208E
23
208F
01
2090
SP aps a instruo:
208E h

PUSH B
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
67
208D
45
208E
23
208F
01
2090
SP aps a instruo:
208C h

POP B
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
67
208D
45
208E
23
208F
01
2090
SP aps a instruo:
208E h

POP PSW
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
67
208D
45
208E
23
208F
01
2090
SP aps a instruo:
2090 h

Observaes:
(a) Apesar da regio da pilha continuar com o mesmo contedo aps as instrues POP rp, eles no acessveis
porque o Apontador de Pilha SP aponta para a posio original, de quando a pilha estava vazia;
(b) POP B vem antes de POP PSW porque a ordem de retirada da pilha inversa ordem de armazenagem.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

52

3.10 Exemplos de Programas em Assembly do 8085


1.

Exemplo de uso de instrues de desvio e de controle. A instruo MOV A,B no afeta nenhuma flag e,
portanto, no afeta a flag de zero (Z) decorrente da instruo DCR C.
Label
volta:

fim:
2.

Label

Instrues
MVI C,10h

Comentrio
Carrega o registrador C com o valor 10 h

volta:

DCR C
JZ fim
MOV A,B
JMP volta
HLT

Decrementa contedo do registrador C


Se o resultado de DCR C for ZERO, desvia para "fim"
Copia contedo de B em A. No afeta nenhuma flag.
Desvio incondicional para "volta".
Esta instruo pra o processamento do programa

Exemplo usando comparao entre registradores (A e B). A operao de comparao e volta repetida at o
valor de B alcanar o valor 08h, quando ento a flag de carry setada, fazendo o processamento encerrar.
Label

volta:

4.

Instrues
MVI A,07h
MVI B,00h

Carrega registrador A com valor 07 h


Carrega registrador B com valor 00 h.

Comentrio

INC B
CMP B
JNC volta
HLT

Incrementa em "1" o contedo do registrador B


Compara contedo de B com o contedo de A, sem alterar valor de A.
Desvia para "volta", se a flag CY = 0. CY =0 se A > B ou A = B
Pra processamento quando CY = 1, ou seja, quando B=8 (A < B).

Exemplo similar ao anterior, mas usando a instruo JC endereo, ao invs de JNC endereo.
Label

volta:

fim:

5.

Comentrio
Carrega o registrador C com o valor 10 h
Decrementa contedo do registrador C
Copia contedo de B em A. No afeta nenhuma flag.
Se o resultado de DCR C no for ZERO, desvia para "volta"
Esta instruo pra o processamento do programa

Exemplo similar ao anterior, mas usando a instruo JZ endereo e JMP endereo.

fim:
3.

Instrues
MVI C,10h
DCR C
MOV A,B
JNZ volta
HLT

Instrues
MVI A,07h
MVI B,00h
INC B
CMP B
JC fim
JMP volta
HLT

Comentrio
A operao de comparao e volta repetida at
o valor em B alcanar o valor 08h, quando ento a flag
de Carry CY setada, fazendo o processamento encerrar
pulando para o comando HLT

Programa que faz a multiplicao de 4 por 3. usada a instruo ADI Dado8.


Label

volta:

Mnemnico
MVI A,00h
MVI C,03h
ADI 04h
DCR C
JNZ volta
HLT

Comentrio
Zera acumulador. A = 00 h
Carrega registrador C com 03 h. "C" ser usado como contador
Adiciona Imediato 04h ao acumulador. A = A + 04 h
Decrementa o contador. C = C - 1.
"volta" se o resultado de DCR C no for zero (Se Z = 0)
Encerra processamento quando C = 0, ou seja, flag Z = 1.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

53
6.

7.

8.

Outra verso de programa que faz a multiplicao de 4 por 3. A instruo ADI Dado8 substituda pela
instruo ADD B. O acumulador vai assumir os valores 00 h, 04 h, 08 h e, finalmente, 0C h, isto 12
decimal.
Label

Mnemnico

volta:

MVI A,00h
MVI B,04h
MVI C,03h
ADD B
DCR C
JNZ volta
HLT

Comentrio
Zera acumulador. A = 00 h.
Carrega o registrador B com 04 h.
Carrega o registrador C com 03 h. "C" ser usado como contador
Adiciona B ao acumulador. A = A + B
Decrementa o contador. C = C - 1.
"volta" se o resultado de DCR C no for zero (Se Z = 0)
Encerra processamento quando C = 0, ou seja, flag Z = 1.

Programa que faz a multiplicao de 4 por 3 usando uma subrotina.


Label

Mnemnico
LXI SP, 2090h
MVI A,00h
MVI B,04h
MVI C,03h
CALL soma
HLT

soma:

ADD B
DCR C
JNZ soma
RET

Comentrio
Pilha na posio 2090 h
Zera acumulador. A = 00 h.
Carrega o registrador B com 04 h.
Carrega o registrador C com 03 h. "C" ser usado como contador
Chama subrotina que adiciona B ao acumulador
Encerra processamento
Adiciona B ao acumulador. A = A + B
Decrementa o contador. C = C - 1.
Desvia para "volta" se o resultado de DCR C no for zero (Se Z = 0)
Retorna para programa principal

Programa que gera uma contagem crescente, em hexadecimal, de 00 h a FF h e envia o resultado para a
sada 1.
Label
volta:

Mnemnico
MVI A,00h
OUT 01h
INR A
JNZ volta
HLT

Comentrio
Zera acumulador. A = 00 h
Envia valor de A para a Porta de sada 01h
Incrementar contedo do acumulador. A = A + 1
"volta" se contedo do acumulador for diferente de zero
Encerra quando contedo do acumulador for zero.

Obs.: Nesse programa o acumulador inicia com valor 00h e encerra quando o acumulador volta para o valor 00h,
aps passar por todos os valores de 00 a FFh.
9.

Subrotina de atraso de 1 ms. feita a suposio de que um programa chama a subrotina denominada atraso,
que dada logo a seguir. suposto um tempo de 1s para cada estado.
_____
_____
CALL atraso
_____
_____
Label
atraso:
volta:

Mnemnico
MVI C,46h
DCR C
JNZ volta
NOP
HLT

Comentrio
Registrador C recebe valor 46 h 70 d
Decrementa C. C = C - 1
Volta, se flag de zero for zero (Z=0) C 0
Estado inoperante (No Operation). Apenas retardo
Encerra quando contedo do acumulador for zero.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

54

Tempo gasto em cada instruo e tempo total:


No de Vezes que a
No de Estados
Tempo de cada
instruo
de cada Instruo
Estado
executada
(s)
1
7
1
70
4
1
69
10
1
1
7
1
1
4
1
1
10
1
Tempo Total

Instruo

MVI C
DCR C
JNZ (verdadeiro)
JNZ (falso)
NOP
RET

Tempo Parcial
(s)
7
280
690
7
4
10
998 s 1 ms

10. Subrotina de atraso de 10 ms. suposto um tempo de 1s para cada estado.


Label
atraso:
repete1
repete2:

Mnemnico
MVI B,0Ah
MVI C,47h
DCR C
JNZ repete2
DCR B
JNZ repete1
RET

Instruo

MVI B
MVI C
DCR C
JNZ repete2
(verdadeiro)
JNZ repete2 (falso)
DCR B
JNZ repete1
(verdadeiro)
JNZ repete1
(falso)
RET

Comentrio
Inicia contador B com valor 0Ah 10d
Inicia contador C com valor 47h 71h
Decrementa C. C = C - 1
Repete lao at registrador C = 0 Z = 1.
Decrementa registrador B
Reinicia lao interno at zerar registrador B Z = 1.

Tempo gasto em cada instruo e tempo total


No de Vezes a
No de Estados de
Tempo de
instruo
cada Instruo
cada Estado
executada
(s)
1
7
1
10
7
1
710
4
1
700
10
1

Tempo Parcial (s)

7
70
2840
7000

10
10
9

7
4
10

1
1
1

70
40
90

1
Tempo Total

10

10
10134 s 10 ms

3.11 Exerccios Propostos


1.

Cite todas as instrues possveis a partir da instruo genrica MOV A, r.

2.

Se os registradores H e L contm, respectivamente, os valores 40 h e 50 h, qual o significado da instruo


MVI M, 08h?

3.

A que grupo de instrues pertence a instruo MVI M, 08h?

4.

Explique em poucas palavras como funciona a pilha no 8085. Mostre, atravs de um mapa de memria, a
evoluo da pilha quando se realiza as seguintes instrues, na seqncia mostrada:
PUSH B, PUSH D, ADD B, PUSH PSW, ADD D, POP PSW, OUT 90, POP D, POP B
Valores iniciais: SP = 20C0 h,

A = 33 h,

Microprocessadores e Microcomputadores

B = 1C h,

C = 4B h,

D = 10 h, E = FE h e F = 3D h
Prof. Jos Wilson Lima Nerys

55

5.

Mostre, atravs de um mapa de memria, a evoluo da pilha quando se executam as seguintes instrues,
na seqncia mostrada:
PUSH PSW, PUSH B, CALL ADIO, (RET), MOV B, A, POP B, POP PSW
Valores iniciais: SP = 2090 h,

A = 53 h,

B = 0F h,

C = 05 h, D = 12 h, E = 01 h e F = 55 h

Endereo da chamada de subrotina CALL ADIO: 2020 h

6.

Mostre a evoluo da pilha na execuo das instrues a seguir:


a) PUSH B, PUSH D, PUSH H, LDA 00FF h, POP H, POP D e POP B, sabendo que o valor inicial de SP
38FC h e que os registradores B, C, D, E, H e L contm os valores 08 h, 1C h, 2A h, 06 h, FE h e 3Dh.
b) CALL 033CH, ADD B e RET (ADD B e RET esto dentro da sub-rotina que se inicia na posio
033CH), nas mesmas condies do exerccio anterior, supondo que o endereo da instruo CALL
033C h 0038 h.

7.

Considere o programa abaixo, em mnemnico, e responda as questes a seguir, sabendo que a subrotina no
endereo 0200 h provoca um retardo de 1ms e afeta o registrador B.
Endereo
4000

volta:

pula:

Instruo
LXI SP,4050h
LXI H,402Fh
MVI C,07h
INX H
MOV A,M
ANI 01h
JNZ pula
MOV A,M
OUT 01h
CALL 0200h
DCR C
JNZ volta
RST 4

Endereo
4030
4031
4032
4033
4034
4035
4036

Dados
10h
02h
05h
F2h
0Ah
19h
03h

(a) O que o programa acima faz?


(b) Desenhe uma tabela mostrando os endereos e o contedo da pilha aps a execuo da instruo CALL
0200h.
(c) Quais os valores enviados pela porta de sada 01?
(d) Mostre o que deve ser feito se o reg. B for usado no lugar do reg. C
8.

Escreva um programa que produz um retardo de 1 s, sabendo que o 8085 acionado por um cristal de 6
MHz.

9.

Escreva, a partir do endereo 4050 h, uma sub-rotina que produza um retardo de 0.5 ms, aproximadamente.
Suponha que a freqncia do cristal do 8085 seja 4,096 MHz.

10. Escreva um programa (usando bytes imediatos para os dados) que soma os decimais 500 e 650.
11. Descreva as etapas do ciclo de execuo das instrues a seguir e explicar o que ocorre com os sinais de
controle envolvidos e os sinais de endereos e dados:
a) MOV B, M
b) LXI D, 4050 h
c) MOV E, B.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

56
12. Faa o comentrio de cada linha do programa abaixo e, a seguir, explique qual a finalidade do programa
completo. Complete os endereos.
End.
4000

volta:

pula:

Mnemnico
LXI SP,4100h
LXI H,4031h
MVI C,0Ah
LDA 4030h
CMP M
JC pula
MOV A,M
INX H
DCR C
JNZ volta
CALL APDIS
CALL DBYTE
HLT

Comentrios

3.12 Referncias Bibliogrficas


[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Digibyte, Manual do Usurio do Kit Didtico KMD85, Abril de 1984.
[4] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

57

4. SIMULADOR DIGITAL ABACUS

4.1

Simulador ABACUS para o Microprocessador 8085

Os experimentos, em Engenharia Eltrica, tornam-se mais significativos quando precedidos de uma


simulao digital. Na simulao pode-se fazer todas as consideraes possveis de uma forma mais rpida e mais
eficiente, sem o risco de danificar quaisquer componentes ou equipamentos. Assim, o experimento seria apenas
uma verificao e convalidao do modelo usado na simulao digital.
O simulador adotado o ABACUS, que foi desenvolvido por pesquisadores da Universidade Federal de
Santa Catarina (UFSC), sob a coordenao do Prof. Roberto M. Ziller. Esse simulador apresentado a seguir, de
forma simplificada. A pgina principal do simulador mostrada a seguir:
Reset
cone para
mostrar os
mnemnicos

LEDs para

Memria RAM:
Endereo, cdigo
em hexadecimal
e mnemnico

Chaves para
entrada de dados

Contedo da
memria RAM

Registradores: A, Flags (Z, S, P, CY, AC), B, C, D, E, H, L, PC e SP


Estado das mscaras de interrupo: IE, 5.5, 6.5, 7.5
Indicadores se h pedido pendente de interrupo: 5.5?, 6.5?, 7.5?

O simulador conta com todas as possveis instrues do 8085, cujos mnemnicos so mostrados quando o
cone "Assembler" pressionado. Pode tambm ser mostrado atravs do "menu" chamado de "ferramentas". Os
mnemnicos, do jeito que aparecem no ABACUS, so mostrados a seguir.

Da mesma forma que o kit didtico, o ABACUS tem algumas sub-rotinas j prontas na memria ROM.
No caso do ABACUS so apenas 4, mostradas na tela a seguir, cujo acesso, no ABACUS, atravs do "menu"
"Opes".

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

58

Subrotina
LETECLA

Endereo
(h)
02E7

MOSTRAA

036E

MOSTRAD

0363

DELAY

05F1

Funo

Entrada

Sada

Registradores
Afetados

Mostra uma entrada de dados no


simulador, atravs da qual um nico
caractere (0 a F) pode ser digitado
Mostra no display de dados o contedo
do registrador A
Mostra no display de endereos o
contedo dos registradores D e E

nenhuma

A - valor da
tecla lida

A, H e L

nenhuma

todos

D - byte mais
significativo
E - byte menos
significativo
D - 1o byte a ser
mostrado no
display
E - 2o byte a ser
mostrado no
display

nenhuma

todos

nenhuma

A, D e E

Provoca atraso de tempo proporcional ao


contedo de D

Nesse momento interessante refazer o exemplo usado com o kit didtico. Trs detalhes devem ser
observados:
1. A memria RAM do ABACUS comea no endereo 2000 h, ao invs de 4000 h.
2. No h necessidade de usar uma subrotina para apagar o display no ABACUS. No kit essa subrotina
essencial.
3. fundamental definir a posio da pilha no ABACUS, atravs do comando LXI SP, xx xx. Caso
contrrio, pode ocorrer erros, com o simulador tentando acessar endereo fora da faixa permitida.
Label

volta:

Endereo
2000
2003
2005
2006
2009
200A
200b

Mnemnico
LXI SP, 2020
MVI A,00h
PUSH PSW
CALL MOSTRAA

POP PSW
INR A
JMP volta

Cdigo
31 20 20
3E 00
F5
CD 6E 03
F1
3C
C3 05 20

Comentrio
Define pilha na posio 2020 h da RAM
Carrega registrador A com valor 00 h
Guarda valor de A e flags na pilha
Mostra contedo de A no display. Afeta "A"
Recupera valor de A guardado na pilha
Incrementa contedo de A
Volta para a posio "volta", ou seja, 2005 h

A visualizao desse programa na memria RAM do ABACUS mostrada na figura a seguir.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

59

4.2

Exemplos de Programas em Assembly para o ABACUS


A presente seo mostra dois exemplos de programao voltada para simulao no ABACUS.

Exemplo 1: Faa no ABACUS um programa que executa uma contagem crescente em hexadecimal de 00
h at 60 h.

AA+1

Incio

Label

SP 2090 h
A 00 h

volta:

Mostra A
N

A = 60 h?
S

fim:

Mnemnico
LXI SP,2090H
MVI A,00H
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 60H
JZ fim
INR A
JMP volta
HLT

Fim

Exemplo 2: Faa no ABACUS um programa que executa, de forma ininterrupta, uma contagem
hexadecimal crescente de 00h at 60h seguida de uma contagem hexadecimal decrescente de 60h at 00h.
Label
Incio

SP 2090 h
A 00 h

AA+1

volta:

Mostra A

cresce:
N

A = 60 h?
S
AA1

Mostra A

decresce:

Mnemnico
LXI SP,2090H
MVI A,00H
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 60H
JZ decresce
INR A
JMP volta
DCR A
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 00H
JZ cresce
JMP decresce

A = 00 h?
S

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

60

4.3

Exerccios Propostos

1.

Faa no ABACUS um programa que executa uma contagem decimal de 00 a 60.

2.

Faa no ABACUS um programa que executa uma contagem decrescente em hexadecimal de 60 h at 00 h.

3.

Repita o problema anterior para uma contagem decimal de 60 at 00.

4.

Faa no ABACUS um programa que seleciona e mostra no display o maior nmero contido em uma tabela
inserida na memria. A tabela contm nmeros aleatrios e tem incio no endereo 2050h e termine no
endereo 205Fh.

5.

Repita o problema anterior, selecionando e mostrando o menor nmero.

6.

Faa no ABACUS um programa que seleciona e mostra no display os nmeros mpares contidos em uma
tabela inserida na memria. A tabela contm nmeros aleatrios e tem incio no endereo 2050h e termine
no endereo 205Fh. Use uma subrotina de atraso com D = 02 h entre os valores mostrados no display.

7.

Faa no ABACUS um programa que faz a ordenao em ordem crescente de uma tabela contendo 16
nmeros de 8 bits. Os nmeros j esto na memria a partir do endereo 2050h e devem ser mantidos nessa
faixa de endereos, porm, ordenados.

8.

Adapte o programa do problema 7 para ordenar os nmeros em ordem decrescente.

9.

Faa no ABACUS um programa que seleciona e mostra no display os nmeros maiores ou iguais a 20h e
menores que 50h, de uma tabela com 16 nmeros, comeando do endereo 2050 h.
Sugesto de tabela: 05h, 15h, 65h, 95h, 35h, 20h, 50h, 42h, 72h, 10h, 60h, 45h, 33h, 25h, 48h, 49h

10. Repita o problema 9, mostrando os nmeros fora do intervalo.


11. Faa no ABACUS um programa que mostra um nmero (1 byte), lido pelo teclado, e multiplique este
nmero por outro nmero, tambm obtido pelo teclado, mostrando o resultado no display. O resultado
dever conter 2 bytes.
12. Faa no ABACUS um programa que leia do teclado uma temperatura em oC (um byte) e converta-a em oF
(graus Farenheit) mostrando o resultado no display. (o programa s deve aceitar temperaturas de entrada de
at 255 graus farenheit, ou seja, um byte na sada). Trabalhar em hexadecimal.
T( oF) = (9/5) * T (oC) + 32 (nmeros da equao em decimal)
13. Faa no ABACUS um programa que adicione dois nmeros binrios de qualquer tamanho (N bytes cada
um). O tamanho dos nmeros binrios (N) est na posio 2040 h. Os nmeros comeam nas posies 2041
e 2061 (1o byte o menos significativo). O resultado deve substituir o nmero que comea na posio 2041.
14. Escrever uma sub-rotina que divida dois nmeros de 8 bits. Os dois nmeros esto nas posies 2050
(dividendo) e 2051 (divisor). O quociente deve ser armazenado na posio 2052 e o resto na posio 2053.
15. Faa no ABACUS um programa que l um nmero de 1 byte pelo teclado (dividendo), em seguida l outro
nmero de 1 byte pelo teclado (divisor), faz diviso e mostra o quociente no display de endereos e o resto
no display de dados.
16. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 3 + 5.
17. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 5- 2.
18. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 3( + 5).

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

61
19. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 5( - 2).
20. O trecho de programa dado abaixo usado para montar uma tabela de 10 nmeros (cada um com dois
dgitos).
LABEL

L_PRXIMO:

MNEMNICO
LXI SP,2080h
LXI H,2050h
MVI C,0Ah
CALL leitura
MOV M,A
PUSH H
PUSH B
CALL MOSTRAA
POP B
POP H
INX H
DCR C
JNZ L_PRXIMO

LABEL
LEITURA:

MNEMNICO
PUSH H
CALL LETECLA
RLC
RLC
RLC
RLC
MOV B,A
CALL LETECLA
ORA B
POP H
RET

Aps analisar o trecho de programa dado, pede-se:


(a) Explique o funcionamento da subrotina "LEITURA";
(b) Faa a continuao do programa acima de modo que o maior nmero da tabela montada seja mostrado
no display de dados;
(c) Faa a continuao do programa acima de modo que o menor nmero da tabela montada seja mostrado
no display de dados;
21. Codifique as instrues dadas a seguir usando o mnemnico do 8085; indique o endereo de cada instruo
e indique o contedo dos registradores pedidos e das flags de carry e de zero, aps a execuo da instruo
indicada.
OPERAO

END.

MNEMNICO

(A) 70 h
(C) 0F h
(H,L) 2020 h
((H)(L)) F0 h
(A) (A) (C)
(A) ((H)(L))
(A) (A) + (C) + CY

2000

MVI A, 70 h
MVI C, 0F h
LXI H, 2030 h
MVI M, F0 h
ANA C
CMP M
ADC C
MOV A,C

(C) (C) ((H)(L))

CY

ORA M
MOV C,A
CPI FF h

(A) FF h

Resultado no display

22. O grfico a seguir representa a funo matemtica de um componente no identificado. Escreva em


assembly do 8085 (mnemnico do 8085) um programa para ler um dado de 1 byte pelo teclado e mostrar no
display de dados o resultado da aplicao da funo. Use as sub-rotinas necessrias do ABACUS para a
entrada de dados e para mostrar o resultado no display de dados. O programa deve sempre voltar para a
entrada de um novo dado.

60

30

30

Microprocessadores e Microcomputadores

70

Dado de entrada

Prof. Jos Wilson Lima Nerys

62
23. Codifique, usando mnemnicos do microprocessador 8085 e recursos do ABACUS, os trechos de
programas representados nos fluxogramas dados a seguir:
(a)
S

Label

Mnemnico

Label

Mnemnico

A < 15 h ?
N

A > 45 h ?
N
Mostra A

CC1

(b)
EE+1

AAB
S
CY = 0?
N
AE
Mostra A

Fim

24. Faa, para executar no ABACUS, um programa que l um nmero x de 1 dgito pelo teclado e mostra no
display de dados o resultado de x2 2.

4.4

Referncias Bibliogrficas

[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

63

5. KIT DIDTICO E ROTEIROS DE LABORATRIO


5.1

Sub-rotinas do Programa Monitor do Kit Didtico

O laboratrio de microprocessadores conta com um Kit Didtico para realizao de experimentos usando
o microprocessador 8085. Esse Kit j possui vrias sub-rotinas no programa residente (chamado de programa
monitor). Elas so dadas a seguir, juntamente com uma breve descrio e com os endereos onde elas esto
armazenadas.
Subrotina
APDIS

Endereo
(h)
070B

Funo

Entrada

Sada

apagar display (e inicializar WRITE


DISPLAY RAM na posio 0) (LEFT
entry)
leitura da tecla apertada

nenhuma

nenhuma

CI

05C1

nenhuma

A - cdigo da
tecla lida
A - cdigo do
caracter
mostrado no
display
nenhuma

CO

05CB

mostra no display o caracter contido no


registrador C

DADD

05B8

mostra 2 bytes no display (LEFT entry)

DBYTE

05A1

mostra 1 byte no display (LEFT entry)

PRINT

05D6

imprime mensagem no display


(mensagem localizada no endereo dado
por M e que termina com um byte FF)

RADD

0580

RBYTE

0558

l 2 bytes do teclado e mostra no display


(p. ex.: endereos)
l 1 byte do teclado e mostra no display

RDATA

0593

mostra 2 bytes no display

nenhuma

TECLA

06BA

guarda em A a posio (na TABTEC) da


tecla lida

nenhuma

DELAY

077A

temporizador (tempo = 0,6 ms)

DEL 1
DEL 2

0770
0766

temporizador (tempo = 50 ms)


temporizador (tempo = 850 ms)

C - cdigo do
caracter a ser
mostrado no
display
D - 1o byte a ser
mostrado no
display
E - 2o byte a ser
mostrado no
display
A - byte a ser
mostrado no
display
M - endereo da
memria a partir
de onde comea a
mensagem
nenhuma

Registradores
Afetados
nenhum

A e flags
A e flags

A, BC, DE e
flags

nenhuma

A, BC e flags

nenhuma

A, C, HL e
flags

A, BC, HL e
flags
A, BC e flags

nenhuma

M - 2 bytes
lidos
A = B = byte
lido e
mostrado no
display
M = 2 bytes
mostrados no
display
A=C=
posio na
TABTEC do
cdigo da
tecla lida
nenhuma

nenhuma
nenhuma

nenhuma
nenhuma

A, B e flags
A, BC e flags

nenhuma

DE

A, C e flags

A e flags

Exemplo de programa usando sub-rotinas da tabela anterior:


O programa a seguir mostra uma contagem hexadecimal crescente de 00 h at FF h no display do Kit
didtico. O programa deve ser digitado a partir da posio de memria 4000 h.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

64
Label
volta:

5.2

Endereo
4000
4002

Mnemnico
MVI A,00h
CALL APDIS

Cdigo
3E 00
CD 0B 07

4005
4006
4009
400A
400B

PUSH PSW
CALL DBYTE
POP PSW
INR A
JMP volta

F5
CD A1 05
F1
3C
C3 02 40

Comentrio
Carrega registrador A com valor 00 h
Apaga display. importante para que os nmeros
da contagem sejam mostrados na mesma posio
Guarda valor de A e flags na pilha
Mostra contedo de A no display. Afeta "A"
Recupera valor A guardado na pilha
Incrementa contedo de A
Volta para a posio "volta", ou seja, 4002 h

Principais comandos e orientaes para uso do Kit Didtico

O programa a ser executado pelo Kit deve ser digitado atravs do teclado e deve ser usado o cdigo
hexadecimal de cada instruo. No exemplo anterior aparece uma coluna com os cdigos das instrues e com
os dados em hexadecimal. Por exemplo, o cdigo 3Eh corresponde instruo MVI A; logo a seguir aparece
00 h, que o dado a ser transferido para o acumulador.
Na instruo seguinte CALL APDIS, verifica-se que CD o cdigo da instruo de chamada de
subrotina CALL, A1 o byte menos significativo do endereo da subrotina chamada e 05 o byte mais
significativo do endereo.
Obs: Em toda instruo que contm endereo ou dado de 16 bits o byte menos significativo digitado
primeiro.
A figura a seguir ilustra o teclado e o display do Kit didtico. Cada uma das teclas do teclado da direita
apresenta 2 ou 3 funes. Uma delas um dgito hexadecimal, que vai de 0 a F. A outra uma das funes
explicadas a seguir.
Display de endereos
e dados de 16 bits

EXC

RST

PRG

TR

VER

COM

K-7
ESC

K-7
LER

DSP
C

Display
de dados

DNX DMN
NXT
E
D
XRG FILL INS
PC
SP
M
8
9
A
SST MOV RA
4
5
6
RB
RC
RD
0
1
2

GO
F
SUB
B
RF
7
RE
3

RB, RC, RD, RE, RA e RF Estas teclas permitem visualizar no display de dados o contedo dos registradores
B, C, D, E, A e F. Elas devem ser precedidas da tecla XRG. Ou seja, quando se deseja visualizar, por
exemplo, o contedo do acumulador (registrador A), usa-se as teclas <XRG> <RA>
PC Permite visualizar o contedo do contador de programa, ou seja, a posio atual do programa em
execuo. Essa posio visualizada no display de endereos. Usa-se as teclas <XRG> <PC>
SP Permite visualizar o contedo do apontador de pilha, ou seja, o endereo atual de armazenagem ou leitura
da pilha. Usa-se as teclas <XRG> <SP>.
M Permite visualizar o contedo de memria cujo endereo dado pelo par HL. Ao digitar-se <XRG> <M>,
o contedo dos registradores H e L mostrado no display de endereos e o contedo da posio de memria
correspondente mostrado no display de dados.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

65
SUB Substitui-se o contedo de uma determinada posio de memria por outro byte. Usa-se digitando essa
tecla, seguida do endereo desejado. O contedo atual aparece no display de dados quando, ento, pode-se
substitudo. Em seguida digita-se <EXC>. Resumindo:
<SUB> <endereo>
<novo contedo> <EXC>
DSP Permite mostrar (Display) o contedo de uma determinada posio de memria. Uso:
<DSP> <endereo desejado>
DNX Permite mostrar no display o contedo do prximo endereo de memria, aps o uso da tecla DSP.
Usando repetidas vezes essa tecla, pode-se percorrer todo o programa digitado.
DMN Permite mostrar no display de dados o contedo de memria do endereo anterior ao atual. usado da
mesma forma que a tecla DNX.
GO usada para executar o programa. Uso: <GO> <endereo de incio do programa> <EXC>
SST Permite executar o programa passo-a-passo. Uso: <SST> <endereo de incio do programa> <NXT>
Cada prximo passo executado aps a tecla NXT.
RST usada para ressetar o programa, ou seja, zerar o contedo do contador de programa e de outros
registradores.
INS usada para a insero de cdigos e dados no Kit Didtico. Uso:
<INS> <endereo de incio do programa>
<cdigo 1>
<cdigo / dado 2>
<cdigo / dado 3>
.
.
<ltimo cdigo / dado > <EXC>

Como exemplo, mostra-se como o programa usado na seo anterior digitado no kit didtico.
<INS> <4000>, <3E>, <00>, <CD>, <0B>, <07>, <F5>, <CD>, <A1>, <05>, <F1>, <3C>, <C3>, <02>, <40>
<EXC>
Convm, neste ponto, usar a tecla <RST> para zerar o contador de programa.
Obs.: Somente o endereo inicial digitado. A cada novo dado digitado o endereo automaticamente
incrementado.
Para executar o programa faz-se: <GO> <4000> <EXC>
Obs.: Provavelmente a contagem ser to rpida que no ser vista no display porque nenhuma subrotina de
atraso de tempo foi usada.
Sugere-se, como exerccio, adicionar uma subrotina de atraso de tempo aps a instruo CALL DBYTE.
Usar, por exemplo, DEL 1, cujo endereo 0770 h. Assim, acrescenta-se essa subrotina CALL DEL 1 da
seguinte forma:
<INS> <4009>, <CD>, <70>, <07>, <F1>, <3C>, <C3>, <02>, <40> <EXC>
Obs.: No kit didtico no h como deslocar os comandos que j tinham sido digitados depois da instruo CALL
DBYTE. Assim, todos eles foram digitados novamente aps a instruo CALL DEL 1. Observar sempre que
o byte menos significativo de um endereo digitado primeiro. O endereo 4009 h foi usado porque ele o
primeiro endereo depois da instruo CALL DBYTE.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

66
importante ainda frisar como feita a distribuio de memria no Kit Didtico. A memria ROM
consiste em uma pastilha de memria 2716, de 2 kbytes, o que significa 2048 posies de 8 bits cada uma. Sendo
2048 = 800 h, os endereos vo de 000 h at 7FF h. A memria RAM consiste em 6 pastilhas de memria 2114,
de 1 kbyte. Porm, cada posio de memria da pastilha 2114 contm apenas 4 bits, o que torna necessrio o uso
de duas a duas para formar 1 byte (8 bits). Em cada conjunto de 2 pastilhas em paralelo o de acesso vai de 000 h
at 3FF h.
A figura a seguir ilustra a distribuio de memria no Kit Didtico. Procura-se mostrar a memria do
modo como ela est colocada no kit.

Memria ROM
Embora essa memria possa ir de 0000 h at
3FFF h, somente uma pastilha de memria
usada e o endereo vai de 0000 h at 07FF h
Espao reservado
2716

Memria RAM
Embora essa memria possa ir de 4000 h at
5FFF h, os trs conjuntos de memria permitem
acessar dados de 4000 h at 4BFF h
2114
2114

0800 h 0FFF h

0000 h 07FF h

4000 h 43FF h

4000 h 43FF h

Espao reservado

Espao reservado

2114

2114

1800 h 1FFF h

1000 h 17FF h

4400 h 47FF h

4400 h 47FF h

Espao reservado

Espao reservado

2114

2114

2800 h 2FFF h

2000 h 27FF h

4800 h 4BFF h

4800 h 4BFF h

Espao reservado

Espao reservado

Espao reservado

Espao reservado

3800 h 3FFF h

3000 h 37FF h

4C00 h 4FFF h

4C00 h 4FFF h

Espao vazio

Espao reservado

5000 h 53FF h

5000 h 53FF h

Espao reservado

Espao reservado

5400 h 57FF h

5400 h 57FF h

Espao reservado

Espao reservado

5800 h 5BFF h

5800 h 5BFF h

Espao reservado

Espao reservado

5C00 h 5FFF h

5C00 h 5FFF h

Observar que o ltimo endereo de memria ROM 07FF h e que o ltimo endereo de memria RAM
4BFF h.

5.3

Roteiros de Experimentos

A presente seo tem como objetivo propor experimentos de laboratrio que possam ser implementados
com o simulador ABACUS e com o kit didtico. Esses experimentos sero executados na medida em que a parte
terica for ministrada.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

67

EXPERIMENTO 1
Objetivo: Familiarizao com o simulador ABACUS e com o kit didtico
Material: computador com o simulador ABACUS e kit didtico
1. Inclua no ABACUS e execute o programa da seo anterior, repetido a seguir.
Endereo
2000
2003
2005
2006
2009
200A
200b

Mnemnico
LXI SP, 2020
MVI A,00h
PUSH PSW

INCIO

A 00 h

CALL MOSTRAA

POP PSW
INR A
JMP 2005

Mostra A
AA+1

2. Inclua, aps a instruo CALL MOSTRAA, uma subrotina de atraso de tempo com D = 05 h, execute o
programa novamente e observe o aumento no tempo entre cada valor mostrado no display. O trecho a ser
includo mostrado a seguir:
Endereo
2009
200B
200E
200F
2010

Mnemnico
MVI D, 05
CALL DELAY
POP PSW
INR A
JMP 2005

3. Inclua no Kit didtico e execute o programa da seo anterior, repetido a seguir.


Endereo
4000
4002
4005
4006
4009
400A
400B

Mnemnico
MVI A,00h
CALL APDIS
PUSH PSW
CALL DBYTE
POP PSW
INR A
JMP 4002

Cdigo
3E 00
CD 0B 07
F5
CD A1 05
F1
3C
C3 02 40

4. Inclua, aps a instruo CALL DBYTE, a subrotina de atraso de tempo DEL 1 (50 ms), execute o programa
novamente e observe o aumento no tempo entre cada valor mostrado no display. O trecho a ser includo
mostrado a seguir:
Endereo
4009
400C
400D
400E

Mnemnico
CALL DEL1
POP PSW
INR A
JMP 4002

Cdigo
CD 70 07
F1
3C
C3 02 40

5. Questes do Experimento 1
(a)
(b)
(c)
(d)

O que ocorre quando se diminui o valor de D no ABACUS?


Por que foram usadas as instrues PUSH PSW e POP PSW no ABACUS e no Kit Didtico?
Sendo SP = 2020 h no ABACUS, em que endereo ser armazenado o primeiro dado da pilha?
A subrotina DEL1 provoca um atraso de 50 ms. Mostre como ela pode ser usada para gerar um atraso de
tempo de aproximadamente 200 ms.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

68

EXPERIMENTO 2
Objetivo: Familiarizao com as instrues de transferncia de dados
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao

End.

Mnemnico

(A) 99h
(H,L) 2050h
(2050) (A)
(D,E) 2060h
(E) 70h
(B) (E)
((H,L)) (B)
((D,E)) (A)
(H,L) (D,E)
(SP) 20C0 h
(L) AA h
((H,L)) 22 h
(D) ((H,L))
(A) (D)
(H) (L)

2000
2002

MVI A, 99

Comentrio
Carrega acumulador com valor 99

2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao

End.

Mnemnico

Cdigo

(A) 99h
(H,L) 4050h
(4050) (A)
(D,E) 4060h
(E) 70h
(B) (E)
((H,L)) (B)
((D,E)) (A)
(H,L) (D,E)
(SP) 4B00h
(L) AA h
((H,L)) 22 h
(D) ((H,L))
(A) (D)
(H) (L)

4000
4002

MVI A, 99

3E 99

Comentrio
Carrega acumulador com valor 99

3. Questes do Experimento 2
(a) Qual o contedo final dos registradores A, D, E e H no ABACUS?
(b) Qual o contedo final do endereo 2050 h no ABACUS?
(c) Em que endereo foi inserido o opcode da instruo (SP) 4B00 h?
(d) Qual o endereo apontado pelo par HL aps a instruo (H,L) (D,E) no kit didtico?
(e) Em que endereo o valor 22 h foi armazenado aps a instruo ((H,L)) 22h no kit didtico?

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

69

EXPERIMENTO 3
Objetivo: Familiarizao com as instrues aritmticas do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao

End.

Mnemnico

(H,L) 2050h
((H,L)) 10 h
(E) 05 h
(A) 01 h
(B) FF h
(A) (A) + (B)
(A) (A) + ((H,L)) + CY
(A) (A) + 21 h
(A) (A) - (E)
(A) (A) - (B) - CY
(A) (A) - 33 h
(B,C) 2F01 h
(B) (B) + 1
(C) (C) - 1
(B,C) (B,C) - 1

2000
2003

LXI H, 2050

2Comentrio

(D) (C) + (H)

2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao

End.

Mnemnico

Cdigo

(H,L) 4050h
((H,L)) 10 h
(E) 05 h
(A) 01 h
(B) FF h
(A) (A) + (B)
(A) (A) + ((H,L)) + CY
(A) (A) + 21 h
(A) (A) - (E)
(A) (A) - (B) - CY
(A) (A) - 33 h
(B,C) 2F01 h
(B) (B) + 1
(C) (C) - 1
(B,C) (B,C) - 1

4000
4003

LXI H, 4050

21 50 40

Comentrio

(D) (C) + (H)

3. Questes do Experimento 3
(a) Qual o contedo do registrador A aps a operao (A) (A) + 21 h no ABACUS?
(b) Qual o valor da flag de carry ao final da tabela do ABACUS e do kit didtico?
(c) Qual o contedo dos registradores A, B, C e D ao final da tabela?
(d) Escreva um programa (usando bytes imediatos para os dados) que soma os decimais 500 e 650.
Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

70

EXPERIMENTO 4
Objetivo: Familiarizao com as instrues lgicas do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao

End

(A) 0F h
(B) EA h
(C) 52 h
(A) (A) (C)
(H,L) 2040 h
((H,L)) FF h
(A) (C) ((H,L))

2000

Mnemnico

Comentrio

(A) (A) 44 h
(A) (A) 23 h
(A) 33 h
(An+1) (An)
(A0) (A7)
(CY) ( CY )
(A) - (B)
(B) (B) (C)

2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao

End

(A) 0F h
(B) EA h
(C) 52 h
(A) (A) (C)
(H,L) 4040 h
((H,L)) FF h
(H,L) 0000 h
(A) (C) ((H,L))

4000

Mnemnico

Cdigo

Comentrio

(A) (A) 44 h
(A) (A) 23 h
(A) 33 h
(An+1) (An)
(A0) (A7)
(CY) ( CY )
(A) - (B)
(B) (B) (C)

3. Questes do Experimento 4
(a) Qual o contedo final dos registradores A, B, C, H e L no ABACUS?
(b) Qual o valor final das flags de carry CY e de zero, no ABACUS, aps a instruo de comparao (A) 33
h? E o contedo de A?
(c) Qual o contedo das flags de carry CY e de zero Z, no kit didtico, aps a instruo de comparao (A)
(B)? E o contedo de A?

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

71

EXPERIMENTO 5
Objetivo: Programao com o assembly do 8085
Material: Computador com o simulador ABACUS
Roteiro:
1. O programa a seguir gera os mltiplos de 4, a partir de 4 at 20 h. Esses valores so armazenados na
memria a partir do valor dado para HL. Insira os mnemnicos no ABACUS e execute o programa.
Observe o resultado.
Label
Mnemnico
Label
Mnemnico

volta:

LXI SP, 2090 h


LXI H, 2050 h
MVI C,01 h
MVI B,04 h
MVI A,00 h
PUSH B
CALL produto
MOV M,A
CPI 20h
JNC fim

fim:
produto:

INCIO

POP B
INX H
INR C
JMP volta
HLT

A 00 h

P1 A
AA+1

ADD B
DCR C
JNZ subrotina
RET

2. O programa a seguir uma nova verso do programa anterior incluindo a subrotina para mostrar os
mltiplos de 4 no display de dados e retirando as instrues para armazenamento na memria.
Label
Mnemnico
Label
Mnemnico

volta:

LXI SP, 2090 h


MVI C,01 h
MVI B,04 h
MVI A,00 h
PUSH B
CALL produto
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 50h

fim:
produto:

JNC fim
POP B
INR C
JMP volta
HLT
ADD B
DCR C
JNZ subrotina
RET

3. O programa a seguir uma nova verso dos programas anteriores, onde o nmero para o qual se deseja os
mltiplos inserido atravs do teclado.
Label
Mnemnico
Label
Mnemnico

volta:

LXI SP, 2090 h


MVI C,01 h
CALL LETECLA
MOV B,A
MVI A,00 h
PUSH B
CALL produto
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 50h

fim:

produto:

JNC fim
POP B
INR C
JMP volta
HLT

ADD B
DCR C
JNZ subrotina
RET

4. Questes do Experimento 5
(a) Por que foram usadas as instrues PUSH B e POP B no primeiro programa?
(b) Por que foram usadas as instrues PUSH PSW e POP PSW no segundo e no terceiro programas?
(c) Observando o programa durante a execuo, verifica-se que ele vai ficando mais lento na medida em que os
mltiplos maiores vo sendo mostrados. Por que isso acontece?
(d) Voc pode sugerir uma maneira de resolver o problema citado no item anterior?
(e) Qual a finalidade da instruo CPI 50 h no segundo e no terceiro programas?

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

72

EXPERIMENTO 6
Objetivo: Programao com o assembly do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1.

INCIO

O programa a seguir gera e mostra no display uma seqncia


crescente de 00 h a FF h, seguida de uma seqncia decrescente
de FF h a 00 h, de forma ininterrupta. Insira os mnemnicos no
ABACUS e execute o programa. Observe o resultado.
Label

cresce:

Mnemnico
LXI SP,2090 h
MVI A,00 h
PUSH PSW
CALL MOSTRAA
POP PSW
INR A
CPI FF h
JNZ cresce

Label

Mnemnico

decresce:

PUSH PSW
CALL MOSTRAA
POP PSW
DCR A
CPI 00 h
JNZ decresce
JMP cresce
HLT

A 00 h

Mostra A
AA+1
N
A = FFh ?
S
Mostra A
AA-1
N

A = 00h ?

2. O programa a seguir uma nova verso do programa anterior, mas com contagem em decimal que vai de
00 a 99 e volta para 00, de forma ininterrupta.
Label
Mnemnico
Label
Mnemnico

cresce:

LXI SP, 2090 h


MVI A,00 h
PUSH PSW
CALL MOSTRAA
POP PSW
ADI 01 h
DAA
CPI 99 h
JNZ cresce

decresce:

PUSH PSW
CALL MOSTRAA
POP PSW
ADI 99 h
DAA
CPI 00 h
JNZ decresce
JMP cresce
HLT

3. O programa a seguir uma adaptao do programa anterior (contagem decimal) para ser executado no kit
didtico. Codifique o programa e insira-o no kit didtico.
Label
Mnemnico
Cdigo
Label
Mnemnico
Cdigo

cresce:

LXI SP, 4090 h


MVI A,00 h
CALL APDIS
PUSH PSW
CALL DBYTE
CALL DEL1
POP PSW
ADI 01 h
DAA
CPI 99 h
JNZ cresce

decresce:

CALL APDIS
PUSH PSW
CALL DBYTE
CALL DEL1
POP PSW
ADI 99 h
DAA
CPI 00 h
JNZ decresce
JMP cresce
HLT

4.

Questes do Experimento 6

(a)
(b)
(c)
(d)
(e)

Por que a instruo INR A foi substituda pela instruo ADI 01 h no programa 2?
Por que foi usada a instruo ADI 99 h nos programas 2 e 3, ao invs de DCR A, como no programa 1?
Por que foi usada a instruo CALL APDIS no programa 3?
Por que foi usada a instruo CALL DEL1 no programa 3?
Substitua a instruo CALL DEL1 por CALL DEL2 e observe o efeito?

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

73

EXPERIMENTO 7
Objetivo: Programao com o assembly do 8085 e uso de INTERRUPES
Material: Computador com o simulador ABACUS e kit didtico
1.

Execute os programas dados a seguir usando o simulador ABACUS e usando o mdulo didtico.

Programa 1: Usa subrotinas para gerar de forma ininterrupta uma sequncia crescente de 00 h a FF h no display
de dados, seguida de uma seqncia decrescente (FF h a 00 h). Complete os cdigos.
ABACUS
Mnemnico
LXI SP,2040h
MVI A,00h
CALL crescente
CALL decresc
JMP repete

Cdigo
31 40 20
3E 00
CD ___ ___
CD ___ ___
C3 ___ ___

crescente:

PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI FF
RZ
INR A
JMP crescente

F5
CD 6E 03
16 01
CD F1 05
F1
FE FF
C8
3C
C3 ___ ___

decresc:

DCR A
PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI 00
RZ
JMP decresc

3D
F5
CD 6E 03
16 01
CD F1 05
F1
FE 00
C8
C3 ___ ___

Label
2000
repete:

Interrupo
TRAP
RST 7.5
RST 6.5
RST 5.5

KIT DIDTICO
Mnemnico
LXI SP,4200h
MVI A,00h
CALL crescente
CALL descresc
JMP repete

Cdigo
31 00 42
3E 00
CD ___ ___
CD ___ ___
C3 ___ ___

crescente:

PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI FF
RZ
INR A
JMP crescente

F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE FF
C8
3C
C3 ___ ___

decresc:

DCR A
PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI 00
RZ
JMP decresc

3D
F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE 00
C8
C3 ___ ___

Label
4000
repete:

ENDEREO DAS INTERRUPES


Pino do 8085
Endereo na ROM Endereo no ABACUS
6
0024 h
20D1h
7
003C h
20CE h
8
0034 h
20CB h
9
002C h
20C8 h

Microprocessadores e Microcomputadores

Endereo no KIT
4BE0 h
4BD7 h
4BDA h
4BDD h

Prof. Jos Wilson Lima Nerys

74
Programa 2: Adapte o programa 1 para que a contagem crescente seja chamada atravs da interrupo RST 7.5 e
a contagem decrescente seja chamada pela interrupo RST 6.5. Desabilite a interrupo RST 5.5.
ABACUS
Mnemnico
LXI SP,2050h
MVI A,09h
SIM
MVI A,00h
EI
JMP loop

Cdigo
31 50 20
3E 09
30
3E 00
FB
C3 ___ ___

Label
4000

crescente:

DI
PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI FF
RZ
INR A
JMP crescente

F3
F5
CD 6E 03
16 01
CD F1 05
F1
FE FF
C8
3C
C3 ___ ___

decresc:

DI
DCR A
PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI 00
RZ
JMP decresc

20CB h:
20CE h:

JMP decresc
JMP crescente

Label
2000

loop:

KIT DIDTICO
Mnemnico
LXI SP,4200h
MVI A,09h
SIM
MVI A,00h
EI
JMP loop

Cdigo
31 00 42
3E 09
30
3E 00
FB
C3 ___ ___

crescente:

DI
PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI FF
RZ
INR A
JMP crescente

F3
F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE FF
C8
3C
C3 ___ ___

F3
3D
F5
CD 6E 03
16 01
CD F1 05
F1
FE 00
C8
C3 ___ ___

decresc:

DI
DCR A
PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI 00
RZ
JMP decresc

F3
3D
F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE 00
C8
C3 ___ ___

C3 ___ ___
C3 ___ ___

4BDA h:
4BD7 h:

JMP decresc
JMP crescente

C3 ___ ___
C3 ___ ___

loop:

Perguntas:

5.4

1.

Por que h necessidade de desabilitar a interrupo RST 5.5?

2.

Quais os comandos a serem usados para bloquear a interrupo RST 7.5 e usar a interrupo RST6.5
para a contagem crescente e a RST 5.5 para a contagem decrescente?

3.

Qual a finalidade da instruo RZ usada nas subrotinas?

Referncias Bibliogrficas

[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Digibyte, Manual do Usurio do Kit Didtico KMD85, Abril de 1984.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

75

6. INTERRUPOES E OPERAES DE ENTRADA E SADA


6.1

Instrues de Recomeo

O 8085 tem 8 instrues de recomeo por software (restart), que so: RST 0, RST 1, RST 2, RST 3,
RST 4, RST 5, RST 6 e RST 7. Estas instrues so para chamadas de subrotinas que so usadas com
frequncia. O efeito de uma instruo RST o mesmo de uma chamada de subrotina, com uso da pilha para
guardar o endereo de retorno. A diferena que cada instruo RST desvia o processamento para um endereo
predeterminado, como mostra a tabela abaixo. Um outro detalhe que a chamada de uma RST feita com
apenas 1 byte de cdigo, ao contrrio de uma chamada de subrotina normal, que feita com 3 bytes de cdigo.
Do mesmo modo que no caso de uma subrotina comum, quando uma instruo RET encontrada o
processamento volta para o programa principal.

INSTRUES DE RECOMEO
Instruo

Efeito

RST 0
RST 1
RST 2
RST 3
RST 4
RST 5
RST 6
RST 7

CALL 0000h
CALL 0008h
CALL 0010h
CALL 0018h
CALL 0020h
CALL 0028h
CALL 0030h
CALL 0038h

Cdigo de
Operao
C7
CF
D7
DF
E7
EF
F7
FF

Posio do Vetor
0000h
0008h
0010h
0018h
0020h
0028h
0030h
0038h

Verifica-se da tabela acima que h apenas 8 posies (8 bytes) disponveis para cada instruo de
recomeo. Sendo assim, normalmente essas posies vetoradas so usadas apenas para desviar para uma
subrotina que frequentemente usada e que no caberia em apenas 8 posies. Uma instruo de desvio
incondicional JMP addr ento usada. A chamada da subrotina atravs de uma dessas instrues de recomeo
mais eficiente que a chamada direta da subrotina.

6.2

Interrupes

Alm das 8 instrues de recomeo por software, o 8085 possui 4 instrues de recomeo por hardware
(Interrupes Externas). Essas instrues so chamadas de TRAP (pino 6), RST 7.5 (pino 7), RST 6.5 (pino
8) e RST 5.5 (pino 9). Quando qualquer desses pinos ativado, os circuitos internos do 8085 produziro uma
chamada de subrotina ( CALL ) por hardware que desviaro o processamento para o endereo predeterminado. A
tabela das posies de recomeo por hardware (interrupes externas) dada a seguir.
As operaes de entrada e sada por interrupo usam uma das interrupes por hardware dadas na tabela,
de forma que, quando o perifrico est pronto para a transferncia de dados a interrupo selecionada acionada,
permitindo a transferncia de dados de uma forma mais rpida que a transferncia Programada.

Instruo
TRAP
RST 5.5
RST 6.5
RST 7.5

Interrupes do 8085
Efeito
Cdigo
de Operao
CALL 0024h
no tem
CALL 002Ch
no tem
CALL 0034h
no tem
CALL 003Ch
no tem

Posio
do Vetor
0024 h
002C h
0034 h
003C h

Pino
6
9
8
7

As interrupes externas tem uma ordem de prioridade, de forma que, no caso de dois ou mais pedidos
simultneos de interrupo, a ordem de atendimento :

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

76
Interrupo
TRAP
RST 7.5
RST 6.5
RST 5.5
INTR

Prioridade
1
2
3
4
5

Posio do Vetor
0024 h
003C h
0034 h
002C h
Nenhuma

Ativada por Nvel e Borda

TRAP

Ativada apenas por Borda

RST 7.5

Ativada apenas por Nvel

RST 6.5

Ativada apenas por Nvel

RST 5.5

Ativada apenas por Nvel

INTR

8085

Quando um pedido de interrupo feito, o microprocessador termina a execuo da instruo em curso


para somente depois atender a interrupo pendente. A interrupo INTR, tambm presente na tabela de
prioridades um canal que permite expandir a capacidade de interrupo. ento usado um CI extra para essa
expanso, como ser visto numa seo posterior.
Como j foi mencionado, as interrupes so acionadas por sinais externos nos pinos correpondentes.
Para o caso do 8085 esses sinais de acionamento de interrupo podem ser nvel alto no pino (acionamento por
nvel) ou transio do nvel baixo para o nvel alto (acionamento por borda, ou por transio). A figura a seguir
ilustra cada uma delas.

Fig. 6.1: Formas de se ativar cada interrupo


TRAP

- acionada simultaneamente por nvel e por transio. usada para eventos catastrficos tais
como falhas na alimentao eltrica e erros de paridade.
RST 7.5 - acionada por transio somente
RST 6.5 - acionada apenas por nvel
RST 5.5 - acionada apenas por nvel
INTR
- acionada apenas por nvel. Essa interrupo em particular, permite a expanso da capacidade
de interrupes do 8085. Atravs desse pino um dispositivo de suporte pode ser usado para
aumentar os pinos de interrupo.

6.3

Circuitos de Interrupo
As interrupes so melhor entendidas atravs dos circuitos lgicos mostrados a seguir.

TRAP

CALL 0024 h

D
Flip-flop

Pino 6

CLK
CLR

TRAP
RESET IN
Pino 36
RECONHECIMENTO
DE TRAP

Fig. 6.2: Circuito da interrupo TRAP

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

77
No circuito da Fig. 6.2 o sinal alto de clock habilita a porta AND na sada do Flip-Flop, enquanto que a
transio do clock do nvel baixo para o nvel alto faz com que a sada do Flip-Flop assuma o valor 1 e,
consequentemente, a sada geral do circuito da interrupo TRAP assume o valor 1, fazendo com que o
processamento seja desviado para o endereo 0024 h.
Um sinal baixo no pino RESET IN ou um sinal alto de RECONHECIMENTO DE TRAP limpa o pedido
de interrupo.
A Fig. 6.3 mostra os circuitos para as interrupes RST 7.5, RST 6.5 e RST 5.5. Observe que as portas
AND de sada dos circuitos das interrupes tem trs entradas. O sinal IE estando alto, todas as interrupes
esto habilitadas. Esse sinal fica alto quando a instruo EI (entrada do flip-flop) executada. Se nenhuma das
interrupes estiver com mscara, ento os sinais M7.5, M6.5 e M5.5 permanecem em nvel baixo e,
consequentemente as respectivas entradas das portas AND estaro altas. Dessa forma, todas as interrupes
estaro aptas a serem acionadas.
Um pulso ascendente (transio do nvel baixo para o nvel alto) no pino 7 faz com que a sada I7.5 do
flip-flop correspondente interrupo RST 7.5 fique alta, acionando essa interrupo.
Um nvel alto no pino 8 faz com que a interrupo RST 6.5 seja executada e um nvel alto no pino 9 faz
com que a interrupo RST 5.5 seja executada. Os sinais I7.5, I6.5 e I5.5 quando esto em nvel alto indicam que
h interrupo pendente.
Um sinal R7.5 alto limpa uma interrupo RST 7.5 pendente. Um sinal de Reconhecimento de
interrupo RST 7.5 tambm faz com que a sada do flip-flop seja zerada, limpando qualquer interrupo RST
7.5 pendente.
O bloqueio total das interrupo mostradas na Fig. 6.3 pode ser feito de trs maneiras distintas: (a) atravs
da instruo DI (Desable Interrupt), que desabilita todas as interrupes, com exceo da TRAP; (b) atravs de
um sinal alto no pino 36 (RESET IN) ou (c) atravs de um sinal alto de reconhecimento de qualquer interrupo.
1
Pino 7
RST 7.5

I 7.5
D
Q
Flip-flop

R 7.5

CLR

RECONHECIMENTO
DE RST 7.5
M 7.5'

M 7.5

CALL 003C h

Flip-flop
R

Pino 8

I 6.5

RST 6.5

M 6.5'

M 6.5

CALL 0034 h

Flip-flop
R
Pino 9

I 5.5

RST 5.5

M 5.5'

M 5.5

CALL 002C h

Flip-flop
R
MSE
DI

EI

IE

Flip-flop
RESET IN

QUALQUER RECONHECIMENTO
DE INTERRUPO

Fig. 6.3: Circuitos das interrupes RST 7.5, RST 6.5 e RST 5.5
A setagem de mscara tambm mostrada na Fig. 6.3. Verifica-se que um sinal alto MSE (Mask Set
Enable) necessrio para habilitar qualquer das mscaras de interrupo. A partir da, desejando-se mascarar
(no permitir a execuo) a interrupo RST 7.5, o sinal M7.5' deve ser levado ao nvel alto. Desejando-se

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

78
mascarar a interrupo RST 6.5 o sinal M6.5' deve estar em nvel alto. E, finalmente, se a interrupo que se
deseja mascarar a RST 5.5, o sinal M5.5'deve ficar em nvel alto.
SMBOLO

SIGNIFICADO/COMENTRIO

I7.5, I6.5, I5.5


IE
M7.5, M6.5 e M5.5

Interrupes Pendentes - assumem valor 1 quando h interrupo pendente


Flag que indica (com valor 1) quando as interrupes esto habilitadas
Mscaras de Interrupo (Sinal baixo habilita as portas AND) - podem
desabilitar uma interrupo pendente. Sinal alto interrupo bloqueada
interrupes mascarveis podem ser bloqueadas via software
no mascarvel nem passvel de habilitao/desabilitao por EI/DI
Enable Interrupt - Instruo usada para habilitar todas as interrupes, exceto a
TRAP. Ativo alto.
Disable Interrupt - Instruo que Desabilita as Interrupes, exceto a TRAP
(baixo)
Mask Set Enable - Habilita a setagem de mscara. Quando alto as mscaras
M7.5', M6.5' e M5.5' podem ser reconhecidas
A inicializao do sistema desabilita as interrupes pendentes e zera o flip-flop
da TRAP
Quando qualquer das interrupes atendida, um sinal alto desabilita as
interrupes pendentes, menos a TRAP, evitando que a interrupo em
execuo seja interrompida.
Set Interrupt Mask - Instruo que seta as mscaras de interrupo, fazendo
com que determinada interrupo no seja ativada.
Read Interrupt Mask - Intruo que l o estado das mscaras das interrupes.

RST 7.5, RST 6.5 e RST 5.5


TRAP
EI
DI
MSE
RESET IN \
QUALQUER
RECONHECIMENTO DE
INTERRUPO
SIM
RIM

Embora os endereos de desvio sejam os indicados na Fig. 6.2 e 6.3, os endereos de desvio no ABACUS
e no kit didtico so diferentes. Na verdade, como o usurio final no pode inserir instrues/dados na ROM do
ABACUS nem do kit didtico, o criador dessas ferramentas incluiu no programa monitor uma instruo de
desvio para a RAM, de forma que a cada interrupo o programa seja automaticamente desviado para um
endereo acessvel pelo usurio final. Esses endereos so dados na tabela a seguir.
Interrupo
TRAP
RST 5.5
RST 6.5
RST 7.5

Endereo na ROM
0024 H
002C H
0034 H
003C H

Endereo no ABACUS
20D1 H
20C8 H
20CB H
20CE H

Endereo no Kit
4BE0 H
4BDD H
4BDA H
4BD7 H

Observaes.:
(a) comum usar a instruo EI como penltima instruo de uma subrotina, tendo em vista que o
microprocessador automaticamente desabilita todas as interrupes com o bit QUALQUER
RECONHECIMENTO DE INTERRUPO.
Subrotina: ----------EI
RET
(b) Quando se deseja evitar que uma parte do programa principal seja interrompida por qualquer interrupo,
exceto a TRAP, usa-se o comando DI no comeo do trecho a ser protegido.
Programa principal: ---------------------DI
----------------------EI

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

79
Exemplo:
O programa a seguir, a ser implementado no ABACUS, a cada interrupo RST 5.5, mostra uma
contagem hexadecimal crescente de 00 h at FF h e d mais um passo e pra em 00 h.
Rtulo/endereo

Mnemnico
LXI SP, 2090H
MVI A, 00H
PUSH PSW
CALL MOSTRAA
POP PSW
EI
JMP espera

Comentrio
Topo da pilha na posio 2090 h
Acumulador comea com valor 00 h
Guarda A e Flags na pilha
Mostra contedo de A no display de dados
Recupera contedo de A e Flags da pilha
Habilita interrupes
Lao de espera de pedido de interrupo

cresce:

INR A
PUSH PSW
CALL MOSTRAA
MVI D, 01H
CALL DELAY
POP PSW
CPI 00 H
JNZ cresce
EI
RET

Incrementa acumulador
Guarda contedo de A e F na pilha
Mostra contedo de A no display
Faz D = 01 h, para usar na subrotina de tempo
Chama subrotina de atraso de tempo
Recupera contedo de A e F da pilha
Compara A com 00 h.
Se A 00 h, volta para INR A. Se A = 00 h, sai da subrotina
Habilita novamente as interrupes
Retorna da subrotina de interrupo

20C8:

JMP cresce

Vai para o incio da subrotina "cresce"

espera:

6.4

Setagem e Leitura da Mscara de Interrupo

M7.5'

M6.5'

M5.5'
Seta mscara da RST 5.5

Zera flip-flop da RST 7.5

Irrelevante

MSE

Seta mscara da RST 6.5

R7.5

Mask Set Enable - Habilita


Setagem de Mscara

SOE
Serial Outpu Enable
Habilita Sada Serial

SOD
Serial Output Data - Dado
da Sada Serial

Acumulador

Seta mscara da RST 7.5

A mscara de interrupo usada para que as interrupes sejam usadas de forma seletiva, onde as
interrupes no desejadas sejam bloqueadas.
A mscara de uma interrupo mascarvel s reconhecida aps a execuo do comando SIM (Set
Interrupt Mask = Setar a Mscara de Interrupo). E antes da execuo deste comando alguns valores do circuito
de interrupo (Fig. 6.3) devem ser carregados no acumulador de forma que a instruo SIM faz a transferncia
desses valores para os pontos necessrios. Os valores no acumulador devem ser como mostrado a seguir:

Exemplo: Desejando-se habilitar apenas a interrupo RST 5.5 e mascarar as demais, o contedo do
acumulador antes da instruo SIM dado a seguir:

A:

SOD
0

SOE
0

Microprocessadores e Microcomputadores

R7.5
0

MSE
1

M7.5'
1

M6.5'
1

M5.5'
0

Prof. Jos Wilson Lima Nerys

80

M5.5
Mscara da interrupo RST 5.5

M6.5
Mscara da interrupo RST 6.5

M7.5
Mscara da interrupo RST 7.5

IE
Habilita

I5.5

Interrupt Enable
Interrupo

I6.5

Interrupo RST 5.5 pendente

I7.5

Interrupo RST 6.5 pendente

SID

Interrupo RST 7.5 pendente

Acumulador

Serial Input Data - Dado de


Entrada Serial

A execuo do comando RIM (Read Interrupt Mask) faz com que o estado das mscaras de interrupo
sejam transferidos para o acumulador.
A seguir mostrado o significado de cada bit do acumulador aps a execuo da instruo RIM.
tambm dado um exemplo, onde mostrado o contedo do acumulador e a interpretao de cada bit, aps a
execuo da instruo RIM.

Exemplo: Aps a instruo RIM o contedo do acumulador ficou:

A:

SID
0

I7.5
1

I6.5
0

I5.5
0

IE
1

M7.5
1

M6.5
0

M5.5
0

Significado:

6.5

H uma interrupo RST 7.5 pendente ( I7.5 = 1 )


As interrupes esto habilitadas ( IE = 1 )
A mscara da interrupo RST 7.5 est setada, significando que ela no ser atendida

Ampliando a Capacidade de Interrupo


INTR
Microprocessador

INTA

Controlador
de
Interrupo

8085
Dados

8 pedidos de
interrupo

8259

Fig. 6.4: Controlador de interrupo

O Controlador de interrupo (8259) mostrado acima permite expandir a capacidade de interrupo do


microcontrolador 8085. Cada partilha 8259 permite acrescentar em 8 as linhas de interrupes, permitindo,
portanto a conexo de um nmero maior de perifricos ao microprocessador.
Nesse circuito, o 8259 contm os endereos iniciais de oito subrotinas de atendimento de interrupo, um
para cada dispositivo perifrico. Para atender a interrupo ele envia uma CALL endereo para o 8085, o que faz
com que o 8085 interrompa o processamento normal para o atendimento da interrupo solicitada.
A cada solicitao de interrupo o controlador de interrupo envia um pulso alto para o 8085 atravs do
pino INTR. O 8085 envia de volta um sinal baixo INTA (Interrupt Acknowledge) de reconhecimento de
interrupo. A seguir o 8259 envia o cdigo de operao da subrotina, ao qual o 8085 responde com outro sinal
INTA baixo solicitando o byte inferior do endereo da subrotina. Aps o envio do byte inferior de endereo um
outro sinal INTA baixo enviado pelo 8085 solicitando o byte superior do endereo da subrotina. A seguir, o
contedo do contador de programa (PC) enviado para a pilha e o processamento desviado para o endereo
indicado. A Fig. 6.5 mostra o diagrama de blocos do controlador 8259.
Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

81

Fig. 6.5: Diagrama de blocos do controlador de interrupo 8259


O procedimento para uso de interrupes atravs do 8259 :
1.
2.
3.
4.
5.
6.
7.
8.
9.

6.6

O nvel lgico de um ou mais dos pinos IR (IR0 a IR7) levado a 1, setando o correspondente registrador de
pedido de interrupo IRR;
O 8259 envia um pulso alto para o 8085 atravs do pino INTR (pino 10);
O 8085 envia de volta um sinal baixo INTA (Interrupt Acknowledge) de reconhecimento de pedido de
interrupo;
Aps receber o sinal de OK, o 8259 o bit ISR (In Service Register) do pedido de maior prioridade, limpa o
registro de interrupo IRR correspondente e envia para o 8085 o cdigo de chamada de subrotina;
O 8085 responde com outro sinal INTA baixo solicitando o byte inferior do endereo da subrotina;
O 8259 envia o byte inferior de endereo correspondente ao pedido de interrupo;
Um outro sinal INTA baixo enviado pelo 8085 solicitando o byte superior do endereo da subrotina;
O 8259 envia o byte superior do endereo da subrotina para o 8085 e, em seguida, limpa o bit ISR
correspondente;
A seguir, o contedo do contador de programa (PC) enviado para a pilha e o processamento desviado
para o endereo indicado

Dispositivos de Entrada e Sada

Os dispositivos de Entrada e Sada (ou dispositivos de I/O) so necessrios para possibilitar a


comunicao entre a CPU e o resto do sistema.
Este captulo tem o objetivo de fornecer maiores informaes sobre o hardware que se associa CPU
(microprocessador) em um microcomputador, assim como conhecimentos de alguns recursos que podem ser
utilizados em interfaces de microcomputadores.

FORMAS DE ENTRADA E SADA


H basicamente duas formas de comunicao entre o computador e um perifrico:
Comunicao Serial: quando enviado um bit de cada vez. empregada, por exemplo, na comunicao via
linha telefnica (atravs de um modem), no mouse, cmara fotogrfica digital, impressora serial,
instrumentos eletrnicos, agendas eletrnicas. A taxa de transmisso medida em bit por segundo (bps ou
bit/s).
Comunicao Paralela: quando enviado um grupo de bits, simultaneamente. empregada, por exemplo,
na comunicao entre um computador e uma impressora paralela. A taxa de transmisso , em geral, medida

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

82
em bytes por segundo; OBS: a transmisso paralela utilizada em substituio transmisso serial quando a
distncia entre transmissor/receptor pequena e deseja-se maior velocidade de transferncia.
MTODOS DE CONTROLE DE ENTRADA E SADA
Referem-se a tcnicas de hardware e software utilizadas para controlar o fluxo de dados entre o
computador e seus perifricos. Os trs mtodos mais frequentemente encontrados so:
Varredura (ou E/S por consulta ou Pooling}:
Tcnica de comunicao na qual o processador interroga periodicamente o perifrico para
determinar seu estado;
Pode ser sncrona ou assncrona;
Desvantagem: perda de tempo: o processador abandona o programa principal para fazer a
varredura mesmo se nenhum perifrico deseja servio.
Interrupo:
Tcnica de comunicao na qual o processador somente ocupado se h pedido de servio de
algum perifrico;
Mecanismo assncrono;
Transferncia de dados feita por software (mais lento que DMA);
DMA (Direct Memory Access):
Tcnica de comunicao na qual no se interrompe o processamento do microprocessador (se a
instruo em curso no faz acesso ao barramento);
O DMAC (controlador de DMA) envia o sinal HOLD requerendo o barramento e a CPU responde
com HLDA. O DMAC passa a controlar as linhas de dados, linhas de endereo, e sinais de
controle (RD, WR, etc.);
A transferncia de dados feita por hardware: particularmente interessante quando necessita-se
transferncia de dados em alta velocidade.
Exemplo de Entrada Programada:
Perifrico
8 bits

Porta 10 h

8 bits

Porta 11 h

Dados

Porta 12 h

bit 6
INCIO

Microprocessador

bit 7

STATUS

8085
Dados

Fig. 6.6: Entrada de dados programada

Nesse exemplo, quando a CPU est pronta para receber dados ela envia um bit alto de INCIO (bit 6) para
o perifrico. Quando os dados esto prontos, um bit alto de STATUS (bit 7) enviado de volta CPU. Em
seguida os dados so transferidos do perifrico para a CPU. O grande problema nesse tipo de transferncia de
dados que a CPU fica aguardando o bit alto de STATUS, o que pode significar um tempo considervel, uma
vez que a maior parte do tempo gasto esperando o perifrico terminar o processamento de dados.
Exemplo de Transferncia por Interrupo:
RST 5.5
Microprocessador

Interrupo
Reconhecimento
Perifrico

8085
Dados

Fig. 6.7: Transferncia de dados por interrupo

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

83
Nesse exemplo a CPU no precisa aguardar o processamento do perifrico. Quando o perifrico est
pronto para transferir ou receber os dados um bit de INTERRUPO enviado CPU. O processamento
normal da CPU interrompido para atender o pedido externo. Um bit de RECONHECIMENTO de interrupo
enviado para o perifrico, havendo ento a transferncia dados para a CPU.

Exemplo de Transferncia por DMA:


HOLD
Microprocessador

Controlador
de
DMA

HLDA

8085
Barramentos

MEMRIA

Fig. 6.8: Transferncia de dados por Acesso Direto Memria (DMA)


Nesse tipo de operao as transferncias de dados so mais rpidas porque o acumulador no utilizado e
no h necessidade de leituras da memria ROM. O dados vo diretamente da memria para o perifrico, ou
vice-versa. O controlador de DMA fisicamente conectado aos barramentos de dados, endereos e controle,
dependendo apenas da liberao dos mesmos pela CPU. Dessa forma, quando o perifrico est pronto para a
transferncia de dados, um sinal de HOLD alto enviado CPU solicitando a liberao do barramentos. A CPU
responde com um sinal HLDA, informando que o processamento foi interrompido e os barramentos liberados. O
controlador de DMA realiza ento a transferncia de dados em alta velocidade e devolve o controle dos
barramentos para a CPU, enviando um sinal de HOLD baixo.

6.7

Exerccios Propostos

25. Explique como funciona uma interrupo no 8085. Explique habilitao e mscara de interrupo,
interrupo vetorada, interrupo por nvel, interrupo por transio. Exemplifique escrevendo as linhas de
programa para mascarar as interrupes RST 5.5 e RST 7.5.
26. Para que servem as instrues EI e DI? Descreva as instrues SIM e RIM.
27. Qual a finalidade do bit MSE?
28. Insira os bits adequados do acumulador para mascarar a interrupo RST 6.5 e deixar as demais livres.
SOD

SOE

R7.5

MSE

M7.5'

M6.5'

M5.5'

M6.5
1

M5.5
0

A:
29. Faa a leitura do acumulador mostrado abaixo, aps uma instruo RIM.

A:

SID
0

I7.5
0

I6.5
1

I5.5
1

IE
1

M7.5
1

30. Zerar o flip-flop da interrupo RST 7.5, setar e habilitar as interrupes RST 7.5 e RST 6.5 e mascarar a
interrupo RST 5.5. Comente o valor de cada bit utilizado na instruo de setagem de mscara. Desenhe
um circuito simples com fototransistor que possa ser usado para acionar a interrupo RST 7.5 com a
interrupo de um sinal luminoso.
31. Faa um programa no ABACUS, usando o assembly do 8085, que mostre uma contagem decimal crescente
no display de zero a 50. Ao alcanar o valor 50, a interrupo RST 7.5 deve ser habilitada e o programa
deve ficar aguardando um pedido de interrupo. Quando a interrupo RST 7.5 for solicitada, a contagem
no display deve se tornar decrescente (e a interrupo desabilitada) at alcanar o valor zero. Alcanado o
valor zero, a interrupo deve ser habilitada novamente para iniciar outra contagem decimal at 50, e assim
sucessivamente.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

84
32. Faa um programa no ABACUS que mostre uma contagem decimal no display, sendo que esta contagem
deve ser crescente at que ocorra uma interrupo RST 6.5, quando ento a contagem dever se tornar
decrescente. Caso ocorra uma nova interrupo RST 6,5 o programa deve voltar a contar na forma
crescente, ou seja, a cada interrupo muda-se o modo de contagem alternando entre crescente e
decrescente.
33. Como feita a comunicao entre o microprocessadore 8085 e o controlador de interrupo 8259?
34. Como feita a transferncia por interrupo? E por DMA?
35. Faa um programa no ABACUSusando a linguagem assembly do 8085 que mostre um valor zero no display
enquanto aguarda um pedido de interrupo RST 6.5. Ocorrida a interrupo, o programa deve fazer uma
contagem decimal crescente no display de zero a 60, sem interrupes. Ao alcanar o valor 60, o programa
deve ficar esperando um pedido de interrupo RST 7.5. Ocorrida a interrupo, o programa deve fazer uma
contagem decimal decrescente no display at zero. A contagem deve se repetir caso ocorra novamente a
interrupo RST 6.5 e, depois, a RST 7.5.
36. Faa o comentrio de cada linha do programa a seguir e explique qual a finalidade do programa completo.
Complete os endereos.
Rtulo

End.
4000

volta:

pula:

Mnemnico
LXI SP,4100h
LXI H,4031h
MVI C,0Ah
LDA 4030h
CMP M
JC pula
MOV A,M
INX H
DCR C
JNZ volta
CALL APDIS
CALL DBYTE
HLT

Comentrios

37. mostrado a seguir o que representa cada bit do acumulador quando se deseja mascarar interrupes.
Escreva as instrues para mascarar as interrupes RST7.5 e RST6.5, em seguida, habilitar a RST5.5.
Acumulador

bit 7
SOD

bit 6
SOE

bit 5

bit 4
R7.5

bit 3
MSE

bit 2
M7.5

bit 1
M6.5

bit 0
M5.5

38. Faa um programa seguindo os passos a seguir:


(a)

Programa principal: Escreva as instrues para habilitar as chaves do ABACUS como entrada de dados
e os LEDs como sada de dados, mascarar as interrupes RST6.5 e RST5.5, habilitar a interrupo
RST7.5 e ficar aguardando num "loop" um pedido de interrupo;
(b) Subrotina: Escreva uma subrotina para rotacionar, de dois em dois (0-1, 1-2, 2-3, , 6-7), os LEDs para
a esquerda, quando h um pedido da interrupo RST7.5. O processamento volta para o "loop" quando
forem alcanados os LEDs 6 e 7.

6.8

Referncias Bibliogrficas

[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

85

7. ENTRADA E SADA SERIAL E PASTILHAS INTEGRADAS DE


SUPORTE
A entrada de dados seriais para o 8085 pode ser feita atravs do pino 5 do microprocessador, que o
pino SID (Serial Input Data). Os dados seriais que chegam a esse pino so transferidos para o bit 7 do
acumulador a cada execuo da instruo RIM.
O pino 4, SOD (Serial Output Data) pode ser usado para a transferncia serial de dados para um
perifrico. Nesse caso, a instruo SIM usada para transferir o contedo do bit 7 do acumulador para o pino 4,
mas apenas se o bit 6 do acumulador, SOE (Serial Output Enable) estiver setado.
Exemplo de entrada serial para o 8085 usando o pino SID:
Label
Mnemnico
Comentrio
MVI B,00h
Zerar o registrador B
MVI C,08h
Inicializar o contador com 8
Lao:
RIM
Obter o bit SID
ANI 80h
Isolar o bit 7 do acumulador (bit SID)
ORA B
Atualizar o contedo do acumulador
RRC
Rotacionar acumulador direita
MOV B,A
Guardar acumulador em B
DCR C
Decrementar contador C
JNZ Lao
Retornar para o lao se o contador no for zero
RLC
Rotacionar acumulador para a esquerda
HLT
Encerrar
O programa acima repete o Lao 8 vezes, recebendo, portanto 8 bits para formar um byte. Esses bits
chegam atravs do pino SID, que transferido para o bit 7 do acumulador. Cada novo bit que carregado
isolado atravs da instruo ANI 80 h. A seguir, esse novo bit "juntado" (usando a instruo ORA B) aos bits
anteriores que j esto guardados em B. O acumulador, nesse momento contm todos os bits lidos. A rotao
direita necessria para receber um novo dado no bit 7. O contedo rotacionado do acumulador guardado em
B.
Supondo, por exemplo, que os bits 1 1 0 0 0 0 1 e 0 so carregados no 8085 usando o programa
anterior, tem-se:
Na primeira execuo de MOV B,A o contedo de B ser 0 1 0 0 0 0 0 0, porque o primeiro dado
(1) foi recebido no bit 7 do acumulador, mas foi rotacionado direita antes da transferncia para B.
Aps a segunda execuo de MOV B,A o contedo de B ser 0 1 1 0 0 0 0 0.
Aps a oitava execuo de MOV B,A o contedo de B ser 1 0 1 0 0 0 0 1. V-se aqui que o
primeiro dado (1) a ser carregado j voltou para o bit 7 de B, sendo, portanto necessrio fazer uma rotao
esquerda para encerrar o primeiro byte de entrada. Assim, aps sair do Lao, e aps a instruo RLC, o contedo
do acumulador (mas no o de B) conter o byte de entrada, que : 0 1 0 0 0 0 1 1. A leitura foi feita do bit
menos significativo para o bit mais significativo.

7.1

Interface Serial no PC

Os microcomputadores atuais utilizam uma pastilha especial para a comunicao serial. Os primeiros
PCs usavam o CI 8250:UART (Universal Asynchronous Receiver-Transmitter), que permitia o armazenamento
de apenas um byte por vez, limitando a velocidade de comunicao serial. Atualmente o CI utilizado o 16550,
que permite o armazenamento simultneo de at 16 bytes de informao. A seguir so dadas as caractersticas da
Interface Serial no PC:
Possui 2 interfaces seriais;
So interfaces assncronas;
So baseadas no CI 16550 UART (Universal Asynchronous Receiver /Transmiter); Este CI um upgrade do
CI 8250 da National utilizado PC original (com taxa de transmisso mxima de 9.600bit/s);
Caractersticas do CI 16550 UART:
Taxa de transmisso de at 115.200bit/s;

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

86
FIFO de 16 bytes; Esta FIFO armazena dados que foram recebidos pela interface serial mas que
no foram lidos pelo microprocessador; evita erro de overrun (perda de informao por
sobreescrita);
Funo Loopback (diagnstico);
Funes para controle de modem.
A placa me de um microcomputador Pentium possui 2 interfaces seriais: cada uma delas pode ser
configurada de duas formas:
- Interface 1: COM1 (IRQ4) ou COM3 (IRQ4);
- Interface 2: COM2 (IRQ3) ou COM4 (IRQ4).
Transmisso Serial Assncrona:
Processo de comunicao no qual os caracteres so enviados independentemente uns dos outros.
Uma das aplicaes mais comuns deste tipo de comunicao na interface entre teclado e computador.
Neste circuito cada tecla gera um cdigo ASCII de 7 bits que transmitido bit a bit para o computador por
intermdio de dois ou trs condutores. Para verificar a eficincia deste tipo de transmisso serial deve-se
observar o desempenho de um bom digitador: sabe-se que ele no supera uma taxa de 60 palavras por minuto
(cerca de 8 caracteres/seg). Logo a transmisso serial, relativamente lenta, aceita neste caso.
Observe uma caracterstica importante nesta interface: em alguns momentos a porta serial ser utilizada
para transferir dados a uma taxa de 10 a 20 caracteres/seg, em outros esta pode cair para 1 ou 2 caracteres/seg, e
ainda, em grande parte do tempo, o teclado no utilizado chegando a uma taxa de zero caracteres/seg. Por
causa deste tipo de caracterstica de transmisso de dados, um protocolo de comunicao assncrono deve ser
estabelecido entre estes dispositivos.
A tcnica aceita para comunicao serial assncrona a de segurar a linha de sada da transmisso serial
no nvel lgico 1 (marca) at que chegue dados para transmisso. Cada caracter ser iniciado com um nvel
lgico 0 (start bit). Este 1o bit, o start bit, utilizado para sincronizar a transmisso e a recepo. O dado
transmitido colocando-se o bit menos significativo em primeiro lugar aps o start bit. No final do dado so
transmitidos stop bits (1, 11/2 ou 2) com nvel lgico 1. Opcionalmente pode-se transmitir um bit de paridade
aps o MSB do caracter e antes do stop bit (ver figura abaixo: esta figura considera apenas 1 stop bit).

espera

start

Par.

stop

Os bits de start e de stop no carregam informaes, e so necessrios pela natureza da comunicao


serial assncrona. Para se configurar uma porta serial vrios parmetros devem ser especificados. Os parmetros
mais comuns so:
tamanho do caracter ou bits por caracter (usualmente de 5 a 8 bits);
stop bits (1, 11/2 ou 2);
bit de paridade, usado para detectar erros simples: pode ser especificado como mpar, par ou
nenhum;
taxa de transmisso, etc.
Uma das consideraes que devem ser feitas ao se utilizar a comunicao serial entre perifricos e
computador (ou entre dois computadores) a seleo de parmetros de comunicao compatveis. Um dos
problemas mais comuns o de configurao de taxas de transmisso distintas entre o transmissor e o receptor.
Transmisso Serial Sncrona:
Processo de comunicao no qual o transmissor e o receptor esto sincronizados pelo mesmo sinal de
clock. O transmissor envia continuamente caracteres de sincronismo sempre que no existir dado a ser
transmitido.
Na transmisso serial assncrona os bits de start e stop representam um grande overhead nos dados
transmitidos, reduzindo a taxa de transferncia de informaes. Na transmisso serial sncrona tambm

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

87
necessitamos de um certo tipo de overhead para sincronismo, pois como o receptor saberia quando o dado
significativo (para receb-lo e guard-lo) ?
O start bit (da comunicao assncrona) substitudo por um caracter de sincronismo. Este caracter diz ao
receptor que os dados esto a seguir. Os dados so transmitidos entre caracteres especiais que servem para
sincronismo e para informar quando iniciam e terminam os dados, para deteco de erros e para indicar o final
do pacote. Veja o formato tpico de um pacote de dados no exemplo do protocolo BISYNC logo abaixo:
SYN
onde:

SYN

STX

DADOS

ETX

BCC

PAD

SYN - caracteres de sincronismo;


STX - incio de texto (dados);
Dados - 100 ou mais bytes;
ETX - fim de texto;
BCC - (Block Check Character) caractere utilizado para a deteco de erros;
PAD - final de transmisso.

Com este tipo de transmisso fica claro que o overhead reduzido: para uma mesma taxa de transmisso,
o modo sncrono ser mais rpido que o assncrono.
Interface RS-232: Interface proposta pela IBM na dcada de 60 e que vigora at hoje como a principal interface
para transmisso de dados (a baixas velocidades). Esta interface utiliza normalmente um conector DB25
(Conector em forma de "D" com 25 pinos). Pode ainda utilizar o DB9 (usado para conectar o mouse) e o DB15.
Seus circuitos eltricos so desbalanceados (ou seja, h um terra comum para todos os sinais). Quando a
interface RS-232 est inativa ela fica transmitindo Marca (-12V). Seus nveis eltricos so mostrados na tabela
abaixo.

Nvel Lgico
0
1

Tenso TTL
0,0 a 0,8V
2,2 a 5,0V

Principais Pinos
TX (Transmited Data)
RX (Received Data)
GND (Ground)
RTS
(Request to Send)
CTS
(Clear to Send)
DSR
(Data Set Ready)
DTR
(Data Terminal Ready)
CD (Carrier Detected)

Tenso RS-232
+12V (+3 a +15V)
12V (3 a 15V)
DB25
2
3
7
4
5
6
20
8

DB9
3
2
5
7
8
6
4
1

Interface RS-422: Interface que proporciona taxa de transferncia de at 10 Mbit/s (para distncias de at
300m). Seus circuitos eltricos so balanceados (ou seja, cada sinal transmitido atravs de um par de
condutores: um positivo e um negativo, o que proporciona maior imunidade ao rudo). Esta interface geralmente
est disponvel em conectores DB37.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

88

7.2

Integrados de Suporte

7.2.1

Memrias RAM e ROM

Como j foi enfatizado anteriormente, o microprocessador 8085 precisa de alguns componentes auxiliares
que, alm de conterem memrias ROM e RAM, possibilitem a comunicao do 8085 com ambiente externo.
Dois desses componentes so os Circuitos Integrados 8156 e 8355.

Fig. 7.1: Pastilhas de memria ROM e RAM


CI
8156
8355

Tipo de Memria e
Capacidade
RAM 256 bytes
ROM 2 Kbytes

Nmero de Portas
de Entrada e Sada
3
2

Caractersticas
2048 bits organizados como 256 palavras de 8 bits cada
Possui 16384 bits organizados como 2048 palavras de 8 bits cada

A Fig. 6.2 mostra um sistema mnimo baseado no 8085 e contendo uma pastilha de memria RAM (8156)
e uma de memria ROM (8355).
A13

ALE
CLK OUT

A10

IO-M\

A9

READY

A8

RESET IN\
RESET OUT
RD\

8 bits: AD0 a AD7

8085

A10

CE

A9

ALE
PA

A8

IO-M\

PC

CE1\
ALE
IO-M\

RD\

RD\
RESET

RESET

CLK

PB

READY

WR\

8156

WR\

PA

8355

PB

Fig. 7.2: Sistema mnimo baseado no microprocessador 8085

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

89
Pino A13 Pino usado para habilitar/desabilitar a RAM e a ROM.
CE
CE1\
Pastilha Habilitada
A13
0
0
0
CI 8156
1
1
1
CI 8355
No sistema mnimo mostrado na Fig. 7.2 o pino de endereo A13 do 8085 usado para
habilitar/desabilitar a RAM e a ROM. Ele conectado ao pino CE (Chip Enable) da RAM e ao pino CE\ da
ROM. Isso significa que, quando o pino A13 est em nvel baixo, a ROM fica habilitada e a RAM desabilitada.
Quando em nvel alto a ROM fica desabilitada e RAM fica habilitada. Dessa forma, o endereo inicial da ROM
0000 h e o da RAM 2000 h, como demonstrado abaixo.
A15

A14

A12

A13

A11

A10

AD6

AD5

AD4

AD3

AD2

0
Endereo Final da ROM
1
1
1
1

AD1

AD0

1
F
Endereo Inicial da RAM
0
0
0
0
0
0
0
0
Endereo Final da RAM
0
0
0
1
1
1
0
F

2
0

AD7

0
0

A8

Endereo Inicial da ROM


0
0
0
0

0
0

A9

F
0

0
0

1
F

Como a ROM 8355 tem 2048 bytes (800 h) de memria, as posies ocupadas por estes bytes vo de 0 a
2047, que em hexadecimal 0000 h at 07FF h. O nmero de linhas de endereo necessrias so 11 (de AD0 a
A10) , porque 211 = 2048.
Como a RAM 8156 tem apenas 256 bytes de memria, os endereos desses bytes vo de 0 a 255 (00 h a
FF h). Da, como o endereo inicial escolhido para a memria RAM 2000 h na conexo do sistema mnimo
dado, o endereo final ser 20FF h. O nmero de linhas de endereo necessrias so 8 (de AD0 a AD7), porque 28
= 256.
A memria RAM do Kit didtico usado no laboratrio a RAM 2114, de 1 K de memria, mas de apenas
4 bits. Assim, utiliza-se duas-a-duas para forma 1 byte por endereo. No kit o endereo inicial da RAM 4000 h.
So necessrias 10 linhas de endereo: 210 = 1024 ( = 400h). Posies de memria: 0 a 1023 (000 h a 3FF h)
A15

A14

A13

A12

4
0

1
4

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

Endereo Inicial da primeira RAM 2114 do Kit Didtico


0
0
0
0
0
0
0
0
0
0
0
Endereo Final da primeira RAM 2114 do Kit Didtico
0
0
0
1
1
1
1
1
1
1
3
F

AD2

AD1

AD0

0
1
F

A Segunda RAM 2114 do Kit didtico deve ser acessada a partir do primeiro endereo aps a primeira
RAM, ou seja, endereo 4400 h.
A15

A14

A13

A12

4
0

1
4

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

Endereo Inicial da SEGUNDA RAM 2114 do Kit Didtico


0
0
0
0
0
0
0
0
1
4
0
Endereo Final da SEGUNDA RAM 2114 do Kit Didtico
0
0
1
1
1
1
1
1
1
1
7
F

Microprocessadores e Microcomputadores

AD2

AD1

AD0

0
1
F

Prof. Jos Wilson Lima Nerys

90
A Terceira RAM 2114 do Kit didtico deve ser acessada a partir do primeiro endereo aps a segunda
RAM, ou seja, endereo 4800 h.
A15

A13

A14

A12

1
4

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

Endereo Inicial da SEGUNDA RAM 2114 do Kit Didtico


0
0
0
0
0
0
0
0
0
1
8
0
Endereo Final da SEGUNDA RAM 2114 do Kit Didtico
0
0
1
1
1
1
1
1
1
1
B
F

AD2

AD1

AD0

0
1
F

Dessa forma, um circuito lgico deve ser usado quando h um conjunto de pastilhas de memria no
sistema mnimo. A Fig. 7.3 mostra o circuito lgico para conectar trs conjuntos de RAMs.
A14
A10
A11

CS\

RAM 2114
4000h 43FFh
Primeira RAM

CS\

RAM 2114
4400h 47FFh
Segunda RAM

CS\

RAM 2114
4800h 4BFFh
Terceira RAM

Fig. 7.3: Circuito lgico para conexo de 3 conjuntos de RAMs 2114 ao sistema mnimo
Desejando-se conectar um quarto conjunto de RAMs, tem-se o circuito lgico da Fig. 7.4, a seguir.
A14
A10
A11

CS\

2 RAM 2114
4000h 43FFh
Primeira RAM

CS\

2 RAM 2114
4400h 47FFh
Segunda RAM

CS\

2 RAM 2114
4800h 4BFFh
Terceira RAM

CS\

2 RAM 2114
4C00h 4FFFh
Quarta RAM

Fig. 7.4: Circuito lgico para conexo de 4 conjuntos de RAMs 2114 ao sistema mnimo
A Quarta RAM 2114 acessada a partir do endereo 4C00h
A15

A14

A13

A12

4
0

1
4

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

Endereo Inicial da QUARTA RAM 2114 do Kit Didtico


0
0
0
0
0
0
0
1
1
C
0
Endereo Final da QUARTA RAM 2114 do Kit Didtico
0
1
1
1
1
1
1
1
1
1
F
F

Microprocessadores e Microcomputadores

AD2

AD1

AD0

0
1
F

Prof. Jos Wilson Lima Nerys

91
Desejando-se acrescentar mais 4 conjuntos de RAMs, de forma a ter um sistema mnimo com 8 Kbytes de
memria, precisa-se de mais um pino de seleo, que no caso o pino A12.
A14
A10
A11
A12

2 RAM 2114
CS\

2 RAM 2114

ZONAS DE ENDEREO PARA A RAM


2114, A PARTIR DE 4000h
ZONA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

CS\

ENDEREO
4000 43FF
4400 47FF
4800 4BFF
4C00 4FFF
5000 - 53FF
5400 57FF
5800 5BFF
5C00 5FFF
6000 - 63FF
6400 67FF
6800 6BFF
6C00 6FFF
7000 - 73FF
7400 77FF
7800 7BFF
7C00 7FFF
8000 - 83FF
8400 87FF
8800 8BFF
8C00 8FFF

45
1024
F000 F3FF
46
1024
F400 F7FF
47
1024
F800 FBFF
48
1024
FC00 FFFF
Total: 48 Kbytes = 49.152 bytes

A15

A14

BYTES
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024

A13

A12

A11

A10

A9

4000h 43FFh
RAM 1

4400h 47FFh
RAM 2
2 RAM 2114

CS\

4800h 4BFFh
RAM 3
2 RAM 2114

CS\

4C00h 4FFFh
RAM 4

2 RAM 2114
CS\

5000h 50FFh
RAM 5

2 RAM 2114
CS\

5400h 57FFh
RAM 6

2 RAM 2114
CS\

5800h 5BFFh
RAM 7
2 RAM 2114

CS\

A8

AD7

AD6

AD5

AD4

AD3

5C00h 5FFFh
RAM 8

AD2

AD1

AD0

Fig. 7.5: Circuito lgico para conexo de 8 conjuntos de RAMs 2114 ao sistema mnimo

As pastilhas 8156 e 8355 no so apenas memrias RAM e ROM; elas tambm contm portas de entrada
e sada paralela, alm de temporizadores.
As trs portas de Entrada e Sada da 8156 so: Porta A (8 bits), Porta B (8 bits) e Porta C (6 bits), que so
numeradas respectivamente como 21h, 22h e 23h no sistema mnimo da Fig. 7.2. Internamente, tem-se ainda
acesso a trs outras portas: Porta 20h, usada como registrador de status e de comando, Porta 24h, usada como
byte inferior do contador de temporizao e Porta 25h, usada como modo e contador (6 bits superiores) do
temporizador.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

92

O endereamento das portas da 8156 so dados na tabela a seguir:


AD2
0
0
0
0
1
1

AD1
0
0
1
1
0
0

AD0
0
1
0
1
0
1

Seleo
Registradores de comando e de status
Porta A
Porta B
Porta C
8 bits menos significativos do temporizador
2 bits de modo do temporizador e 6 bits superiores do temporizador

As duas portas de Entrada e Sada do 8355 so: Porta A (8 bits) e Porta B (8 bits), que so numeradas
respectivamente como 00h e 01h no sistema mnimo da Fig. 7.2. O endereamento dado na tabela a seguir:
AD1

AD0

0
0
1
1

0
1
0
1

Seleo

Nmero
da Porta
00h
01h
02h
03h

Porta A
Porta B
Registrador de Direo de Dados da Porta A (DDR A)
Registrador de Direo de Dados da Porta A (DDR A)

O temporizador da 8156 possui decrementador pr-setvel, controlado pelas portas 20h, 24h e 25h. O
contador pode operar em 4 modos, mostrados nas figuras a seguir:

Timer OUT

Timer IN

8156
CLK

D3

D2

D1

Porta 20h - Registro de comando para as portas A, B e C do 8156 e para o temporizador


D7
D6
D5
D4
D3
D2
D1
Temp

Temp

Int. B

Int. A

Porta 24h - Byte menos significativo do Temporizador


T7
T6
T5
T4

D0

Porta A

D4

Porta B

D5

Porta C

D6

Habilitao de interrupo A

D7

Temporizador

Comando

Habilita;o de interrupo B

Fig. 7.6: Temporizador do CI 8156

D0

T3

T2

T1

T0

T9

T8

Porta 25h - Byte mais significativo do Temporizador e modo do temporizador


M2

M1

T13

Microprocessadores e Microcomputadores

T12

T11

T10

Prof. Jos Wilson Lima Nerys

93

Comear
contagem

Contagem
final

Contagem
final

Contagem
final

Contagem
final

Modo 00
Modo 01
Modo 10
Modo 11

M2
0
0
1
1

M1
0
1
0
1

Onda de sada no pino Timer OUT


Onda quadrada simples (um ciclo)
Onda quadrada contnua
Pulso simples (nico)
Pulso contnuo

D7
0
0
1
1

D6
0
1
0
1

Estado do Temporizador
No opera
Parar imediatamente
Parar depois de atingir contagem final
Comear contagem

Exemplo: Gerar uma onda quadrada de 1 kHz, sendo a frequncia de clock de 3 MHz
Contagem final =

3MHz
= 3000 = 0BB8 h
1kHz

Porta 24h - LSB: B8h


1

Porta 25h - MSB e Temporizador: 0 1 + B8h


0

Onda quadrada contnua


Porta 20h - Registro de comando para as portas A, B e C do 8156 e para o temporizador
1
1
0
0
1
1
1
Int. A e B des.

C sada

B sada A Ent.

Comear contagem do temporizador


Instrues
MVI A,B8h
OUT 24h
MVI A,4Bh
OUT 25h
MVI A,Ceh
OUT 20h

Comentrio
Onda quadrada contnua de 1kHz

Comea contagem e dasabilita interrupes de A e B

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

94

7.2.2

Decodificador 74LS138

O CI 74LS138 um decodificador usado tanto para expanso de memria quanto para o endereamento
de muitas portas de entrada e sada. um decodificador 1 de 8, ou seja, cada CI permite a seleo de 8 sadas
diferentes. Trs pinos (C, B e A) so usados para selecionar uma das 8 linhas de sada (Y0 a Y7).

74LS138

Sada Selecionada

Yo

Y1

Y2

Y3

Y4

Y5

Y6

Y7

Fig. 7.7: Decodificador 74LS138 e tabela verdade

A sada est ativa quando est em nvel zero. A pastilha 74LS138 habilitada fazendo G1 = 1, G2A = 0,
G2B = 0. Quando qualquer desses pinos est desativado o CI est desabilitado.

Fig. 7.8: Diagrama de blocos do decodificador 74LS138

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

95
Voltando s 8 pastilhas de memria RAM do exerccio anterior, pode-se fazer o endereamento usando
um decodificador 74LS138. O pino A14 usado para habilitao geral (G1) e os pinos A10, A11 e A12 so usados
para seleo da pastilha correspondente a cada faixa de endereo.

A11 A14
A12 A10
2 RAM 2114

CS
\

4000h 43FFh
RAM 1
2 RAM 2114

CS\
4400h 47FFh
RAM 2

CS\

2 RAM 2114
4800h 4BFFh
RAM 3

CS\

2 RAM 2114
4C00h4FFFh
RAM 4
2 RAM 2114

CS\
5000h 50FFh
RAM 5

CS\

2 RAM 2114
5400h 57FFh
RAM 6

C
A12
0
0
0
0
1
1
1
1

B
A11
0
0
1
1
0
0
1
1

A
A10
0
1
0
1
0
1
0
1

Sada
Selecionada
Yo
Y1
Y2
Y3
Y4
Y5
Y6
Y7

CS\

2 RAM 2114
5800h 5BFFh
RAM 7

CS\

2 RAM 2114
5C00h 5FFFh
RAM 8

Fig. 7.9: Uso do decodificador 74LS138 para conexo de 8 RAMs ao sistema mnimo
Cada 74LS138 pode enderear 8 zonas de endereo So necessrios 6 decodificadores 74LS138 para
cobrir toda a memria possvel a partir da posio 4000 h at FFFF h.

7.3
1.

Exerccios Propostos
Considere um sistema mnimo composto por um microprocessador 8085, uma memria ROM de 2 K e uma
memria RAM de 4 K. O pino CE da RAM e CE\ da ROM esto conectados ao pino A14 do 8085.
Responda as questes abaixo:
(a) Quais os endereos inicial e final da ROM e da RAM?

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

96
(b) Qual a finalidade dos pinos CE, WR e IO/M de uma memria RAM?
(c) Quantas linhas de endereo so necessrias para a ROM e para a RAM?
(d) Conceitue ROM, EPROM, RAM esttica e RAM dinmica
2.

Gerar um pulso contnuo na sada do temporizador da pastilha 8156, em uma freqncia de 1 kHz, sabendo
que a freqncia de clock de 1 MHz. D uma sugesto de como o temporizador pode ser usado para a
gerao de sinal PWM (Modulao de Largura de Pulso).

3.

Explicar para que serve e como utilizado o decodificador 74139 num sistema com o microprocessador
8085. Esse decodificador tem duas entradas (A e B) e quatro sadas ( Y0 , Y1 , Y2 , Y3 ). Os habilitadores do
CI 74139 so G1 , G2 e G3 , como no caso do CI 74138. Faa um esquema mostrando uma aplicao.

4.

Desenhar o circuito de conexo de 4 pastilhas de memria RAM, cada uma de 2 kbytes, a partir do endereo
1000 h, usando o decodificador 74139. Esse decodificador tem duas entradas (A e B) e quatro sadas ( Y0 ,

Y1 , Y2 e Y3 ). O habilitador da memria RAM o pino CE\. Os habilitadores do CI 74139 so G1, G2 e


G3 , como no caso do CI 74138. Inclua as linhas de endereos / dados.
5.

Faa um programa que leia um byte da porta serial e o mostre no display. A cada interrupo RST 7.5 o
programa dever ler outro byte da porta serial e mostr-lo no display.

6.

Faa um programa que leia um dado do teclado, e ento, envie este byte pela sada serial por 5 vezes
seguidas, com um intervalo de 1s entre cada repetio (destas 5 vezes). Em outras palavras, enviar o byte 5
vezes pela porta serial, parar por 1 segundo e tornar a enviar o byte por mais 5 vezes, parar por mais 1s... e
assim por diante. O bit menos significativo deve ser enviado primeiramente.

7.

Faa um programa que leia dois nmeros pelo teclado, some estes nmeros e mostre o resultado no display,
repetindo esta operao indefinidamente. Caso ocorra uma interrupo RST 6,5, o programa passar a
subtrair esses nmeros (1o - 2o), mostrando o resultado no display. Aps uma nova interrupo RST 6,5 o
programa volta a somar os dois nmeros, e assim sucessivamente. Caso ocorra uma interrupo RST 5,5 o
ltimo resultado mostrado no display dever ser enviado pelo pino SOD, uma nica vez, aps o que o
processamento volta ao programa principal.

8.

A RAM 2114 de 1 K, mas possui apenas 4 bits cada uma. Por isso so usadas de duas em duas de modo a
formar 1 byte para cada endereo . Deseja-se associar 4 grupos de RAMs 2114 (ver figura a seguir), de
modo a formar uma memria RAM de 4 Kbytes. Pede-se:
(a) Quais so as linhas de endereo para a operao das RAMs 2114?
(b) Qual a faixa de endereos (endereos contnuos) de cada grupo de RAMs?
(c) Use portas lgicas para desenhar o circuito de habilitao dos grupos de RAMs a partir do endereo
1000h;
(d) Use o decodificador 74139 (figura a seguir) para a habilitao dos grupos de RAMs a partir do endereo
1000h. Os pinos A e B so usados para selecionar a sada e o pino G1 usado para habilitar a pastilha.
Y0 \

Linhas de endereo:________________

Y1 \

74139

Y2 \
2 RAM
2114

2 RAM
2114

2 RAM
2114

2 RAM
2114

CS\

CS\

CS\

CS\

Pinos de habilitao

Microprocessadores e Microcomputadores

G1

Y3 \

A
0
0
1
1

B
0
1
0
1

Y
Y0\
Y1\
Y2\
Y3\

Prof. Jos Wilson Lima Nerys

97
9.

A RAM 2114 de 1 K, mas possui apenas 4 bits cada uma. Por isso so usadas de duas em duas de modo a
formar 1 byte para cada endereo . Deseja-se associar 4 grupos de RAMs 2114 (ver figura abaixo), de modo
a formar uma memria RAM de 4 Kbytes. Pede-se:
(e) Quais so as linhas de endereo para a operao das RAMs 2114?
(f) Qual a faixa de endereos (endereos contnuos) de cada grupo de RAMs?

10. Faa um programa para o ABACUS com a seguinte caracterstica: Quando a chave CH0 OU a chave CH1
est ligada os LEDs ficam piscando em intervalos regulares. Quando esto desligadas, o programa fica num
loop de espera.

7.4

Referncias Bibliogrficas

[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

98

8. INTERFACE ANALGICA
Como os dados de um microprocessador esto na forma digital e os dados do mundo exterior esto na
forma analgica (contnua), necessrio fazer a converso entre esses dados. Assim, tem-se o Conversor
Analgico-Digital (ADC), que faz a converso de sinal analgico para sinal digital e o Conversor DigitalAnalgico (DAC), que faz a converso de sinal digital para sinal analgico.

Sinal
Analgico

ADC

Sinal
Digital

Sistema
Mnimo
com 8085

Sinal
Digital

Sinal
Analgico

DAC

Fig. 8.1: Processamento de sinal analgico pelo Microprocessador

8.1

Conversor Digital-Analgico

Um circuito somador com Amplificador Operacional pode ser usado para construir um conversor digitalanalgico, bastando para isso escolher valores ponderados dos resistores, como na figura 8.2 a seguir. A figura
mostra um conversor DA de 4 bits.

Fig. 8.2: Circuito Bsico de um Conversor Analgico-Digital


Estas chaves podem ser substitudas por transistores que trabalharo na regio de corte quando D = 0, na
regio de saturao quando D = 1.
Correntes nas resistncias quando as chaves D3, D2, D1 e D0 esto ligadas:

I3 =

VREF
R

I2 =

VREF
2R

I1 =

VREF
4R

I0 =

VREF
8R

A corrente total na resistncia de sada Rsada I = I3 + I2 + I1 + I0 , ou seja,

I=

VREF
(1 * D3 + 0.5 * D2 + 0.25 * D1 + 0.125 * D0 ) ,
R

onde os valores de D podem ser 0 para chave desligada e 1 para chave ligada. Assim, forma-se a tabela
abaixo, supondo VREF/R = 1:

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

99
Tabela de valores para o conversor de 4 bits
D3

D2

D1

D0

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

Corrente de
sada (mA)
0
0.125
0.250
0.375
0.500
0.625
0.750
0.875
1.000
1.125
1.250
1.375
1.500
1.625
1.750
1.875

Frao do
Mximo
0
1/15
2/15
3/15
4/15
5/15
6/15
7/15
8/15
9/15
10/15
11/15
12/15
13/15
14/15
15/15

Um vez que o conversor tem apenas 4 bits, existem 16 (24) possveis valores de sada, sendo o menor
valor 0 (zero) e o valor mximo correspondente ao decimal 15, ou binrio 1111, e hexadecimal F. A tenso de
sada dada por Vsada = Rsada*I. Os resistores ponderados so necessrios para que a sada corresponda frao
indicada na ltima coluna da tabela.

mx

incremento
1 LSB

0
Fig. 8.3: Forma da corrente de sada para uma variao de corrente de 0 a 15
Caractersticas de um Conversor DA:
(a) Cada degrau corresponde a 1 LSB (bit menos significativo)
(b) Nmero de degraus de um conversor: 2n-1, onde n o nmero de bits. Para n = 4 15 degraus.
1.

Resoluo: a relao entre o menor incremento possvel, 1 LSB e a sada mxima.


Resoluo =

1
2 1
n

n nmero de bits. No caso de n = 4 Resoluo =

1
15

Resoluo Percentual = Resoluo x 100%


No caso de 4 bits Resoluo Percentual = 6.67%

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

100
Resoluo do DA versus Nmero de bits
Nmero de bits
Resoluo
Resoluo Percentual
(%)
4
1/15
6.67
8
1/255
0.392
12
1/4095
0.0244
16
1/65535
0.000381
2.

Preciso Absoluta: Refere-se a quo prxima cada corrente de sada est de seu valor ideal. A preciso
depende da tolerncia dos resistores, do descasamento dos transistores e da tenso de referncia.

3.

Preciso Relativa: Refere-se a quo prximo cada nvel de sada est de sua frao ideal de sada total. A
preciso relativa depende principalmente da tolerncia dos resistores ponderados. Se eles forem exatamente
iguais a R, 2R, 4R e 8R no caso do conversor de 4 bits, todos os degraus sero iguais a 1 incremento LSB. Se
os resistores no estiverem corretos os degraus podero ser maiores ou menores que 1 incremento LSB.

4.

Monotonicidade: Um conversor DA monotnico aquele que produz um aumento na corrente de sada para
cada entrada digital sucessiva, ou seja, cada aumento no sinal de entrada produz um aumento no sinal de
sada. Se os resistores ponderados no estiverem corretos, pode-se ter um conversor no monotnico. O erro
mximo da sada do conversor deve ser de 1/2 LSB para garantir que o conversor seja monotnico.

5.

Tempo de Resoluo (ou de Posicionamento): Tempo que a sada do conversor lva para se estabilizar dentro
de 1/2 LSB de seu valor final. Esse tempo depende, dentre outros fatores, das capacitncias esprias e do
tempo de retardo de saturao dos transistores.

Fig. 8.4: Conversor Digital-Analgico em escada

Fig. 8.5: Conexo do conversor DAC 0808 com um sistema mnimo

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

101
Para que o conversor seja monotnico a tolerncia dos resistores ponderados deve ser inferior resoluo
percentual. Assim, a tolerncia dos resistores deve ser no mximo de 6.67% para o conversor de 4 bits e de 0.4%
para o conversor de 8 bits. Portanto, quanto maior o nmero de bits do conversor, maior a dificuldade de
contruo usando o modelo de resistores ponderados, alm da difuldade com os diferentes valores. A soluo
encontrada foi o modelo da Escada R-2R, mostrado na Fig. 8.4. Nesse circuito a corrente permanece constante
em cada ramo. O que muda a posio do ponto de terra, onde o terra da corrente de sada um terra virtual do
amplificador operacional. Dessa forma, a corrente de sada varia de acordo com o fechamento das chaves D.
A Fig. 8.5 mostra a conexo de um conversor Digital-Analgico (DAC0808) com um sistema mnimo
formado pelo microprocessador 8085, memria ROM 8355 e memria RAM 8156.

8.2

Conversor Analgico-Digital

A Fig. 8.6 mostra um circuito que converte um sinal analgico em digital. O processo de converso usa
um conversor digital-analgico e um contador. No incio da converso um sinal de controle zera a sada do
contador. Como o valor digital inicial zero, a sada do conversor DA tambm zero, o que resulta um sinal alto
na sada do amplificador operacional que compara o sinal analgico de entrada Vent com o sinal analgico Vsada
de sada do conversor DA. Esse sinal alto d incio ao processo de converso.

Fig. 8.6: Circuito bsico de um Conversor Analgico-Digital


A converso se encerra quando o sinal de sada do comparador estiver em nvel baixo, ou seja, quando o
sinal Vsada for maior que o sinal que se deseja converter, Vent. O resultado da converso obtido nas linhas de
transferncia de dados do contador para o conversor DA. Observe que o sinal na sada do comparador pode ser
usado para indicar o fim da converso. Durante a converso esse sinal permanece em nvel alto.
A desvantagem principal de um conversor do tipo mostrado na Fig. 8.6 que o tempo de converso pode
durar at 255 perodos de clock para um conversor de 8 bits e at 65535 perodos de clock para um conversor de
16 bits. Uma soluo para reduzir o tempo de converso o conversor mostrado na Fig. 8.7, do tipo aproximao
sucessiva.

Fig. 8.7: Conversor AD por aproximao sucessiva

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

102
O processo de converso desse tipo de conversor diferente do anterior. Nesse conversor o nmero
mximo de perodos de clock utilizados na cconverso corresponde ao nmero de bits do conversor, ou seja, o
conversor de 8 bits leva at 8 ciclos de clock para completar uma converso e o de 16 bits leva at 16 ciclos de
clock.
Um pulso alto de incio de converso enviado ao Registrador de Aproximao Sucessiva (RAS) d
incio ao processo. O registrador RAS comea setando o bit mais significativo D7 (MSB) que alimenta o
conversor DA. Se a sada do DA for maior que o sinal a ser convertido Vent, o bit MSB zerado. Caso o bit D7
no resulte em sada analgica Vsada maior que o sinal a ser convertido, o bit D7 mantido. A seguir o segundo
bit mais significativo, D6, e os demais bits restantes so testados seguindo o mesmo procedimento, at atingir o
valor correto de converso. Ao final da converso, um sinal baixo emitido para o Registrador Buffer, liberando
a sada digital e, ao mesmo tempo, conservando esse valor durante a prxima converso.

8.3

Exerccios Propostos

1.

Explique de forma resumida o princpio de operao de um conversor Analgico/Digital (conversor AD)


com aproximao sucessiva.

2.

Explique a caracterstica monotonicidade de um conversor digital-analgico (conversor DA).

3.

Diferencie preciso absoluta de preciso relativa de um conversor DA.

4.

Como se calcula a resoluo de um conversor DA? Qual a resoluo de um conversor DA de 12 bits?

5.

Qual a tenso na sada de um conversor DA de 8 bits, cujo sinal de entrada seja 40 h e cuja tenso de
referncia seja 5 V?

6.

Considere o conversor DA de 4 bits da Fig. 8.2, com resistncias ponderadas, onde a resistncia R = 2 k e
a resistncia de sada seja Rsada = 10 k. Calcule a corrente e a tenso de sada do circuito. A tenso de
referncia VREF = 5 V.

7.

Faa um programa para o ABACUS, que l a tenso de alimentao de um motor de corrente contnua e
mostra no display de 7-segmentos correspondente ao endereo (usar CALL MOSTRAD) e l a velocidade
de rotao do motor e mostra nos LEDs. A tenso (que varia de 0 a 255 V) lida atravs de um conversor
Analgico-Digital de 8 bits e entrada de 0 a 5 V, que conectado porta A (21h) do sistema mnimo do
8085. Cada fim de converso desse AD gera uma interrupo RST 6.5 para leitura da tenso. A tenso lida
em base hexadecimal e mostrada em base decimal.
A velocidade (que varia de 0 a 2000 rpm) lida tambm atravs de um conversor Analgico-Digital de 8
bits e entrada de 0 a 5 V, que conectado porta C (23h) do sistema mnimo. Cada fim de converso desse
AD gera uma interrupo RST 5.5 para leitura da velocidade. A indicao de velocidade nos LEDs feita da
seguinte forma: at 250 rpm apenas o LED0 fica ligado; de 250 rpm at 500 rpm, os LEDs 0 e 1 ficam
ligados e assim sucessivamente, at chegar no intervalo de 1750 rpm at 2000 rpm, quando todos os LEDs
ficam ligados. Seguir os passos dados.
Programa principal:
a. Habilita as interrupes RST 6.5 e RST 5.5 e mascara a RST 7.5;
b. Habilita a porta A (21 h) como entrada de dados e a porta B (22 h) como sada de dados (igual ao caso
do ABACUS). Considere que a porta C j est habilitada;
c. Zera registradores A, D e E;
d. Entra num loop que mostra continuamente o contedo de DE (tenso) no display (subrotina do
ABACUS) e o contedo de A (velocidade) nos LEDs.
Subrotina 1
(atendimento da RST 6.5 a cada fim de converso do AD da tenso)
a. L o valor da tenso, presente na porta 21h;
b. Converte o valor lido (hexadecimal) em valor decimal, guardando o resultado em DE.
c. Retornar ao programa principal.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

103
Observao: No o caso de usar DAA e sim fazer a converso da base hexadecimal para a base
decimal. Essa converso feita da seguinte forma:
Passo 1: Divide-se o nmero hexadecimal pelo decimal 10 (hexadecimal 0A). O resto dessa primeira
diviso o dgito menos significativo do nmero decimal resultante (d0). Se o quociente for
zero o processo encerrado.
Passo 2: Se o quociente da diviso anterior for diferente de zero, divide-se esse quociente novamente
pelo decimal 10 at obter o segundo resto, que o segundo dgito menos significativo (d1). Se
o quociente dessa segunda diviso for zero, o processo encerrado.
Passo 3: Se o quociente da diviso anterior for diferente de zero, divide-se esse quociente novamente
pelo decimal 10 at obter o terceiro resto, que o dgito mais significativo (d2). Como o valor
mximo possvel FF h, no h possibilidade de um Passo 4.
O decimal resultante : d2d1d0. d2 deve ser mostrado em D e d1d0 deve ser mostrado em E.
Subrotina 2
(atendimento da RST 5.5 a cada fim de converso do AD da velocidade)
(a) L o valor da velocidade, presente na Porta 23h;
(b) Verifica o valor da velocidade (atravs de seu equivalente digital) e carrega em A o valor hexadecimal
que liga os LEDs desejados, de acordo com o que foi explicado no item (d) da parte inicial desta
avaliao.
(c) Retorna ao programa principal com o valor de A definido no item anterior.

8.4

Referncias Bibliogrficas

[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

104

9. MICROCONTROLADORES 8086/8088
9.1

Introduo

O 8088 o microprocessador do PC-XT (Personal Computer - eXtended Technology), produzido


inicialmente pela Intel, sendo equivalente ao microprocessador 8086 (que tem como principal diferena a
extenso do barramento externo de dados). O 8086 tem os barramentos de dados externo e interno de 16 bits
enquanto o 8088 apresenta o barramento interno de 16 bits e o externo de 8 bits.
Os processadores 80186 e 80188 so upgrades do 8086 e do 8088 respectivamente, onde foram
incorporados de 10 a 15 componentes (gerador de clock, controlador de DMA, unidade de chip select,
controlador de interrupo, temporizadores, etc.) mais comuns em sistemas baseados no 8088/86. Todas as
instrues do 8086 so includas no 80186, alm de 10 novas instrues.
Ainda, dentro da famlia dos microprocessadores Intel de 16 bits, temos o processador 80286
(registradores de 16 bits, 24 linhas de endereo). O 80286 incorporou um gerenciador de memria e agregou
recursos para multitarefa (h novas instrues com este objetivo). A partir do 80286 os PCs passaram a se
chamar PC-AT (PC - Advanced Technolody).
A diferena no barramento externo de dados entre o 8088 e o 8086 poderia nos levar a supor este ltimo
duas vezes mais rpido que o primeiro; tal fato, em geral, no verdadeiro. Quando a Unidade de Execuo do
microprocessador (chamada EU: Execution Unit) executa uma instruo, outra unidade independente (chamada
BIU: Bus Interface Unit) busca uma nova instruo na memria e a guarda em uma memria interna do
microprocessador (queue). Com isso, h uma sobreposio de ciclos de execuo e ciclos de busca de instruo.
No caso do 8088, se a instruo de 16 bits a BIU deve fazer duas leituras e a EU dever esperar a instruo
estar completa. No 8086 com apenas uma leitura na memria a instruo j estaria disponvel para execuo.
Portanto:
para aplicaes orientadas a 8 bits (byte) o 8088 desenvolve a tarefa to bem quanto o 8086;
para aplicaes orientadas a 16 bits (word), o 8088 ser menos eficiente que o 8086 mas no com metade da
velocidade.
Principais Caractersticas do 8088
a) Barramento de endereos com 20 linhas: proporciona endereamento para at 1MB (1.048.576 bytes) de
memria.
b) Capacidade de uso de coprocessador (8087).
c) Todos os registradores internos possuem 16 bits (alguns podem ser acessados pela metade - primeiros ou
ltimos 8 bits).
d) Possui 2 modos de funcionamento: Mnimo e Mximo: no modo mnimo equivale a um 8085 acelerado. O
modo mximo usado em ambientes multiprocessados (quando o 8088 convive com outros 8088) ou em
ambientes coprocessados (quando h processador aritmtico). Desta forma, como o PC-XT tem soquete para
utilizao do 8087, sua CPU funciona com o 8088 no modo mximo.
e) A CPU dividida em 2 blocos: Unidade de Execuo (EU) e Unidade de Interface com o Barramento (BIU).
f) BIU com fila de instrues (queue) de 4 bytes (8088) ou 6 bytes (8086).
g) Realiza instrues de diviso e multiplicao (para nmeros com ou sem sinal), assim como operaes com
strings (blocos de bytes).
h) Possui registradores de segmento, possibilitando segmentao de memria.
i) No RESET o endereo de memria acessado FFFF0H.
Para ilustrar melhor as caractersticas do 8088, a tabela a seguir foi criada, onde feita uma comparao
entre o 8085, o 8086 e o 8088. A seguir faz-se um paralelo entre os registradores do 8085 e os registradores do
8088 (os quais sero mais detalhadamente explicados nas prximas sees).

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

105

Caractersticas dos Microprocessadores 8085, 8086 e 8088


Caracterstica

Microprocessador
8085

Microprocessador 8088

Microprocessador
8086

Barramento de endereo

16 bits

20 bits

20 bits

Capacidade de
endereamento de memria

65.536

1.048.576

1.048.576

( 64 kB )

( 1 MB )

( 1 MB )

8 bits

Interno: 16 bits

Interno: 16 bits

Externo: 8 bits

Externo: 16 bits

Barramento de dados

Manipulao de STRINGS

NO

SIM

SIM

Registradores Internos

8 bits e 16 bits

16 bits

16 bits

Uso de segmentao para


endereamento

NO

SIM

SIM

Aritmtica Decimal completa

NO

SIM

SIM

Etapas de Busca e Execuo

Em sequncia:

Unidades Independentes:
Unidade de Interfaceamento
com Barramento (BIU)
responsvel pela Busca e

Unidades
Independentes:
Unidade de
Interfaceamento com
Barramento (BIU)
responsvel pela Busca
e
Unidade de Execuo
(EU)

Busca Executa

Unidade de Execuo (EU)

Registradores dos microprocessadores 8085, 8086 e 8088


Registradores do 8085

Registradores do 8088 / 8086

Acumulador

AH

Apontador de dados

BH

BL

BX Acumulador e Registrador Base

CH

CL

CX Acumulador e Contador

DH

DL

DX Acumulador e Endereador de I/O

SP

PC

Apontador de pilha

Contador de Programa

FLAGS Registrador de Flags

Microprocessadores e Microcomputadores

AL (A) AX Acumulador Primrio

SP

Apontador de pilha

BP

Apontador base usado na pilha

SI

ndice da Fonte usado para indexao

DI

ndice de Destino usado para indexao

IP

Ponteiro de Instruo

CS

Segmento de Cdigo

DS

Segmento de Dados

SS

Segmento de Pilha

ES

Segmento Extra

FLAGS

Registradores de
segmento. So
usados para a
formao do
endereo absoluto.

Registrador de Flags

Prof. Jos Wilson Lima Nerys

106

9.2

Diagrama de Blocos do 8088

Uma das principais inovaes do 8088 foi a separao entre lgica de execuo e lgica de controle do
barramento, criando dois blocos que funcionam de forma assncrona: a Unidade de Execuo (EU) e a Unidade
de Interface com o Barramento (BIU).
A EU tem como funo processar (decodificar e executar) instrues obtidas da BIU. A EU constituda
de:

Registradores de Dados;
Registradores de Endereos;
ALU;
Unidade de Controle.

A BIU tem apenas funes de hardware: controla o acesso ao barramento (linhas de endereamento,
linhas de dados e sinais de controle). A BIU constituda de:

Lgica de interface com o barramento;


Registradores de segmento;
Lgica para endereamento de memria (somador);
Fila de instrues (4 bytes para o 8088 e 6 bytes para o 8086).

Procedimento de trabalho do 8088:


1. A BIU coloca o contedo do IP (que somado ao registrador CS) no barramento para efetuar a busca de
instruo;
2. O registrador IP incrementado (aponta para a prxima instruo);
3. A instruo lida passada para a fila;
4. A EU pega a primeira instruo da fila;
5. Enquanto a EU executa esta instruo a BIU faz uma nova busca de instruo para preencher a fila. Se a
instruo a ser executada pela EU for muito demorada a BIU preenche toda a fila.
H 2 situaes em que no so aproveitadas as instrues contidas na fila. So elas:
Na execuo de instrues de desvio. Neste caso a fila descartada (ou seja, sobreescrita);
Quando a instruo faz referncia memria.
Definies:
Pipelining: introduo de paralelismo para executar programas de natureza sequencial. OBS: Esta tecnologia
utilizada no projeto de processadores RISC.
Perifrico: qualquer equipamento ou dispositivo que prov CPU comunicao com o resto do sistema.
Interface: Conjunto de componentes capaz de controlar um dispositivo (device). OBS: uma placa de
expanso pode conter uma ou mais interfaces.
IP (Instruction Pointer): tem a mesma funo do PC (Program Counter) no 8085.
Registrador de Segmento: registrador que armazena o endereo base. Deve ser somado ao endereo de
deslocamento (ou offset, ou ainda endereo lgico) para obter o endereo fsico (ou endereo absoluto). No
8088 os segmentos definem blocos de 64Kbytes de memria. H 4 registradores de segmento:

Code Segment (CS): rea destinada a cdigo;


Data Segment (DS): rea destinada a dados;
Extra Segment (ES): rea extra destinada a dados;
Stack Segment (SS): rea destinada a armazenar endereos de retorno de rotinas de interrupes e de
sub-rotinas;

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

107

Interface com Memria

Barramento B
6

Unidade de Interfaceamento
com Barramento (BIU)

5
QUEUE

Extra Segment ES
Code Segment CS
Stack Segment SS
Data Segment DS
Instruction Pointer IP

4
3
2

Registradores de
Segmento

Sistema de Controle da
Unidade de Execuo

Barramento A
AH
AL
BH
BL
CH
CL
DH
DL
Stack Pointer
Base Pointer
Source Index
Destination Index

AX
BX
CX
DX
SP
BP
SI
DI

Unidade de
Execuo (EU)
ULA

FLAGS

Diagrama de blocos do 8088/8086

Vantagens da Utilizao de Memria Segmentada


Por haver uma rea especfica para armazenamento de cdigo e outras reas para armazenamento de dados,
pode-se trabalhar com tipos diferentes de conjuntos de dados (por exemplo, em um ambiente multitarefa
onde um programa atende vrias entradas de dados);
Programas que referenciam endereos lgicos (0000 a FFFF no caso do 8088) podem ser carregados em
qualquer espao (fsico) da memria (00000 a FFFFF): possibilita a realocao de programas.
SEGMENTAO
Consiste em combinar 2 registradores de 16 bits para gerar um endereo de memria de 20 bits
Registrador de
Segmento

Microprocessadores e Microcomputadores

Registrador de
Offset

Prof. Jos Wilson Lima Nerys

108

Endereo Fsico = (Contedo do Registrador de Segmento) 16 + (Contedo do Registrador de Offset)

Endereo Fsico (ou absoluto)

0YYYY

XXXX0
Registrador de Segmento
(16 bits)
15

Registrador de Offset
(16 bits)

15

Extra Segment - ES
Code Segment - CS
Stack Segment - SS
Data Segment - DS

0
Stack Pointer - SP
Base Pointer - BP
Source Index - SI
Destination Index - DI

Memria

Offset

Segmento

16

Byte Endereado

Incio do Segmento

Representao do endereo: SEGMENTO:OFFSET

Exemplo: SEGMENTO = 2000H; OFFSET = 2000H


Representao: 2000h:2000h
Endereo Fsico = 20000 + 02000h = 22000h
Se o segmento for 4000h, tem-se:
Representao: 4000h:2000h e Endereo Fsico = 40000h + 02000h = 42000h

9.3

Os Registradores do 8088
O 8088 tem 14 registradores de 16 bits, que podem ser classificados em grupos:
grupo de registradores de dados (4), (Data register);
grupo de registradores apontadores (Pointer) (2) e ndices (Index) (2);

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

109
grupo de registradores de segmento (4) (Segment register);
um registrador apontador de instrues (Instruction Pointer register);
um registrador de flags (Flags register).
9.3.1

Registradores de Dados

Os Registradores de Dados so tambm chamados Registradores de Propsito Geral. So 4 registradores


de 16 bits de uso geral, normalmente utilizados pelo conjunto de instrues para realizar operaes lgicas e
aritmticas. Podem tambm ser usados como registradores de 8 bits para instrues envolvendo 1 byte.
Registradores de Dados
8
7
0

15
AX
BX
CX
DX

AH
BH
CH
DH

AL
BL
CL
DL

Accumulator
Base
Counter
Data

AX Acumulador primrio Todas as operaes de I/O so realizadas atravs deste registrador. Operaes que
utilizam dados imediatos necessitam de menos memria quando feitos atravs de AX. Algumas operaes
com strings e instrues aritmticas pedem o uso deste registrador. Geralmente usado pelos
compiladores como hospedeiro para valores retornados de subrotinas.
BX Registrador Base Parece com registrador HL do 8085. o nico registrador de finalidade geral que pode
ser utilizado no clculo de endereo de memria. Todas as referncias memria que usam esse
registrador no clculo do endereo usam o registrador DS, como segmento default.
CX Contador Parece com o registrador BC do 8085. decrementado durante operaes com loops e
strings. Tipicamente, usado para controlar o nmero de repeties do loop. Tambm usado para
rotaes e deslocamentos de vrios bits.
DX Endereador de I/O e Registrador de Dados Parece com o registrador DE do 8085. Recebe o nome de
registrador de dados, principalmente por fora dos mnemnicos. Em algumas operaes de I/O, fornece o
endereo, coisa que nenhum outro registrdor pode fazer. Tambm usado em operaes aritmticas,
incluindo multiplicao e diviso, com o resultado a 32 bits. Pode ser usado por compiladores, juntamente
com AX, para retornar valores de subrotinas.
9.3.2

Registradores Apontadores e ndices

Este grupo de 4 registradores tipicamente usado para gerar endereos de memria efetivo (nome dado
poro offset do endereo fsico). Apenas so usados em 16 bits. Podem ainda ser utilizados em operaes
aritmticas e lgicas para gerar novos endereos efetivos.
Registradores Apontadores e ndices
15
Stack Pointer
Base Pointer
Source Index
Destination Index

SP
BP
SI
DI

SP Ponteiro de Pilha Parece com o registrador SP do 8085. Armazena o offset do endereo do topo da pilha.
Todas as referncias ao SP, por definio, usam o registrador SS.
BP Ponteiro da Base Permite acessar dados no segmento da pilha. Tipicamente usado para acessar
parmetros que foram passados pela pilha.
SI e DI Registradores de Indexao So usados para acessar dados na memria de dados. So
extensivamente usados nas operaes com strings. Podem ser usados como operandos em todas as
operaes lgicas e aritmticas de 16 bits.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

110

No conjunto de instrues do 8088 nem todos os registradores so especificados. Em muitos casos, uma
instruo pode usar um s registrador ou conjunto de registradores especficos. Para outras instrues, os
registradores tm uso implcito. A tabela a seguir lista as operaes que implicam no uso especfico (implcito)
de um determinado registrador.

Registradores
AX
AL
BX
CX
CL
DX
SP
SI
DI

9.3.3

Operaes
multiplicao de word (16 bits), diviso de word, I/O de word
multiplicao de byte, diviso de byte, I/O de byte, aritmtica decimal
referncia de memria (semelhante ao reg. par HL do 8085)
operao de strings, loops
deslocamento, rotao
multiplicao de word, diviso de word, end. indireto de I/O (0-65535)
operao de stack
operao de string (origem)
operao de string (destino)

Registradores de Segmento
Registradores de Segmento
15
Code Segment
Data Segment
Stack Segment
Extra Segment

CS
DS
SS
ES

Estes 4 registradores de 16 bits so utilizados para alocar segmentos de 64 kB de memria.


CS Segmento de Cdigo Para a busca (fetch) de cada instruo, o offset, definido por IP, adicionado ao
endereo base definido por CS para o endereo da instruo.
DS Segmento de Dados Todo acesso a dados usa este registrador como referncia, mas existem 3 excees:
(a) endereos para acessos pilha so calculados usando o registrador de segmento de pilha (SS); (b)
endereos para acessos a dados que usam o BP so calculados usando o SS e (c) operaes com strings,
que usam o DI no clculo do endereo, so feitas usando ES.
SS Segmento de Pilha Todos os acessos a dados que usam os registradores SP ou BP tomam como referncia
o registrador de segmento de pilha (SS).
ES Segmento Extra Operaes com strings, que usam DI para calcular o endereo, so feitas usando o
registrador ES para definir o segmento.
A tabela a seguir sintetiza o uso dos registradores de segmento como default.
Uso dos registradores de segmento
Tipos de Referncia
Memria
Instruo de busca
Operao de pilha
Varivel
Fonte string
Destino string
BP usado como reg. pointer

Microprocessadores e Microcomputadores

Segmento
Base (default)
CS
SS
DS
DS
ES
SS

Alternativo

Offset

nenhum
nenhum
CS, ES, SS
CS, ES, SS
nenhum
CS, DS, ES

IP
SP
endereo efetivo
SI
DI
endereo efetivo

Prof. Jos Wilson Lima Nerys

111
BX usado como reg. pointer

DS

CS, SS, ES

endereo efetivo

O registrador de segmento default selecionado pelo hardware do 8088. Em alguns casos possvel no
levar em conta o registrador default e especificar um registrador de segmento diferente (ver exemplo abaixo).
EXEMPLO:
A instruo MOV [BX],CX move o contedo de CX para a posio de memria calculada utilizando o
registrador de segmento DS (segmento default para dados) e o registrador de dados BX. Mas, se escrevermos
MOV CS:[BX],CX foramos o uso do registrador de segmento CS para o clculo da posio de memria
destino (que ser CS:BX).
Da mesma forma, a instruo MOV AX,[BP] acessa posio de memria diferente da instruo MOV
AX,ES:[BP].
Notar que no h registrador de segmento e registrador de offset alternativos para a busca de instrues
(que deve sempre ser o par CS :IP) e para operaes de pilha (que deve sempre ser o par SS: SP).

9.3.4

Apontador de Instrues

Este registrador contm o endereo offset da prxima instruo a ser executada pelo microprocessador.
Tem a mesma funo do PC utilizado no 8085.
Registrador Apontador de Instrues
15

0
IP - instruction pointer

3.5 - O Registrador de Flags


um registrador de 16 bits mas apenas 9 bits so usados. Seis deles so bits de status que refletem os
resultados de operaes aritmticas e lgicas.
Os outros trs so bits de controle. O conjunto de instrues do 8088 possui instrues especficas setar e
ressetar seus flags (que ser visto mais adiante).
Registrador de Flags = Registrador de Estado do Programa (PSW)
15

14

13

12

11
O

10
D

9
I

8
T

7
S

6
Z

4
A

2
P

0
C

Flags de Status
C Flag de carry reflete o vai um do bit mais significativo, nas operaes aritmticas (de 8 ou 16 bits). Ele
tambm modificado por algumas instrues de rotao e deslocamento.
Obs.: As operaes de subtrao usam aritmtica em complemento dois e, por isso, o carry invertido e
passa a funcionar como borrow. Se, aps uma operao de subtrao, obtm-se C = 1, isso indica que no
houve borrow, mas C=0, indica que houve borrow.
P Flag de Paridade indica a paridade (par), dos 8 bits menos significativos, do resultado da operao
realizada.
P = 1 nmero par de 1 nos 8 bits menos significativos
P = 0 nmero mpar de 1 nos 8 bits menos significativos
A Flag Auxiliar de Carry reflete o vai um do bit 3, em uma operao de 8 bits.
Z Flag de Zero indica se uma operao teve zero como resultado.
Z = 1 se o resultado da operao for igual a zero

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

112
Z = 0 se o resultado da operao for diferente de zero
S Flag de Sinal igual ao bit de mais alta ordem do resultado de uma operao aritmtica.
S = 0 resultado positivo
S = 1 resultado negativo
O Flag de Overflow seu contedo obtido atravs de uma operao XOR do carry in com o carry out do
bit de mais alta ordem do resultado de uma operao aritmtica. Ele indica um overflow de magnitude,
em aritmtica binria com sinal. Indica que o resultado muito grande para o campo destino.
Flags de Controle
T Flag de Trap (armadilha) usada para a depurao de programas. Coloca o 8086 no modo passo a passo.
Aps cada instruo uma interrupo gerada automaticamente.

I Flag de Interrupo habilita ou desabilita a interrupo externa (pedida pelo pino INTR). Ao contrrio do
8085, onde as interrupes RST 7.5, RST 6.5 e RST 5.5 podem ser habilitadas/desabilitadas
individualmente, no 8086 todas so habilitadas ou desabilitadas ao mesmo tempo. A habilitao/
desabilitao individual pode ser feita atravs do controlador de interrupo 8259.
I = 1 interrupo habilitada
I = 0 interrupo desabilitada
D Flag de Direo determina se as operaes com strings vo incrementar ou decrementar os registradores
de indexao (SI e DI).
D = 1 os registradores SI e DI sero decrementados, ou seja, a string ser acessada a partir do
endereo mais alto em direo ao mais baixo.
D = 0 os registradores SI e DI sero incrementados, ou seja, a stringser acessada a partir do
endereo mais baixo em direo ao mais alto.

EXEMPLO:
Descreva o estado dos flags aps a execuo da instruo ADD AL,1 (Adiciona 1 ao contedo do
registrador de 8 bits AL), sabendo que inicialmente AL =7Fh.
Resultado: AL ter o valor 80h (7F h + 01 h) e seus flags sero:
C 0
P 0
A 1
Z 0
S 1
O 1

9.4

A Pinagem do 8088
O microprocessador 8088 um CI com 40 pinos. Na figura a seguir alguns pinos apresentados tem duas

definies. O 8088 tem dois modos de operao que so selecionados pelo pino 33 (MN / MX ). Quando este
pino ligado um nvel alto, o P fica no modo mnimo e compatvel com o 8085, podendo substituir
diretamente este P.

Vcc

A15

A16/

A17/

A18/

A19/

S3

S4

S5

S6

Vcc

MN/

RD

MX

RQ/

RQ/

GT0

GT1

lock

S2

S1

S0

QS0

QS1

Test

RDY

RST

40

39

38

37

36

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

10

11

12

13

14

15

16

17

18

19

20

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

113
Gnd

A14

A13

A12

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

AD2

AD1

AD0

NMI

INTR

CLK

GND

No PC, o 8088 usado no modo mximo (MN / MX =0). As definies a seguir so relativas a este
modo.
(a) AD0-AD7 (9 -16): transmitem os 8 bits menos significativos dos endereos multiplexados com o byte de
dados. Os bits de endereo (A0-A7) so apresentados no incio do ciclo (T1) e os dados a partir de T2.
Ambos sinais so bufferizados para fazerem parte do barramento do sistema.
(b) A8-A15 (2-8 e 39): a outra parte dos bits de endereos. No so multiplexados (no 8086 so),
permanecendo estveis durante grande parte do ciclo de acesso a barramento. Aps bufferizao fazem parte
do barramento do sistema.
(c) A16/S3 - A19/S6 (35-38): sinais de status e endereos multiplexados. No incio do ciclo de barramento esto
presentes os bits dos endereos A16 a A19. Durante o restante do ciclo (a partir de T2) informa o status
interno do 8088.
S6 = 0 (permanece em nvel baixo no modo mximo);
S5 indica o status do flag de interrupo (se = 1 a interrupo est habilitada);
S3 e S4 so decodificados para indicar qual registrador de segmento est sendo usado no momento (ver
tabela abaixo). No so usados no PC-XT da IBM.

S3
0
0
1
1

S4
0
1
0
1

Reg. Segmento
Dados Extra (ES)
Pilha (SS)
Cdigo (CS)
Dados (DS)

(d) Clock (19): sinal de entrada responsvel pela gerao da temporizao no P. No projeto do PC este sinal
gerado pelo CI 8284A, tendo freqncia de 4,77Mhz e ciclo de trabalho (duty cycle) de 33%.
(e) RQ / GT0 (Request / Grant) (31): sinal bidirecional, usado por outros controladores de barramento local
para requerer o uso do barramento (faz o papel dos pinos HOLD e HLDA do 8085). No PC este sinal ligado
ao co-processador 8087.
(f)

RQ / GT1 (30): idem ao anterior, com grau de prioridade menor. No PC no usado.

(g) Lock (29): ativado pela instruo LOCK e permanece ativo at o fim da prxima instruo. usado para
indicar a outros controladores de barramento que estes no devem tentar obter o controle do barramento
durante a execuo da instruo seguinte LOCK. O PC no projetado para multi-controladores e portanto,
este pino no usado.
(h) NMI (17): sinal de entrada, usado para gerar uma interrupo no mascarvel no P. No PC este sinal
mascarado externamente por uma lgica programvel (um FlipFlop). equivalente ao pino TRAP do 8085.
(i) INTR (18): entrada para solicitao de interrupo mascarvel. No PC este pino ligado ao CI 8259A que
expande esta entrada de 1 para 8, adicionando, dentre outras funes, nveis de prioridade.
(j) Ready (22): sinal de entrada usado para inserir estados de espera no ciclo de barramento, estendendo-os. No
PC este sinal vem do chip do clock 8284A que o sincroniza com o clock do sistema.
(l) Reset (21): usado para reiniciar o P. No PC este sinal vem do chip de clock 8284A que recebe uma entrada
da fonte do sistema. A fonte envia um sinal chamado "Power Good" indicando que os nveis de tenso esto
apropriados e o sinal Reset pode ser ento removido para iniciar o P. A situao dos registradores do 8088
aps o RESET a seguinte:

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

114
Reg. IP = 0000 e reg. CS = FFFF resultando no end. de incio de programa = FFFF0h;
Registradores DS, SS, ES e IP zerados;
Registrador Flags zerado.
(m) QSO, QS1 (24, 25) - Queue Status: sinais de sada que fornecem o status da fila de instruo (queue) do
8088. No PC so ligados ao co-processador de modo que este possa acompanhar o status da fila 8088.
(n)

TEST (23): pino de entrada, utilizado em conjunto com a instruo WAIT (no confundir com estado de
espera, "wait state"). Se aps a instruo WAIT o pino TEST estiver em nvel alto, o 8088 espera em estado
inativo at este pino obter sinal baixo. No PC ligado a um pino de sada do 8087.

(o) S0, S1, S2 (26 - 28) (status): apresentam informaes de status sobre o tipo de ciclo de barramento que
est sendo desenvolvido. Este status vlido no incio de cada ciclo de barramento (durante o perodo T1).
No PC estess pinos so ligados ao 8288, chip controlador de barramento, onde so decodificados. Os sinais
de sada decodificados no 8288 formam as linhas de controle do sistema. Os sinais de controle gerados pelo
8288 a partir das informaes de status so: IOR, IOW, MemR , MemW e ALE. Os bits de status
podem ser vistos na tabela abaixo.

9.5

Tipo de ciclo no BUS

S2

S1

S0

Reconhecimento de interrupo ( INTA )

Leitura I/O ( IOR )

0
1
1

1
0
0

1
0
1

Escrita I/O ( IOW )


Halt
Busca de instruo

MemR )
Escrita memria ( MemW )

Passivo

Leitura memria (

Ciclos de Barramento do 8086

O 8086 COMUNICA-SE COM AMBIENTE EXTERNO ATRAVS DE UM SISTEMA DE BARRAMENTOS. ASSIM,


EXISTEM CICLOS DE BARRAMENTO PARA BUSCAR (FETCH) INSTRUES E PARA TRANSFERIR DADOS
(ESCREVER OU LER). AS FIGURAS A SEGUIR (ZELENOVSKY, PG. 22) MOSTRAM OS CICLOS DE LEITURA
E ESCRITA, RESPECTIVAMENTE.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

115

T1 a T4 perodos de relgio
ALE Address Latch Enable O endereo s reconhecido depois que este sinal vai para nvel alto, mas
o endereo s efetivamente usado quando este sinal volta para o nvel lgico baixo. Durante o
ciclo T2 os sinais de endereo so removidos.
AD0 AD15 Barramento de dados. No ciclo de leitura esse barramento colocado em estado de alta
impedncia no estado T2, em preparao para a leitura de dados. No ciclo de escrita a
CPU coloca os dados no barra barramento no estado T2.
*
RD Ativo baixo. Indica leitura de dados da memria ou de um dispositivo de entrada e sada. Ativado
em T2.
*
WR Ativo baixo. Indica escrita de dados na memria ou em um dispositivo de entrada e sada.
Ativado em T2.
DT/*R Indica a direo da transferncia de dados.
*
DEN Ativo baixo. Data Enable. Indica que vai haver trfego de dados no barramento.
A19/S6, A16/S3 Barramento de dados durante ciclo T1. Barramento de sinais de estado de T2 a T4.
A17/S4
0
0
1
1
S5 = IF
S6 = 0

A16/S3
Significado
0
Segmento Extra
1
Segmento de Pilha
0
Segmento de Cdigo (ou nenhum)
1
Segmento de Dados
Estado de habilitao da interrupo
CPU 8086 tem controle do barramento

TW Wait State Tempo de espera. No perodo de leitura a CPU l o dado do barramento no perodo
T3, aps o dispositivo lido entregar esses dados. Se o dispositivo no conseguir entregar os dados at o final do
ciclo T3, o pino READY do 8086 colocado em nvel lgico baixo, fazendo com que a CPU fique estado de
espera, repetindo do estado T3 quantas vezes forem necessrias, enquanto aguarda o dispositivo entregar os
dados. No perodo de escrita pode acontecer o mesmo. A CPU est pronta para entregar os dados, mas o
dispositivo no est pronto para recebe-los. O pino READY colocado em nvel baixo, gerando perodos de
espera.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

116

9.6

Endereamento de Memria

J foi explicado numa seo anterior como feita a composio do endereo fsico do 8088. Uma das
caractersticas desse microprocessador a sua capacidade de enderear mais que 64 kbytes de memria. O 8088
possui 20 bits de endereos, permitindo ter uma memria fsica de 1.048.576 bytes (ou 1MB).
A gerao de 20 bits, j explicada, feita manipulando o contedo de registradores especiais chamados
Registradores de Segmento. O valor carregado no registrador de segmento usado para localizar, no espao de
1MB, a regio de 64kB onde as instrues do 8088 iro operar. Um outro registrador (que pode ser um reg.
apontador, um reg. ndice ou o BX) pode especificar 64kB dentro de um segmento. O endereo de memria
fsico ser formado pelo deslocamento do contedo do registrador de segmento de 4 bits para a esquerda
(acrescentado-se 4 bits 0 direita), somado a outro valor de 16 bits (acrescentado-se 4 bits 0 esquerda),
resultando num endereo fsico com 20 bits. interessante observar que diferentes combinaes de endereos
lgicos (offsets) e registradores de segmento podem oferecer o mesmo endereo fsico, como exemplificado a
seguir:
EXEMPLO: supondo que SS=8F00h, SP=21F1h, CS=9020h, IP=0FF1h, os endereos fsicos para um
acesso pilha e para a busca da prxima instruo so dados por:
SS = 8F00h
SP =21F1h
endereo fsico

8F000
+ 021F1

CS = 9020h
IP = 0FF1h
endereo fsico

911F1h
90200
+ 00FF1

911F1h

Na realidade os quatro registradores de segmento no 8088 (CS, DS, SS e ES) podem assumir o mesmo
valor, ou valores prximos, ou seja, podem se sobrepor parcial ou totalmente. O programador deve tomar
cuidado para que isto apenas ocorra se for estritamente necessrio.
Estes 4 registradores podem apontar para qualquer regio de 64 kB, no espao de 1 MB. Uma vez
setados, haver uma regio de 64kB para o cdigo (CS), 64kB para dados (CS), 64kB para pilha (SS) e 64kB
para dados extra (ES). Em qualquer momento que o programa necessite manipular a memria fsica, fora das
atuais regies de 64 kB, ele deve manipular o registrador de segmento apropriado (alterando-o atravs de
instrues de transferncia de dados. As figuras a seguir ilustram as regies definidas pelos registradores de
segmento sem e com sobreposio.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

117
FFFFFH

Offset
CS

16

Offset
DS

64 kB

16

Offset
SS

64 kB

16

Offset
ES

64 kB

64 kB

16
00000H
MULTIPLICIDADE DE ENDEREOS

Um mesmo endereo pode ser acessado usando diferentes registradores de segmentos e diferentes registradores
de offset
FFFFFH

64 kB
Endereo Fsico
CS

16

SS

16

64 kB

00000H
Exemplo: Endereo Fsico = 10020 h
Possibilidades de pares SEGMENTO:OFFSET
1000h:0020h = 1000h * 10h + 20h
1001h:0010h = 1001h * 10h + 10h
1002h:0000h = 1002h * 10h + 00h
Um segmento tem at 64 kBytes
Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

118

Como o segmento multiplicado por 16 na formao do endereo

O espao mnimo entre dois segmentos consecutivos 16 bytes

No intervalo de 64 kBytes h 6353616 = 4096 possibilidades diferentes de enderear a mesma posio fsica de
memria.

9.7

Linguagem de Programao ASSEMBLY do 8086


Conceito de tipo Cada smbolo (nome de varivel, endereo, constante) tem um determinado tipo.

Tipos da linguagem assembly ASM-86:


BYTE PTR referencia uma varivel de 1 byte
WORD PTR referencia uma varivel de 1 word
DWORD PTR referencia uma varivel de 2 words
NEAR PTR referencia o endereo de destino de uma instruo de desvio do tipo near
FAR PTR referencia o endereo de destino de uma instruo de desvio do tipo far
NUMBER constante de 16 bits
near altera somente IP (intra segmento)
far altera IP e CS (inter segmento)

Obs.:

Exemplos:
MOV AX, [BX] copia o word endereado por BX para AX o tipo do smbolo usado j est implcito
(uma vez que AX de 16 bits), no havendo necessidade de informar ao assembly.
INC [BX] necessrio informar se deve ser incrementado o BYTE de offset BX ou o WORD de offset BX:
INC BYTE PTR [BX] incrementa o byte cujo offset o valor contido em BX
INC WORD PTR [BX] incremeta word que se encontra nos endereos BX e BX+1.

FORMATO DAS INSTRUES DO 8086


Instrues compactas otimizao do uso da memria e da velocidade de leitura das instrues

codificao mais complexa do que a do 8085


instrues com comprimento de 1 a 6 bytes
instrues no precisam ocupar exatamente 1 byte
bits restantes podem ser usados
Formato das instrues de transferncia de dados:
7

2
opcode

1
s

0
w

0 7
postbyte

0 7
data

0
data if sw=01

Ou
7

Microprocessadores e Microcomputadores

5
4
3
2
opcode
postbyte
data
data if s w = 0 1

1
s

0
w

Byte 1
Byte 2
Byte 3
Byte 4

Prof. Jos Wilson Lima Nerys

119
opcode cdigo da operao
w se w = 0 instruo manipula byte; se w = 1 instruo manipula word
postbyte:
7

mod

4
reg

1
r/m

Se mod = 1 1 o operando da instruo um registrador, que identificado em r/m


Se a instruo envolver dois registradores o campo reg identifica o segundo registrador.

9.8

Modos de Endereamento e Endereos de Memria Efetivo


Como observado anteriormente, um endereo fsico (20 bits) constitudo de duas partes:
um segmento ou valor base;
um offset ou endereo efetivo.

Um Endereo Efetivo (EA: Effective Address) a parte offset do endereo fsico. Ele formado pela
soma de um deslocamento (um nmero) com um registrador base (BX ou BP) e com um registrador ndice (SI
ou DI) (exemplo: MOV AX, [BP+SI+4]). A referncia de memria com omisso de qualquer uma destas partes
tambm chamada de Endereo Efetivo (por exemplo, a parte offset do exemplo anterior poderia ser [BP+4] ou
[BP+SI]).
Uma das vantagens de se escrever instrues com endereos efetivos que um endereo de memria
pode ser modificado baseado em condies do programa. Isto particularmente til quando se trabalha com
tabelas (ou matrizes). Por exemplo, BP pode ser setado para apontar para a base (o incio) da tabela e SI (que
armazena o resultado de um clculo) localiza um elemento na tabela.
A tabela abaixo sumariza os modos de endereamento do 8088 e os registradores que esto disponveis
em cada modo.
Modo Endereamento

Imediato
Registrador
Direto
Indireto por Registro
(BX, BP, SI, DI)
Indexado
(SI ou DI)
Baseado
(BP ou BX)
Baseado e Indexado
Baseado e Indexado com
deslocamento
Strings

Exemplo
Mnemnico
MOV AX, 1000H
MOV DX, CX
MOV AH, [1000H]
MOV AX, [SI]

Registrador de
Segmento acessado
Code CS
Data DS
Data DS

Operao

MOV AX, [SI+6]

Data DS

AL [SI+6]; AH [SI+7]

MOV AX, [BP+2]

Stack SS

AL [BP+2]; AH [BP+3]

MOV AX, [BX+SI]

Data DS

MOV AX, [BX+SI+5]

Stack SS

MOVSB

Extra, Dado
ES, DS

AL [BX+SI];
AH [BX+SI+1]
AL [BX+SI+5];
AH [BX+SI+6]
[ES:DI] [DS:SI]
se DF = 0 ento:
SI SI+1 e DI DI+1
se DF = 1 ento:
SI SI -1 e DI DI -1

AX 1000H
DX CX
AH [1000H]
AL [SI]; AH [SI+1]

ENDEREAMENTO POR REGISTRADOR


Operando est em um registrador (de 16 bits AX a DI ou de 8 bits AH a DL)
Ex.: MOV AX, BX copia contedo de BX para AX
CMP AL, DL compara contedos de AL e DL (e seta flags)

ENDEREAMENTO IMEDIATO
Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

120

Operando faz parte da prpria instruo. Usado para atribuir valores de 8 ou 16 bits a registradores
Ex.: MOV AX, 1000H faz AX = 1000H
CMP SI, 0000H compara contedo de SI com 0000H (e seta flags)
Obs.: Modo imediato no pode ser usado para os registradores de segmento, nem para as instrues PUSH

ENDEREAMENTO ABSOLUTO OU DIRETO


O operando est na memria. A instruo contm o offset do endereo do operando (o segmento DS).
Ex.: MOV AX, [1000H] copia para AX o contedo localizado nos offsets 1000H e 1001 H, ou seja,
AX = 1234 H.
Endereo
1000H
1001H
1002H

Dado
34H
12H
25H

ENDEREAMENTO INDIRETO
O operando est na memria. A instruo, ao invs de conter o offset do endereo, como no caso direto,
contm um registrador, que contm o offset do endereo do operando. Os registradores de offset podem ser BX,
BP, DI ou SI (o segmento DS).
Ex.: MOV AX, [BX] copia para AX o contedo localizado no offset dado em BX. Se BX = 1000h,
ento AX = 1234h
Endereo
1000H
1001H
1002H

Dado
34H
12H
25H

Exemplo de aplicao: Tabelas, onde o endereo de leitura da tabela dado atravs do registrador de
offset, que incrementado para varredura da tabela.

ENDEREAMENTO INDEXADO
Uma constante, denominada base, e um registrador de ndice so usados. A base e o ndice so somados
para a obteno do offset do endereo. Os registradores de ndice podem ser BX, BP, DI ou SI
Ex.: MOV AX, 0100H[BX] copia para AX o contedo localizado no offset dado por BX + 0100H.
Se BX = 1000h, ento BX + 0100H = 1100H e AX = 1234h
Endereo
1100H
1101H
1102H

Dado
34H
12H
25H

Exemplo de aplicao: Tabelas, onde a posio inicial da tabela pode ser dada atravs da base; o ndice
pode ento ser variado para varredura da tabela.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

121

ENDEREAMENTO BASEADO
o contrrio do endereamento indexado, ou seja, o contedo de um registrador copiado para uma
posio varivel indicada por um registrador e uma constante. Registradores usados: BX, BP, DI ou SI
Ex.: MOV [BX + 0100H], AX copia contedo de AX para o endereo BX + 0100H. Se BX =
1000H, ento BX + 0100H = 1100H. Se AX = 1234H, ento o valor 34H ser armazenado
em 1100H e o valor 12H ser armazenado em 1101H.
Endereo
1100H
1101H
1102H

Dado
34H
12H
xxH

Exemplo de aplicao: Tabelas, onde a posio inicial da tabela pode ser dada atravs da base; o
ndice pode ento ser variado para varredura da tabela.

ENDEREAMENTO RELATIVO
As instrues de desvio e chamadas de subrotina do tipo near ou short somam ou subtraem um valor de
deslocamento para o desvio, ao invs de usar o endereo longo.
Offset de destino = offset da instruo seguinte + deslocamento

9.9
9.9.1

Interrupes do 8086
Estrutura de interrupo do 8086:

Enquanto o 8085 possui apenas 5 canais de interrupo, o 8086 capaz de tratar de 256 interrupes
diferentes, numeradas de 00h a FFh (ou 0 a 255 decimal). Ao contrrio do 8085, a localizao de cada
interrupo no vem pr-definida no microprocessador; existe uma tabela, mostrada a seguir, com os vetores de
interrupo, onde o endereo fsico de cada interrupo colocado.
Nmero da
Interrup.
0

Endereo do vetor Endereo do tratador


de interrupo
da interrupo
0000h:0000h
IP low h
0000h:0001h
IP high h
0000h:0002h
CS low h
0000h:0003h
CS high h
0000h:0004h
IP low h
0000h:0005h
IP high h
0000h:0006h
CS low h
0000h:0007h
CS high h
0000h:0008h
IP low h
0000h:0009h
IP high h
0000h:000Ah
CS low h
0000h:000Bh
CS high h

Endereo efetivo do Endereo do tratador


vetor de interrupo
da interrupo
0000h:0000h
CS:IP

0000h:0004h

CS:IP

0000h:0008h

CS:IP

0000h:4i
0000h:(4i+1)
0000h:(4i+2)
0000h:(4i+3)

IP low h
IP high h
CS low h
CS high h

0000h:4i

CS:IP

255

0000h:03FCh

IP low h

0000h:03FCh

CS:IP

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

122
0000h:03FDh
0000h:03FEh
0000h:03FFh

IP high h
CS low h
CS high h

Obs.: O endereo efetivo da interrupo INT n : 0000h:4n


9.9.2

Interrupes Pr-definidas, reservada ou excees

O 8086 possui trs tipos de interrupo: Interrupes Pr-definidas, reservadas ou excees,


Interrupes por Hardware e Interrupes por Software.
As interrupes de 0 a 31 (ou 00h a 1Fh) so reservadas. Elas tm finalidades especficas para o 8086.
Dentre as reservadas 5 interrupes j so pr-definidas no 8086:

9.9.3

Nmero da
Interrup.
00 H

Endereo do
vetor
0000h:0000h

01 H

0000h:0004h

02 H

0000h:0008h

03 H

0000h:000Ch

04 H

0000h:0010h

05 H 1F H

0000H:0014H
at
0000H:007C H

Finalidade
Diviso por zero. chamada sempre que o divisor de uma operao
de diviso for zero.
Execuo passo a passo. chamada sempre que a Flag de Trap (T)
estiver setada. Facilita a depurao de um programa.
NMI = Interrupo No-Mascarvel. Equivale TRAP do 8085. Pino
17 do 8086.
Breakpoints. Permite a execuo de programas para depurao at um
endereo especificado pelo programador.
Overflow. chamada sempre que a Flag de Overflow estiver setada,
indicando que o contedo do resultado no cabe no registrador de
destino.
Interrupes que no so pr-definidas, mas so reservadas para o
8086. As diversas verses de sistemas usando o 8086 usam essas
interrupes para finalidades especficas, mas no necessariamente
idnticas entre os sistemas.

Interrupes por Hardware

So interrupes solicitadas atravs do pino INTR (pino 18). Nesse pino conectado um controlador de
interrupo que amplia para 8 os pedidos de interrupo. So interrupes mascarveis atravs do bit IF do
registrador de flags. A seqncia de atendimento de uma interrupo por hardware :

9.9.4

8086 envia primeiro pulso *INTA para perifrico, aps receber pedido de interrupo. Aps esse sinal
reconhecimento de pedido de interrupo o perifrico prepara-se para enviar o nmero da interrupo
8086 envia segundo pulso *INTA para perifrico, tendo como resposta do perifrico o nmero da
interrupo colocada no barramento de dados
8086 salva PSW na pilha
Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita
interrupes por INTR)
Salva CS (segmento) e IP (offset) na pilha
Carrega novo IP a partir do endereo 4*nn
Carrega novo CS a partir do endereo 4*nn + 2

Interrupes por Software

So interrupes solicitadas atravs da instruo INT nn, onde nn deve estar entre 32 e 255 (as
interrupes de 0 a 31 so reservadas). As interrupes geradas pela instruo INT nn no so mascarveis. A
seqncia de atendimento de uma interrupo por software e tambm de uma interrupo reservada :

Salva PSW na pilha

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

123

Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita
interrupes por INTR)
Salva CS (segmento) e IP (offset) na pilha
Carrega novo IP a partir do endereo 4*nn
Carrega novo CS a partir do endereo 4*nn + 2

Embora existam 256 interrupes por software, cada uma delas pode ter at 256 sub-funes diferentes,
ou seja, atravs das interrupes por software, pode-se executar 256*256 = 65.536 funes diferentes.
Normalmente o registrador AH usado para passar para a interrupo qual a funo a ser executada. A tabela a
seguir exemplifica algumas dessas funes.
Interrupo
INT 10 H

Finalidade macro
Servios de vdeo

Subfuno
00 H

( uma funo do
BIOS)

01 H

02 H

INT 21 H

Servios Gerais

01 H

( uma funo do
DOS)

02 H
08 H
09 H
25 H

31 H

4C H

Registradores
AH = 00 H
AL = modo
AH = 01 H
CH: bit 7 = 0
Bits 6 e 5
Bits 4 a 0
CL: bits 4 a 0
AH = 02 H
BH = 0 a 3
DH = linha
DL = coluna

Descrio da subfuno
Seta o modo vdeo
AL = 03 VGA 80 x 25
Seta tamanho do cursor
00 normal; 01 invisvel
Linha mais alta do caracter para o cursor
Linha mais baixa do caracter para o cursor
Seta posio do cursor
Nmero da pgina de vdeo
00 H linha superior
00 H coluna da esquerda

AH = 01 H
AL
AH = 02 H
DL
AH = 08 H
AL
AH = 09 H
DS:DX
AH = 25 H
AL
DS:DX
AH = 31 H
AL
DX
AH = 4C H
AL

L caractere da entrada padro, com eco.


Retorna o cdigo ASCII do caractere lido
Escreve caractere na sada padro
Contm o cdigo ASCII do caractere
L caractere da entrada padro, sem eco
Retorna o cdigo ASCII do caractere lido
Escreve na sada padro textos terminados em $
Endereo de incio do texto
Seta vetor de interrupo
Nmero do vetor de interrupo a ser modificado
Novo valor para o vetor a ser modificado
Encerra programa e deixa residente (TSR)
Cdigo de retorno
Nmero de pargrafos que devem ficar residentes
Encerra programa
Cdigo de retorno

9.10 Conjunto de Instrues do 8088/86


H mais de 3000 opcodes distintos se considerados os vrios modos de endereamento. Abaixo esto
listadas algumas instrues relativas a cada grupo funcional.
9.10.1

Instrues de Transferncia de Dados


movimentao de dados entre dois registradores,
entre um registrador e posio de memria,
entre registradores e portas [I/O].
FORMATO: destino, fonte

Formas genricas possveis:


MOV REG, memria
MOV memria, REG
MOV REG, REG
MOV memria, imediato
MOV REG, immediate

Copia contedo da posio de memria para o Registrador indicado


Copia contedo do registrador indicado para a posio de memria
Copia contedo de um registrador para outro
Carrega posio de memria com valor indicado
Carrega registrador com valor indicado

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

124

Formas genricas possveis para os registradores de segmento:


MOV SREG, memria
MOV memria, SREG
MOV SREG, REG
MOV REG, SREG

Copia contedo da posio de memria para o Registrador de


segmento indicado
Copia contedo do registrador de segmento indicado para a posio
de memria
Copia contedo de um registrador comum para um de segmento
Copia contedo de um registrador de segmento para um comum

Podem ser movimentados byte ou word, sendo que os registradores Ponteiros (BP e SP), ndices (SI e
DI) e de Segmento (CS, DS, SS, ES) apenas podem ser acessados como word (16 bits).
DEFINIO DE POSIO DE MEMRIA: Ao escrever programas conveniente dar nomes a
posies de memria: para isto utiliza-se pseudo-instrues.
MEMBY
MEMBY

DB
DB

?
3A H

; varivel MEMBY (do tipo "byte") com valor indefinido


; varivel MEMBY com valor definido e igual a 3A H

MEMWO
MEMWO

DW
DW

?
; varivel MEMWO (do tipo "word") com valor indefinido
21AB H ; varivel MEMWO com valor definido e igual a 21AB H

Exemplos de mnemnicos com instrues de transferncia


Mnemnico
Descrio
MOV AX, 0100 H
MOV DL, 23 H
MOV CL,char
MOV BP, A8
MOV DS, AX
MOX AX, BX
MOV AL, BL
MOV AX, CS
MOV AX, [BX]
MOV [BP], CL
MOV AH, [SI]
MOV AX, [1000 H]
MOV CL, MEMBY
MOV CX, MEMWO
MOV CX, [MEMWO]
MOV BX, [BX+2]
MOV [BP+2], BH
MOV AX, [SI-6]
MOV AX, [BX+SI]
MOV BX, [BP+SI+3]
MOV BX, MEMBY[SI]

Carrega registrador de 16 bits AX com valor 0100 h


Carrega registrador de 8 bits DL com valor 23 h
Carrega registrador de 8 bits com cdigo ASCII do caractere
Carrega registrador de 16 bits BP com valor 00A8 h
Registrador de segmento DS carregado com contedo de AX
Carrega AX com contedo de BX
Carrega registrador de 8 bits AL com contedo de BL
Carrega registrador AX com contedo do segmento CS
Carrega AX com contedo do endereo de offset BX
Carrega posio de offset BP com valor contido em CL
Carrega AH com valor da posio cujo offset SI
Faz AL [1000 H] e AH [1001 H]
Carrega CL com posio da varivel de 1 byte MEMBY
Carrega CX com posio da varivel de 1 word MEMWO
Carrega CX com posio da varivel de 1 word MEMWO
Carrega BX com contedo da posio BX+2 e BX+2+1
Carrega posio BP+2 com contedo do registrador BH
AL [SI 6] e AH [SI 5]
AL [BX + SI] e AH [BX + SI + 1]
BL [BP + SI + 3] e BH [BP + SI + 3 + 1]
O mesmo que MOV BX, [SI+MEMBY]

Observaes.:
(a) Um registrador de segmento no pode ser carregado usando o modo imediato. Exemplos
incorretos: MOV CS, 1000, MOV DS, 3A00.
(b) Somente o registrador BX e os ponteiros e ndices podem referenciar memria. Exemplos
incorretos: MOV AX, [DX], MOV CX, [AX]
(c) Destino e fonte no podem especificar posies de memria ao mesmo tempo. Exemplo incorreto:
MOV [BX], [SI]
Instrues Especiais de Transferncia de Dados:
Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

125
Mnemnico
XCHG AX, BX
XCHG AL, CL
XCHG DX, [SI]
LAHF
SAHF
IN AH, 26
IN AL, DX
OUT 26, AX
OUT DX, AX
LEA BX, MEMBY

Descrio
permuta registradores AX e BX (AX BX)
Permuta registradores AL e CL
Permuta DX com o contedo da posio de memria endereada por SI.
Neste exemplo DL [SI] e DH [SI + 1]
AH Flags low
Flags low AH
IN direto
IN indireto para as 65536 portas (0 - 65535 ou 0000 - FFFF).
Aplica-se as mesmas regras da instruo IN.

Load Efective Address: carrega endereo efetivo. No exemplo, BX


carregado com o endereo efetivo de MEMBY (notar a diferena desta
com a instruo "MOV BX, MEMBY")
LEA BX, [1000]
BX 1000
LDS BX, dword ptr [SI] Load Pointer using DS. No exemplo BX [SI+1:SI], DS [SI+3:SI+2].
Esta instruo util quando preciso estabelecer novo endereo absoluto
(composio endereo base + endereo de offset)
LES BX, dword ptr [SI] Load Pointer using ES. No exemplo BX [SI+1:SI], ES [SI+3:SI+2]
XLAT
AL [BX+AL]. Carrega registrador AL com o contedo (byte) da tabela
iniciada em [BX] e com offset AL
Obs.:
(a) A instruo IN somente pode ser usada para as primeiras 256 portas (0 a 255). Portas c/ endereo > 255
devem utilizar somente reg. DX (referncia de I/O). Exemplo no permitido: IN AX, 3400.
(b) A instruo IN deve utilizar somente o registrador AX. Exemplo no permitido: IN BL,DX.

Exemplo 1: O programa a seguir demonstra o uso de instrues de transferncia de dados. O caractere


A escrito diretamente na memria de vdeo.
Mnemnico
#MAKE_COM#
ORG 100h
MOV AX, 0B800h
MOV DS, AX
MOV CL, 'A'
MOV CH, 01011111b
MOV BX, 15Eh
MOV [BX], CX
HLT

Descrio
Diretiva para o compilador gerar um arquivo .com
Diretiva que indica o endereo inicial do programa: 0100 H
Carrega registrador AX com valor B800 H
Copia valor de AX para DS, definindo segmento de dados
Carrega CL com o cdigo ASCII do caractere A, isto , 41 H
Carrega CH com o valor binrio 01011111 b = 5F H
Carrega registrador BX com valor 015E H
Copia contedo de CX na posio DS:BX, ou seja, B800:015E
Pra programa

Exemplo 2: Programa que demonstra o uso de variveis


Mnemnico
#MAKE_COM#
ORG 100h

Descrio
Diretiva para o compilador gerar um arquivo .com
Diretiva que indica o endereo inicial do programa: 0100 H

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

126

9.10.2

MOV AL, var1


MOV BX, var2
RET

Carrega registrador de 8 bits AL com valor 7 (varivel var1)


Carrega registrador BX de 16 bits com valor 1234 H (var2)
Pra o programa

var1 DB 7
var2 DW 1234h

Define varivel var1 como byte de valor 7 decimal


Define varivel var2 como Word de valor 1234 hexadecimal

Instrues de Strings
instrues para movimentao de blocos de dados (ou seja, vrios bytes).
reg. de seg. DS utilizado como base e o reg. ndice SI (Source Index) como offset para o clculo do
endereo fonte. Simbologia: DS:SI. (OBS: aceita registrador de segmento alternativo, por exemplo,
CS, SS e ES).
reg. de seg. ES utilizado como base e o reg. ndice DI (Destination Index) como offset para o clculo
do endereo destino. Simbologia: ES:DI (OBS: no aceita registrador de segmento alternativo.
Dever ser sempre ES).
o flag DF (Direction Flag) consultado nestas operaes.

Instrues para movimentao de strings


Mnemnico
Descrio
MOVS BYTE PTR ES:[DI],[SI]
Copia bloco de dados de uma regio para outra da memria.
Origem: regio DS:SI (a origem sempre do segmento DS)
Destino: regio ES:DI (o destino ES, mas poderia ser CS, DS ou SS)
MOVS WORD PTR ES:[DI],[SI] Idntico ao anterior, mas a movimentao um Word por vez.
STOS BYTE PTR ES:[DI], AL
STOS WORD PTR ES:[DI], AX

LODS BYTE PTR AL, ES:[DI]


LODS WORD PTR AX, ES:[DI]

CMPS BYTE PTR ES:[DI],[SI]


CMPS WORD PTR ES:[DI],[SI]

Armazena o byte em AL no endereo ES:DI. (Poderia ser CS, DS ou SS)


ES:[DI] AL. Se D = 0 incrementa DI; se D = 1 decrementa DI
Armazena o word em AX no endereo ES:DI. (Poderia ser CS, DS ou SS)
ES:[DI] AL. Se D = 0 incrementa DI; se D = 1 decrementa DI
Carrega AL com byte da posio ES:DI
AL DS:[SI]. Se D = 0 incrementa SI; Se D = 1 decrementa SI
Carrega AX com word da posio ES:DI
AL DS:[SI]. Se D = 0 incrementa SI; Se D = 1 decrementa SI
Compara bloco de bytes de duas regies de memria
Compara bloco de word de duas regies de memria

Instrues para movimentao de strings


Mnemnico
Descrio
STOSB
Armazena o byte em AL no endereo padro ES:DI.
ES:[DI] AL. Se D = 0 incrementa DI; se D = 1 decrementa DI
STOSW
Armazena o word em AX no endereo padro ES:DI.
ES:[DI] AL ; ES:[DI + 1] AH. Se D = 0 DI DI + 2; Se D = 1 DI DI -2
LODSB
LODSW
MOVSB

MOVSW

Copia em AL o byte localizado no endereo padro DS:SI.


AL DS:[SI]. Se DF=0 incrementa SI; Se DF=1 decrementa SI
Copia em AX o word localizado no endereo padro DS:SI.
AL DS:[SI]; AH DS:[SI+1]. Se DF=0 SI SI+2; Se DF=1 SI SI -2
Copia bytes da regio de origem padro (DS:SI) para a regio de destino padro (ES:DI).
Sendo a origem e o destino as regies padres (ao contrrio da instruo MOVS), a instruo
no precisa de argumentos.
ES:[DI] DS:[SI]. Se D = 0, incrementa SI e DI; Se D = 1, decrementa SI e DI.
Copia words da regio de origem padro (DS:SI) para a regio de destino padro (ES:DI).

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

127
Sendo a origem e o destino as regies padres (ao contrrio da instruo MOVS), a instruo
no precisa de argumentos.
ES:[DI] DS:[SI]; ES:[DI+1] DS:[SI+1].
Se D = 0, DI DI + 2 e SI SI + 2; Se D = 1, DI DI 2 e SI SI 2
CMPSB
CMPSW

Compara os bytes das posies DS:SI e ES:DI e atualiza Flags.


DS:[SI] ES:[DI].
Compara os words das posies DS:SI e ES:DI e atualiza Flags.
DS:[SI+1:SI] ES:[DI+1:DI].

Uso do Prefixo REP (Repeat)


Precedendo as instrues de transferncia de strings com "REP" faz com que estas instrues sejam
repetidas o nmero de vezes igual ao contedo do registrador CX.
EXEMPLO 1: Uso de MOVSB e REP
Mnemnico
#make_COM#
ORG 100h
LEA SI, a1
LEA DI, a2
MOV CX, 5
REP MOVSB
RET

Descrio
Diretiva para o compilador
Diretiva para o compilador programa comea na posio 100h
Offset SI assume o endereo do primeiro valor da varivel a1.
Offset DI assume o endereo da varivel a2.
Registrador CX recebe valor 5
Instruo MOVSB repetida at o registrador CX alcanar 0.
Encerra programa

a1 DB 1,2,3,4,5
a2 DB 5 DUP(0)

Variveis
A varivel a2 ter 5 valores zero, conforme declarado em 5 DUP(0).

EXEMPLO 2: Um bloco de memria de 10 bytes com caractere "A3" armazenado na memria, a partir do
endereo fsico E0000 H.
Mnemnico
#make_COM#
ORG 100h

MOV AX, 0E000 H


MOV ES, AX
MOV DI, 0000
MOV AL, 0A3 H
CLD
MOV CX, 10
REP STOSB
HLT

Descrio
Diretiva para o compilador
Diretiva para o compilador programa comea na posio 100h
AX = E000 h
Segmento especial ES = AX = E000 h
DI = 0000h ES:DI = E0000 + 00000 = E0000 h
Byte a ser armazenado colocado em AL
clear direction flag (resseta flag "direo": modo auto-incremento)
Faz CX = 10 sero armazenado 10 bytes a partir de E0000 h
Repete instruo 10 vezes
Pra programa

EXEMPLO 3: Copiar um bloco de memria de 1000 bytes do endereo fsico A1000H para o endereo fsico
E1000 H.
Mnemnico
MOV AX, 0A000 H
MOV DS, AX
MOV SI, 1000 H
MOV AX, 0E000 H
MOV ES, AX
MOV SI,1000 H
MOV DI,1000 H
CLD
MOV CX, 03E7 H
REP MOVSB

Descrio
AX = A000 H valor que ser passado para registrador de segmento DS
Segmento de dados DS = AX = A000 h
SI = 1000h DS:SI = E0000 + 00000 = A1000 h
AX = E000 h valor que ser passado para registrador de segmento ES
Segmento especial ES = AX = E000 h
Registrador de offset SI = 1000 h DS:SI = A1000 H
Registrador de offset DI = 1000 h ES:DI = E1000 H
clear direction flag (resseta flag "direo": modo auto-incremento)
Faz CX = 03E7 h sero armazenado 1000 bytes a partir de E0000 h
Repete instruo 1000 vezes sero copiados 1000 bytes

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

128

9.10.3

Instrues Lgicas

referem-se a funes de lgica booleanas;


cada instruo realizada bit a bit;
H tambm instrues de rotao e deslocamento;
H 5 instrues booleanas: NOT, AND, OR, XOR, TEST.

Mnemnico
NOT BX
NOT BYTE PTR [SI]
NOT WORD PTR [SI]
AND CX, DX
AND BL, BYTE PTR [SI]
AND AX, 8000 H
OR CX, DX
OR BL, BYTE PTR [SI]
OR AX, 8000
XOR CL, DH
XOR BX, WORD PTR [SI]
XOR AX, 8000
TEST CX, DX

Descrio
BX complementado (seus bits so invertidos)
Byte apontado por SI complementado
Word apontado por SI complementado
Funo AND entre CX e DX
Funo AND entre BL e contedo do Byte apontado por SI
Funo AND entre AX e 8000 H
Funo OR entre CX e DX

Funo XOR entre CL e DH


Funo XOR entre BX e o Word apontado por SI
Semelhante ao AND, apenas no altera os operandos. utilizado quando se
deseja testar vrios bits: se o teste do 1o bit fracassa, pode-se testar o 2o bit.

TEST AX, 3000


EXEMPLO: Determine o estado do registrador AL e dos flags aps as sequncia de instrues:
MOV AL, 6D
MOV BH, 40
AND AL, BL
Resultado das Flags:
C = 0 no houve transporte do bit 7 para o 8 na operao de 8 bits executada
Z = 1 o resultado da operao zero
S = 0 o bit mais significativo aps a operao zero (nmero positivo)
O = 0 no houve overflow na operao.
P = 1 h um nmero par de bits 1 nos 8 primeiros bits, aps a operao (nmero de 1s = 0)
A = 0 no houve transporte do bit 3 para o bit
I = 1 interrupo desabilitada
D = 0 os registradores SI e DI sero incrementados nas operaes com string
Instrues de Deslocamento e de Rotao
SHL AL, 1
SHL BX, CL

Deslocar esquerda uma vez. Formato: SHL destino, contador


Deslocar a esquerda CL vezes.

SHR AX, 1
SHR BL, CL

Deslocar direita uma vez.


Deslocar direita CL vezes

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

129
ROL AL, 1
ROR CX, CL

Rodar esquerda.
Rodar direita CL vezes.

RCL AL, 1

rodar a esquerda atravs do CY

RCR DL, CL

Rodar direita atravs do CY CL vezes.

9.10.4

Instrues Aritmticas
Mnemnico
ADD SI, DX
ADD BYTE PTR [BX], CH
ADD DI, 6000
ADC SI, DX
ADC BYTE PTR [BX], CL
SUB AX, BX
SUB BL, 34
SBB AX, CX
SBB BL, 34
DAA
DAS
AAA
AAS
INC CL
INC WORD PTR [SI]
DEC CX
DEC WORD PTR [SI]
NEG DX
NEG WORD PTR [SI]
CMP BL, BH
CMP [BX], CX
MUL BL
MUL CX
IMUL BL
DIV BL
DIV CX
IDIV BL

9.10.5

Descrio
soma de registradores

soma de registradores com carry


subtrao de registradores
subtrao de cte imediata
subtrao de registradores com borrow
subtrao de cte imediata com borrow
ajuste decimal para adio
ajuste decimal para subtrao
ajuste ASCII para adio
ajuste ASCII para subtrao
incremento de registrador
incremento de byte apontado por SI
decremento de registrador
complemento de 2 de registrador
comparao entre dois registradores, BL e BH
comparao entre word apontado por BX e CX
multiplicao de byte: AX AL * BL
multiplicao de word: DX:AX AX * CX
multiplicao de nmero com sinal
diviso de byte: AX AL / BL (AL: quociente; AH: resto)
diviso de word: DX:AX AX / CX (AX: quoc.; DX: resto)
diviso de nmero com sinal

Instrues de Desvio
Mnemnico
JMP [BX]
JMP BX
JMP DWORD PTR [BX];

Descrio
Desvio Incondicional
IP [BX+1:BX]
IP BX
IP [BX+1:BX] ; CS [BX+3:BX+2]
Desvio condicional

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

130
JNC LABEL
JS LABEL
LOOP LABEL
LOOPE LABEL

PUSH CX
PUSH [DI+2]
POP DS
PUSHF
POPF

desvia para LABEL se flag carry = 0 (se no h carry)


desvia para LABEL se MSB =1 (flag de sinal =1)
decrementa CX e desvia para LABEL se CX 0
decrementa CX e desvia para LABEL se CX 0 e ZF = 1

PUSH e POP S pode ser aplicado a registrador de 16 bits


salva registrador CX na pilha
salva posio de memria apontada por DI+2 e DI+3
Recupera DS da pilha
Salva registrador de Flags na pilha
Recupera registrador de Flags da pilha
CALL e RETURN
chamada de sub-rotina "DELAY"
chamada de sub-rotina iniciada pelo contedo de memria
apontado por BX: IP [BX+1:BX]
chamada de sub-rotina iniciada pelo BX: IP BX
retorno de sub-rotina
retorno de rotina de interrupo (restaura CS e IP)

CALL DELAY
CALL [BX]
CALL BX
RET
IRET

Interrupes por Software


Guarda na pilha o endereo de retorno (CS:IP), antes de chamar
a interrupo nn.

INT nn

9.10.6

Instrues de Controle
Mnemnico
STI
CLI
STC
CLC
CMC
STD
CLD
HLT
WAIT
NOP
LOCK instruction

Descrio
seta flag Interrupo
resseta flag Interrupo
seta carry flag
resseta carry flag
complementa carry flag
seta flag direo
resseta flag direo
para a CPU
para a CPU at o pino test ficar ativo
sem operao (utilizado para gerar delay)
coloca Pino LOCK em "0" durante a execuo da prxima instruo
(instruction)

9.11 Caractersticas de I/O do PC-XT


9.11.1 Diviso dos Endereos dos Dispositivos de I/O do PC-XT
Apesar de possuir 20 bits de endereo, a arquitetura do 8088 suporta apenas 64KB (65.536) endereos de
dispositivos de I/O pois os bits de endereamento A16 a A19 no so utilizados. A configurao usada no PC
tambm no usa toda esta capacidade. Somente os 10 bits menos significativos do barramento de endereos so
utilizados. Como 210 = 1024, este o nmero de endereos de I/O disponveis no PC (0000h a 03FFh). A figura
abaixo mostra a diviso de endereos no PC.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

131

O bit A9 tem um significado especial no projeto do PC: quando est inativo (0), os dados no podem ser
recebidos (pelo micro) vindo dos slots. So habilitados apenas dados vindos de dispositivos de I/O instalados na
prpria placa me (mother board, main board ou system board). Quando ativo (1), so habilitados a recepo
apenas de dados provenientes dos slots.
Tem-se assim 512 portas para uso interno do PC e 512 portas para uso de dispositivos conectados nos
slots (ver figura abaixo).

Esta diviso aplica-se apenas instruo IN (instruo de entrada de I/O). Para a instruo OUT
(instruo de sada de I/O), todos os 1024 endereos podem ser utilizados nos slots.
Em sintonia com a restrio da instruo IN, o PC usa a primeira metade dos endereos para os
dispositivos da placa principal (placa me) e a metade restante para os dispositivos dos slots (ver figura abaixo).
Endereo
0000 h
01FF h
0200 h
03FF h
0400 h
FFFF h

Quantidade de Endereos

Funo

512

Dispositivos da Placa Principal

512

Dispositivos dos Slots

64.512

No usado no projeto do PC

A seguir sero apresentados os mapas de endereos de I/O do PC-XT. Deve-se observar que novas
placas (por exemplo, placas de som ou de rede) podero decodificar endereos que atualmente esto livres.

9.11.2 Endereos dos Dispositivos da Placa Principal (Placa Me)


Dispositivos de I/O residentes na placa principal fazem o servio de interrupo, transferncia de dados
(DMA), contagem, etc. Na figura abaixo pode ser visto o mapa de endereamento de I/O para a placa principal.
Endereo
0000 h
001F h
0020 h
003F h
0040 h
005F h
0060 h
007F h
0080 h
009F h
00A0 h
00BF h
00C0 h

Quantidade de Endereos

Microprocessadores e Microcomputadores

Funo

32

Chip de DMA (8239)

32

Chip de interrupo (8259)

32

Chip temporizador (8253)

32

Chip PPI (8255)

32

Registrador de pginas DMA

32

Bit de interrupo NMI

320

No codificado ou usado

Prof. Jos Wilson Lima Nerys

132
01FF h

9.11.3 Endereos dos Dispositivos dos Slots


O conhecimento destes endereos torna-se a base de qualquer projeto de interface, j que representam o
ponto de entrada e sada de dados (ver figura na pgina 16).
Nem todos os 512 endereos disponveis no slots podem ser utilizados para interfaceamento pois vrios
endereos so previamente reservados para dispositivos comuns ao sistema. Os dispositivos de I/O que
normalmente so conectados nos slots so joysticks, portas paralelas (impressoras), portas seriais (RS-232),
adaptador grfico (CGA, MDA, EGA, VGA), acionador de disquetes e de disco rgido. Para evitar problemas de
incompatibilidade de placa de interface entre diferentes micros deve-se evitar a duplicao desses endereos.
O modo mais simples de decodificar um endereo para uma porta de I/O ou um grupo de endereos para
projetos de interface inspecionar o mapa de endereamento e encontrar um bloco de endereos no utilizado, e
ento, construir um circuito decodificador adequado. O endereo decodificado dever ser acionado logicamente
com os sinais de barramento IOR (leitura de I/O) ou IOW (escrita de I/O) para gerar entradas ou sadas de
dados, respectivamente.
Outro sinal importante o AEN (Address ENable), gerado pelo controlador de DMA. Quando ativo (1), o
DMA assume o controle dos barramentos e o microprocessador desabilitado. Portanto, tem a funo de
desabilitar a decodificao de endereos de I/O durante o ciclo de DMA: deve fazer parte da lgica de
decodificao. Como mostrado mais frente, a faixa de endereos de 0300h 031Fh est livre para uso em
placas de interface.

9.11.4 O Slot do PC (ISA 8 bits)


O slot do PC apresenta todos os sinais de interesse para a interface com qualquer dispositivo de I/O. Os
sinais disponveis nos slots so os sinais de endereamento, de dados, clock, tenses, etc. A configurao dos
sinais no slot ISA 8 bits pode ser visualizada na figura da pgina 17. Os sinais mais utilizados so dados a seguir:
Alimentao: Servem para alimentar os CI's digitais e analgicos). So eles:
GND
+5 V (B3, B29)
- 5 V (B5)
+12 V (B9)
- 12 V (B7)

(B1, B10, B31)


Imx = 700 mA
Imx = 30 mA
Imx = 100 mA
Imx = 50 mA

Sinais de Controle de I/O:


Servem para controlar o acesso aos CI's de I/O). Alguns principais sinais de controle so:
IOW (B13) - habilita escrita nos perifricos de I/O quando em nvel lgico baixo;
IOR (B14) - habilita leitura dos perifricos pelo microprocessador quando em nvel lgico baixo;
RESET DRV (B2) - sinal de reset utilizado para ressetar portas programveis da placa de interface;
AEN (A11): utilizado na lgica de decodificao de endereos para indicar quando est ocorrendo um DMA;
CLOCK (B20): sinal de clock fornecido pela placa principal, freqncia = 4,77 MHz;
DADOS: de D0 D7 (A9 - A2): sinais provenientes do barramento de dados;
ENDEREOS: de A0 A9 (A31 - A22): sinais provenientes do barramento de endereos.
Todos os demais sinais no so usados freqentemente, pois apenas placas de interface mais
sofisticadas necessitam destes outros recursos.
Endereo
0200 h
020F h
0210 h
021F h

Quantidade de Endereos

Microprocessadores e Microcomputadores

Funo

16

Adaptador de Jogos

16

Unidades de Expanso

Prof. Jos Wilson Lima Nerys

133
0220 h
026F h
0270 h
027F h
0280 h
02EF h
02F0 h
02FF h
0300 h
031F h
0320 h
032F h
0330 h
036F h
0370 h
037F h
0380 h
03AF h
03B0 h
03BF h
03C0 h
03CF h
03D0 h
03DF h
03E0 h
03EF h
03F0 h
03FF h

80

Reservada ou No Documentada

16

Porta Paralela ou Impressora # 2

112

Reservada ou No Documentada

16

Porta Serial #2

32

Placa de Prototipo

16

Adaptador de Disco Rgido

64

No Documentada

16

Impressora Paralela Principal

48

Reservada ou No Documentada

16

Placa de Vdeo Monocromtica

16

Placa de Vdeo EGA

16

Placa de Vdeo CGA

16

Reservado

16

Disco Flexvel e Porta Serial

9.12 Decodificao de Endereos


A decodificao de endereos de I/O semelhante ao mapeamento de memria e utilizada em qualquer
placa de interface. Para acessar perifricos de I/O, o PC-XT utiliza-se apenas 10 bits de endereos, de A0 a A9.
Pode, portanto enderear 1024 endereos diferentes. Decodificar um endereo ou grupo de endereos gerar um
nico sinal, geralmente baixo, a partir dos sinais de endereo e controle. Este sinal chamado de habilitao e
ligado nos CI's perifricos no pino CS (Chip Select) ou CE (Chip Enable). Para gerar este sinal pode-se utilizar
CI's decodificadores e portas lgicas mais simples, decodificando os sinais de controle ( IOR, IOW e AEN) e os
sinais de Endereos 99(A0 at A9). O decodificador 74LS138 um dos decoficadores usados nesse processo.
Um decoficador 74LS154, cuja principal diferena do 74LS138 possuir dois sinais de habilitao e quatro
sinais de seleo, gerando, portanto 16 sadas diferentes.

9.13 Exemplos Gerais


A maioria dos exemplos dados a seguir so exemplos do emulador do 8086 chamado Emu8086 v2.58.
Eles podem ser verificados atravs desse emulador.
1.

Adiciona o contedo de dois registradores


Mnemnico
#make_BIN#
MOV AX, 5
MOV BX, 10
ADD AX, BX
SUB AX,1
HLT

2.

Descrio
Diretiva do compilador para gerar um arquivo .bin
Registrador AX = 0005 (decimal)
Registrador BX = 0010 (decimal)
Faz AX AX + BX AX = 0005 h + 000A h = 000F h (15 dec)
Faz AX AX 0001 h AX = 000F 0001 = 000E h (14 dec)
Pra programa

Calcula a soma dos elementos do vetor V1 e armazena o resultado na varivel V2.


Rtulo

Mnemnico

Microprocessadores e Microcomputadores

Descrio

Prof. Jos Wilson Lima Nerys

134
#make_BIN#
MOV CX, 5
MOV AL, 0
MOV BX, 0
Next: ADD AL, V1[BX]
MOV V1[BX], BL
INC BX
LOOP Next
MOV V2, AL
HLT

Diretiva do compilador para gerar um arquivo .bin


Nmero de elementos CE = 5 (decimal)
Registrador AL registrar a soma dos elementos (valor inicial = 0)
BX o indexador. Valor inicial = 0.
Faz AL AL + [V1 + BX]. Contedo da posio V1 + BX.
Modifica o contedo da posio V1 + BX com o valor de BL
Incrementa BX
Retorna para Next at o contador CX = 0. Decrementa CX automaticamente

Armazena contedo de AL na varivel V2


Pra programa

V1 DB 4, 3, 2, 1, 0 Valores do vetor V1
V2 DB 0
Valor inicial da varivel V2
3.

Carrega registradores com valores em notao binria, hexadecimal e octal.


Rtulo

Mnemnico
#make_BIN#
MOV AL, 00000101b
MOV BL, 0Ah
MOV CL, 10o
ADD AL, BL
SUB AL, CL
HLT

Descrio
Diretiva do compilador para gerar um arquivo .bin
Carrega AL com valor binrio correspondente a 5
Carrega registrador com o hexadecimal de 10
Carrega CL com o valor octal que corresponde a 8
Adicional o contedo de BL ao contedo de AL (5 + 10 = 15)
Subtrai o contedo de CL do contedo de AL (15 8 = 7)

9.14 Problemas Propostos


1.

Rodar o programa int21 do Emu8086 e verificar a entrada de textos pelo usurio e a impresso do
mesmo no vdeo.

2.

Rodar o programa Advanced_io do Emu8086 e verificar o uso do display de 7-segmentos.

3.

Criar um programa para fazer uma contagem hexadecimal crescente de 00 a FFh e mostrar a contagem
no vdeo e no display de 7- segmentos.

4.

Repetir o programa anterior para uma contagem hexadecimal de 0000h at FFFF h, ininterrupta.

5.

Criar um programa para fazer uma contagem decimal crescente de 0 a 50, ininterrupta. Mostrar
resultado no display de 7-segmentos.

6.

Repetir o programa anterior para uma contagem decimal de 0 a 50000.

7.

Criar um programa para fazer uma contagem hexadecimal decrescente de FFh a 00 ininterrupta e
mostrar a contagem no vdeo e no display de 7- segmentos.

8.

Criar um programa para fazer um contagem decimal decrescente ininterrupta de 50000 a 0. Mostrar no
display de 7-segmentos.

9.

Fazer um programa que simula um cronmetro decrescente que conta de 20:00 min at 00:00. Mostrar o
resultado no vdeo, no formato apresentado.

10. Fazer um programa que simula um relgio no formato hh:mm:ss. Mostrar resultado no vdeo.
11. Criar um programa para mostrar trs diferentes frases no vdeo, em linhas diferentes.
12. Fazer um programa para somar os elementos de dois vetores de 5 valores, cada. O resultado deve ser
mostrado no vdeo.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

135
13. Fazer um programa para ler dois valores pelo teclado, adiciona-los e mostrar o resultado no display de
7-segmentos.
14. Adapte o programa stepper_motor do Emu8086 para que o motor fique girando 10 vezes para um
lado e 10 vezes para o outro lado, ininterruptamente.
15. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento simples, ou seja,
permisso para seguir em frente ou virar direita para as duas avenidas (sinal de dois tempos).
16. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os dois
sentidos da avenida horizontal tenha permisso para seguir em frente, virar esquerda ou virar direita
e os veculos da avenida vertical tenham permisso apenas para seguir em frente ou virar direita (sinal
de trs tempos).
17. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os veculos de
todas as pistas possam seguir em frente, virar direita ou virar esquerda (sinal de quatro tempos).

9.15 Referncias Bibliogrficas


[1] ZILLER, Roberto M., Microprocessadores: Conceitos Importantes, Edio do autor, Florianpolis, SC,
Brasil, 2000.
[2] ZELENOVSKY, Ricardo, MENDONA, Alexandre, PC: Um Guia Prtico de Hardware e
Interfaceamento, Intercincia, Rio de Janeiro, RJ, 1996.
[3] Tutorial do Emulador emu8086 http://www.emu8086.com

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

Você também pode gostar