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
2

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


3

Informaes sobre a Disciplina


Disciplina: MICROPROCESSADORES E MICROCOMPUTADORES
Cdigo: 13.05.035
Carga Horria: 96 horas (tericas) e 32 horas (de laboratrio)
Grade Curricular: 1992 - (disciplina do 4o ano)
Ano Letivo: 2006
Aulas Tericas: Quarta-feira: 13:30h s 15:10h (alternando com Controle)
Sexta-feira: 15:30h s 17:10h
Aulas de Laboratrio: Segunda-feira tarde (13:30 s 18:30h)
Professor: 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


4

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


5

- 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 Contedo
1 Uso do Kit do 8085
Programa de Simulao ABACUS
2 Instrues de transferncia de dados (uso do Kit e do simulador ABACUS)
3 Instrues aritmticas (uso do Kit e do simulador ABACUS)
4 Instrues lgicas (uso do kit e do simulador ABACUS)
5 Programao 8085 (uso do kit e do simulador ABACUS)
6 Programao 8085 com Interrupo
7 Programao 8085 com Interrupo
8 Microprocessador 8086: caractersticas bsicas
9 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 Tipo de Valor


Avaliao Mximo
Prova 1 8,0
Nota 1
Laboratrio 2,0
Prova 2 8,0
Nota 2
Laboratrio 2,0
Prova 3 8,0
Nota 3
Laboratrio 2,0
Prova 4 5,0
Nota 4
Projeto Experimental 5,0

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


6

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

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


1.2 NMERO DE TRANSISTORES EM UM MICROPROCESSADOR .....................................................13
1.3 DEFINIES E CLASSIFICAES BSICAS .................................................................................14
1.4 ESTRUTURA BSICA DE UM COMPUTADOR ...............................................................................15
1.4.1 UNIDADE CENTRAL DE PROCESSAMENTO (CPU) ......................................................................16
1.4.2 MEMRIA ...................................................................................................................................16
1.4.3 UNIDADE DE ENTRADA E SADA (I/O) .......................................................................................16
1.4.4 BARRAMENTO ............................................................................................................................16
1.5 NDICE DE DESEMPENHO DE PROCESSADORES .........................................................................17
1.6 MICROPROCESSADOR MICROCONTROLADOR .......................................................................17
1.7 OUTROS CONCEITOS BSICOS: ...................................................................................................17
1.8 SISTEMAS DE NUMERAO .........................................................................................................19
1.8.1 SISTEMA DECIMAL .....................................................................................................................19
1.8.2 SISTEMA BINRIO ......................................................................................................................19
1.8.3 SISTEMA BCD (BINARY-CODED DECIMAL) ..............................................................................19
1.8.4 SISTEMA OCTAL .........................................................................................................................19
1.8.5 SISTEMA HEXADECIMAL ............................................................................................................20
1.9 EXERCCIOS PROPOSTOS ............................................................................................................20
1.10 REFERNCIAS BIBLIOGRFICAS...............................................................................................21

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

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


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

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

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


3.2 MODOS DE ENDEREAMENTO ....................................................................................................33
3.3 GRUPOS DE INSTRUES.............................................................................................................34
3.4 INSTRUES DE TRANSFERNCIA DE DADOS ............................................................................35
3.5 INSTRUES ARITMTICAS ........................................................................................................39
3.6 INSTRUES LGICAS.................................................................................................................43
3.7 INSTRUES DE DESVIO ..............................................................................................................46
3.8 INSTRUES DE CONTROLE, PILHA E ENTRADA E SADA ........................................................49
3.9 FUNCIONAMENTO DA PILHA .......................................................................................................51
3.10 EXEMPLOS DE PROGRAMAS EM ASSEMBLY DO 8085..............................................................52
3.11 EXERCCIOS PROPOSTOS ..........................................................................................................54
3.12 REFERNCIAS BIBLIOGRFICAS...............................................................................................56

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

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


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

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


7

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

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

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


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

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

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


6.2 INTERRUPES ............................................................................................................................75
6.3 CIRCUITOS DE INTERRUPO .....................................................................................................76
6.4 SETAGEM E LEITURA DA MSCARA DE INTERRUPO ............................................................79
6.5 AMPLIANDO A CAPACIDADE DE INTERRUPO ........................................................................80
6.6 DISPOSITIVOS DE ENTRADA E SADA..........................................................................................81
6.7 EXERCCIOS PROPOSTOS ............................................................................................................83
6.8 REFERNCIAS BIBLIOGRFICAS.................................................................................................84

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

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


7.2 INTEGRADOS DE SUPORTE ..........................................................................................................88
7.2.1 MEMRIAS RAM E ROM...........................................................................................................88
7.2.2 DECODIFICADOR 74LS138.........................................................................................................94
7.3 EXERCCIOS PROPOSTOS ............................................................................................................95
7.4 REFERNCIAS BIBLIOGRFICAS.................................................................................................97

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

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


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

9. MICROCONTROLADORES 8086/8088.....................................................................................104

9.1 INTRODUO .............................................................................................................................104


9.2 DIAGRAMA DE BLOCOS DO 8088 ..............................................................................................106
9.3 OS REGISTRADORES DO 8088 ...................................................................................................108
9.3.1 REGISTRADORES DE DADOS.....................................................................................................109
9.3.2 REGISTRADORES APONTADORES E NDICES ............................................................................109
9.3.3 REGISTRADORES DE SEGMENTO ..............................................................................................110
9.3.4 APONTADOR DE INSTRUES ..................................................................................................111
9.4 A PINAGEM DO 8088 ..................................................................................................................112
9.5 CICLOS DE BARRAMENTO DO 8086 ..........................................................................................114
9.6 ENDEREAMENTO DE MEMRIA..............................................................................................116
9.7 LINGUAGEM DE PROGRAMAO ASSEMBLY DO 8086 ........................................................118
9.8 MODOS DE ENDEREAMENTO E ENDEREOS DE MEMRIA EFETIVO ..................................119
9.9 INTERRUPES DO 8086............................................................................................................121
9.9.1 ESTRUTURA DE INTERRUPO DO 8086: .................................................................................121

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


8

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


9.9.3 INTERRUPES POR HARDWARE .............................................................................................122
9.9.4 INTERRUPES POR SOFTWARE ...............................................................................................122
9.10 CONJUNTO DE INSTRUES DO 8088/86 ................................................................................123
9.10.1 INSTRUES DE TRANSFERNCIA DE DADOS ........................................................................123
9.10.2 INSTRUES DE STRINGS .......................................................................................................126
9.10.3 INSTRUES LGICAS ............................................................................................................128
9.10.4 INSTRUES ARITMTICAS ....................................................................................................129
9.10.5 INSTRUES DE DESVIO.........................................................................................................129
9.10.6 INSTRUES DE CONTROLE ...................................................................................................130
9.11 CARACTERSTICAS DE I/O DO PC-XT....................................................................................130
9.11.1 DIVISO DOS ENDEREOS DOS DISPOSITIVOS DE I/O DO PC-XT ..........................................130
9.11.2 ENDEREOS DOS DISPOSITIVOS DA PLACA PRINCIPAL (PLACA ME) ..................................131
9.11.3 ENDEREOS DOS DISPOSITIVOS DOS SLOTS...........................................................................132
9.11.4 O SLOT DO PC (ISA 8 BITS) ...................................................................................................132
9.12 DECODIFICAO DE ENDEREOS...........................................................................................133
9.13 EXEMPLOS GERAIS ..................................................................................................................133
9.14 PROBLEMAS PROPOSTOS ........................................................................................................134
9.15 REFERNCIAS BIBLIOGRFICAS.............................................................................................135

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


9

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

Ano de Nmero de Barramento de Capacidade de


Processador
Introduo transistores dados (bits) endereamento
4004 1971 2.250 4 1 kB
8008 1972 2.500 8 16 kB
8080 1974 5.000 8 64 kB
8085 1976 6.500 8 64 kB
8086 1978 29.000 16 1 MB
8088 1979 29.000 16 1 MB
286 1982 120.000 16 16 MB
386 1985 275.000 32 4 GB
486 DX 1989 1.180.000 32 4 GB
Pentium 1993 3.100.000 32 4 GB
Pentium II 1997 7.500.000 32 4 GB
Pentium III 1999 24.000.000 32 4 GB
Pentium 4 2000 42.000.000 32 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):

- 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).

1.4 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 torna-
se 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:

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

1.6 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 Sistemas de Numerao

1.8.1 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). No ex.: 7 80


o 1
2 dgito: Armazena o equivalente a 8 (8). No ex.: 0 81

Microprocessadores e Microcomputadores 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 1

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) 34510 = _________ h


(b) 101001112 = _________ h
(c) 101010108 = _________ h
(d) 25510 = _________ h
(e) 12810 = _________ h
(f) 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:

CY=1 AC=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
1 1 1 1 1 1 1 - H quantitade par de bits "1" no resultado (o resultado
0 0 0 0 1 1 0 1 est nos 8 primeiros bits porque todos os registradores
1 1 1 1 1 1 0 1
possuem apenas 8 bits). Da, P = 1.
1 0 0 0 0 1 0 1 0
- O resultado da operao diferente de zero, da, Z=0.
P=1 - O bit 7 do resultado da operao zero. Da, S = 0.

CY=1 - 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
1 1 1 1 - H quantitade par de bits "1" no resultado (o resultado
0 0 0 1 0 0 0 0
est nos 8 primeiros bits porque todos os registradores
1 1 1 1 0 0 0 0
1 0 0 0 0 0 0 0 0
possuem apenas 8 bits). Da, P = 1.
- O resultado da operao igual a zero, da, Z = 1.
P=1eZ=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
f clock =
2 J Q CL
X1

fcristal K Q CL
X2

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 S1 S0 ESTADO
0 0 1 escrita em memria
0 1 0 leitura de memria
0 1 1 busca de opcode
1 0 1 escrita em porta (instruo OUT porta)
1 1 0 leitura de porta (instruo IN porta)
1 1 1 reconhecimento de interrupo (INTA)
3S 0 0 HLT (parada: sai com INT, HOLD ou RESET
3S x x Hold
3S x x Reset

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


26

Pinos de conexo do cristal. X1 pode ser uma onda Pino de alimentao. Vcc = +5 V
quadrada. Nesse caso, X2 pode ficar aberto. 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 T4 T1 T2 T3
PC FORA PC+1PC INST IR SBE

PC FORA PC+1PC INST IR

A15 - A8 PC S PC S

AD7- AD0 PC I INST PC I INST

ALE

RD\

WR\

IO-M\

Fig. 2.4: Diagrama bsico de temporizao do 8085

M1 M2

CLK

T1 T2 Twait T3 T4 T1 T2 T3
PC FORA PC+1PC INST IR SBE

PC FORA PC+1PC INST IR

A15 - A8 PC S PC S

AD7- AD0 PC I 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)
Barramento
de Endereos Barramento de Dados
Acumulador Registrador de
A ou ACC Instrues (IR)
Opcode

Outros ROM
Registradores: Unidade de
Endereo Instruo
Decodificao de
0000 h ADD B
B, C, D, E, H, L Instrues
0001 h 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 T2 T3 T4 T1 T2 T3
ADD B PC FORA PC+1PC INST IR B TMP SBE A+TMPA

MOV B,A PC FORA PC+1PC INST IR A TMP

A15 - A8 PC S PC S

AD7- AD0 PC I 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 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.
2 Na subida do sinal de clock em T1 o endereo transferido do barramento para a memria ROM.
3 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\ torna-
se baixo, habilitando uma operao de leitura. Como o sinal IO/M\ permanece baixo, trata-se de leitura de
memria.
4 Na subida do sinal de clock (ainda estado T2) nenhum bloco est ativo. O barramento continua disponvel.
5 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.
6 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 Na descida do sinal de clock, no incio do estado T4, o contedo de B transferido para o barramento.
8 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.
9 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 D6 D5 D4 D3 D0 D2 D1
MSB LSB
MSB = Most Significant Bit (Bit mais significativo)
LSB = Least Significant Bit (Bit menos significativo)

a) Instrues de 1 byte:

Opcode (byte 1) D7 D6 D5 D4 D3 D2 D1 D0

Exemplo: ADD B - Adiciona o contedo de B ao acumulador


(A) (A) + (B)

Opcode (byte 1) 1 0 0 0 0 0 0 0 = 80 h

b) Instrues de 2 bytes:

Opcode (byte 1) D7 D6 D5 D4 D3 D2 D1 D0
Operando (byte 2) D7 D6 D5 D4 D3 D2 D1 D0

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


(A) (byte 2)

Opcode (byte 1) 0 0 1 1 1 1 1 0 = 3E h
Operando (byte 2) 0 0 1 1 0 0 1 0 = 32 h

c) Instrues de 3 bytes:

Opcode (byte 1) D7 D6 D5 D4 D3 D2 D1 D0
Operando 1 (byte 2=LSB) D7 D6 D5 D4 D3 D2 D1 D0
Operando 2 (byte 3 = MSB) D7 D6 D5 D4 D3 D2 D1 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 (high-
order 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) 0 0 1 1 0 0 1 0 = 32 h
Operando 1 (byte 2) 0 0 1 1 0 1 0 0 = 34 h
Operando 2 (byte 3) 0 0 0 1 0 0 1 0 = 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:

M1 M2 M3 M4 M5
T1 T2 T3 T4 T5 T6 T1 T2 T3 T1 T2 T3 T1 T2 T3 T1 T2 T3

2.7 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 End. Mnemnico Comentrio
(SP) 2090 h 2000
(H,L) 2050 h
(A) 53 h
(B) 0F h
(A) (A) + (B)
((H,L)) (A)

Microprocessadores e Microcomputadores 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

T1 T2 T3 T4 T1 T2 T3 T4
ADD B PC FORA PC+1PC INST IR B TMP SBE A+TMPA

MOV B,A PC FORA PC+1PC INST IR AB

A15 - A8 PC S PC S

AD7- AD0 PC I 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 : MOV r1, r2


Indicao simblica : (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 : LDA addr


Indicao simblica : (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


Mnemnico Simbologia NO de No de Modo de Flags Comentrio
Genrico Ciclos Estados Endereamento Afetadas
MVI r, dado8 (r) (byte 2) 2 7 Imediato nenhuma move o dado para o registrador r indicado
MOV r1, r2 (r1) (r2) 1 4 Registrador nenhuma move o contedo do registrador r2 para o registrador r1
MOV r, M (r) ((H)(L)) 2 7 Indireto por nenhuma move para o registrador r o dado presente no endereo de memria
registrador especificado pelo registrador par H-L
MOV M, r ((H)(L)) (r) 2 7 Indireto por nenhuma move o contedo do registrador r para a posio de memria
registrador especificada pelo registrador par H-L.
MVI M, ((H)(L)) (byte 2) 3 10 Indireto por nenhuma Carrega o dado na posio de memria especificada pelo registrador
dado8 registrador e imediato par H-L.
LXI rp, (rh) (byte 3) 3 10 Imediato nenhuma Carrega o dado de 16 bits no registrador par indicado em rp. O byte 2
dado16 (rl) (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
LDA addr (A) ((byte 3)(byte 2)) 4 13 direto nenhuma 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.
STA addr ((byte 3)(byte 2)) (A) 4 13 direto nenhuma 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.
LHLD addr (L)((byte 3)(byte 2)) 5 16 direto nenhuma Carrega o contedo da posio de memria dada por addr ((byte
(H)((byte 3)(byte 2) + 1) 3)(byte 2)) no registrador L. Carrega o contedo da posio
subsequente ((byte 3)(byte 2) + 1) no registrador H.
SHLD addr ((byte 3)(byte 2)) (L) 5 16 direto nenhuma Move o contedo do registrador L para a posio de memria dada
((byte 3)(byte 2) + 1) (H) por addr ((byte 3)(byte 2)). Move o contedo do registrador H para
a posio subsequente de memria ((byte 3)(byte 2) + 1).
LDAX rp (A) ((rp)) 2 7 Indireto por nenhuma Carrega acumulador com o contedo da posio de memria indicada
registrador pelo registrador par rp. rp pode ser B (do registrador para BC) ou D
(do registrador par DE).
STAX rp ((rp)) (A) 2 7 Indireto por nenhuma Move o contedo do acumulador para a posio de memria indicada
registrador pelo registrador par rp. rp pode ser B (do registrador para BC) ou D
(do registrador par DE).
XCHG (H) (D) 1 4 registrador nenhuma O contedo do registrador H trocado com o contedo do registrador
(L) (E) D. O contedo de L trocado com o contedo de E.

Microprocessadores e Microcomputadores 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 OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE


LDA adr 3A MOV B,H 44 MOV E,C 59 MOV L,M 6E
LDAX B 0A MOV B,L 45 MOV E,D 5A MOV M,A 77
LDAX D 1A MOV B,M 46 MOV E,E 5B MOV M,B 70
LHLD addr 2A MOV C,A 4F MOV E,H 5C MOV M,C 71
LXI B, Dado16 01 MOV C,B 48 MOV E,L 5D MOV M,D 72
LXI D, Dado16 11 MOV C,C 49 MOV E,M 5E MOV M,E 73
LXI H, Dado16 21 MOV C,D 4A MOV H,A 67 MOV M,H 74
LXI SP, Dado16 31 MOV C,E 4B MOV H,B 60 MOV M,L 75
MOV A,B 78 MOV C,H 4C MOV H,C 61 MVI A, Dado8 3E
MOV A,C 79 MOV C,L 4D MOV H,D 62 MVI B, Dado8 06
MOV A,D 7A MOV C,M 4E MOV H,E 63 MVI C, Dado8 0E
MOV A,E 7B MOV D,A 57 MOV H,H 64 MVI D, Dado8 16
MOV A,H 7C MOV D,B 50 MOV H,L 65 MVI E, Dado8 1E
MOV A,L 7D MOV D,C 51 MOV H,M 66 MVI L, Dado8 2E
MOV A,M 7E MOV D,D 52 MOV L,A 6F MVI M, Dado8 36
MOV B,A 47 MOV D,E 53 MOV L,B 68 SHLD addr 22
MOV B,B 40 MOV D,H 54 MOV L,C 69 STA addr 32
MOV B,C 41 MOV D,L 55 MOV L,D 6A STAX B 02
MOV B,D 42 MOV D,M 56 MOV L,E 6B STAX D 12
MOV B,D 42 MOV E,A 5F MOV L,H 6C XCHG EB
MOV B,E 43 MOV E,B 58 MOV L,L 6D

Exemplos de uso de instrues de transferncia de dados:

Mnemnico Cdigo Comentrio


MVI H,10h 26 10 Carrega acumulador H com valor 10h
MVI L,00h 2E 00 Carrega registrador L com valor 00h
MVI A,0Ah 3E 0A Carrega acumulador com valor 0Ah
MOV M,A 77 Move contedo de A para posio 1000h de memria
MOV C,M 4E Move contedo da posio 1000h para registrador C. C = 0Ah
MVI M,2Bh 36 2B Coloca valor 2Bh na posio 1000h de memria

Mnemnico Cdigo Comentrio


LXI B,1000h 01 00 10 Carrega registrador duplo BC com valor 1000h
LXI D,2000h 11 00 20 Carrega registrador duplo DE com valor 2000h
LXI H,3000h 21 00 30 Carrega registrador duplo HL com valor 3000h
LXI SP,4000h 31 00 40 Carrega registrador duplo SP (apontador de pilha) com valor 4000h
LDA 1000h 3A 00 10 Carrega acumulador com valor armazenado na posio de memria
1000h
STA 2000h 32 00 20 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 Carrega contedo da posio 1000h no registrador L. Carrega contedo
da posio 1001h no registrador H
SHLD 2000h 22 00 20 Move o contedo do registrador L para a posio 2000h. Move o
contedo do registrador H para a posio de memria 2001h.
LXI H,3000h 21 00 30 Carrega registrador duplo HL com valor 3000h
LXI B,4000h 01 00 40 Carrega registrador duplo BC com valor 4000h
LXI D,5000h 11 00 50 Carrega registrador duplo DE com valor 5000h
LDAX B 0A Carrega acumulador com o contedo da posio de memria indicada
pelo registrador duplo BC, ou seja, posio 4000h
STAX D 12 Move contedo do acumulador para a posio de memria indicada
pelo registrador duplo DE, ou seja, posio 5000h
XCHG EB 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)

Mnemnico Simbologia NO de No de Modo de Flags Comentrio


Genrico Ciclos Estados Endereamento Afetadas
ADD r (A) (A) + ( r ) 1 4 registrador todas O contedo do registrador r adicionado ao contedo do acumulador.
ADD M (A) (A) + ( (H) + (L)) 2 7 registrador todas O contedo da posio de memria indicado pelo par HL adicionado
ao contedo do acumulador.
ADI dado8 (A) (A) + (byte 2) 2 7 imediato todas O valor dado em data adicionado ao contedo do acumulador.
ADC r (A) (A) + ( r ) + (CY) 1 4 registrador todas O contedo do registrador r adicionado com carry ao contedo do
acumulador.
ADC M (A) (A) + ( (H)(L)) + 2 7 imediato por todas O contedo da posio indicada pelo par HL adicionado com carry ao
(CY) registrador contedo do acumulador.
ACI dado8 (A) (A) + (byte 2) + (CY) 2 7 imediato todas O valor dado em data adicionado com carry ao contedo do
acumulador.
SUB r (A) (A) - ( r ) 1 4 registrador todas O contedo do registrador r subtrado do contedo do acumulador.
SUB M (A) (A) - ( (H)(L)) 2 7 indireto por todas O contedo da posio de memria indicado pelo par HL subtrado
registrador do contedo do acumulador.
SUI dado8 (A) (A) - (byte 2) 2 7 imediato todas O valor dado em data subtrado do contedo do acumulador.
SBB r (A) (A) - ( r ) - (CY) 1 4 registrador todas O contedo do registrador r subtrado com carry do contedo do
acumulador.
SBB M (A) (A) - ( (H)(L)) - 2 7 indireto por todas O contedo da posio indicada pelo par HL subtrado com carry do
(CY) registrador contedo do acumulador.
SBI dado8 (A) (A) - (byte 2) - (CY) 2 7 imediato todas O valor dado em data subtrado com carry do contedo do
acumulador.
INR r (r) (r) + 1 1 4 registrador Z, S, P e AC O contedo do registrador r adicionado de 1. Todas as Flags so
afetadas, exceto CY.
INR M ((H)(L)) ((H)(L)) + 1 3 10 indiretor por Z, S, P e AC O contedo da posio apontada pelo par HL incrementado de 1.
registrador
DCR r (r) (r) - 1 1 4 registrador Z, S, P e AC O contedo do registrador r decrementado. Todas as Flags so
afetadas, exceto CY.
DCR M ((H)(L)) ((H)(L)) - 1 3 10 indireto por Z, S, P e AC O contedo da posio apontada pelo par HL decrementada de 1.
registrador
INX rp (rh)(rl) (rh)(rl) + 1 1 6 registrador nenhuma O contedo do registrador par rp adicionado de 1. Nenhuma Flag
afetada.

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


40

Instrues Aritmticas - Continuao


Mnemnico Simbologia NO de No de Modo de Flags Comentrio
Genrico Ciclos Estados Endereamento Afetadas
DCX rp (rh)(rl) (rh)(rl) - 1 1 6 registrador nenhuma O contedo do registrador par rp decrementado de 1.

DAD rp ((H)(L))((H)(L))+ (rh)(rl) 3 10 registrador CY O contedo do registrador par rp adicionado ao contedo do


registrador par HL. Somente a Flag de Carry (CY) afetada.
DAA 1 4 registrador todas 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 Cdigo Comentrio


MVI A,05h 3E 05 Carrega acumulador com valor 05h
MVI C,02h 0E 02 Carrega registrador C com valor 02h
ADD C 81 Adiciona contedo de C ao contedo de A. A = 05 + 02 = 07h
ADI 10h C6 10 Adiciona 10h ao contedo de A. A = 07h + 10h = 17h
ADC A 8F Adiciona o contedo de A ao prprio contedo de A, incluindo o valor
de carry. A = 17h + 17h + 0 = 2Eh. O carry aqui Zero.
ACI 03h CE 03 Adiciona 03h ao contedo do acumulador. A = 2Eh+03h = 31h

Mnemnico Cdigo Comentrio


MVI A,05h 3E 05 Carrega acumulador com valor 05 h
MVI C,02h 0E 02 Carrega registrador C com valor 02 h
LXI H,2050h 21 50 20 Carrega registrador duplo HL com valor 2050 h
MVI M,08h 36 08 Move valor 08h para posio 2050 h (apontada por HL)
SUB C 91 Subtrai o contedo de C do contedo de A. A = 05 - 02 = 03h
SUI 02h D6 02 Adiciona 10h ao contedo de A. A = 03h - 02h = 01h
SBB C 99 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.
SBI 03h DE 03 Subtrai 03h do contedo do acumulador, incluindo carry. A = FFh -
03h 1h = FBh. A Flag CY passa para Zero. CY = 0.
SBB M 9E 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: A = 03 02 = 01h


Subtrao com complementar de 2: 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 1 1 1 1 1 1 1 1
+ 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 1
1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0
Carry = 0 CY = 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 subtrao usando complementar de 2
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
- 0 0 0 0 0 0 0 1 + 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0
Carry = 0 CY = 0 Carry = 1 CY = 0

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


42

Exemplo 3: Operao de subtrao


subtrao normal subtrao usando complementar de 2
0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0
- 0 0 0 1 0 0 1 0 + 1 1 1 0 1 1 1 0
1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0
Carry = 1 CY = 1 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 Cdigo Comentrio
MVI A,09h 3E 09 Carrega acumulador com valor 09h
MVI B,03h 06 03 Carrega registrador B com valor 03h
MVI C,10h 0E 10 Carrega registrador C com valor 10h
LXI D,1234h 11 34 12 Carrega registrador duplo DE com valor 1234h
LXI H,0123h 21 23 01 Carrega registrador duplo HL com valor 0123h
INR A 3C Incrementa 1 ao acumulador. A = 09h + 01h = 0Ah
DCR C 0D Decrementa 1 do contedo de C. C = 10h - 01h = 0Fh
INX D 13 Incrementa 1 ao registrador par DE. DE = 1234h + 1h = 1235h
DCX B 0B Decrementa 1 do contedo do registrador par BC. BC = 030Fh - 1h = 030Eh
DAD B 09 Adiciona ao registrador par HL o contedo do registrador par BC. HL =
0123h + 0310h = 0433h
DAA 27 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 Cdigo Comentrio


MVI A,C4h Carrega registradores com bytes inferior e superior das parcelas
MVI B,01h
MVI C,9Eh
MVI D,03h
ADD C Adiciona parcelas dos bytes inferiores ( A = A + C)
MOV L,A Guarda resultado dos bytes inferiores em L
MOV A,B Carrega acumulador com uma das parcelas do byte superior
ADC D Adiciona parcelas dos bytes superiores, incluindo o bit de Carry
MOV H,A 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.

Binrio
Decimal Hexa
Byte Superior Byte Inferior
1 1 1 1 1 1 1 1 1

4 5 2 1 C 4 1 1 1 0 0 0 1 0 0
9 2 6 3 9 E 1 1 1 0 0 1 1 1 1 0
1 3 7 8 5 6 2 1 0 1 0 1 1 0 0 0 1 0

Microprocessadores e Microcomputadores 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 Flags Comentrio
Genrico Ciclos Estados Endereamento Afetadas
ANA r (A) (A) (r) 1 4 registrador todas 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.
ANA M (A) (A) ((H)(L)) 2 7 indireto por todas O contedo do acumulador passa por uma operao lgica AND com o
registrador contedo da posio de memria apontada pelo registrador par HL. A
flag CY zerada e a flag AC setada.
ANI dado8 (A) (A) (byte 2) 2 7 imediato todas 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.
XRA r (A) (A) (r) 1 4 registrador todas O contedo do acumulador passa por uma operao lgica XOR com o
contedo do registrador r indicado. As flags CY e AC so zeradas.
XRA M (A) (A) ((H)(L)) 2 7 indireto por todas O contedo do acumulador passa por uma operao lgica XOR com o
registrador contedo do endereo de memria apontado pelo registrador par HL. As
flags CY e AC so zeradas.
XRI dado8 (A) (A) (byte 2) 2 7 imediato todas 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.
ORA r (A) (A) (r) 1 4 registrador todas 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.
ORA M (A) (A) ((H)(L)) 2 7 indireto por todas O contedo do acumulador passa por uma operao lgica OR com o
registrador contedo da posio de memria apontada pelo registrador par HL. As
flags CY e AC so zeradas.
ORI dado8 (A) (A) (byte 2) 2 7 imediato todas 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.
CMP r (A) - (r) 1 4 registrador todas 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.
CMP M (A) (A) - ((H)(L)) 2 7 indireto por todas Compara o contedo da posio apontada pelo par HL com o contedo
registrador 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

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


44

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


Caso contrrio, CY = 0.
CPI dado8 (A) (A) - (byte 2) 2 7 imediato todas 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.
RLC (An+1) (An) 1 4 CY (Rotate Left) = (Rotacionar Esquerda) = O contedo do acumulador
(A0) (A7) rotacionado uma posio esquerda. O contedo do ltimo bit (bit 7)
(CY) (A7) 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.
RRC (An) (An+1) 1 4 CY (Rotate Right) = (Rotacionar Direita) = O contedo do acumulador
(A7) (A0) rotacionado uma posio direita. O contedo do bit menos significativo
(CY) (A0) (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.
RAL (An+1) (An) 1 4 CY (Rotate Left through Carry) = (Rotacionar Esquerda atravs do Carry)
(CY) (A7) = O contedo do acumulador rotacionado uma posio esquerda,
(A0) (CY) 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.
RAR (An) (An+1) 1 4 CY (Rotate Right through Carry) = (Rotacionar Esquerda) = O contedo do
(CY) (A0) acumulador rotacionado uma posio direita, incluindo o carry como
(A7) (CY) 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.
CMA (A) (A\) 1 4 nenhuma (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.
CMC (CY) (CY\) 1 4 CY (Complement Carry) = (Complementa Carry) = O contedo da flag de
Carry complementado. Nenhuma outra flag afetada.
STC (CY) 1 1 4 CY (Set Carry) = (Seta o bit de Carry) = A flag de Carry (CY) feita igual a
1. Nenhuma outra flag afetada.

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


45

Resumo das condies da instruo CMP r


Condio Z CY
(A) = (r) 1 0
(A) > (r) 0 0
(A) < (r) 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 Cdigo Comentrio


MVI A,0Fh 3E 0F Carrega acumulador com valor 0Fh
MVI C,52h 0E 52 Carrega registrador C com valor 52h
MVI B,46h 06 46 Carrega registrador B com valor 46h
ANA C A1 Faz operao A AND C, ou, 0F AND 52h A = 02h
ANI 44h E6 44 Faz A AND 44h, ou, 02h AND 44h. A = 00h
XRI 23h EE 23 Faz A XOR 23h, ou, 00h XOR 23h A = 23h
CPI 33h FE 33 Faz A - 33h, sem alterar A. Ou, 23 - 33h Z = 0 e CY = 1
RLC 07 Rotaciona A esquerda. Resultado: A = 46h e CY = 0
CMP B B8 Faz A - B, sem alterar A. Ou, 46h - 46h Z = 1 e CY = 0
CMC 3F Complementa flag de Carry. CY = 1
RAR 1F 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 Condio indicada bits de identificao


C C C
NZ Not Zero (Z = 0) 0 0 0
Z Zero (Z = 1) 0 0 1
NC No Carry (CY = 0) 0 1 0
C Carry (CY = 1) 0 1 1
PO Parity odd = Paridade mpar (P = 0) 1 0 0
PE Parity Even = Paridade Par (P = 1) 1 0 1
P Plus Positivo (S = 0) 1 1 0
M Minus Negativo (S = 1) 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 NO de No de Modo de Flags Comentrio
Genrico Ciclos Estados Endereamento Afetadas
JMP addr (PC) (byte 3)(byte 2) 3 10 imediato nenhuma (Jump to address) = O controle transferido incondicionalmente para a instruo
cujo endereo dado no segundo e no terceiro bytes da instruo de desvio.
Jcondio addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump to address if CCC) = Se a condio indicada for verdadeira o controle
(PC) (byte 3)(byte 2) 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.
JNZ addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Not Zero) = Desvia para o endereo indicado se o resultado da operao
(PC) (byte 3)(byte 2) aritmtica anterior a esta instruo no for zero, ou seja, desvia se Z = 0.
JZ addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Zero) = Desvia para o endereo indicado se o resultado da operao
(PC) (byte 3)(byte 2) aritmtica anterior a esta instruo for igual a zero, ou seja, desvia se Z = 1.
JNC addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if No Carry) = Desvia para o endereo indicado se a flag de Carry estiver
(PC) (byte 3)(byte 2) zerada (CY = 0).
JC addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Carry) = Desvia para o endereo indicado se a flag de Carry estiver
(PC) (byte 3)(byte 2) setada (CY = 1).
JPO addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Parity Odd) = Desvia para o endereo indicado se a paridade for mpar,
(PC) (byte 3)(byte 2) ou seja, se a flag de Paridade for zero (P = 0).
JPE addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Parity Even) = Desvia para o endereo indicado se a paridade for Par,
(PC) (byte 3)(byte 2) ou seja, se a flag de Paridade estiver setada (P = 1).
JP addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Plus) = Desvia para o endereo indicado se o valor no acumulador for
(PC) (byte 3)(byte 2) um nmero positivo, ou seja, tiver o stimo bit zerado, ou ainda se a flag de Sinal
estiver zerada (S = 0).
JM addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Minus) = Desvia para o endereo indicado se o valor no acumulador for
(PC) (byte 3)(byte 2) um nmero negativo, ou seja, tiver o stimo bit setado, ou ainda se a flag de
Sinal estiver setada (S = 1).
CALL addr ((SP) - 1) (PCH) 5 18 imediato e nenhuma (Call address) = Chamada de subrotina. O processamento desviado para o
((SP) - 2) (PCL) indireto por 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
(SP) (SP) - 2 registrador
byte superior do endereo da prxima instruo guardado na posio SP - 1 da
(PC) (byte 3)(byte 2) 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.
Ccondition addr ((SP) - 1) (PCH) 2/5 9/18 imediato e direto nenhuma (Call address if CCC is true) = Chamada de subrotina condicional. O
((SP) - 2) (PCL) por registrador 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
(SP) (SP) - 2 instruo. Antes do desvio para a subrotina, o endereo da prxima instruo
(PC) (byte 3)(byte 2) 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.

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


48

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


RET (PCL) (SP) 3 10 indireto por nenhuma (Return) = Retorno de Subrotina. O processamento volta para o local de onde
(PCH) (SP + 1) registrador partiu (instruo seguinte). O endereo de retorno buscado na pilha. O
contedo da posio SP o byte menos significativo do endereo de retorno. O
(SP) (SP) + 2 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.
Rcondio (PCL) (SP) 1/3 6/12 indireto por nenhuma (Conditional Return) = Retorno de Subrotina Condicionado a que CCC seja
(PCH) (SP + 1) registrador verdadeiro. O processamento volta para o local de onde partiu (instruo
seguinte) se a condio dada em CCC for verdadeira. O endereo de retorno
(SP) (SP) + 2 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.
RST n ((SP) - 1) (PCH) 3 12 indireto por nenhuma (Restart) = Reincio. O processamento desviado para o endereo indicado por 8
((SP) - 2) (PCL) registrador * (NNN). No entanto, antes do desvio, o endereo da prxima instruo
(SP) (SP) - 2 guardado na pilha.
(PC) 8 * (NNN)
PCHL (PCH) (H) 1 6 registrador nenhuma (Jump H and L inderect - move H and L to PC) = O contedo do registrador H
(PCL) (L) transferido para o byte mais significativo de PC. O contedo do registrador L
transferido para o byte menos significativo de PC.

Microprocessadores e Microcomputadores 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 Simbologia NO de No de Modo de Flags Comentrio


Genrico Ciclos Estados Endereamento Afetadas
PUSH rp ((SP) - 1 (rh) 3 12 indireto por nenhuma (Push) = O contedo do registrador de mais alta ordem (byte superior) do
((SP) - 2 (rl) registrador par de registradores guardado na posio de memria indicada por SP -
1. O contedo do registrador que contm o byte inferior da instruo
(SP) (SP) - 2 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 PSW ((SP) - 1 (A) 3 12 indireto por nenhuma (Push Processor Status Word) = O contedo dos registradores A
((SP) - 2 (F) registrador (acumulador) e F (flags) guardado na pilha. O contedo do
Acumulador guardado na posio de memria indicada por SP - 1. O
(SP) (SP) - 2 contedo do registrador F guardado na posio de memria indicada
por SP - 2.
POP rp (rl) ((SP)) 3 10 indireto por nenhuma O contedo da posio de memria indicada por SP movido para o
(rh) ((SP) + 1) registrador 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
(SP) (SP) + 2 representa o byte superior da instruo (B, D ou H). O contedo do
registrador SP incrementado de 2.
POP PSW (F) ((SP)) 3 10 indireto por todas O contedo da posio de memria indicada por SP movido para o
(A) ((SP) + 1) registrador registrador que guarda o estado das Flags (registrador F). O contedo da
posio de memria indicada por SP + 1 movido para o acumulador. O
(SP) (SP) + 2 contedo do registrador SP incrementado de 2.
XTHL (L) ((SP)) 5 16 indireto por nenhuma (Exchange Stack Top with H and L) = O contedo da posio de
(H) ((SP) + 1) registrador 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.
SPHL (SP) (H) (L) 1 6 registrador nenhuma (Move HL to SP) = O contedo do registrador par HL movido para o
registrador de 16 bits SP.
IN porta (A) (dado 8 bits) 3 10 direto nenhuma (Input = Entrada) = O dado colocado na porta indicada transferido para
o acumulador atravs do barramento de dados (8 bits).
OUT porta (dado 8 bits) (A) 3 10 direto nenhuma (Output = Sada) = O dado do acumulador transferido para a porta
indicada atravs do barramento de dados (8 bits).

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


50

EI 1 4 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.
DI 1 4 nenhuma (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.
HLT 1+ 5 nenhuma A instruo HLT faz o processador parar o processamento. Os
registradores e flags permanecem inalterados.
NOP 1 4 nenhuma (No Operation) = Nenhuma operao realizada. Os registradores e
flags ficam inalterados.
RIM 1 4 nenhuma (Read Interrupt Mask = L Mscara de Interrupo) = Esta instruo
carrega no acumulador os dados relativos s interrupes e entrada
serial. Ser melhor detalhada posteriormente.
SIM 1 4 nenhuma (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 CD CMP M BE JM adr FA POP B C1 RNC D0 RST 6 F7
CC adr DC CNC adr D4 JMP adr C3 POP D D1 RNZ C0 RST 7 FF
CM adr FC CNZ adr C4 JNC adr D2 POP H E1 RP F0 RZ C8
CMA 2F CP adr F4 JNZ adr C2 POP PSW F1 RPE E8 SIM 30
CMC 3F CPE adr EC JP adr F2 PUSH B C5 RPO E0 SPHL F9
CMP A BF CPI D8 FE JPE adr EA PUSH D D5 RST 0 C7 STC 37
CMP B B8 CPO adr E4 JPO adr E2 PUSH H E5 RST 1 CF XCHG EB
CMP C B9 CZ adr CC JZ adr CA PUSH PSW F5 RST 2 D7 XRI D8 EE
CMP D BA DI F3 NOP 00 RC D8 RST 3 DF XTHL E3
CMP E BB EI FB ORI D8 F6 RET C9 RST 4 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


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 PUSH B POP B POP PSW


Endereo Contedo Endereo Contedo Endereo Contedo Endereo Contedo
da RAM (HEX) da RAM (HEX) da RAM (HEX) da RAM (HEX)
2089 2089 2089 2089
208A 208A 208A 208A
208B 208B 208B 208B
208C 208C 67 208C 67 208C 67
208D 208D 45 208D 45 208D 45
208E 23 208E 23 208E 23 208E 23
208F 01 208F 01 208F 01 208F 01
2090 2090 2090 2090
SP aps a instruo: SP aps a instruo: SP aps a instruo: SP aps a instruo:
208E h 208C h 208E h 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 Instrues Comentrio


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

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

Label Instrues Comentrio


MVI C,10h Carrega o registrador C com o valor 10 h
volta: DCR C Decrementa contedo do registrador C
JZ fim Se o resultado de DCR C for ZERO, desvia para "fim"
MOV A,B Copia contedo de B em A. No afeta nenhuma flag.
JMP volta Desvio incondicional para "volta".
fim: HLT Esta instruo pra o processamento do programa

3. 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 Instrues Comentrio


MVI A,07h Carrega registrador A com valor 07 h
MVI B,00h Carrega registrador B com valor 00 h.
volta: INC B Incrementa em "1" o contedo do registrador B
CMP B Compara contedo de B com o contedo de A, sem alterar valor de A.
JNC volta Desvia para "volta", se a flag CY = 0. CY =0 se A > B ou A = B
HLT Pra processamento quando CY = 1, ou seja, quando B=8 (A < B).

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

Label Instrues Comentrio


MVI A,07h
MVI B,00h A operao de comparao e volta repetida at
volta: INC B o valor em B alcanar o valor 08h, quando ento a flag
CMP B de Carry CY setada, fazendo o processamento encerrar
JC fim pulando para o comando HLT
JMP volta
fim: HLT

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

Label Mnemnico Comentrio


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

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


53

6. 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 Comentrio


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

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

Label Mnemnico Comentrio


LXI SP, 2090h Pilha na posio 2090 h
MVI A,00h Zera acumulador. A = 00 h.
MVI B,04h Carrega o registrador B com 04 h.
MVI C,03h Carrega o registrador C com 03 h. "C" ser usado como contador
CALL soma Chama subrotina que adiciona B ao acumulador
HLT Encerra processamento

soma: ADD B Adiciona B ao acumulador. A = A + B


DCR C Decrementa o contador. C = C - 1.
JNZ soma Desvia para "volta" se o resultado de DCR C no for zero (Se Z = 0)
RET Retorna para programa principal

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

Label Mnemnico Comentrio


MVI A,00h Zera acumulador. A = 00 h
volta: OUT 01h Envia valor de A para a Porta de sada 01h
INR A Incrementar contedo do acumulador. A = A + 1
JNZ volta "volta" se contedo do acumulador for diferente de zero
HLT 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 Mnemnico Comentrio


atraso: MVI C,46h Registrador C recebe valor 46 h 70 d
volta: DCR C Decrementa C. C = C - 1
JNZ volta Volta, se flag de zero for zero (Z=0) C 0
NOP Estado inoperante (No Operation). Apenas retardo
HLT Encerra quando contedo do acumulador for zero.

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


54

Tempo gasto em cada instruo e tempo total:


Instruo No de Vezes que a No de Estados Tempo de cada Tempo Parcial
instruo de cada Instruo Estado (s)
executada (s)
MVI C 1 7 1 7
DCR C 70 4 1 280
JNZ (verdadeiro) 69 10 1 690
JNZ (falso) 1 7 1 7
NOP 1 4 1 4
RET 1 10 1 10
Tempo Total 998 s 1 ms

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

Label Mnemnico Comentrio


atraso: MVI B,0Ah Inicia contador B com valor 0Ah 10d
repete1 MVI C,47h Inicia contador C com valor 47h 71h
repete2: DCR C Decrementa C. C = C - 1
JNZ repete2 Repete lao at registrador C = 0 Z = 1.
DCR B Decrementa registrador B
JNZ repete1 Reinicia lao interno at zerar registrador B Z = 1.
RET

Tempo gasto em cada instruo e tempo total


Instruo No de Vezes a No de Estados de Tempo de Tempo Parcial (s)
instruo cada Instruo cada Estado
executada (s)
MVI B 1 7 1 7
MVI C 10 7 1 70
DCR C 710 4 1 2840
JNZ repete2 700 10 1 7000
(verdadeiro)
JNZ repete2 (falso) 10 7 1 70
DCR B 10 4 1 40
JNZ repete1 9 10 1 90
(verdadeiro)
JNZ repete1 1 7 1 7
(falso)
RET 1 10 1 10
Tempo Total 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, B = 1C h, C = 4B h, D = 10 h, E = FE h e F = 3D h

Microprocessadores e Microcomputadores 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 Instruo Endereo Dados


4000 LXI SP,4050h 4030 10h
LXI H,402Fh 4031 02h
MVI C,07h 4032 05h
volta: INX H 4033 F2h
MOV A,M 4034 0Ah
ANI 01h 4035 19h
JNZ pula 4036 03h
MOV A,M
OUT 01h
pula: CALL 0200h
DCR C
JNZ volta
RST 4

(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. Mnemnico Comentrios


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

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: Chaves para
Endereo, cdigo entrada de dados
em hexadecimal
e mnemnico

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 Endereo Funo Entrada Sada Registradores


(h) Afetados
LETECLA 02E7 Mostra uma entrada de dados no nenhuma A - valor da A, H e L
simulador, atravs da qual um nico tecla lida
caractere (0 a F) pode ser digitado
MOSTRAA 036E Mostra no display de dados o contedo A nenhuma todos
do registrador A
MOSTRAD 0363 Mostra no display de endereos o D - byte mais nenhuma todos
contedo dos registradores D e E significativo
E - byte menos
significativo
DELAY 05F1 Provoca atraso de tempo proporcional ao D - 1o byte a ser nenhuma A, D e E
contedo de D mostrado no
display
E - 2o byte a ser
mostrado no
display

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 Endereo Mnemnico Cdigo Comentrio


2000 LXI SP, 2020 31 20 20 Define pilha na posio 2020 h da RAM
2003 MVI A,00h 3E 00 Carrega registrador A com valor 00 h
volta: 2005 PUSH PSW F5 Guarda valor de A e flags na pilha
2006 CALL MOSTRAA CD 6E 03 Mostra contedo de A no display. Afeta "A"
2009 POP PSW F1 Recupera valor de A guardado na pilha
200A INR A 3C Incrementa contedo de A
200b JMP volta C3 05 20 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.

Incio Label Mnemnico


LXI SP,2090H
SP 2090 h
MVI A,00H
A 00 h volta: PUSH PSW
CALL MOSTRAA
POP PSW
AA+1 Mostra A CPI 60H
JZ fim
N
INR A
A = 60 h?
JMP volta
S fim: 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 Mnemnico
Incio LXI SP,2090H
MVI A,00H
SP 2090 h
volta: PUSH PSW
A 00 h CALL MOSTRAA
POP PSW
CPI 60H
AA+1 Mostra A JZ decresce
cresce: INR A
N JMP volta
A = 60 h? decresce: DCR A
S PUSH PSW
CALL MOSTRAA
AA1
POP PSW
CPI 00H
Mostra A JZ cresce
JMP decresce
N
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 MNEMNICO LABEL MNEMNICO
LXI SP,2080h LEITURA: PUSH H
LXI H,2050h CALL LETECLA
MVI C,0Ah RLC
L_PRXIMO: CALL leitura RLC
MOV M,A RLC
PUSH H RLC
PUSH B MOV B,A
CALL MOSTRAA CALL LETECLA
POP B ORA B
POP H POP H
INX H RET
DCR C
JNZ L_PRXIMO

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 C CY Z


(A) 70 h 2000 MVI A, 70 h
(C) 0F h MVI C, 0F h
(H,L) 2020 h LXI H, 2030 h
((H)(L)) F0 h MVI M, F0 h
(A) (A) (C) ANA C
(A) ((H)(L)) CMP M
(A) (A) + (C) + CY ADC C
MOV A,C
(C) (C) ((H)(L))
ORA M
MOV C,A
(A) FF h CPI FF h

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.
Resultado no display

60

30

30 70 Dado de entrada

Microprocessadores e Microcomputadores 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)
Label Mnemnico
S
A < 15 h ?

S
A > 45 h ?

Mostra A

CC1

(b)
Label Mnemnico
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 Endereo Funo Entrada Sada Registradores


(h) Afetados
APDIS 070B apagar display (e inicializar WRITE nenhuma nenhuma nenhum
DISPLAY RAM na posio 0) (LEFT
entry)
CI 05C1 leitura da tecla apertada nenhuma A - cdigo da A e flags
tecla lida
CO 05CB mostra no display o caracter contido no C - cdigo do A - cdigo do A e flags
registrador C caracter a ser caracter
mostrado no mostrado no
display display
DADD 05B8 mostra 2 bytes no display (LEFT entry) D - 1o byte a ser nenhuma A, BC, DE e
mostrado no flags
display
E - 2o byte a ser
mostrado no
display
DBYTE 05A1 mostra 1 byte no display (LEFT entry) A - byte a ser nenhuma A, BC e flags
mostrado no
display
PRINT 05D6 imprime mensagem no display M - endereo da nenhuma A, C, HL e
(mensagem localizada no endereo dado memria a partir flags
por M e que termina com um byte FF) de onde comea a
mensagem
RADD 0580 l 2 bytes do teclado e mostra no display nenhuma M - 2 bytes A, BC, HL e
(p. ex.: endereos) lidos flags
RBYTE 0558 l 1 byte do teclado e mostra no display nenhuma A = B = byte A, BC e flags
lido e
mostrado no
display
RDATA 0593 mostra 2 bytes no display nenhuma M = 2 bytes DE
mostrados no
display
TECLA 06BA guarda em A a posio (na TABTEC) da nenhuma A=C= A, C e flags
tecla lida posio na
TABTEC do
cdigo da
tecla lida
DELAY 077A temporizador (tempo = 0,6 ms) nenhuma nenhuma A e flags

DEL 1 0770 temporizador (tempo = 50 ms) nenhuma nenhuma A, B e flags


DEL 2 0766 temporizador (tempo = 850 ms) nenhuma nenhuma A, BC 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 Endereo Mnemnico Cdigo Comentrio


4000 MVI A,00h 3E 00 Carrega registrador A com valor 00 h
volta: 4002 CALL APDIS CD 0B 07 Apaga display. importante para que os nmeros
da contagem sejam mostrados na mesma posio
4005 PUSH PSW F5 Guarda valor de A e flags na pilha
4006 CALL DBYTE CD A1 05 Mostra contedo de A no display. Afeta "A"
4009 POP PSW F1 Recupera valor A guardado na pilha
400A INR A 3C Incrementa contedo de A
400B JMP volta C3 02 40 Volta para a posio "volta", ou seja, 4002 h

5.2 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 Display


e dados de 16 bits de dados

EXC RST DSP DNX DMN GO


C NXT E F
D
PRG TR XRG FILL INS SUB
PC SP M B
8 9 A
VER COM SST MOV RA RF
4 5 6 7
K-7 K-7 RB RC RD RE
ESC LER 0 1 2 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 Memria RAM


Embora essa memria possa ir de 0000 h at Embora essa memria possa ir de 4000 h at
3FFF h, somente uma pastilha de memria 5FFF h, os trs conjuntos de memria permitem
usada e o endereo vai de 0000 h at 07FF h acessar dados de 4000 h at 4BFF h
Espao reservado 2716 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 Mnemnico INCIO


2000 LXI SP, 2020
2003 MVI A,00h
2005 PUSH PSW A 00 h
2006 CALL MOSTRAA
2009 POP PSW
200A INR A Mostra A
200b JMP 2005 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 Mnemnico
2009 MVI D, 05
200B CALL DELAY
200E POP PSW
200F INR A
2010 JMP 2005

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

Endereo Mnemnico Cdigo


4000 MVI A,00h 3E 00
4002 CALL APDIS CD 0B 07
4005 PUSH PSW F5
4006 CALL DBYTE CD A1 05
4009 POP PSW F1
400A INR A 3C
400B JMP 4002 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 Mnemnico Cdigo


4009 CALL DEL1 CD 70 07
400C POP PSW F1
400D INR A 3C
400E JMP 4002 C3 02 40

5. Questes do Experimento 1

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


(b) Por que foram usadas as instrues PUSH PSW e POP PSW no ABACUS e no Kit Didtico?
(c) Sendo SP = 2020 h no ABACUS, em que endereo ser armazenado o primeiro dado da pilha?
(d) 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 Comentrio


(A) 99h 2000 MVI A, 99 Carrega acumulador com valor 99
(H,L) 2050h 2002
(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)

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 Comentrio


(A) 99h 4000 MVI A, 99 3E 99 Carrega acumulador com valor 99
(H,L) 4050h 4002
(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)

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 2Comentrio
(H,L) 2050h 2000 LXI H, 2050
((H,L)) 10 h 2003
(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

(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 Comentrio
(H,L) 4050h 4000 LXI H, 4050 21 50 40
((H,L)) 10 h 4003
(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

(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 Mnemnico Comentrio
(A) 0F h 2000
(B) EA h
(C) 52 h
(A) (A) (C)
(H,L) 2040 h
((H,L)) FF h
(A) (C) ((H,L))

(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 Mnemnico Cdigo Comentrio
(A) 0F h 4000
(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))

(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
INCIO
LXI SP, 2090 h POP B
LXI H, 2050 h INX H
MVI C,01 h INR C
MVI B,04 h JMP volta A 00 h
volta: MVI A,00 h fim: HLT
PUSH B
CALL produto produto: ADD B P1 A
MOV M,A DCR C AA+1
CPI 20h JNZ subrotina
JNC fim 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
LXI SP, 2090 h JNC fim
MVI C,01 h POP B
MVI B,04 h INR C
volta: MVI A,00 h JMP volta
PUSH B fim: HLT
CALL produto
PUSH PSW produto: ADD B
CALL MOSTRAA DCR C
POP PSW JNZ subrotina
CPI 50h 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
LXI SP, 2090 h JNC fim
MVI C,01 h POP B
CALL LETECLA INR C
MOV B,A JMP volta
volta: MVI A,00 h fim: HLT
PUSH B
CALL produto
PUSH PSW produto: ADD B
CALL MOSTRAA DCR C
POP PSW JNZ subrotina
CPI 50h 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. O programa a seguir gera e mostra no display uma seqncia INCIO


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 A 00 h
ABACUS e execute o programa. Observe o resultado.

Label Mnemnico Label Mnemnico Mostra A


LXI SP,2090 h decresce: PUSH PSW AA+1
MVI A,00 h CALL MOSTRAA
cresce: PUSH PSW POP PSW N
CALL MOSTRAA DCR A A = FFh ?
POP PSW CPI 00 h S
INR A JNZ decresce
CPI FF h JMP cresce Mostra A
JNZ cresce HLT AA-1

N S
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
LXI SP, 2090 h decresce: PUSH PSW
MVI A,00 h CALL MOSTRAA
cresce: PUSH PSW POP PSW
CALL MOSTRAA ADI 99 h
POP PSW DAA
ADI 01 h CPI 00 h
DAA JNZ decresce
CPI 99 h JMP cresce
JNZ 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
LXI SP, 4090 h decresce: CALL APDIS
MVI A,00 h PUSH PSW
cresce: CALL APDIS CALL DBYTE
PUSH PSW CALL DEL1
CALL DBYTE POP PSW
CALL DEL1 ADI 99 h
POP PSW DAA
ADI 01 h CPI 00 h
DAA JNZ decresce
CPI 99 h JMP cresce
JNZ cresce HLT

4. Questes do Experimento 6

(a) Por que a instruo INR A foi substituda pela instruo ADI 01 h no programa 2?
(b) Por que foi usada a instruo ADI 99 h nos programas 2 e 3, ao invs de DCR A, como no programa 1?
(c) Por que foi usada a instruo CALL APDIS no programa 3?
(d) Por que foi usada a instruo CALL DEL1 no programa 3?
(e) 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 KIT DIDTICO


Label Mnemnico Cdigo Label Mnemnico Cdigo
2000 LXI SP,2040h 31 40 20 4000 LXI SP,4200h 31 00 42
MVI A,00h 3E 00 MVI A,00h 3E 00
repete: CALL crescente CD ___ ___ repete: CALL crescente CD ___ ___
CALL decresc CD ___ ___ CALL descresc CD ___ ___
JMP repete C3 ___ ___ JMP repete C3 ___ ___

crescente: PUSH PSW F5 crescente: PUSH PSW F5


CALL MOSTRAA CD 6E 03 CALL APDIS CD 0B 07
MVI D,01h 16 01 CALL DBYTE CD A1 05
CALL DELAY CD F1 05 CALL DEL1 CD 70 07
POP PSW F1 POP PSW F1
CPI FF FE FF CPI FF FE FF
RZ C8 RZ C8
INR A 3C INR A 3C
JMP crescente C3 ___ ___ JMP crescente C3 ___ ___

decresc: DCR A 3D decresc: DCR A 3D


PUSH PSW F5 PUSH PSW F5
CALL MOSTRAA CD 6E 03 CALL APDIS CD 0B 07
MVI D,01h 16 01 CALL DBYTE CD A1 05
CALL DELAY CD F1 05 CALL DEL1 CD 70 07
POP PSW F1 POP PSW F1
CPI 00 FE 00 CPI 00 FE 00
RZ C8 RZ C8
JMP decresc C3 ___ ___ JMP decresc C3 ___ ___

ENDEREO DAS INTERRUPES


Interrupo Pino do 8085 Endereo na ROM Endereo no ABACUS Endereo no KIT
TRAP 6 0024 h 20D1h 4BE0 h
RST 7.5 7 003C h 20CE h 4BD7 h
RST 6.5 8 0034 h 20CB h 4BDA h
RST 5.5 9 002C h 20C8 h 4BDD h

Microprocessadores e Microcomputadores 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 KIT DIDTICO


Label Mnemnico Cdigo Label Mnemnico Cdigo
2000 LXI SP,2050h 31 50 20 4000 LXI SP,4200h 31 00 42
MVI A,09h 3E 09 MVI A,09h 3E 09
SIM 30 SIM 30
MVI A,00h 3E 00 MVI A,00h 3E 00
loop: EI FB loop: EI FB
JMP loop C3 ___ ___ JMP loop C3 ___ ___

crescente: DI F3 crescente: DI F3
PUSH PSW F5 PUSH PSW F5
CALL MOSTRAA CD 6E 03 CALL APDIS CD 0B 07
MVI D,01h 16 01 CALL DBYTE CD A1 05
CALL DELAY CD F1 05 CALL DEL1 CD 70 07
POP PSW F1 POP PSW F1
CPI FF FE FF CPI FF FE FF
RZ C8 RZ C8
INR A 3C INR A 3C
JMP crescente C3 ___ ___ JMP crescente C3 ___ ___

decresc: DI F3 decresc: DI F3
DCR A 3D DCR A 3D
PUSH PSW F5 PUSH PSW F5
CALL MOSTRAA CD 6E 03 CALL APDIS CD 0B 07
MVI D,01h 16 01 CALL DBYTE CD A1 05
CALL DELAY CD F1 05 CALL DEL1 CD 70 07
POP PSW F1 POP PSW F1
CPI 00 FE 00 CPI 00 FE 00
RZ C8 RZ C8
JMP decresc C3 ___ ___ JMP decresc C3 ___ ___

20CB h: JMP decresc C3 ___ ___ 4BDA h: JMP decresc C3 ___ ___
20CE h: JMP crescente C3 ___ ___ 4BD7 h: JMP crescente C3 ___ ___

Perguntas:

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?

5.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] 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 Cdigo de Posio do Vetor
Operao
RST 0 CALL 0000h C7 0000h
RST 1 CALL 0008h CF 0008h
RST 2 CALL 0010h D7 0010h
RST 3 CALL 0018h DF 0018h
RST 4 CALL 0020h E7 0020h
RST 5 CALL 0028h EF 0028h
RST 6 CALL 0030h F7 0030h
RST 7 CALL 0038h FF 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.

Interrupes do 8085
Instruo Efeito Cdigo Posio Pino
de Operao do Vetor
TRAP CALL 0024h no tem 0024 h 6
RST 5.5 CALL 002Ch no tem 002C h 9
RST 6.5 CALL 0034h no tem 0034 h 8
RST 7.5 CALL 003Ch no tem 003C h 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 Prioridade Posio do Vetor


TRAP 1 0024 h
RST 7.5 2 003C h
RST 6.5 3 0034 h
RST 5.5 4 002C h
INTR 5 Nenhuma

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.

Ativada por Nvel e Borda TRAP

Ativada apenas por Borda RST 7.5

8085
Ativada apenas por Nvel RST 6.5

Ativada apenas por Nvel RST 5.5

Ativada apenas por Nvel INTR

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


1
D Q
Flip-flop
Pino 6 CLK
TRAP CLR

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 I 7.5
D Q
Pino 7
Flip-flop
RST 7.5
R 7.5 CLR
RECONHECIMENTO
DE RST 7.5

M 7.5' M 7.5 CALL 003C h


S Q
Flip-flop
R
Pino 8
I 6.5
RST 6.5 M 6.5 CALL 0034 h
M 6.5' S Q
Flip-flop
R
Pino 9
I 5.5
RST 5.5 M 5.5 CALL 002C h
M 5.5' S Q
Flip-flop
R
MSE

EI IE
DI S Q
Flip-flop
RESET IN R

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

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 Endereo na ROM Endereo no ABACUS Endereo no Kit


TRAP 0024 H 20D1 H 4BE0 H
RST 5.5 002C H 20C8 H 4BDD H
RST 6.5 0034 H 20CB H 4BDA H
RST 7.5 003C H 20CE 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 Comentrio


LXI SP, 2090H Topo da pilha na posio 2090 h
MVI A, 00H Acumulador comea com valor 00 h
PUSH PSW Guarda A e Flags na pilha
CALL MOSTRAA Mostra contedo de A no display de dados
POP PSW Recupera contedo de A e Flags da pilha
EI Habilita interrupes
espera: JMP espera Lao de espera de pedido de interrupo

cresce: INR A Incrementa acumulador


PUSH PSW Guarda contedo de A e F na pilha
CALL MOSTRAA Mostra contedo de A no display
MVI D, 01H Faz D = 01 h, para usar na subrotina de tempo
CALL DELAY Chama subrotina de atraso de tempo
POP PSW Recupera contedo de A e F da pilha
CPI 00 H Compara A com 00 h.
JNZ cresce Se A 00 h, volta para INR A. Se A = 00 h, sai da subrotina
EI Habilita novamente as interrupes
RET Retorna da subrotina de interrupo

20C8: JMP cresce Vai para o incio da subrotina "cresce"

6.4 Setagem e Leitura da Mscara de Interrupo


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:

Acumulador SOD SOE R7.5 MSE M7.5' M6.5' M5.5'


Serial Output Data - Dado

Mask Set Enable - Habilita


Zera flip-flop da RST 7.5

Seta mscara da RST 7.5

Seta mscara da RST 6.5

Seta mscara da RST 5.5


Serial Outpu Enable

Setagem de Mscara
Habilita Sada Serial
da Sada Serial

Irrelevante

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:

SOD SOE R7.5 MSE M7.5' M6.5' M5.5'


A: 0 0 0 0 1 1 1 0

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


80

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.

Acumulador SID I7.5 I6.5 I5.5 IE M7.5 M6.5 M5.5

Habilita
Serial Input Data - Dado de

Mscara da interrupo RST 7.5

Mscara da interrupo RST 6.5

Mscara da interrupo RST 5.5


Interrupo RST 7.5 pendente

Interrupo RST 6.5 pendente

Interrupo RST 5.5 pendente

-
Interrupt Enable
Entrada Serial

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

SID I7.5 I6.5 I5.5 IE M7.5 M6.5 M5.5


A: 0 1 0 0 1 1 0 0

Significado:

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

6.5 Ampliando a Capacidade de Interrupo

INTR
Controlador
Microprocessador de
INTA
Interrupo 8 pedidos de
8085 interrupo
Dados 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. 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;
2. O 8259 envia um pulso alto para o 8085 atravs do pino INTR (pino 10);
3. O 8085 envia de volta um sinal baixo INTA (Interrupt Acknowledge) de reconhecimento de pedido de
interrupo;
4. 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;
5. O 8085 responde com outro sinal INTA baixo solicitando o byte inferior do endereo da subrotina;
6. O 8259 envia o byte inferior de endereo correspondente ao pedido de interrupo;
7. Um outro sinal INTA baixo enviado pelo 8085 solicitando o byte superior do endereo da subrotina;
8. O 8259 envia o byte superior do endereo da subrotina para o 8085 e, em seguida, limpa o bit ISR
correspondente;
9. A seguir, o contedo do contador de programa (PC) enviado para a pilha e o processamento desviado
para o endereo indicado

6.6 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
bit 6
8 bits Porta 10 h INCIO

Microprocessador
bit 7
8 bits Porta 11 h STATUS
8085

Dados Porta 12 h 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 Interrupo


Microprocessador 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 HLDA Controlador


de
8085 DMA
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'


A:

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

SID I7.5 I6.5 I5.5 IE M7.5 M6.5 M5.5


A: 0 0 1 1 1 1 1 0

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. Mnemnico Comentrios


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

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.

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


Acumulador SOD SOE R7.5 MSE M7.5 M6.5 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).

1 espera start 1 1 0 1 1 1 1 0 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 SYN STX DADOS ETX BCC PAD

onde: 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 Tenso TTL Tenso RS-232


0 0,0 a 0,8V +12V (+3 a +15V)
1 2,2 a 5,0V 12V (3 a 15V)

Principais Pinos DB25 DB9


TX (Transmited Data) 2 3
RX (Received Data) 3 2
GND (Ground) 7 5
RTS (Request to Send) 4 7
CTS (Clear to Send) 5 8
DSR (Data Set Ready) 6 6
DTR (Data Terminal Ready) 20 4
CD (Carrier Detected) 8 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 Tipo de Memria e Nmero de Portas Caractersticas


Capacidade de Entrada e Sada
8156 RAM 256 bytes 3 2048 bits organizados como 256 palavras de 8 bits cada
8355 ROM 2 Kbytes 2 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
8 bits: AD0 a AD7 RD\
8085 WR\

CE A10 CE1\
A9
ALE ALE
A8 IO-M\
PA
IO-M\
RD\
RD\ RESET
PB
RESET CLK
READY
PC WR\
8156 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.


A13 CE CE1\ Pastilha Habilitada
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 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
Endereo Inicial da ROM
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
Endereo Final da ROM
0 0 0 0 0 1 1 1 1 11 1 1 1 1 1
0 7 F F
Endereo Inicial da RAM
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0
Endereo Final da RAM
0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1
2 0 F 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 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

Endereo Inicial da primeira RAM 2114 do Kit Didtico


0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0
Endereo Final da primeira RAM 2114 do Kit Didtico
0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1
4 3 F 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 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

Endereo Inicial da SEGUNDA RAM 2114 do Kit Didtico


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

Microprocessadores e Microcomputadores 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 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
Endereo Inicial da SEGUNDA RAM 2114 do Kit Didtico
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
4 8 0 0
Endereo Final da SEGUNDA RAM 2114 do Kit Didtico
0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1
4 B F 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
CS\ RAM 2114
A10 4000h 43FFh
A11 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
CS\ 2 RAM 2114
A10 4000h 43FFh
A11 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 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

Endereo Inicial da QUARTA RAM 2114 do Kit Didtico


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

Microprocessadores e Microcomputadores 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
2 RAM 2114
A10 CS\
A11 4000h 43FFh
A12 RAM 1

2 RAM 2114
ZONAS DE ENDEREO PARA A RAM CS\
2114, A PARTIR DE 4000h 4400h 47FFh
RAM 2
ZONA BYTES ENDEREO
1 1024 4000 43FF
2 1024 4400 47FF 2 RAM 2114
3 1024 4800 4BFF CS\
4800h 4BFFh
4 1024 4C00 4FFF RAM 3
5 1024 5000 - 53FF
6 1024 5400 57FF
7 1024 5800 5BFF 2 RAM 2114
8 1024 5C00 5FFF CS\
4C00h 4FFFh
9 1024 6000 - 63FF
RAM 4
10 1024 6400 67FF
11 1024 6800 6BFF
12 1024 6C00 6FFF 2 RAM 2114
13 1024 7000 - 73FF CS\
5000h 50FFh
14 1024 7400 77FF
15 1024 7800 7BFF RAM 5
16 1024 7C00 7FFF
17 1024 8000 - 83FF
2 RAM 2114
18 1024 8400 87FF CS\
19 1024 8800 8BFF 5400h 57FFh
20 1024 8C00 8FFF RAM 6


2 RAM 2114
CS\
5800h 5BFFh
45 1024 F000 F3FF RAM 7
46 1024 F400 F7FF
47 1024 F800 FBFF
48 1024 FC00 FFFF 2 RAM 2114
Total: 48 Kbytes = 49.152 bytes CS\
5C00h 5FFFh
RAM 8

A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 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 AD1 AD0 Seleo


0 0 0 Registradores de comando e de status
0 0 1 Porta A
0 1 0 Porta B
0 1 1 Porta C
1 0 0 8 bits menos significativos do temporizador
1 0 1 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 Seleo Nmero


da Porta
0 0 Porta A 00h
0 1 Porta B 01h
1 0 Registrador de Direo de Dados da Porta A (DDR A) 02h
1 1 Registrador de Direo de Dados da Porta A (DDR A) 03h

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 IN Timer OUT


8156
CLK

Fig. 7.6: Temporizador do CI 8156

Comando D7 D6 D5 D4 D3 D2 D1 D0
Habilitao de interrupo A
Habilita;o de interrupo B
Temporizador

Porta A
Porta C

Porta B

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 D0
Temp Temp Int. B Int. A C C B A

Porta 24h - Byte menos significativo do Temporizador


T7 T6 T5 T4 T3 T2 T1 T0

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

M2 M1 T13 T12 T11 T10 T9 T8

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


93

Comear Contagem Contagem Contagem Contagem


contagem final final final final

Modo 00

Modo 01

Modo 10

Modo 11

M2 M1 Onda de sada no pino Timer OUT


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

D7 D6 Estado do Temporizador
0 0 No opera
0 1 Parar imediatamente
1 0 Parar depois de atingir contagem final
1 1 Comear contagem

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

3MHz
Contagem final = = 3000 = 0BB8 h
1kHz

Porta 24h - LSB: B8h


1 0 1 1 1 0 0 0

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

0 1 0 0 1 0 1 1

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 0
Int. A e B des. C sada B sada A Ent.

Comear contagem do temporizador

Instrues Comentrio
MVI A,B8h
OUT 24h
Onda quadrada contnua de 1kHz
MVI A,4Bh
OUT 25h
MVI A,Ceh
Comea contagem e dasabilita interrupes de A e B
OUT 20h

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).

C B A Sada Selecionada
0 0 0 Yo
0 0 1 Y1
0 1 0 Y2

74LS138 0 1 1 Y3
1 0 0 Y4
1 0 1 Y5
1 1 0 Y6
1 1 1 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

2 RAM 2114
CS\
4800h 4BFFh
RAM 3

2 RAM 2114
CS\
4C00h4FFFh
RAM 4

2 RAM 2114
CS\
5000h 50FFh
RAM 5

2 RAM 2114
CS\
5400h 57FFh
RAM 6
C B A Sada
A12 A11 A10 Selecionada
CS\ 2 RAM 2114
0 0 0 Yo
0 0 1 Y1 5800h 5BFFh
0 1 0 Y2 RAM 7
0 1 1 Y3
1 0 0 Y4
1 0 1 Y5 2 RAM 2114
1 1 0 Y6 CS\
5C00h 5FFFh
1 1 1 Y7
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 Exerccios Propostos


1. 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.

A Y0 \
Linhas de endereo:________________
B Y1 \
74139
Y2 \

2 RAM 2 RAM 2 RAM 2 RAM G1 Y3 \


2114 2114 2114 2114

A B Y
CS\ CS\ CS\ CS\ 0 0 Y0\
0 1 Y1\
1 0 Y2\
Pinos de habilitao 1 1 Y3\

Microprocessadores e Microcomputadores 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 Digital-
Analgico (DAC), que faz a converso de sinal digital para sinal analgico.

Sinal Sistema Sinal


Sinal ADC DAC Sinal
Digital Mnimo Digital
Analgico Analgico
com 8085

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 digital-
analgico, 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:


VREF VREF VREF VREF
I3 = I2 = I1 = I0 =
R 2R 4R 8R
A corrente total na resistncia de sada Rsada I = I3 + I2 + I1 + I0 , ou seja,

VREF
I= (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 Corrente de Frao do
sada (mA) Mximo
0 0 0 0 0 0
0 0 0 1 0.125 1/15
0 0 1 0 0.250 2/15
0 0 1 1 0.375 3/15
0 1 0 0 0.500 4/15
0 1 0 1 0.625 5/15
0 1 1 0 0.750 6/15
0 1 1 1 0.875 7/15
1 0 0 0 1.000 8/15
1 0 0 1 1.125 9/15
1 0 1 0 1.250 10/15
1 0 1 1 1.375 11/15
1 1 0 0 1.500 12/15
1 1 0 1 1.625 13/15
1 1 1 0 1.750 14/15
1 1 1 1 1.875 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

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.


1 1
Resoluo = , n nmero de bits. No caso de n = 4 Resoluo =
2 1
n 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 Microprocessador 8088 Microprocessador
8085 8086
Barramento de endereo 16 bits 20 bits 20 bits

Capacidade de 65.536 1.048.576 1.048.576


endereamento de memria
( 64 kB ) ( 1 MB ) ( 1 MB )

Barramento de dados 8 bits Interno: 16 bits Interno: 16 bits

Externo: 8 bits Externo: 16 bits

Manipulao de STRINGS NO SIM SIM

Registradores Internos 8 bits e 16 bits 16 bits 16 bits

Uso de segmentao para NO SIM SIM


endereamento

Aritmtica Decimal completa NO SIM SIM


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

Registradores dos microprocessadores 8085, 8086 e 8088


Registradores do 8085 Registradores do 8088 / 8086
A Acumulador AH AL (A) AX Acumulador Primrio
H L Apontador de dados BH BL BX Acumulador e Registrador Base
B C CH CL CX Acumulador e Contador
D E DH DL DX Acumulador e Endereador de I/O
SP Apontador de pilha SP Apontador de pilha
BP Apontador base usado na pilha
SI ndice da Fonte usado para indexao
DI ndice de Destino usado para indexao
PC Contador de Programa IP Ponteiro de Instruo
CS Segmento de Cdigo Registradores de
segmento. So
DS Segmento de Dados
usados para a
SS Segmento de Pilha formao do
endereo absoluto.
ES Segmento Extra
FLAGS Registrador de Flags FLAGS Registrador de Flags

Microprocessadores e Microcomputadores 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
4

Extra Segment ES 3
Code Segment CS
Registradores de 2
Stack Segment SS
Data Segment DS Segmento
1
Instruction Pointer IP

Sistema de Controle da
Unidade de Execuo
Barramento A

AH AL AX
BH BL BX Unidade de
CH CL CX Execuo (EU)
DH DL DX ULA
Stack Pointer SP
Base Pointer BP
Source Index SI
Destination Index DI
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 Registrador de
Segmento + Offset

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


108

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

Endereo Fsico (ou absoluto)


XXXX0 0YYYY

Registrador de Segmento Registrador de Offset


(16 bits) (16 bits)

15 0 15 0
Extra Segment - ES Stack Pointer - SP
Base Pointer - BP
Code Segment - CS
Source Index - SI
Stack Segment - SS
Destination Index - DI
Data Segment - DS

Memria
Offset + Byte Endereado

Segmento 16 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
15 8 7 0
AX AH AL Accumulator
BX BH BL Base
CX CH CL Counter
DX DH DL 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 0
Stack Pointer SP
Base Pointer BP
Source Index SI
Destination Index 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 Operaes
AX multiplicao de word (16 bits), diviso de word, I/O de word
AL multiplicao de byte, diviso de byte, I/O de byte, aritmtica decimal
BX referncia de memria (semelhante ao reg. par HL do 8085)
CX operao de strings, loops
CL deslocamento, rotao
DX multiplicao de word, diviso de word, end. indireto de I/O (0-65535)
SP operao de stack
SI operao de string (origem)
DI operao de string (destino)

9.3.3 Registradores de Segmento

Registradores de Segmento
15 0
Code Segment CS
Data Segment DS
Stack Segment SS
Extra Segment 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 Segmento Alternativo Offset


Memria Base (default)
Instruo de busca CS nenhum IP
Operao de pilha SS nenhum SP
Varivel DS CS, ES, SS endereo efetivo
Fonte string DS CS, ES, SS SI
Destino string ES nenhum DI
BP usado como reg. pointer SS CS, DS, ES endereo efetivo

Microprocessadores e Microcomputadores 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 10 9 8 7 6 5 4 3 2 1 0
O D I T S Z A P 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/ Vcc MN/ RD RQ/ RQ/ lock S2 S1 S0 QS0 QS1 Test RDY RST
S3 S4 S5 S6 MX GT0 GT1

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

1 2 3 4 5 6 7 8 9 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 S4 Reg. Segmento
0 0 Dados Extra (ES)
0 1 Pilha (SS)
1 0 Cdigo (CS)
1 1 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.
Tipo de ciclo no BUS
S2 S1 S0
0 0 0
Reconhecimento de interrupo ( INTA )
0 0 1
Leitura I/O ( IOR )
0 1 0
Escrita I/O ( IOW )
0 1 1 Halt
1 0 0 Busca de instruo
1 0 1
Leitura memria ( MemR )
1 1 0
Escrita memria ( MemW )
1 1 1 Passivo

9.5 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 A16/S3 Significado


0 0 Segmento Extra
0 1 Segmento de Pilha
1 0 Segmento de Cdigo (ou nenhum)
1 1 Segmento de Dados
S5 = IF Estado de habilitao da interrupo
S6 = 0 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 8F000
SP =21F1h + 021F1
endereo fsico 911F1h

CS = 9020h 90200
IP = 0FF1h + 00FF1
endereo fsico 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 +
64 kB
CS 16

Offset +
64 kB
DS 16

Offset +
64 kB
ES 16

Offset +
64 kB
SS 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
64 kB

SS 16

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
Obs.: near altera somente IP (intra segmento)
far altera IP e CS (inter segmento)

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 1 0 7 0 7 0 7 0
opcode s w postbyte data data if sw=01
Ou
7 6 5 4 3 2 1 0
opcode s w Byte 1
postbyte Byte 2
data Byte 3
data if s w = 0 1 Byte 4

Microprocessadores e Microcomputadores 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 6 5 4 3 2 1 0
mod reg 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 Exemplo Registrador de Operao
Mnemnico Segmento acessado
Imediato MOV AX, 1000H Code CS AX 1000H
Registrador MOV DX, CX - DX CX
Direto MOV AH, [1000H] Data DS AH [1000H]
Indireto por Registro MOV AX, [SI] Data DS AL [SI]; AH [SI+1]
(BX, BP, SI, DI)
Indexado MOV AX, [SI+6] Data DS AL [SI+6]; AH [SI+7]
(SI ou DI)
Baseado MOV AX, [BP+2] Stack SS AL [BP+2]; AH [BP+3]
(BP ou BX)
Baseado e Indexado MOV AX, [BX+SI] Data DS AL [BX+SI];
AH [BX+SI+1]
Baseado e Indexado com MOV AX, [BX+SI+5] Stack SS AL [BX+SI+5];
deslocamento AH [BX+SI+6]
Strings MOVSB Extra, Dado [ES:DI] [DS:SI]
ES, DS se DF = 0 ento:
SI SI+1 e DI DI+1
se DF = 1 ento:
SI SI -1 e DI DI -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 Dado
1000H 34H
1001H 12H
1002H 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 Dado
1000H 34H
1001H 12H
1002H 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 Dado
1100H 34H
1101H 12H
1102H 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 Dado
1100H 34H
1101H 12H
1102H 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 Interrupes do 8086

9.9.1 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 Endereo do vetor Endereo do tratador Endereo efetivo do Endereo do tratador


Interrup. de interrupo da interrupo vetor de interrupo da interrupo
0 0000h:0000h IP low h 0000h:0000h CS:IP
0000h:0001h IP high h
0000h:0002h CS low h
0000h:0003h CS high h
1 0000h:0004h IP low h 0000h:0004h CS:IP
0000h:0005h IP high h
0000h:0006h CS low h
0000h:0007h CS high h
2 0000h:0008h IP low h 0000h:0008h CS:IP
0000h:0009h IP high h
0000h:000Ah CS low h
0000h:000Bh CS high h

i 0000h:4i IP low h 0000h:4i CS:IP


0000h:(4i+1) IP high h
0000h:(4i+2) CS low h
0000h:(4i+3) CS high h

255 0000h:03FCh IP low h 0000h:03FCh CS:IP

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


122

0000h:03FDh IP high h
0000h:03FEh CS low h
0000h:03FFh 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:

Nmero da Endereo do Finalidade


Interrup. vetor
00 H 0000h:0000h Diviso por zero. chamada sempre que o divisor de uma operao
de diviso for zero.
01 H 0000h:0004h Execuo passo a passo. chamada sempre que a Flag de Trap (T)
estiver setada. Facilita a depurao de um programa.
02 H 0000h:0008h NMI = Interrupo No-Mascarvel. Equivale TRAP do 8085. Pino
17 do 8086.
03 H 0000h:000Ch Breakpoints. Permite a execuo de programas para depurao at um
endereo especificado pelo programador.
04 H 0000h:0010h Overflow. chamada sempre que a Flag de Overflow estiver setada,
indicando que o contedo do resultado no cabe no registrador de
destino.
05 H 1F H 0000H:0014H Interrupes que no so pr-definidas, mas so reservadas para o
at 8086. As diversas verses de sistemas usando o 8086 usam essas
0000H:007C H interrupes para finalidades especficas, mas no necessariamente
idnticas entre os sistemas.

9.9.3 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 :

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

9.9.4 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 Finalidade macro Subfuno Registradores Descrio da subfuno


INT 10 H Servios de vdeo 00 H AH = 00 H Seta o modo vdeo
AL = modo AL = 03 VGA 80 x 25
( uma funo do 01 H AH = 01 H Seta tamanho do cursor
BIOS) CH: bit 7 = 0
Bits 6 e 5 00 normal; 01 invisvel
Bits 4 a 0 Linha mais alta do caracter para o cursor
CL: bits 4 a 0 Linha mais baixa do caracter para o cursor
02 H AH = 02 H Seta posio do cursor
BH = 0 a 3 Nmero da pgina de vdeo
DH = linha 00 H linha superior
DL = coluna 00 H coluna da esquerda

INT 21 H Servios Gerais 01 H AH = 01 H L caractere da entrada padro, com eco.


AL Retorna o cdigo ASCII do caractere lido
( uma funo do 02 H AH = 02 H Escreve caractere na sada padro
DOS) DL Contm o cdigo ASCII do caractere
08 H AH = 08 H L caractere da entrada padro, sem eco
AL Retorna o cdigo ASCII do caractere lido
09 H AH = 09 H Escreve na sada padro textos terminados em $
DS:DX Endereo de incio do texto
25 H AH = 25 H Seta vetor de interrupo
AL Nmero do vetor de interrupo a ser modificado
DS:DX Novo valor para o vetor a ser modificado
31 H AH = 31 H Encerra programa e deixa residente (TSR)
AL Cdigo de retorno
DX Nmero de pargrafos que devem ficar residentes
4C H AH = 4C H Encerra programa
AL 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 Copia contedo da posio de memria para o Registrador indicado
MOV memria, REG Copia contedo do registrador indicado para a posio de memria
MOV REG, REG Copia contedo de um registrador para outro
MOV memria, imediato Carrega posio de memria com valor indicado
MOV REG, immediate 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 Copia contedo da posio de memria para o Registrador de
segmento indicado
MOV memria, SREG Copia contedo do registrador de segmento indicado para a posio
de memria
MOV SREG, REG Copia contedo de um registrador comum para um de segmento
MOV REG, SREG 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 DB ? ; varivel MEMBY (do tipo "byte") com valor indefinido


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

MEMWO DW ? ; varivel MEMWO (do tipo "word") com valor indefinido


MEMWO DW 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 Carrega registrador de 16 bits AX com valor 0100 h
MOV DL, 23 H Carrega registrador de 8 bits DL com valor 23 h
MOV CL,char Carrega registrador de 8 bits com cdigo ASCII do caractere
MOV BP, A8 Carrega registrador de 16 bits BP com valor 00A8 h
MOV DS, AX Registrador de segmento DS carregado com contedo de AX
MOX AX, BX Carrega AX com contedo de BX
MOV AL, BL Carrega registrador de 8 bits AL com contedo de BL
MOV AX, CS Carrega registrador AX com contedo do segmento CS
MOV AX, [BX] Carrega AX com contedo do endereo de offset BX
MOV [BP], CL Carrega posio de offset BP com valor contido em CL
MOV AH, [SI] Carrega AH com valor da posio cujo offset SI
MOV AX, [1000 H] Faz AL [1000 H] e AH [1001 H]
MOV CL, MEMBY Carrega CL com posio da varivel de 1 byte MEMBY
MOV CX, MEMWO Carrega CX com posio da varivel de 1 word MEMWO
MOV CX, [MEMWO] Carrega CX com posio da varivel de 1 word MEMWO
MOV BX, [BX+2] Carrega BX com contedo da posio BX+2 e BX+2+1
MOV [BP+2], BH Carrega posio BP+2 com contedo do registrador BH
MOV AX, [SI-6] AL [SI 6] e AH [SI 5]
MOV AX, [BX+SI] AL [BX + SI] e AH [BX + SI + 1]
MOV BX, [BP+SI+3] BL [BP + SI + 3] e BH [BP + SI + 3 + 1]
MOV BX, MEMBY[SI] 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 Descrio
XCHG AX, BX permuta registradores AX e BX (AX BX)
XCHG AL, CL Permuta registradores AL e CL
XCHG DX, [SI] Permuta DX com o contedo da posio de memria endereada por SI.
Neste exemplo DL [SI] e DH [SI + 1]
LAHF AH Flags low
SAHF Flags low AH
IN AH, 26 IN direto
IN AL, DX IN indireto para as 65536 portas (0 - 65535 ou 0000 - FFFF).
OUT 26, AX Aplica-se as mesmas regras da instruo IN.
OUT DX, AX
LEA BX, MEMBY 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 Descrio
#MAKE_COM# Diretiva para o compilador gerar um arquivo .com
ORG 100h Diretiva que indica o endereo inicial do programa: 0100 H
MOV AX, 0B800h Carrega registrador AX com valor B800 H
MOV DS, AX Copia valor de AX para DS, definindo segmento de dados
MOV CL, 'A' Carrega CL com o cdigo ASCII do caractere A, isto , 41 H
MOV CH, 01011111b Carrega CH com o valor binrio 01011111 b = 5F H
MOV BX, 15Eh Carrega registrador BX com valor 015E H
MOV [BX], CX Copia contedo de CX na posio DS:BX, ou seja, B800:015E
HLT Pra programa

Exemplo 2: Programa que demonstra o uso de variveis


Mnemnico Descrio
#MAKE_COM# Diretiva para o compilador gerar um arquivo .com
ORG 100h Diretiva que indica o endereo inicial do programa: 0100 H

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


126

MOV AL, var1 Carrega registrador de 8 bits AL com valor 7 (varivel var1)
MOV BX, var2 Carrega registrador BX de 16 bits com valor 1234 H (var2)
RET Pra o programa

var1 DB 7 Define varivel var1 como byte de valor 7 decimal


var2 DW 1234h Define varivel var2 como Word de valor 1234 hexadecimal

9.10.2 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 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
STOS WORD PTR ES:[DI], AX 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

LODS BYTE PTR AL, ES:[DI] Carrega AL com byte da posio ES:DI
AL DS:[SI]. Se D = 0 incrementa SI; Se D = 1 decrementa SI
LODS WORD PTR AX, ES:[DI] Carrega AX com word da posio ES:DI
AL DS:[SI]. Se D = 0 incrementa SI; Se D = 1 decrementa SI

CMPS BYTE PTR ES:[DI],[SI] Compara bloco de bytes de duas regies de memria
CMPS WORD PTR ES:[DI],[SI] 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 Copia em AL o byte localizado no endereo padro DS:SI.


AL DS:[SI]. Se DF=0 incrementa SI; Se DF=1 decrementa SI
LODSW 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

MOVSB 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.
MOVSW 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 Compara os bytes das posies DS:SI e ES:DI e atualiza Flags.


DS:[SI] ES:[DI].
CMPSW 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 Descrio
#make_COM# Diretiva para o compilador
ORG 100h Diretiva para o compilador programa comea na posio 100h
LEA SI, a1 Offset SI assume o endereo do primeiro valor da varivel a1.
LEA DI, a2 Offset DI assume o endereo da varivel a2.
MOV CX, 5 Registrador CX recebe valor 5
REP MOVSB Instruo MOVSB repetida at o registrador CX alcanar 0.
RET Encerra programa

a1 DB 1,2,3,4,5 Variveis
a2 DB 5 DUP(0) 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 Descrio
#make_COM# Diretiva para o compilador
ORG 100h Diretiva para o compilador programa comea na posio 100h
MOV AX, 0E000 H AX = E000 h
MOV ES, AX Segmento especial ES = AX = E000 h
MOV DI, 0000 DI = 0000h ES:DI = E0000 + 00000 = E0000 h
MOV AL, 0A3 H Byte a ser armazenado colocado em AL
CLD clear direction flag (resseta flag "direo": modo auto-incremento)
MOV CX, 10 Faz CX = 10 sero armazenado 10 bytes a partir de E0000 h
REP STOSB Repete instruo 10 vezes
HLT Pra programa

EXEMPLO 3: Copiar um bloco de memria de 1000 bytes do endereo fsico A1000H para o endereo fsico
E1000 H.

Mnemnico Descrio
MOV AX, 0A000 H AX = A000 H valor que ser passado para registrador de segmento DS
MOV DS, AX Segmento de dados DS = AX = A000 h
MOV SI, 1000 H SI = 1000h DS:SI = E0000 + 00000 = A1000 h
MOV AX, 0E000 H AX = E000 h valor que ser passado para registrador de segmento ES
MOV ES, AX Segmento especial ES = AX = E000 h
MOV SI,1000 H Registrador de offset SI = 1000 h DS:SI = A1000 H
MOV DI,1000 H Registrador de offset DI = 1000 h ES:DI = E1000 H
CLD clear direction flag (resseta flag "direo": modo auto-incremento)
MOV CX, 03E7 H Faz CX = 03E7 h sero armazenado 1000 bytes a partir de E0000 h
REP MOVSB 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 Descrio
NOT BX BX complementado (seus bits so invertidos)
NOT BYTE PTR [SI] Byte apontado por SI complementado
NOT WORD PTR [SI] Word apontado por SI complementado
AND CX, DX Funo AND entre CX e DX
AND BL, BYTE PTR [SI] Funo AND entre BL e contedo do Byte apontado por SI
AND AX, 8000 H Funo AND entre AX e 8000 H
OR CX, DX Funo OR entre CX e DX
OR BL, BYTE PTR [SI]
OR AX, 8000
XOR CL, DH Funo XOR entre CL e DH
XOR BX, WORD PTR [SI] Funo XOR entre BX e o Word apontado por SI
XOR AX, 8000
TEST CX, DX 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 Deslocar esquerda uma vez. Formato: SHL destino, contador
SHL BX, CL Deslocar a esquerda CL vezes.

SHR AX, 1 Deslocar direita uma vez.


SHR BL, CL Deslocar direita CL vezes

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


129

ROL AL, 1 Rodar esquerda.


ROR CX, CL 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 Descrio
ADD SI, DX soma de registradores
ADD BYTE PTR [BX], CH
ADD DI, 6000
ADC SI, DX soma de registradores com carry
ADC BYTE PTR [BX], CL
SUB AX, BX subtrao de registradores
SUB BL, 34 subtrao de cte imediata
SBB AX, CX subtrao de registradores com borrow
SBB BL, 34 subtrao de cte imediata com borrow
DAA ajuste decimal para adio
DAS ajuste decimal para subtrao
AAA ajuste ASCII para adio
AAS ajuste ASCII para subtrao
INC CL incremento de registrador
INC WORD PTR [SI] incremento de byte apontado por SI
DEC CX decremento de registrador
DEC WORD PTR [SI]
NEG DX complemento de 2 de registrador
NEG WORD PTR [SI]
CMP BL, BH comparao entre dois registradores, BL e BH
CMP [BX], CX comparao entre word apontado por BX e CX
MUL BL multiplicao de byte: AX AL * BL
MUL CX multiplicao de word: DX:AX AX * CX
IMUL BL multiplicao de nmero com sinal
DIV BL diviso de byte: AX AL / BL (AL: quociente; AH: resto)
DIV CX diviso de word: DX:AX AX / CX (AX: quoc.; DX: resto)
IDIV BL diviso de nmero com sinal

9.10.5 Instrues de Desvio

Mnemnico Descrio
Desvio Incondicional
JMP [BX] IP [BX+1:BX]
JMP BX IP BX
JMP DWORD PTR [BX]; IP [BX+1:BX] ; CS [BX+3:BX+2]

Desvio condicional

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


130

JNC LABEL desvia para LABEL se flag carry = 0 (se no h carry)


JS LABEL desvia para LABEL se MSB =1 (flag de sinal =1)
LOOP LABEL decrementa CX e desvia para LABEL se CX 0
LOOPE LABEL decrementa CX e desvia para LABEL se CX 0 e ZF = 1

PUSH e POP S pode ser aplicado a registrador de 16 bits


PUSH CX salva registrador CX na pilha
PUSH [DI+2] salva posio de memria apontada por DI+2 e DI+3
POP DS Recupera DS da pilha
PUSHF Salva registrador de Flags na pilha
POPF Recupera registrador de Flags da pilha

CALL e RETURN
CALL DELAY chamada de sub-rotina "DELAY"
CALL [BX] chamada de sub-rotina iniciada pelo contedo de memria
apontado por BX: IP [BX+1:BX]
CALL BX chamada de sub-rotina iniciada pelo BX: IP BX
RET retorno de sub-rotina
IRET retorno de rotina de interrupo (restaura CS e IP)

Interrupes por Software


INT nn Guarda na pilha o endereo de retorno (CS:IP), antes de chamar
a interrupo nn.

9.10.6 Instrues de Controle

Mnemnico Descrio
STI seta flag Interrupo
CLI resseta flag Interrupo
STC seta carry flag
CLC resseta carry flag
CMC complementa carry flag
STD seta flag direo
CLD resseta flag direo
HLT para a CPU
WAIT para a CPU at o pino test ficar ativo
NOP sem operao (utilizado para gerar delay)
LOCK instruction 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 Quantidade de Endereos Funo


0000 h
512 Dispositivos da Placa Principal
01FF h
0200 h
512 Dispositivos dos Slots
03FF h
0400 h
64.512 No usado no projeto do PC
FFFF h

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 Quantidade de Endereos Funo


0000 h
32 Chip de DMA (8239)
001F h
0020 h
32 Chip de interrupo (8259)
003F h
0040 h
32 Chip temporizador (8253)
005F h
0060 h
32 Chip PPI (8255)
007F h
0080 h
32 Registrador de pginas DMA
009F h
00A0 h
32 Bit de interrupo NMI
00BF h
00C0 h
320 No codificado ou usado

Microprocessadores e Microcomputadores 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 (B1, B10, B31)


+5 V (B3, B29) Imx = 700 mA
- 5 V (B5) Imx = 30 mA
+12 V (B9) Imx = 100 mA
- 12 V (B7) 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 Quantidade de Endereos Funo


0200 h
16 Adaptador de Jogos
020F h
0210 h
16 Unidades de Expanso
021F h

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


133

0220 h
80 Reservada ou No Documentada
026F h
0270 h
16 Porta Paralela ou Impressora # 2
027F h
0280 h
112 Reservada ou No Documentada
02EF h
02F0 h
16 Porta Serial #2
02FF h
0300 h
32 Placa de Prototipo
031F h
0320 h
16 Adaptador de Disco Rgido
032F h
0330 h
64 No Documentada
036F h
0370 h
16 Impressora Paralela Principal
037F h
0380 h
48 Reservada ou No Documentada
03AF h
03B0 h
16 Placa de Vdeo Monocromtica
03BF h
03C0 h
16 Placa de Vdeo EGA
03CF h
03D0 h
16 Placa de Vdeo CGA
03DF h
03E0 h
16 Reservado
03EF h
03F0 h
16 Disco Flexvel e Porta Serial
03FF h

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 Descrio
#make_BIN# Diretiva do compilador para gerar um arquivo .bin
MOV AX, 5 Registrador AX = 0005 (decimal)
MOV BX, 10 Registrador BX = 0010 (decimal)
ADD AX, BX Faz AX AX + BX AX = 0005 h + 000A h = 000F h (15 dec)
SUB AX,1 Faz AX AX 0001 h AX = 000F 0001 = 000E h (14 dec)
HLT Pra programa

2. Calcula a soma dos elementos do vetor V1 e armazena o resultado na varivel V2.

Rtulo Mnemnico Descrio

Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys


134

#make_BIN# Diretiva do compilador para gerar um arquivo .bin


MOV CX, 5 Nmero de elementos CE = 5 (decimal)
MOV AL, 0 Registrador AL registrar a soma dos elementos (valor inicial = 0)
MOV BX, 0 BX o indexador. Valor inicial = 0.
Next: ADD AL, V1[BX] Faz AL AL + [V1 + BX]. Contedo da posio V1 + BX.
MOV V1[BX], BL Modifica o contedo da posio V1 + BX com o valor de BL
INC BX Incrementa BX
LOOP Next Retorna para Next at o contador CX = 0. Decrementa CX automaticamente
MOV V2, AL Armazena contedo de AL na varivel V2
HLT 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 Descrio


#make_BIN# Diretiva do compilador para gerar um arquivo .bin
MOV AL, 00000101b Carrega AL com valor binrio correspondente a 5
MOV BL, 0Ah Carrega registrador com o hexadecimal de 10
MOV CL, 10o Carrega CL com o valor octal que corresponde a 8
ADD AL, BL Adicional o contedo de BL ao contedo de AL (5 + 10 = 15)
SUB AL, CL Subtrai o contedo de CL do contedo de AL (15 8 = 7)
HLT

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