Escolar Documentos
Profissional Documentos
Cultura Documentos
Pic 8085
Pic 8085
Notas de Aula
Microprocessador 8085
Microprocessador 8088
Goinia, 2006
Observaes
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.
Microprocessadores e Microcomputadores
MICROPROCESSADORES E MICROCOMPUTADORES
13.05.035
96 horas (tericas) e 32 horas (de laboratrio)
1992 - (disciplina do 4o ano)
2006
Quarta-feira: 13:30h s 15:10h (alternando com Controle)
Sexta-feira: 15:30h s 17:10h
Segunda-feira tarde (13:30 s 18:30h)
Jos Wilson Lima Nerys
Obs.: As 96 horas de aulas tericas sero ministradas em 48 aulas de 2 horas cada uma.
As 32 horas de aulas prticas sero ministradas em 16 aulas de 2 horas cada uma.
BIBLIOGRAFIA BSICA
Microprocessador 8085:
1. ZILLER, Roberto M., Microprocessadores Conceitos Importantes, Edio do autor,
Florianpolis, 2000. ISBN 85-901037-2-2
2. NERYS, Jos Wilson L., Apostila de Microprocessadores
Microprocessador 8086:
3. ZILLER, Roberto M., Microprocessadores Conceitos Importantes, Edio do autor,
Florianpolis, 2000. ISBN 85-901037-2-2
4. ZELENOVSKY, Ricardo e MENDONA, Alexandre, "PC: Um Guia Prtico de Hardware e
Interfaceamento," Intercincia, Rio de Janeiro, 1996. ISBN: 85-7193-001-5
5. NERYS, Jos Wilson L., Apostila de Microprocessadores
Microcontrolador 8051:
6. SILVA JR., Vidal Pereira da, Aplicaes Prticas do Microcontrolador 8051, rica, So Paulo,
1994.
7. GIMENEZ, Salvador P., Microcontroladores 8051: Teoria do hardware e do software /
Aplicaes em controle digital / Laboratrio e simulao, Pearson Education do Brasil Ltda, So
Paulo, 2002. ISBN: 85.87918-28-1
8. NERYS, Jos Wilson L., Apostila de Microprocessadores
EMENTA
Conceitos bsicos de microprocessadores e microcontroladores. Arquitetura de microprocessadores e
microcontroladores. Princpio de funcionamento de microprocessadores e microcontroladores. Modos
de endereamento. Programao de microcontroladores. Entrada/sada. Dispositivos perifricos.
Interrupes. Temporizadores. Acesso direto memria. Barramentos padres. Expanso e
mapeamento de memria. Ferramentas para anlise, desenvolvimento e depurao.
Microprocessadores e Microcomputadores
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
Interrupes
Temporizadores
Comunicao Serial
Simulao Digital
Construindo um Sistema Baseado no Microcontrolador 8051
Contedo
Uso do Kit do 8085
Programa de Simulao ABACUS
10
11
12
13
14
15
16
Microprocessadores e Microcomputadores
Tipo de
Avaliao
Valor
Mximo
Prova 1
Laboratrio
Prova 2
Laboratrio
Prova 3
Laboratrio
Prova 4
Projeto Experimental
8,0
2,0
8,0
2,0
8,0
2,0
5,0
5,0
Microprocessadores e Microcomputadores
4.4
REFERNCIAS BIBLIOGRFICAS.................................................................................................62
9. MICROCONTROLADORES 8086/8088.....................................................................................104
9.1
9.2
9.3
9.3.1
9.3.2
9.3.3
9.3.4
9.4
9.5
9.6
9.7
9.8
9.9
9.9.1
INTRODUO .............................................................................................................................104
DIAGRAMA DE BLOCOS DO 8088 ..............................................................................................106
OS REGISTRADORES DO 8088 ...................................................................................................108
REGISTRADORES DE DADOS.....................................................................................................109
REGISTRADORES APONTADORES E NDICES ............................................................................109
REGISTRADORES DE SEGMENTO ..............................................................................................110
APONTADOR DE INSTRUES ..................................................................................................111
A PINAGEM DO 8088 ..................................................................................................................112
CICLOS DE BARRAMENTO DO 8086 ..........................................................................................114
ENDEREAMENTO DE MEMRIA..............................................................................................116
LINGUAGEM DE PROGRAMAO ASSEMBLY DO 8086 ........................................................118
MODOS DE ENDEREAMENTO E ENDEREOS DE MEMRIA EFETIVO ..................................119
INTERRUPES DO 8086............................................................................................................121
ESTRUTURA DE INTERRUPO DO 8086: .................................................................................121
Microprocessadores e Microcomputadores
9.9.2
9.9.3
9.9.4
9.10
9.10.1
9.10.2
9.10.3
9.10.4
9.10.5
9.10.6
9.11
9.11.1
9.11.2
9.11.3
9.11.4
9.12
9.13
9.14
9.15
Microprocessadores e Microcomputadores
1.1
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
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
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
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).
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
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
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.
1.2
Microprocessadores e Microcomputadores
14
Ano de
Introduo
Nmero de
transistores
Barramento de
dados (bits)
Capacidade de
endereamento
4004
8008
8080
8085
8086
8088
286
386
486 DX
Pentium
Pentium II
Pentium III
Pentium 4
1971
1972
1974
1976
1978
1979
1982
1985
1989
1993
1997
1999
2000
2.250
2.500
5.000
6.500
29.000
29.000
120.000
275.000
1.180.000
3.100.000
7.500.000
24.000.000
42.000.000
4
8
8
8
16
16
16
32
32
32
32
32
32
1 kB
16 kB
64 kB
64 kB
1 MB
1 MB
16 MB
4 GB
4 GB
4 GB
4 GB
4 GB
4 GB
A quantidade cada vez maior de transistores numa nica pastilha foi acompanhada da reduo do
tamanho fsico dos transistores. Essa reduo mostrada na Fig. 1.2.
A reduo do tamanho do transistor resulta no aumento da velocidade de operao e tambm na reduo
das conexes internas, alm de permitir a insero de um nmero cada vez maior de transistores numa nica
pastilha. O aumento da capacidade de integrao de transistores resulta ainda na reduo do consumo de energia
eltrica e do custo dos microprocessadores. H um postulado que diz que o gate de um transistor no pode ser
menor do a largura correspondente a 10 tomos. A previso de pesquisadores da Intel a dimenso do gate dos
transistores alcanaro esse valor por volta do ano 2017 (http://www.intel.com/update/archive/issue2/focus.htm).
1.3
COMPUTADOR (definies):
-
Microprocessadores e Microcomputadores
15
Minicomputador:
- Multi-usurio;
- grande capacidade de armazenamento;
- operao com matrizes e ponto flutuante melhorada;
Computadores Digitais:
- operam com variveis discretas (nmeros).
1.4
Microprocessadores e Microcomputadores
16
1.4.1
A Unidade Central de Processamento a responsvel por buscar e executar instrues, que ficam
armazenadas na memria. A CPU possui internamente os seguintes blocos, dentre outros:
Control Unit - Unidade de Controle (UC) - tem por funo bsica o controle das demais unidades da CPU de
uma forma lgica e sincronizada.
ALU (Aritmetic and Logic Unit) - Unidade Lgica e Aritmtica (ULA) - realiza funes bsicas de
processamento de dados (adio, subtrao, funes lgicas, etc.).
Registers - Registradores - So usados para o armazenamento interno da CPU. Existem diversos registradores na
CPU e o principal deles chamado de Acumulador.
CPU interconnection - o barramento interno da CPU; ele permite a comunicao entre a Unidade de
Controle, a Unidade Lgica e Aritmtica e os Registradores.
1.4.2
Memria
o local de armazenamento de dados e programas. Possui palavras de tamanho fixo, sendo cada
palavra vinculada a um endereo nico. Possui ainda linhas de controle, sendo as principais: READ (leitura) /
WRITE (escrita).
Existem dois tipos bsicos de memria: Memria somente para leitura (ROM), onde ficam
armazenados permanentemente informaes fundamentais para o funcionamento do computador e cujos dados
no so perdidos na falta de energia; e a memria RAM, que permite gravar e apagar dados de acordo com os
interesses do usurio, e cujo contedo perdido quando o computador desligado. A memria RAM divide-se
ainda em Memria Dinmica (DRAM) e memria esttica (SRAM), que sero melhor detalhadas
posteriormente. A principal caracterstica a ser destacada neste ponto a baixa velocidade de acesso da memria
RAM.
Com o passar dos anos os processadores tornaram-se cada vez mais rpidos, o mesmo no acontecendo
com as pastilhas de memria, que evoluram de forma bem menos acentuada (em particular, a memria
dinmica, que possui velocidade de acesso bem menor que a esttica, mas bem mais barata). Para evitar com
que a baixa velocidade de acesso da memria comprometesse o desempenho dos processadores mais modernos,
um tipo especial de memria RAM foi criado: a memria CACHE.
A memria CACHE consiste numa pequena quantidade de memria RAM esttica (SRAM) usada para
acelerar o acesso RAM dinmica. Quando h necessidade de ler dados da memria dinmica, estes so antes
transferidos para a memria cache. Enquanto o processador l dados da memria cache, mais dados so
antecipadamente transferidos da memria dinmica para a memria cache, de forma que o processamento tornase mais rpido.
1.4.3
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
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
chaves:
1.6
Aumento de clock
Aumento do nmero interno de bits
Aumento do nmero externo de bits
Reduo do nmero de ciclos para executar cada instruo
Aumento da capacidade e velocidade da memria cache
Execuo de instrues em paralelo
Microprocessador Microcontrolador
1.7
MIPS -
Millions of Instructions Per Seconds (Milhes de Instrues Por Segundo): uma unidade de
desempenho do microprocessador.
Microprocessadores e Microcomputadores
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
19
1.8
1.8.1
Sistemas de Numerao
Sistema Decimal
O sistema decimal utiliza 10 dgitos, que vo de 0 a 9. Exemplo: 34610
1o dgito: Armazena as unidades (ou 100 = 1). No ex.: seis unidades (ou 6 100);
2o dgito: Armazena as dezenas (ou 101 = 10). No ex.: quatro dezenas (ou 4 101);
3o dgito: Armazena as centenas (ou 102 = 100). No ex.: trs centenas (ou 3 102);
A soma destas parcelas eqivale a: 6 + 40 + 300 = 34610
A ponderao dada pelo nmero 10 elevado potncia representada pela coluna, sendo que a 1a
coluna da direita 0.
1.8.2
Sistema Binrio
O sistema binrio o sistema de numerao que o computador entende. Utiliza 2 dgitos, 0 e 1 ou (OFF
e ON) ou (0V e 5V), ou (0V e 3,3V). Exemplo: 110010112
1o dgito: Armazena o equivalente a 20 (1). No ex.: 1 20
2o dgito: Armazena o equivalente a 21 (2). No ex.: 1 21
3o dgito: Armazena o equivalente a 22 (4). No ex.: 0 22
1.8.3
O Sistema BCD o sistema em que se combina o sistema binrio e o sistema decimal. utilizado como
formato de sada de instrumentos. Utiliza 2 dgitos: 0 e 1 que so dispostos em grupos de 4 dgitos, utilizados
para representar um dgito decimal (nmero 0 at 9). A representao de um nmero maior que 9 deve ser feita
por outro grupo de 4 bits, com a ponderao dada pelo sistema decimal. Exemplo: 97310 = 1001 0111 0011.
Note a diferena entre este valor e o valor do nmero binrio 1001011100112 = 241910
1.8.4
Sistema Octal
O Sistema Octal baseado nos mesmos princpios do decimal e do binrio, apenas utilizando base 8.
Utiliza 8 dgitos: 0 a 7. Exemplo: 32078
1o dgito: Armazena o equivalente a 80 (1).
o
No ex.: 7 80
No ex.: 0 81
Prof. Jos Wilson Lima Nerys
20
3o dgito: Armazena o equivalente a 82 (64). No ex.: 2 82
4o dgito: Armazena o equivalente a 83 (512). No ex.: 3 83
O equivalente decimal : 7 + 0 + 128 + 1536 = 167110
1.8.5
Sistema Hexadecimal
O Sistema Hexadecimal baseado nos mesmos princpios do decimal, apenas utiliza base 16. Utiliza 16
dgitos: 0 a 9, A, B, C, D, E e F. Exemplo: Ex.: 20DH ou 20Dh ou 20D16
1o dgito: Armazena o equivalente a 160 (1).
No ex.: 13 160
1.9
Exerccios Propostos
Quantas posies de memria podem ser endereadas com um barramento de endereos de 16 bits? E de
20 bits?
7.
8.
9.
Microprocessadores e Microcomputadores
21
(a)
(b)
(c)
(d)
(e)
(f)
34510 = _________ h
101001112 = _________ h
101010108 = _________ h
25510 = _________ h
12810 = _________ h
101001110112 = ___________ h
[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
22
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
23
2.2
Microprocessadores e Microcomputadores
24
CY=1
1
0
1
0
0
1
0
0
1
0
0
1
0
1
1
1
1
1
0
0
0
1
1
1
0
P=1
CY=1
1
0
1
0
0
1
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
P=1eZ=1
Microprocessadores e Microcomputadores
25
Out). O apontador de pilha (registrador SP) aponta sempre para o topo desta pilha (top of stack), ou seja,
para o ltimo dado que foi armazenado. Os dados normalmente armazenados so endereos de
chamadas/retornos de subrotina e endereos de retorno de interrupes, que automaticamente armazenados
pelo 8085 e ainda outros dados que podem ser armazenados pelo programador usando a instruo PUSH.
Posteriormente esses dados so retirados da pilha usando a instruo POP.
Registrador "Contador de Programa"
O registrador "Contador de Programa" PC (Program Counter) o registrador que armazena o endereo da
prxima instruo a ser executada. incrementado pela unidade de controle aps a execuo de uma
instruo. (OBS: as instrues esto localizadas na memria e precisam ser transferidas para dentro da
CPU). Sendo um registrador de 16 bits o registrador PC pode indicar at 65536 diferentes endereos (0 a
65535 ou 0000h a FFFFh).
2.3
Frequncia de Clock
A freqncia de clock do 8085A deve ficar na faixa de 500 kHz a 3,125 MHz. J a freqncia de clock
do 8085A-2 deve ficar entre 500 kHz e 5 MHz. A freqncia de clock metade da freqncia do cristal
oscilador, como mostrado na expresso que segue. Isso ocorre porque o flip-flop que gera o clock divide o sinal
de entrada por 2.
f cristal
2
f clock =
X1
fcristal
X2
CL
CL
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.
S1
0
1
1
0
1
1
0
x
x
S0
1
0
1
1
0
1
0
x
x
Microprocessadores e Microcomputadores
ESTADO
escrita em memria
leitura de memria
busca de opcode
escrita em porta (instruo OUT porta)
leitura de porta (instruo IN porta)
reconhecimento de interrupo (INTA)
HLT (parada: sai com INT, HOLD ou RESET
Hold
Reset
26
.
Microprocessadores e Microcomputadores
27
2.5
M2
CLK
T1
T2
T3
PC FORA
PC+1PC
INST IR
T4
T1
AD7- AD0
T3
PC+1PC
INST IR
SBE
PC FORA
A15 - A8
T2
PC S
PC S
PC I
INST
PC I
INST
ALE
RD\
WR\
IO-M\
M1
M2
CLK
T1
PC FORA
T2
Twait
T3
INST IR
PC+1PC
T4
T1
PC FORA
A15 - A8
AD7- AD0
PC S
PC I
T2
T3
PC+1PC
INST IR
SBE
PC S
INST
PCI
INST
ALE
RD\
WR\
IO-M\
Microprocessadores e Microcomputadores
28
O diagrama de temporizao mostra os sinais essenciais no processo de busca e execuo de cada
instruo. Observa-se, por exemplo, que a cada novo ciclo de mquina, no estado T1, um novo valor de endereo
colocado no barramento pelo contador de programa PC. Esse novo endereo pode ser o endereo da prxima
instruo ou os bytes restantes (ou o byte restante) da instruo em andamento. O sinal ALE o sinal de
habilitao do Latch do endereo, ou seja, o endereo transferido para a memria ROM, de onde ser lida a
instruo.
O sinal RD\ vai a zero aps o estado T1 indicando que haver uma operao de leitura. Como o sinal
IO-M\ permanece zero durante todo o tempo, figura mostrada, significa que trata-se de leitura de memria, e no
de qualquer dispositivo de entrada e sada. Assim, a memria ROM lida nesse intervalo. O sinal WR\
permanece alto durante todo o intervalo mostrado, indicando que no h operao de escrita, seja na memria,
seja em dispositivo de entrada e sada.
No estado T3 a instruo lida da ROM transferida para o Registrador de Instruo (IR), encerrando a
o ciclo de busca. A instruo decodificada e sinais de controle so emitidos da Unidade de Temporizao e
Controle de forma que o ciclo de execuo j tenha incio a partir do estado T4.
Muitas das instrues do 8085, depois do ciclo de busca, precisam apenas de mais um ciclo de clock
para o ciclo de execuo. O ciclo de execuo pode ocorrer no estado T4, ou no prximo estado T2, durante o
cilco de busca da prxima instruo. No ltimo caso diz-se que houve sobreposio dos ciclos de busca e
execuo (SBE).
No diagrama da Fig. 2.4 aparece um estgio a mais, denominado de Perodo de Espera (Twait). Ele
gerado quando h necessidade de retardar o processo de busca da instruo, em funo de atraso no
processamento de informaes por um perifrico. Esse intervalo de espera aparece sempre aps o estado T2.
Para exemplificar o princpio de operao do 8085 mostrado a seguir o processo de busca e execuo
das instrues ADD B (adio do contedo do registrador B ao contedo do registrador A. O resultado
guardado em A) e MOV B,A ( move - copia - o contedo do registrador A no registrador B ).
Microprocessador (CPU)
Contador de Programa
(PC)
Acumulador
A ou ACC
Outros
Registradores:
B, C, D, E, H, L
Barramento
de Endereos
Barramento de Dados
Registrador de
Instrues (IR)
Opcode
ROM
Unidade de
Decodificao de
Instrues
Endereo
0000 h
0001 h
Instruo
ADD B
MOV B,A
Unidade de Controle
RAM
Endereo
Contedo
Microprocessadores e Microcomputadores
29
M1
M2
CLK
T1
ADD B
PC FORA
T2
T3
T4
T1
T2
PC+1PC
INST IR
B TMP
SBE
A+TMPA
PC FORA
PC+1PC
MOV B,A
A15 - A8
AD7- AD0
PC S
PC I
T3
INST IR
A TMP
PC S
INST
PC I
INST
ALE
RD\
WR\
IO-M\
Supondo-se que o acumulador contenha o valor 10h e que o registrador B (que faz parte do bloco
denominado "outros registradores") contenha o valor 5h, a adio do contedo de B ao contedo de A obtido
com a instruo ADD B. O resultado guardado no prprio acumulador. Posteriormente, com a instruo MOV
B,A o contedo de A copiado em B. Os passos para execuo das duas instrues em seqncia so dados a
seguir:
CICLO DE BUSCA:
1
2
3
4
5
6
Na descida do sinal de clock em T1 o Contador de Programa (PC) ativado, colocando o endereo atual no
barramento de 16 bits. O sinal ALE o trigger para a transferncia dos endereos de PC para o barramento.
Na subida do sinal de clock em T1 o endereo transferido do barramento para a memria ROM.
Na descida do sinal de clock (estado T2) o PC incrementado em 1, ficando pronto para apontar a prxima
instruo. O barramento est disponvel para outras operaes. Nesse instante, tambm, O sinal RD\ tornase baixo, habilitando uma operao de leitura. Como o sinal IO/M\ permanece baixo, trata-se de leitura de
memria.
Na subida do sinal de clock (ainda estado T2) nenhum bloco est ativo. O barramento continua disponvel.
Na descida do sinal de clock (estado T3) o cdigo da instruo ADD B, lida da memria ROM (endereo
transferido do barramento para a memria ROM no passo 2) transferido para o barramento.
Na subida do sinal de clock o bloco IR (Registrador de Instruo) carrega a instruo vinda da ROM e que
est presente no barramento. Termina o ciclo de busca da instruo ADD B.
Na descida do sinal de clock, no incio do estado T4, o contedo de B transferido para o barramento.
Na subida do clock no estado T4 o contedo de B, presente no barramento, transferido para um registrador
temporrio (TMP), para, depois, ser transferido para a unidade lgica e aritmtica.
Durante o estado T1 do ciclo de mquina M2 no h nenhuma operao na instruo ADD B, da uma outra
instruo pode utilizar o barramento para iniciar o ciclo de busca. No caso mostrado d-se incio ao ciclo de
Microprocessadores e Microcomputadores
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
D6
D5
D4
D3
D2
D1
D0
LSB
MSB = Most Significant Bit (Bit mais significativo)
LSB = Least Significant Bit (Bit menos significativo)
a) Instrues de 1 byte:
Opcode (byte 1)
Exemplo:
D7
D6
D5
D4
D3
D2
D1
D0
Opcode (byte 1)
= 80 h
b) Instrues de 2 bytes:
Opcode (byte 1)
Operando (byte 2)
Exemplo:
D7
D7
D6
D6
D5
D5
D4
D4
D3
D3
D2
D2
D1
D1
D0
D0
Opcode (byte 1)
Operando (byte 2)
0
0
0
0
1
1
1
1
1
0
1
0
1
1
0
0
Opcode (byte 1)
Operando 1 (byte 2=LSB)
Operando 2 (byte 3 = MSB)
D7
D7
D7
D6
D6
D6
D5
D5
D5
D4
D4
D4
D3
D3
D3
D2
D2
D2
D1
D1
D1
= 3E h
= 32 h
c) Instrues de 3 bytes:
D0
D0
D0
Os bytes 2 e 3 contm um dado ou um endereo de 16 bits. O byte 2 armazena o byte menos significativo
do endereo (low-order addr) ou o byte menos significativo do dado de 16 bits (low-order data). O byte 3
Microprocessadores e Microcomputadores
31
armazena o byte mais significativo do endereo (high-order addr) ) ou o byte mais significativo do dado (highorder data)
Exemplo: STA 1234h - guarda o contedo do acumulador na posio de memria indicada pelo
endereo addr
((byte 3)(byte 2) (A)
Opcode (byte 1)
Operando 1 (byte 2)
Operando 2 (byte 3)
0
0
0
0
0
0
1
1
0
1
1
1
0
0
0
0
1
0
1
0
1
0
0
0
= 32 h
= 34 h
= 12 h
No ciclo de busca (primeiro ciclo de mquina) o microprocessador 8085 transfere o primeiro byte da
instruo (opcode = cdigo de operao) para o Registrador de Instruo (IR). Nos ciclos de mquina que se
seguem os outros bytes so buscados na memria. Primeiro o byte 2 transferido para um registrador
temporrio (Z), depois o byte 3 que transferido para um registrador temporrio (W).
Cada uma das instrues pode ser visualizada com um diagrama de temporizao que mostra cada passo
da instruo.
O primeiro ciclo de mquina do 8085 flexvel podendo ter de 4 a 6 ciclos de clock; os demias ciclos
de mquina contm 3 ciclos de clock. O ciclo de instruo pode ter de 1 a 5 ciclos de mquina, como mostrado a
seguir, onde M o ciclo de mquina e T o estado dentro do ciclo de mquina:
T1
2.7
T2
T3
M1
T4
T5
T6
T1
M2
T2
T3
T1
M3
T2
T3
T1
M4
T2
T3
T1
M5
T2
T3
Exerccios Propostos
1.
Enumerar todos os registradores (endereveis ou no) do microprocessador 8085. Qual a capacidade (em
bits) de cada um deles?
2.
3.
4.
5.
6.
7.
8.
9.
Dizer, em poucas palavras, a funo de cada um dos seguintes pinos do 8085: HOLD, HLDA, INTR,
INTA, RST5.5, TRAP, READY, ALE, IO/M\, SID e SOD.
10. Apresentar um circuito combinacional para decodificar os sinais dos pinos RD\, WR\ e IO/M\ em
MEM_RD, MEM_WR, IO_RD, IO_WR. OBS: Utilizar apenas gates.
11. Codifique as instrues da tabela a seguir, coloque o endereo de cada instruo, escreva o significado de
cada instruo e responda s questes relativas tabela.
Operao
(SP) 2090 h
(H,L) 2050 h
(A) 53 h
(B) 0F h
(A) (A) + (B)
((H,L)) (A)
End.
2000
Mnemnico
Microprocessadores e Microcomputadores
Comentrio
32
(a) Qual o valor final do registrador A?
(b) Quais os valores das flags de carry, de sinal, de zero, auxiliar de carry e paridade, aps a ltima
instruo da tabela?
12. O diagrama de temporizao a seguir refere-se s instrues ADD B e MOV B,A do microprocessador
8085.
CLK
ADD B
T1
T2
T3
T4
T1
T2
PC FORA
PC+1PC
INST IR
B TMP
SBE
A+TMPA
PC FORA
PC+1PC
MOV B,A
A15 - A8
AD7- AD0
PC S
PC I
T3
T4
INST IR
AB
PC S
INST
PC I
INST
ALE
RD\
WR\
IO-M\
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
33
= operador lgico OR
Exemplo 1:
Instruo
Indicao simblica
: MOV r1, r2
: (r1) (r2)
Significado: O contedo do registrador r2 transferido (copiado) para o registrador r1. O valor de SSS identifica
o registrador r2 (origem) e o valor de DDD identifica o registrador r1 (destino).
Para transferir o contedo do registrador B para o registrador A, o mnemnico da instruo MOV A,B. A cada
mnemnico corresponde um cdigo de operao (opcode) em hexadecimal. No caso dessa instruo 78 h.
Para transferir o contedo do registrador E para o registrador D, o mnemnico da instruo MOV D,E. O
opcode 53 h.
Exemplo 2:
Instruo
Indicao simblica
: LDA addr
: (A) ((byte 3)(byte 2))
Significado: O contedo da memria, cujo endereo especificado nos bytes inferior (byte 2) e superior (byte 3),
transferido (copiado) para o registrador A. uma instruo de 3 bytes (opcode + byte 3 + byte 2)
Para transferir o contedo do endereo 234B h da memria, a instruo e o cdigo da instruo seriam:
LDA 234B h
Opcode: 3A 4B 23 (O contedo do byte menos significativo digitado primeiro)
3.2
Modos de Endereamento
As instrues do 8085 fazem referncia aos dados de forma explcita ou implcita. H 4 maneiras
distintas de se fazer esta referncia:
IMEDIATO: A instruo contm o dado no byte ou bytes seguintes ao Opcode.
Exemplos: MVI r, dado8 = move o dado especificado para o registrador r
( r ) (byte 2)
ADI dado8 = adiciona o dado especificado ao acumulador
(A) (A) + (byte 2)
Microprocessadores e Microcomputadores
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.
2.
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.
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
35
3.4
(r) (byte 2)
(r1) (r2)
(r) ((H)(L))
NO de
Ciclos
2
1
2
No de
Estados
7
4
7
MOV M, r
((H)(L)) (r)
MVI M,
dado8
((H)(L)) (byte 2)
10
LXI rp,
dado16
(rh) (byte 3)
(rl) (byte 2)
LDA addr
STA addr
Mnemnico
Genrico
Simbologia
MVI r, dado8
MOV r1, r2
MOV r, M
10
Modo de
Endereamento
Imediato
Registrador
Indireto por
registrador
Indireto por
registrador
Indireto por
registrador e imediato
Imediato
nenhuma
13
direto
nenhuma
13
direto
nenhuma
LHLD addr
16
direto
nenhuma
SHLD addr
16
direto
nenhuma
LDAX rp
(A) ((rp))
Indireto por
registrador
nenhuma
STAX rp
((rp)) (A)
Indireto por
registrador
nenhuma
XCHG
(H) (D)
(L) (E)
registrador
nenhuma
Microprocessadores e Microcomputadores
Flags
Afetadas
nenhuma
nenhuma
nenhuma
nenhuma
nenhuma
Comentrio
move o dado para o registrador r indicado
move o contedo do registrador r2 para o registrador r1
move para o registrador r o dado presente no endereo de memria
especificado pelo registrador par H-L
move o contedo do registrador r para a posio de memria
especificada pelo registrador par H-L.
Carrega o dado na posio de memria especificada pelo registrador
par H-L.
Carrega o dado de 16 bits no registrador par indicado em rp. O byte 2
da instruo colocado no registrador de menor ordem, ou byte
menos significativo, rl. O byte 3 da instruo colocado no
registrador de maior ordem, ou byte mais significativo, rh
Carrega acumulador com o dado armazenado na posio de memria
indicada pelo endereo addr. O byte 2 armazena o byte inferior do
endereo. O byte 3 da instruo armazena o byte superior do
endereo.
Move o contedo do acumulador para a posio de memria indicada
pelo endereo addr. O byte 2 armazena o byte inferior do endereo.
O byte 3 da instruo armazena o byte superior do endereo.
Carrega o contedo da posio de memria dada por addr ((byte
3)(byte 2)) no registrador L. Carrega o contedo da posio
subsequente ((byte 3)(byte 2) + 1) no registrador H.
Move o contedo do registrador L para a posio de memria dada
por addr ((byte 3)(byte 2)). Move o contedo do registrador H para
a posio subsequente de memria ((byte 3)(byte 2) + 1).
Carrega acumulador com o contedo da posio de memria indicada
pelo registrador par rp. rp pode ser B (do registrador para BC) ou D
(do registrador par DE).
Move o contedo do acumulador para a posio de memria indicada
pelo registrador par rp. rp pode ser B (do registrador para BC) ou D
(do registrador par DE).
O contedo do registrador H trocado com o contedo do registrador
D. O contedo de L trocado com o contedo de E.
36
As instrues apresentadas na tabela anterior esto na forma genrica. Cada uma dessas instrues
representada por diferentes cdigos de operao (OPCODES) para diferentes registradores. Na tabela a seguir as
instrues de transferncia de dados so desmembradas em seus diferentes opcodes.
MNEMNICO
LDA adr
LDAX B
LDAX D
LHLD addr
LXI B, Dado16
LXI D, Dado16
LXI H, Dado16
LXI SP, Dado16
MOV A,B
MOV A,C
MOV A,D
MOV A,E
MOV A,H
MOV A,L
MOV A,M
MOV B,A
MOV B,B
MOV B,C
MOV B,D
MOV B,D
MOV B,E
MOV B,H
MOV B,L
MOV B,M
MOV C,A
MOV C,B
MOV C,C
MOV C,D
MOV C,E
MOV C,H
MOV C,L
MOV C,M
MOV D,A
MOV D,B
MOV D,C
MOV D,D
MOV D,E
MOV D,H
MOV D,L
MOV D,M
MOV E,A
MOV E,B
44
45
46
4F
48
49
4A
4B
4C
4D
4E
57
50
51
52
53
54
55
56
5F
58
MOV E,C
MOV E,D
MOV E,E
MOV E,H
MOV E,L
MOV E,M
MOV H,A
MOV H,B
MOV H,C
MOV H,D
MOV H,E
MOV H,H
MOV H,L
MOV H,M
MOV L,A
MOV L,B
MOV L,C
MOV L,D
MOV L,E
MOV L,H
MOV L,L
59
5A
5B
5C
5D
5E
67
60
61
62
63
64
65
66
6F
68
69
6A
6B
6C
6D
MNEMNICO OPCODE
MOV L,M
MOV M,A
MOV M,B
MOV M,C
MOV M,D
MOV M,E
MOV M,H
MOV M,L
MVI A, Dado8
MVI B, Dado8
MVI C, Dado8
MVI D, Dado8
MVI E, Dado8
MVI L, Dado8
MVI M, Dado8
SHLD addr
STA addr
STAX B
STAX D
XCHG
6E
77
70
71
72
73
74
75
3E
06
0E
16
1E
2E
36
22
32
02
12
EB
Cdigo
MVI H,10h
MVI L,00h
MVI A,0Ah
MOV M,A
MOV C,M
MVI M,2Bh
26 10
2E 00
3E 0A
77
4E
36 2B
Mnemnico
Cdigo
LXI B,1000h
LXI D,2000h
LXI H,3000h
LXI SP,4000h
LDA 1000h
STA 2000h
01
11
21
31
3A
00
00
00
00
00
10
20
30
40
10
32 00 20
Comentrio
Carrega acumulador H com valor 10h
Carrega registrador L com valor 00h
Carrega acumulador com valor 0Ah
Move contedo de A para posio 1000h de memria
Move contedo da posio 1000h para registrador C. C = 0Ah
Coloca valor 2Bh na posio 1000h de memria
Comentrio
Carrega registrador duplo BC com valor 1000h
Carrega registrador duplo DE com valor 2000h
Carrega registrador duplo HL com valor 3000h
Carrega registrador duplo SP (apontador de pilha) com valor 4000h
Carrega acumulador com valor armazenado na posio de memria
1000h
Move contedo do acumulador para a posio de memria 2000h
Microprocessadores e Microcomputadores
37
Mnemnico
Cdigo
Comentrio
LHLD 1000h
2A 00 10
SHLD 2000h
22 00 20
LXI H,3000h
LXI B,4000h
LXI D,5000h
LDAX B
21 00 30
01 00 40
11 00 50
0A
STAX D
12
XCHG
EB
Microprocessadores e Microcomputadores
39
3.5
Instrues Aritmticas
Obs.: A menos que seja indicado, todas as instrues desse grupo afetam todas as Flags: Zero, Sinal, Paridade, Transporte (Carry) e Auxiliar de Transporte (Auxiliar de Carry)
(A) (A) + ( r )
(A) (A) + ( (H) + (L))
NO de
Ciclos
1
2
No de
Estados
4
7
Modo de
Endereamento
registrador
registrador
Flags
Afetadas
todas
todas
ADI dado8
ADC r
2
1
7
4
imediato
registrador
todas
todas
ADC M
imediato por
registrador
imediato
todas
ACI dado8
SUB r
SUB M
(A) (A) - ( r )
(A) (A) - ( (H)(L))
1
2
4
7
SUI dado8
SBB r
2
1
7
4
SBB M
SBI dado8
INR r
(r) (r) + 1
INR M
Mnemnico
Genrico
ADD r
ADD M
Simbologia
registrador
indireto por
registrador
imediato
registrador
todas
todas
todas
todas
todas
indireto por
registrador
imediato
todas
registrador
Z, S, P e AC
((H)(L)) ((H)(L)) + 1
10
Z, S, P e AC
DCR r
(r) (r) - 1
indiretor por
registrador
registrador
DCR M
((H)(L)) ((H)(L)) - 1
10
INX rp
(rh)(rl) (rh)(rl) + 1
Microprocessadores e Microcomputadores
indireto por
registrador
registrador
todas
Z, S, P e AC
Z, S, P e AC
nenhuma
Comentrio
O contedo do registrador r adicionado ao contedo do acumulador.
O contedo da posio de memria indicado pelo par HL adicionado
ao contedo do acumulador.
O valor dado em data adicionado ao contedo do acumulador.
O contedo do registrador r adicionado com carry ao contedo do
acumulador.
O contedo da posio indicada pelo par HL adicionado com carry ao
contedo do acumulador.
O valor dado em data adicionado com carry ao contedo do
acumulador.
O contedo do registrador r subtrado do contedo do acumulador.
O contedo da posio de memria indicado pelo par HL subtrado
do contedo do acumulador.
O valor dado em data subtrado do contedo do acumulador.
O contedo do registrador r subtrado com carry do contedo do
acumulador.
O contedo da posio indicada pelo par HL subtrado com carry do
contedo do acumulador.
O valor dado em data subtrado com carry do contedo do
acumulador.
O contedo do registrador r adicionado de 1. Todas as Flags so
afetadas, exceto CY.
O contedo da posio apontada pelo par HL incrementado de 1.
O contedo do registrador r decrementado. Todas as Flags so
afetadas, exceto CY.
O contedo da posio apontada pelo par HL decrementada de 1.
O contedo do registrador par rp adicionado de 1. Nenhuma Flag
afetada.
40
Simbologia
(rh)(rl) (rh)(rl) - 1
((H)(L))((H)(L))+ (rh)(rl)
DAA
NO de
Ciclos
1
No de
Estados
6
Modo de
Endereamento
registrador
Flags
Afetadas
nenhuma
10
registrador
CY
registrador
todas
Comentrio
O contedo do registrador par rp decrementado de 1.
O contedo do registrador par rp adicionado ao contedo do
registrador par HL. Somente a Flag de Carry (CY) afetada.
Faz o ajuste decimal do nmero no acumulador. O nmero de 8 bits do
acumulador ajustado para formar dois nmeros de 4 bits em BCD.
A regra seguida a seguinte:
1. Se o nmero representado pelo nibble inferior for maior do que 9,
ou se a Flag AC estiver setada, o nmero 6 adicionado ao
contedo do acumulador.
2. Se o nmero representado pelo nibble superior for maior do que 9,
ou se a Flag CY estiver setada, o nmero 6 adicionado ao nibble
superior.
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
41
Exemplos de uso de intrues aritmticas:
Mnemnico
MVI A,05h
MVI C,02h
ADD C
ADI 10h
ADC A
Cdigo
3E 05
0E 02
81
C6 10
8F
ACI 03h
CE 03
Comentrio
Carrega acumulador com valor 05h
Carrega registrador C com valor 02h
Adiciona contedo de C ao contedo de A. A = 05 + 02 = 07h
Adiciona 10h ao contedo de A. A = 07h + 10h = 17h
Adiciona o contedo de A ao prprio contedo de A, incluindo o valor
de carry. A = 17h + 17h + 0 = 2Eh. O carry aqui Zero.
Adiciona 03h ao contedo do acumulador. A = 2Eh+03h = 31h
Mnemnico
Cdigo
Comentrio
MVI A,05h
MVI C,02h
LXI H,2050h
MVI M,08h
SUB C
SUI 02h
SBB C
3E 05
0E 02
21 50 20
36 08
91
D6 02
99
SBI 03h
DE 03
SBB M
9E
Obs.: No se esquecer de que a subtrao no 8085 no feita diretamente. A subtrao feita atravs de uma
adio com o complementar de 2.
Ex.:
Subtrao direta:
Subtrao com complementar de 2:
A = 03 02 = 01h
A = 03 + (FD + 1) = 01h
Na operao com complementar de 2 houve um transporte (carry), mas na subtraao no 8085 a Flag CY
o complementar do carry, ou seja, CY = 0, como deveria ser o resultado de uma subtrao direta.
Outros exemplos para verificao da Flag de Transporte CY:
Exemplo 1: Operao de adio
1 1 1 1 0 0 0 1
+ 0 0 0 0 1 0 0 0
1 1 1 1 1 0 0 0
Carry = 0 CY = 0
1 1 1 1 1 1 1 1
+ 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0
Carry = 1 CY = 1
subtrao normal
0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 1
0 0 0 0 1 1 1 0
Carry = 0 CY = 0
Microprocessadores e Microcomputadores
42
Exemplo 3: Operao de subtrao
subtrao normal
0 0 0 0 1 1 0 0
- 0 0 0 1 0 0 1 0
1 1 1 1 1 1 0 1 0
Carry = 1 CY = 1
Exemplo: Suponhamos que o acumulador contm o valor 1Bh e a instruo DAA usada. O resultado depois da
instruo DAA 21 h.
Exemplo:
Mnemnico
MVI A,09h
MVI B,03h
MVI C,10h
LXI D,1234h
LXI H,0123h
INR A
DCR C
INX D
DCX B
DAD B
Cdigo
3E 09
06 03
0E 10
11 34 12
21 23 01
3C
0D
13
0B
09
DAA
27
Comentrio
Carrega acumulador com valor 09h
Carrega registrador B com valor 03h
Carrega registrador C com valor 10h
Carrega registrador duplo DE com valor 1234h
Carrega registrador duplo HL com valor 0123h
Incrementa 1 ao acumulador. A = 09h + 01h = 0Ah
Decrementa 1 do contedo de C. C = 10h - 01h = 0Fh
Incrementa 1 ao registrador par DE. DE = 1234h + 1h = 1235h
Decrementa 1 do contedo do registrador par BC. BC = 030Fh - 1h = 030Eh
Adiciona ao registrador par HL o contedo do registrador par BC. HL =
0123h + 0310h = 0433h
Corrige para decimal os nibbles inferior e superior do acumulador. Antes: A
= 0Ah. Depois: A = 10h
Exemplo especial: Programa em assembly do 8085 para fazer a adio de dois nmeros com mais de 8 bits
(maiores que 255). Os nmeros so: 452 e 926. 452 decimal = 1C4 h. 926 decimal = 39E h
Mnemnico
MVI A,C4h
MVI B,01h
MVI C,9Eh
MVI D,03h
ADD C
MOV L,A
MOV A,B
ADC D
MOV H,A
Cdigo
Comentrio
Carrega registradores com bytes inferior e superior das parcelas
Obs.: Aps a primeira adio (ADD C), a flag auxiliar de carry AC assume o valor 1, porque h transporte do
bit 3 para o bit 4. Tambm h transporte do bit 7 para o bit 8 (o qual est fora da capacidade do acumulador. A
ilustrao da adio acima mostrada abaixo em decimal, hexadecimal e binrio.
Decimal
1
Binrio
Hexa
1
Byte Superior
1
Microprocessadores e Microcomputadores
Byte Inferior
1
43
3.6
Instrues Lgicas
Obs.: Com exceo dos casos indicados, todas as intrues lgicas afetam as Flags
Mnemnico
Simbologia
NO de
No de
Modo de
Genrico
Ciclos Estados
Endereamento
1
4
registrador
ANA r
(A) (A) (r)
Flags
Afetadas
todas
ANA M
indireto por
registrador
todas
ANI dado8
imediato
todas
XRA r
registrador
todas
XRA M
indireto por
registrador
todas
XRI dado8
imediato
todas
ORA r
registrador
todas
ORA M
indireto por
registrador
todas
ORI dado8
imediato
todas
CMP r
(A) - (r)
registrador
todas
CMP M
indireto por
registrador
todas
Microprocessadores e Microcomputadores
Comentrio
O contedo do acumulador passa por uma operao lgica AND com o
contedo do registrador indicado em r. A flag CY zerada e a flag AC
setada.
O contedo do acumulador passa por uma operao lgica AND com o
contedo da posio de memria apontada pelo registrador par HL. A
flag CY zerada e a flag AC setada.
o contedo do acumulador passa por uma operao lgica AND com o
dado fornecido no byte 2 da instruo. A flag CY zerada e a flag AC
setada.
O contedo do acumulador passa por uma operao lgica XOR com o
contedo do registrador r indicado. As flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica XOR com o
contedo do endereo de memria apontado pelo registrador par HL. As
flags CY e AC so zeradas.
o contedo do acumulador passa por uma operao lgica XOR com o
dado fornecido no byte 2 da instruo. As flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica OR com o
contedo do registrador indicado em r. As flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica OR com o
contedo da posio de memria apontada pelo registrador par HL. As
flags CY e AC so zeradas.
O contedo do acumulador passa por uma operao lgica OR com o
dado presente no byte 2 da instruo. As flags CY e AC so zeradas.
Compara o contedo do registrador r com o contedo do acumulador. Na
operao o contedo de r subtrado do contedo de A, sem que o
resultado seja guardado em A. Se o resultado da subtrao for zero, ou
seja (A) = (r), a flag de zero Z = 1. Caso contrrio, Z = 0. Se (A) < (r), a
flag de carry CY = 1. Caso contrrio, CY = 0.
Compara o contedo da posio apontada pelo par HL com o contedo
do acumulador. Na operao o contedo da posio apontada por HL
subtrado do contedo de A, sem que o resultado seja guardado em A. Se
o resultado da subtrao for zero, ou seja (A) = ((H)(L)), a flag de zero Z
44
CPI dado8
RLC
(An+1) (An)
(A0) (A7)
(CY) (A7)
CY
RRC
(An) (An+1)
(A7) (A0)
(CY) (A0)
CY
RAL
(An+1) (An)
(CY) (A7)
(A0) (CY)
CY
RAR
(An) (An+1)
(CY) (A0)
(A7) (CY)
CY
CMA
(A) (A\)
nenhuma
CMC
(CY) (CY\)
CY
STC
(CY) 1
CY
Microprocessadores e Microcomputadores
imediato
todas
45
Z
1
0
0
CY
0
0
1
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
Cdigo
3E 0F
0E 52
06 46
A1
E6 44
EE 23
FE 33
07
B8
3F
1F
Comentrio
Carrega acumulador com valor 0Fh
Carrega registrador C com valor 52h
Carrega registrador B com valor 46h
Faz operao A AND C, ou, 0F AND 52h A = 02h
Faz A AND 44h, ou, 02h AND 44h. A = 00h
Faz A XOR 23h, ou, 00h XOR 23h A = 23h
Faz A - 33h, sem alterar A. Ou, 23 - 33h Z = 0 e CY = 1
Rotaciona A esquerda. Resultado: A = 46h e CY = 0
Faz A - B, sem alterar A. Ou, 46h - 46h Z = 1 e CY = 0
Complementa flag de Carry. CY = 1
Rotaciona A direita com Carry A = A3h e CY = 0
Microprocessadores e Microcomputadores
46
3.7
Instrues de Desvio
Condio indicada
Not Zero (Z = 0)
Zero (Z = 1)
No Carry (CY = 0)
Carry (CY = 1)
Parity odd = Paridade mpar (P = 0)
Parity Even = Paridade Par (P = 1)
Plus Positivo (S = 0)
Minus Negativo (S = 1)
bits de identificao
C
C
C
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
Microprocessadores e Microcomputadores
47
Instrues de Desvio:
Mnemnico
Simbologia
Genrico
(PC) (byte 3)(byte 2)
JMP addr
NO de
Ciclos
3
No de
Estados
10
Modo de
Endereamento
imediato
Flags
Afetadas
nenhuma
Jcondio addr
Se (CCC), ento,
(PC) (byte 3)(byte 2)
2/3
7/10
imediato
nenhuma
JNZ addr
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
Se (CCC), ento,
(PC) (byte 3)(byte 2)
2/3
7/10
imediato
nenhuma
2/3
7/10
imediato
nenhuma
2/3
7/10
imediato
nenhuma
2/3
7/10
imediato
nenhuma
2/3
7/10
imediato
nenhuma
2/3
7/10
imediato
nenhuma
2/3
7/10
imediato
nenhuma
JM addr
Se (CCC), ento,
(PC) (byte 3)(byte 2)
2/3
7/10
imediato
nenhuma
CALL addr
((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) (SP) - 2
(PC) (byte 3)(byte 2)
18
imediato e
indireto por
registrador
nenhuma
Ccondition addr
((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) (SP) - 2
(PC) (byte 3)(byte 2)
2/5
9/18
imediato e direto
por registrador
nenhuma
JZ addr
JNC addr
JC addr
JPO addr
JPE addr
JP addr
Microprocessadores e Microcomputadores
Comentrio
(Jump to address) = O controle transferido incondicionalmente para a instruo
cujo endereo dado no segundo e no terceiro bytes da instruo de desvio.
(Jump to address if CCC) = Se a condio indicada for verdadeira o controle
transferido para a instruo cujo endereo dado no segundo e no terceiro bytes
da instruo de desvio. Caso a condio seja falsa, o processamento continua
sequencialmente.
(Jump if Not Zero) = Desvia para o endereo indicado se o resultado da operao
aritmtica anterior a esta instruo no for zero, ou seja, desvia se Z = 0.
(Jump if Zero) = Desvia para o endereo indicado se o resultado da operao
aritmtica anterior a esta instruo for igual a zero, ou seja, desvia se Z = 1.
(Jump if No Carry) = Desvia para o endereo indicado se a flag de Carry estiver
zerada (CY = 0).
(Jump if Carry) = Desvia para o endereo indicado se a flag de Carry estiver
setada (CY = 1).
(Jump if Parity Odd) = Desvia para o endereo indicado se a paridade for mpar,
ou seja, se a flag de Paridade for zero (P = 0).
(Jump if Parity Even) = Desvia para o endereo indicado se a paridade for Par,
ou seja, se a flag de Paridade estiver setada (P = 1).
(Jump if Plus) = Desvia para o endereo indicado se o valor no acumulador for
um nmero positivo, ou seja, tiver o stimo bit zerado, ou ainda se a flag de Sinal
estiver zerada (S = 0).
(Jump if Minus) = Desvia para o endereo indicado se o valor no acumulador for
um nmero negativo, ou seja, tiver o stimo bit setado, ou ainda se a flag de
Sinal estiver setada (S = 1).
(Call address) = Chamada de subrotina. O processamento desviado para o
endereo indicado em addr, que dado pelos bytes 2 e 3 da instruo. Antes do
desvio para a subrotina, o endereo da prxima instruo guardado na pilha. O
byte superior do endereo da prxima instruo guardado na posio SP - 1 da
pilha e o byte inferior guardado na posio SP - 2 da pilha. Ao final da
subrotina a instruo RET faz o processamento voltar para o programa principal
no endereo que foi guardado na pilha.
(Call address if CCC is true) = Chamada de subrotina condicional. O
processamento desviado para o endereo indicado em addr se a condio
indicada em CCC for verdadeira. O endereo dado pelos bytes 2 e 3 da
instruo. Antes do desvio para a subrotina, o endereo da prxima instruo
guardado na pilha. O byte superior do endereo da prxima instruo guardado
na posio SP - 1 da pilha e o byte inferior guardado na posio SP - 2 da pilha.
Ao final da subrotina a instruo RET faz o processamento voltar para o
programa principal no endereo que foi guardado na pilha.
48
RET
(PCL) (SP)
(PCH) (SP + 1)
(SP) (SP) + 2
10
indireto por
registrador
nenhuma
Rcondio
(PCL) (SP)
(PCH) (SP + 1)
(SP) (SP) + 2
1/3
6/12
indireto por
registrador
nenhuma
RST n
((SP) - 1) (PCH)
((SP) - 2) (PCL)
(SP) (SP) - 2
(PC) 8 * (NNN)
12
indireto por
registrador
nenhuma
PCHL
(PCH) (H)
registrador
nenhuma
(PCL) (L)
Microprocessadores e Microcomputadores
49
3.8
Simbologia
((SP) - 1 (rh)
NO de
Ciclos
3
No de
Estados
12
Modo de
Endereamento
indireto por
registrador
Flags
Afetadas
nenhuma
12
indireto por
registrador
nenhuma
10
indireto por
registrador
nenhuma
10
indireto por
registrador
todas
16
indireto por
registrador
nenhuma
((SP) - 2 (rl)
(SP) (SP) - 2
PUSH PSW
((SP) - 1 (A)
((SP) - 2 (F)
(SP) (SP) - 2
POP rp
(rl) ((SP))
(rh) ((SP) + 1)
(SP) (SP) + 2
POP PSW
(F) ((SP))
(A) ((SP) + 1)
(SP) (SP) + 2
XTHL
(L) ((SP))
(H) ((SP) + 1)
SPHL
registrador
nenhuma
IN porta
10
direto
nenhuma
OUT porta
10
direto
nenhuma
Microprocessadores e Microcomputadores
Comentrio
50
EI
nenhuma
DI
nenhuma
HLT
1+
nenhuma
NOP
nenhuma
RIM
nenhuma
SIM
nenhuma
CD
DC
FC
2F
3F
BF
B8
B9
BA
BB
CMP M
CNC adr
CNZ adr
CP adr
CPE adr
CPI D8
CPO adr
CZ adr
DI
EI
BE
D4
C4
F4
EC
FE
E4
CC
F3
FB
JM adr
JMP adr
JNC adr
JNZ adr
JP adr
JPE adr
JPO adr
JZ adr
NOP
ORI D8
FA
C3
D2
C2
F2
EA
E2
CA
00
F6
POP B
POP D
POP H
POP PSW
PUSH B
PUSH D
PUSH H
PUSH PSW
RC
RET
C1
D1
E1
F1
C5
D5
E5
F5
D8
C9
RNC
RNZ
RP
RPE
RPO
RST 0
RST 1
RST 2
RST 3
RST 4
D0
C0
F0
E8
E0
C7
CF
D7
DF
E7
CMP H
BC
IN D8
DB
OUT D8
D3
RIM
20
RST 5
EF
CMP L
BD
JC adr
DA
PCHL
E9
RM
F8
Microprocessadores e Microcomputadores
RST 6
RST 7
RZ
SIM
SPHL
STC
XCHG
XRI D8
XTHL
F7
FF
C8
30
F9
37
EB
EE
E3
51
3.9
Funcionamento da Pilha
Como j foi dito anteriormente, a Pilha uma regio da memria RAM, definida pelo usurio, para
guardar valores que sero usados posteriormente. Assim, o usurio pode guardar o contedo de qualquer
registrador (dois a dois: A e Flags, B e C, D e E, H e L) na pilha e o microprocessador guarda automaticamente
os endereos de retorno de subrotinas comuns e de subrotinas de interrupes. A seguir ilustrada a regio da
memria definida como Pilha (Stack).
Observaes:
(a) O contedo guardado na pilha sempre de 16 bits. Assim, o microprocessador normalmente guarda
o contedo de PC, que j de 16 bits, mas o usurio normalmente guarda o contedo de
registradores de 8 bits, que ento so associados 2 a 2;
(b) Os registradores duplos que podem ser guardados na pilha so PSW (= A + Flags), B (= B + C), D (=
D + E) e H (= H + L);
(c) Para guardar o contedo de um desses registradores duplos usa-se a instruo PUSH rp;
(d) Para recuperar o contedo que foi guardado na pilha usa-se a instruo POP rp;
(e) Quando uma informao enviada para a pilha o byte mais significativo guardado primeiro; isso
significa que o byte menos significativo vai ser retirado primeiro porque o ltimo dado armazenado
o primeiro a ser retirado;
(f) A pilha do 8085 evolui do maior endereo para o menor, ou seja, a cada vez que uma informao (2
bytes) enviada para a pilha, o endereo do topo da pilha reduzido de 2. Ele acrescido de 2
quando a informao retirada da pilha;
(g) O apontador de pilha SP aponta sempre para o topo da pilha, mas ele incrementado de 1 antes de
cada byte ser armazenado.
Exemplo de armazenamento na pilha:
Supondo que inicialmente SP = 2090 h, A = 01 h, F = 23 h, B = 45 h e C = 67 h, as figuras a seguir
mostram a evoluo da pilha aps cada instruo dada. A regio em destaque corresponde posio apontada
por SP aps a instruo.
PUSH PSW
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
208D
208E
23
208F
01
2090
SP aps a instruo:
208E h
PUSH B
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
67
208D
45
208E
23
208F
01
2090
SP aps a instruo:
208C h
POP B
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
67
208D
45
208E
23
208F
01
2090
SP aps a instruo:
208E h
POP PSW
Endereo
Contedo
da RAM
(HEX)
2089
208A
208B
208C
67
208D
45
208E
23
208F
01
2090
SP aps a instruo:
2090 h
Observaes:
(a) Apesar da regio da pilha continuar com o mesmo contedo aps as instrues POP rp, eles no acessveis
porque o Apontador de Pilha SP aponta para a posio original, de quando a pilha estava vazia;
(b) POP B vem antes de POP PSW porque a ordem de retirada da pilha inversa ordem de armazenagem.
Microprocessadores e Microcomputadores
52
Exemplo de uso de instrues de desvio e de controle. A instruo MOV A,B no afeta nenhuma flag e,
portanto, no afeta a flag de zero (Z) decorrente da instruo DCR C.
Label
volta:
fim:
2.
Label
Instrues
MVI C,10h
Comentrio
Carrega o registrador C com o valor 10 h
volta:
DCR C
JZ fim
MOV A,B
JMP volta
HLT
Exemplo usando comparao entre registradores (A e B). A operao de comparao e volta repetida at o
valor de B alcanar o valor 08h, quando ento a flag de carry setada, fazendo o processamento encerrar.
Label
volta:
4.
Instrues
MVI A,07h
MVI B,00h
Comentrio
INC B
CMP B
JNC volta
HLT
Exemplo similar ao anterior, mas usando a instruo JC endereo, ao invs de JNC endereo.
Label
volta:
fim:
5.
Comentrio
Carrega o registrador C com o valor 10 h
Decrementa contedo do registrador C
Copia contedo de B em A. No afeta nenhuma flag.
Se o resultado de DCR C no for ZERO, desvia para "volta"
Esta instruo pra o processamento do programa
fim:
3.
Instrues
MVI C,10h
DCR C
MOV A,B
JNZ volta
HLT
Instrues
MVI A,07h
MVI B,00h
INC B
CMP B
JC fim
JMP volta
HLT
Comentrio
A operao de comparao e volta repetida at
o valor em B alcanar o valor 08h, quando ento a flag
de Carry CY setada, fazendo o processamento encerrar
pulando para o comando HLT
volta:
Mnemnico
MVI A,00h
MVI C,03h
ADI 04h
DCR C
JNZ volta
HLT
Comentrio
Zera acumulador. A = 00 h
Carrega registrador C com 03 h. "C" ser usado como contador
Adiciona Imediato 04h ao acumulador. A = A + 04 h
Decrementa o contador. C = C - 1.
"volta" se o resultado de DCR C no for zero (Se Z = 0)
Encerra processamento quando C = 0, ou seja, flag Z = 1.
Microprocessadores e Microcomputadores
53
6.
7.
8.
Outra verso de programa que faz a multiplicao de 4 por 3. A instruo ADI Dado8 substituda pela
instruo ADD B. O acumulador vai assumir os valores 00 h, 04 h, 08 h e, finalmente, 0C h, isto 12
decimal.
Label
Mnemnico
volta:
MVI A,00h
MVI B,04h
MVI C,03h
ADD B
DCR C
JNZ volta
HLT
Comentrio
Zera acumulador. A = 00 h.
Carrega o registrador B com 04 h.
Carrega o registrador C com 03 h. "C" ser usado como contador
Adiciona B ao acumulador. A = A + B
Decrementa o contador. C = C - 1.
"volta" se o resultado de DCR C no for zero (Se Z = 0)
Encerra processamento quando C = 0, ou seja, flag Z = 1.
Mnemnico
LXI SP, 2090h
MVI A,00h
MVI B,04h
MVI C,03h
CALL soma
HLT
soma:
ADD B
DCR C
JNZ soma
RET
Comentrio
Pilha na posio 2090 h
Zera acumulador. A = 00 h.
Carrega o registrador B com 04 h.
Carrega o registrador C com 03 h. "C" ser usado como contador
Chama subrotina que adiciona B ao acumulador
Encerra processamento
Adiciona B ao acumulador. A = A + B
Decrementa o contador. C = C - 1.
Desvia para "volta" se o resultado de DCR C no for zero (Se Z = 0)
Retorna para programa principal
Programa que gera uma contagem crescente, em hexadecimal, de 00 h a FF h e envia o resultado para a
sada 1.
Label
volta:
Mnemnico
MVI A,00h
OUT 01h
INR A
JNZ volta
HLT
Comentrio
Zera acumulador. A = 00 h
Envia valor de A para a Porta de sada 01h
Incrementar contedo do acumulador. A = A + 1
"volta" se contedo do acumulador for diferente de zero
Encerra quando contedo do acumulador for zero.
Obs.: Nesse programa o acumulador inicia com valor 00h e encerra quando o acumulador volta para o valor 00h,
aps passar por todos os valores de 00 a FFh.
9.
Subrotina de atraso de 1 ms. feita a suposio de que um programa chama a subrotina denominada atraso,
que dada logo a seguir. suposto um tempo de 1s para cada estado.
_____
_____
CALL atraso
_____
_____
Label
atraso:
volta:
Mnemnico
MVI C,46h
DCR C
JNZ volta
NOP
HLT
Comentrio
Registrador C recebe valor 46 h 70 d
Decrementa C. C = C - 1
Volta, se flag de zero for zero (Z=0) C 0
Estado inoperante (No Operation). Apenas retardo
Encerra quando contedo do acumulador for zero.
Microprocessadores e Microcomputadores
54
Instruo
MVI C
DCR C
JNZ (verdadeiro)
JNZ (falso)
NOP
RET
Tempo Parcial
(s)
7
280
690
7
4
10
998 s 1 ms
Mnemnico
MVI B,0Ah
MVI C,47h
DCR C
JNZ repete2
DCR B
JNZ repete1
RET
Instruo
MVI B
MVI C
DCR C
JNZ repete2
(verdadeiro)
JNZ repete2 (falso)
DCR B
JNZ repete1
(verdadeiro)
JNZ repete1
(falso)
RET
Comentrio
Inicia contador B com valor 0Ah 10d
Inicia contador C com valor 47h 71h
Decrementa C. C = C - 1
Repete lao at registrador C = 0 Z = 1.
Decrementa registrador B
Reinicia lao interno at zerar registrador B Z = 1.
7
70
2840
7000
10
10
9
7
4
10
1
1
1
70
40
90
1
Tempo Total
10
10
10134 s 10 ms
2.
3.
4.
Explique em poucas palavras como funciona a pilha no 8085. Mostre, atravs de um mapa de memria, a
evoluo da pilha quando se realiza as seguintes instrues, na seqncia mostrada:
PUSH B, PUSH D, ADD B, PUSH PSW, ADD D, POP PSW, OUT 90, POP D, POP B
Valores iniciais: SP = 20C0 h,
A = 33 h,
Microprocessadores e Microcomputadores
B = 1C h,
C = 4B h,
D = 10 h, E = FE h e F = 3D h
Prof. Jos Wilson Lima Nerys
55
5.
Mostre, atravs de um mapa de memria, a evoluo da pilha quando se executam as seguintes instrues,
na seqncia mostrada:
PUSH PSW, PUSH B, CALL ADIO, (RET), MOV B, A, POP B, POP PSW
Valores iniciais: SP = 2090 h,
A = 53 h,
B = 0F h,
C = 05 h, D = 12 h, E = 01 h e F = 55 h
6.
7.
Considere o programa abaixo, em mnemnico, e responda as questes a seguir, sabendo que a subrotina no
endereo 0200 h provoca um retardo de 1ms e afeta o registrador B.
Endereo
4000
volta:
pula:
Instruo
LXI SP,4050h
LXI H,402Fh
MVI C,07h
INX H
MOV A,M
ANI 01h
JNZ pula
MOV A,M
OUT 01h
CALL 0200h
DCR C
JNZ volta
RST 4
Endereo
4030
4031
4032
4033
4034
4035
4036
Dados
10h
02h
05h
F2h
0Ah
19h
03h
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
56
12. Faa o comentrio de cada linha do programa abaixo e, a seguir, explique qual a finalidade do programa
completo. Complete os endereos.
End.
4000
volta:
pula:
Mnemnico
LXI SP,4100h
LXI H,4031h
MVI C,0Ah
LDA 4030h
CMP M
JC pula
MOV A,M
INX H
DCR C
JNZ volta
CALL APDIS
CALL DBYTE
HLT
Comentrios
Microprocessadores e Microcomputadores
57
4.1
LEDs para
Memria RAM:
Endereo, cdigo
em hexadecimal
e mnemnico
Chaves para
entrada de dados
Contedo da
memria RAM
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
58
Subrotina
LETECLA
Endereo
(h)
02E7
MOSTRAA
036E
MOSTRAD
0363
DELAY
05F1
Funo
Entrada
Sada
Registradores
Afetados
nenhuma
A - valor da
tecla lida
A, H e L
nenhuma
todos
D - byte mais
significativo
E - byte menos
significativo
D - 1o byte a ser
mostrado no
display
E - 2o byte a ser
mostrado no
display
nenhuma
todos
nenhuma
A, D e E
Nesse momento interessante refazer o exemplo usado com o kit didtico. Trs detalhes devem ser
observados:
1. A memria RAM do ABACUS comea no endereo 2000 h, ao invs de 4000 h.
2. No h necessidade de usar uma subrotina para apagar o display no ABACUS. No kit essa subrotina
essencial.
3. fundamental definir a posio da pilha no ABACUS, atravs do comando LXI SP, xx xx. Caso
contrrio, pode ocorrer erros, com o simulador tentando acessar endereo fora da faixa permitida.
Label
volta:
Endereo
2000
2003
2005
2006
2009
200A
200b
Mnemnico
LXI SP, 2020
MVI A,00h
PUSH PSW
CALL MOSTRAA
POP PSW
INR A
JMP volta
Cdigo
31 20 20
3E 00
F5
CD 6E 03
F1
3C
C3 05 20
Comentrio
Define pilha na posio 2020 h da RAM
Carrega registrador A com valor 00 h
Guarda valor de A e flags na pilha
Mostra contedo de A no display. Afeta "A"
Recupera valor de A guardado na pilha
Incrementa contedo de A
Volta para a posio "volta", ou seja, 2005 h
Microprocessadores e Microcomputadores
59
4.2
Exemplo 1: Faa no ABACUS um programa que executa uma contagem crescente em hexadecimal de 00
h at 60 h.
AA+1
Incio
Label
SP 2090 h
A 00 h
volta:
Mostra A
N
A = 60 h?
S
fim:
Mnemnico
LXI SP,2090H
MVI A,00H
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 60H
JZ fim
INR A
JMP volta
HLT
Fim
Exemplo 2: Faa no ABACUS um programa que executa, de forma ininterrupta, uma contagem
hexadecimal crescente de 00h at 60h seguida de uma contagem hexadecimal decrescente de 60h at 00h.
Label
Incio
SP 2090 h
A 00 h
AA+1
volta:
Mostra A
cresce:
N
A = 60 h?
S
AA1
Mostra A
decresce:
Mnemnico
LXI SP,2090H
MVI A,00H
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 60H
JZ decresce
INR A
JMP volta
DCR A
PUSH PSW
CALL MOSTRAA
POP PSW
CPI 00H
JZ cresce
JMP decresce
A = 00 h?
S
Microprocessadores e Microcomputadores
60
4.3
Exerccios Propostos
1.
2.
3.
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.
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.
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
Microprocessadores e Microcomputadores
61
19. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 5( - 2).
20. O trecho de programa dado abaixo usado para montar uma tabela de 10 nmeros (cada um com dois
dgitos).
LABEL
L_PRXIMO:
MNEMNICO
LXI SP,2080h
LXI H,2050h
MVI C,0Ah
CALL leitura
MOV M,A
PUSH H
PUSH B
CALL MOSTRAA
POP B
POP H
INX H
DCR C
JNZ L_PRXIMO
LABEL
LEITURA:
MNEMNICO
PUSH H
CALL LETECLA
RLC
RLC
RLC
RLC
MOV B,A
CALL LETECLA
ORA B
POP H
RET
END.
MNEMNICO
(A) 70 h
(C) 0F h
(H,L) 2020 h
((H)(L)) F0 h
(A) (A) (C)
(A) ((H)(L))
(A) (A) + (C) + CY
2000
MVI A, 70 h
MVI C, 0F h
LXI H, 2030 h
MVI M, F0 h
ANA C
CMP M
ADC C
MOV A,C
CY
ORA M
MOV C,A
CPI FF h
(A) FF h
Resultado no display
60
30
30
Microprocessadores e Microcomputadores
70
Dado de entrada
62
23. Codifique, usando mnemnicos do microprocessador 8085 e recursos do ABACUS, os trechos de
programas representados nos fluxogramas dados a seguir:
(a)
S
Label
Mnemnico
Label
Mnemnico
A < 15 h ?
N
A > 45 h ?
N
Mostra A
CC1
(b)
EE+1
AAB
S
CY = 0?
N
AE
Mostra A
Fim
24. Faa, para executar no ABACUS, um programa que l um nmero x de 1 dgito pelo teclado e mostra no
display de dados o resultado de x2 2.
4.4
Referncias Bibliogrficas
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
Microprocessadores e Microcomputadores
63
O laboratrio de microprocessadores conta com um Kit Didtico para realizao de experimentos usando
o microprocessador 8085. Esse Kit j possui vrias sub-rotinas no programa residente (chamado de programa
monitor). Elas so dadas a seguir, juntamente com uma breve descrio e com os endereos onde elas esto
armazenadas.
Subrotina
APDIS
Endereo
(h)
070B
Funo
Entrada
Sada
nenhuma
nenhuma
CI
05C1
nenhuma
A - cdigo da
tecla lida
A - cdigo do
caracter
mostrado no
display
nenhuma
CO
05CB
DADD
05B8
DBYTE
05A1
05D6
RADD
0580
RBYTE
0558
RDATA
0593
nenhuma
TECLA
06BA
nenhuma
DELAY
077A
DEL 1
DEL 2
0770
0766
C - cdigo do
caracter a ser
mostrado no
display
D - 1o byte a ser
mostrado no
display
E - 2o byte a ser
mostrado no
display
A - byte a ser
mostrado no
display
M - endereo da
memria a partir
de onde comea a
mensagem
nenhuma
Registradores
Afetados
nenhum
A e flags
A e flags
A, BC, DE e
flags
nenhuma
A, BC e flags
nenhuma
A, C, HL e
flags
A, BC, HL e
flags
A, BC e flags
nenhuma
M - 2 bytes
lidos
A = B = byte
lido e
mostrado no
display
M = 2 bytes
mostrados no
display
A=C=
posio na
TABTEC do
cdigo da
tecla lida
nenhuma
nenhuma
nenhuma
nenhuma
nenhuma
A, B e flags
A, BC e flags
nenhuma
DE
A, C e flags
A e flags
Microprocessadores e Microcomputadores
64
Label
volta:
5.2
Endereo
4000
4002
Mnemnico
MVI A,00h
CALL APDIS
Cdigo
3E 00
CD 0B 07
4005
4006
4009
400A
400B
PUSH PSW
CALL DBYTE
POP PSW
INR A
JMP volta
F5
CD A1 05
F1
3C
C3 02 40
Comentrio
Carrega registrador A com valor 00 h
Apaga display. importante para que os nmeros
da contagem sejam mostrados na mesma posio
Guarda valor de A e flags na pilha
Mostra contedo de A no display. Afeta "A"
Recupera valor A guardado na pilha
Incrementa contedo de A
Volta para a posio "volta", ou seja, 4002 h
O programa a ser executado pelo Kit deve ser digitado atravs do teclado e deve ser usado o cdigo
hexadecimal de cada instruo. No exemplo anterior aparece uma coluna com os cdigos das instrues e com
os dados em hexadecimal. Por exemplo, o cdigo 3Eh corresponde instruo MVI A; logo a seguir aparece
00 h, que o dado a ser transferido para o acumulador.
Na instruo seguinte CALL APDIS, verifica-se que CD o cdigo da instruo de chamada de
subrotina CALL, A1 o byte menos significativo do endereo da subrotina chamada e 05 o byte mais
significativo do endereo.
Obs: Em toda instruo que contm endereo ou dado de 16 bits o byte menos significativo digitado
primeiro.
A figura a seguir ilustra o teclado e o display do Kit didtico. Cada uma das teclas do teclado da direita
apresenta 2 ou 3 funes. Uma delas um dgito hexadecimal, que vai de 0 a F. A outra uma das funes
explicadas a seguir.
Display de endereos
e dados de 16 bits
EXC
RST
PRG
TR
VER
COM
K-7
ESC
K-7
LER
DSP
C
Display
de dados
DNX DMN
NXT
E
D
XRG FILL INS
PC
SP
M
8
9
A
SST MOV RA
4
5
6
RB
RC
RD
0
1
2
GO
F
SUB
B
RF
7
RE
3
RB, RC, RD, RE, RA e RF Estas teclas permitem visualizar no display de dados o contedo dos registradores
B, C, D, E, A e F. Elas devem ser precedidas da tecla XRG. Ou seja, quando se deseja visualizar, por
exemplo, o contedo do acumulador (registrador A), usa-se as teclas <XRG> <RA>
PC Permite visualizar o contedo do contador de programa, ou seja, a posio atual do programa em
execuo. Essa posio visualizada no display de endereos. Usa-se as teclas <XRG> <PC>
SP Permite visualizar o contedo do apontador de pilha, ou seja, o endereo atual de armazenagem ou leitura
da pilha. Usa-se as teclas <XRG> <SP>.
M Permite visualizar o contedo de memria cujo endereo dado pelo par HL. Ao digitar-se <XRG> <M>,
o contedo dos registradores H e L mostrado no display de endereos e o contedo da posio de memria
correspondente mostrado no display de dados.
Microprocessadores e Microcomputadores
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
66
importante ainda frisar como feita a distribuio de memria no Kit Didtico. A memria ROM
consiste em uma pastilha de memria 2716, de 2 kbytes, o que significa 2048 posies de 8 bits cada uma. Sendo
2048 = 800 h, os endereos vo de 000 h at 7FF h. A memria RAM consiste em 6 pastilhas de memria 2114,
de 1 kbyte. Porm, cada posio de memria da pastilha 2114 contm apenas 4 bits, o que torna necessrio o uso
de duas a duas para formar 1 byte (8 bits). Em cada conjunto de 2 pastilhas em paralelo o de acesso vai de 000 h
at 3FF h.
A figura a seguir ilustra a distribuio de memria no Kit Didtico. Procura-se mostrar a memria do
modo como ela est colocada no kit.
Memria ROM
Embora essa memria possa ir de 0000 h at
3FFF h, somente uma pastilha de memria
usada e o endereo vai de 0000 h at 07FF h
Espao reservado
2716
Memria RAM
Embora essa memria possa ir de 4000 h at
5FFF h, os trs conjuntos de memria permitem
acessar dados de 4000 h at 4BFF h
2114
2114
0800 h 0FFF h
0000 h 07FF h
4000 h 43FF h
4000 h 43FF h
Espao reservado
Espao reservado
2114
2114
1800 h 1FFF h
1000 h 17FF h
4400 h 47FF h
4400 h 47FF h
Espao reservado
Espao reservado
2114
2114
2800 h 2FFF h
2000 h 27FF h
4800 h 4BFF h
4800 h 4BFF h
Espao reservado
Espao reservado
Espao reservado
Espao reservado
3800 h 3FFF h
3000 h 37FF h
4C00 h 4FFF h
4C00 h 4FFF h
Espao vazio
Espao reservado
5000 h 53FF h
5000 h 53FF h
Espao reservado
Espao reservado
5400 h 57FF h
5400 h 57FF h
Espao reservado
Espao reservado
5800 h 5BFF h
5800 h 5BFF h
Espao reservado
Espao reservado
5C00 h 5FFF h
5C00 h 5FFF h
Observar que o ltimo endereo de memria ROM 07FF h e que o ltimo endereo de memria RAM
4BFF h.
5.3
Roteiros de Experimentos
A presente seo tem como objetivo propor experimentos de laboratrio que possam ser implementados
com o simulador ABACUS e com o kit didtico. Esses experimentos sero executados na medida em que a parte
terica for ministrada.
Microprocessadores e Microcomputadores
67
EXPERIMENTO 1
Objetivo: Familiarizao com o simulador ABACUS e com o kit didtico
Material: computador com o simulador ABACUS e kit didtico
1. Inclua no ABACUS e execute o programa da seo anterior, repetido a seguir.
Endereo
2000
2003
2005
2006
2009
200A
200b
Mnemnico
LXI SP, 2020
MVI A,00h
PUSH PSW
INCIO
A 00 h
CALL MOSTRAA
POP PSW
INR A
JMP 2005
Mostra A
AA+1
2. Inclua, aps a instruo CALL MOSTRAA, uma subrotina de atraso de tempo com D = 05 h, execute o
programa novamente e observe o aumento no tempo entre cada valor mostrado no display. O trecho a ser
includo mostrado a seguir:
Endereo
2009
200B
200E
200F
2010
Mnemnico
MVI D, 05
CALL DELAY
POP PSW
INR A
JMP 2005
Mnemnico
MVI A,00h
CALL APDIS
PUSH PSW
CALL DBYTE
POP PSW
INR A
JMP 4002
Cdigo
3E 00
CD 0B 07
F5
CD A1 05
F1
3C
C3 02 40
4. Inclua, aps a instruo CALL DBYTE, a subrotina de atraso de tempo DEL 1 (50 ms), execute o programa
novamente e observe o aumento no tempo entre cada valor mostrado no display. O trecho a ser includo
mostrado a seguir:
Endereo
4009
400C
400D
400E
Mnemnico
CALL DEL1
POP PSW
INR A
JMP 4002
Cdigo
CD 70 07
F1
3C
C3 02 40
5. Questes do Experimento 1
(a)
(b)
(c)
(d)
Microprocessadores e Microcomputadores
68
EXPERIMENTO 2
Objetivo: Familiarizao com as instrues de transferncia de dados
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao
End.
Mnemnico
(A) 99h
(H,L) 2050h
(2050) (A)
(D,E) 2060h
(E) 70h
(B) (E)
((H,L)) (B)
((D,E)) (A)
(H,L) (D,E)
(SP) 20C0 h
(L) AA h
((H,L)) 22 h
(D) ((H,L))
(A) (D)
(H) (L)
2000
2002
MVI A, 99
Comentrio
Carrega acumulador com valor 99
2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao
End.
Mnemnico
Cdigo
(A) 99h
(H,L) 4050h
(4050) (A)
(D,E) 4060h
(E) 70h
(B) (E)
((H,L)) (B)
((D,E)) (A)
(H,L) (D,E)
(SP) 4B00h
(L) AA h
((H,L)) 22 h
(D) ((H,L))
(A) (D)
(H) (L)
4000
4002
MVI A, 99
3E 99
Comentrio
Carrega acumulador com valor 99
3. Questes do Experimento 2
(a) Qual o contedo final dos registradores A, D, E e H no ABACUS?
(b) Qual o contedo final do endereo 2050 h no ABACUS?
(c) Em que endereo foi inserido o opcode da instruo (SP) 4B00 h?
(d) Qual o endereo apontado pelo par HL aps a instruo (H,L) (D,E) no kit didtico?
(e) Em que endereo o valor 22 h foi armazenado aps a instruo ((H,L)) 22h no kit didtico?
Microprocessadores e Microcomputadores
69
EXPERIMENTO 3
Objetivo: Familiarizao com as instrues aritmticas do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao
End.
Mnemnico
(H,L) 2050h
((H,L)) 10 h
(E) 05 h
(A) 01 h
(B) FF h
(A) (A) + (B)
(A) (A) + ((H,L)) + CY
(A) (A) + 21 h
(A) (A) - (E)
(A) (A) - (B) - CY
(A) (A) - 33 h
(B,C) 2F01 h
(B) (B) + 1
(C) (C) - 1
(B,C) (B,C) - 1
2000
2003
LXI H, 2050
2Comentrio
2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao
End.
Mnemnico
Cdigo
(H,L) 4050h
((H,L)) 10 h
(E) 05 h
(A) 01 h
(B) FF h
(A) (A) + (B)
(A) (A) + ((H,L)) + CY
(A) (A) + 21 h
(A) (A) - (E)
(A) (A) - (B) - CY
(A) (A) - 33 h
(B,C) 2F01 h
(B) (B) + 1
(C) (C) - 1
(B,C) (B,C) - 1
4000
4003
LXI H, 4050
21 50 40
Comentrio
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
70
EXPERIMENTO 4
Objetivo: Familiarizao com as instrues lgicas do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao
End
(A) 0F h
(B) EA h
(C) 52 h
(A) (A) (C)
(H,L) 2040 h
((H,L)) FF h
(A) (C) ((H,L))
2000
Mnemnico
Comentrio
(A) (A) 44 h
(A) (A) 23 h
(A) 33 h
(An+1) (An)
(A0) (A7)
(CY) ( CY )
(A) - (B)
(B) (B) (C)
2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao
End
(A) 0F h
(B) EA h
(C) 52 h
(A) (A) (C)
(H,L) 4040 h
((H,L)) FF h
(H,L) 0000 h
(A) (C) ((H,L))
4000
Mnemnico
Cdigo
Comentrio
(A) (A) 44 h
(A) (A) 23 h
(A) 33 h
(An+1) (An)
(A0) (A7)
(CY) ( CY )
(A) - (B)
(B) (B) (C)
3. Questes do Experimento 4
(a) Qual o contedo final dos registradores A, B, C, H e L no ABACUS?
(b) Qual o valor final das flags de carry CY e de zero, no ABACUS, aps a instruo de comparao (A) 33
h? E o contedo de A?
(c) Qual o contedo das flags de carry CY e de zero Z, no kit didtico, aps a instruo de comparao (A)
(B)? E o contedo de A?
Microprocessadores e Microcomputadores
71
EXPERIMENTO 5
Objetivo: Programao com o assembly do 8085
Material: Computador com o simulador ABACUS
Roteiro:
1. O programa a seguir gera os mltiplos de 4, a partir de 4 at 20 h. Esses valores so armazenados na
memria a partir do valor dado para HL. Insira os mnemnicos no ABACUS e execute o programa.
Observe o resultado.
Label
Mnemnico
Label
Mnemnico
volta:
fim:
produto:
INCIO
POP B
INX H
INR C
JMP volta
HLT
A 00 h
P1 A
AA+1
ADD B
DCR C
JNZ subrotina
RET
2. O programa a seguir uma nova verso do programa anterior incluindo a subrotina para mostrar os
mltiplos de 4 no display de dados e retirando as instrues para armazenamento na memria.
Label
Mnemnico
Label
Mnemnico
volta:
fim:
produto:
JNC fim
POP B
INR C
JMP volta
HLT
ADD B
DCR C
JNZ subrotina
RET
3. O programa a seguir uma nova verso dos programas anteriores, onde o nmero para o qual se deseja os
mltiplos inserido atravs do teclado.
Label
Mnemnico
Label
Mnemnico
volta:
fim:
produto:
JNC fim
POP B
INR C
JMP volta
HLT
ADD B
DCR C
JNZ subrotina
RET
4. Questes do Experimento 5
(a) Por que foram usadas as instrues PUSH B e POP B no primeiro programa?
(b) Por que foram usadas as instrues PUSH PSW e POP PSW no segundo e no terceiro programas?
(c) Observando o programa durante a execuo, verifica-se que ele vai ficando mais lento na medida em que os
mltiplos maiores vo sendo mostrados. Por que isso acontece?
(d) Voc pode sugerir uma maneira de resolver o problema citado no item anterior?
(e) Qual a finalidade da instruo CPI 50 h no segundo e no terceiro programas?
Microprocessadores e Microcomputadores
72
EXPERIMENTO 6
Objetivo: Programao com o assembly do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1.
INCIO
cresce:
Mnemnico
LXI SP,2090 h
MVI A,00 h
PUSH PSW
CALL MOSTRAA
POP PSW
INR A
CPI FF h
JNZ cresce
Label
Mnemnico
decresce:
PUSH PSW
CALL MOSTRAA
POP PSW
DCR A
CPI 00 h
JNZ decresce
JMP cresce
HLT
A 00 h
Mostra A
AA+1
N
A = FFh ?
S
Mostra A
AA-1
N
A = 00h ?
2. O programa a seguir uma nova verso do programa anterior, mas com contagem em decimal que vai de
00 a 99 e volta para 00, de forma ininterrupta.
Label
Mnemnico
Label
Mnemnico
cresce:
decresce:
PUSH PSW
CALL MOSTRAA
POP PSW
ADI 99 h
DAA
CPI 00 h
JNZ decresce
JMP cresce
HLT
3. O programa a seguir uma adaptao do programa anterior (contagem decimal) para ser executado no kit
didtico. Codifique o programa e insira-o no kit didtico.
Label
Mnemnico
Cdigo
Label
Mnemnico
Cdigo
cresce:
decresce:
CALL APDIS
PUSH PSW
CALL DBYTE
CALL DEL1
POP PSW
ADI 99 h
DAA
CPI 00 h
JNZ decresce
JMP cresce
HLT
4.
Questes do Experimento 6
(a)
(b)
(c)
(d)
(e)
Por que a instruo INR A foi substituda pela instruo ADI 01 h no programa 2?
Por que foi usada a instruo ADI 99 h nos programas 2 e 3, ao invs de DCR A, como no programa 1?
Por que foi usada a instruo CALL APDIS no programa 3?
Por que foi usada a instruo CALL DEL1 no programa 3?
Substitua a instruo CALL DEL1 por CALL DEL2 e observe o efeito?
Microprocessadores e Microcomputadores
73
EXPERIMENTO 7
Objetivo: Programao com o assembly do 8085 e uso de INTERRUPES
Material: Computador com o simulador ABACUS e kit didtico
1.
Execute os programas dados a seguir usando o simulador ABACUS e usando o mdulo didtico.
Programa 1: Usa subrotinas para gerar de forma ininterrupta uma sequncia crescente de 00 h a FF h no display
de dados, seguida de uma seqncia decrescente (FF h a 00 h). Complete os cdigos.
ABACUS
Mnemnico
LXI SP,2040h
MVI A,00h
CALL crescente
CALL decresc
JMP repete
Cdigo
31 40 20
3E 00
CD ___ ___
CD ___ ___
C3 ___ ___
crescente:
PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI FF
RZ
INR A
JMP crescente
F5
CD 6E 03
16 01
CD F1 05
F1
FE FF
C8
3C
C3 ___ ___
decresc:
DCR A
PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI 00
RZ
JMP decresc
3D
F5
CD 6E 03
16 01
CD F1 05
F1
FE 00
C8
C3 ___ ___
Label
2000
repete:
Interrupo
TRAP
RST 7.5
RST 6.5
RST 5.5
KIT DIDTICO
Mnemnico
LXI SP,4200h
MVI A,00h
CALL crescente
CALL descresc
JMP repete
Cdigo
31 00 42
3E 00
CD ___ ___
CD ___ ___
C3 ___ ___
crescente:
PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI FF
RZ
INR A
JMP crescente
F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE FF
C8
3C
C3 ___ ___
decresc:
DCR A
PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI 00
RZ
JMP decresc
3D
F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE 00
C8
C3 ___ ___
Label
4000
repete:
Microprocessadores e Microcomputadores
Endereo no KIT
4BE0 h
4BD7 h
4BDA h
4BDD h
74
Programa 2: Adapte o programa 1 para que a contagem crescente seja chamada atravs da interrupo RST 7.5 e
a contagem decrescente seja chamada pela interrupo RST 6.5. Desabilite a interrupo RST 5.5.
ABACUS
Mnemnico
LXI SP,2050h
MVI A,09h
SIM
MVI A,00h
EI
JMP loop
Cdigo
31 50 20
3E 09
30
3E 00
FB
C3 ___ ___
Label
4000
crescente:
DI
PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI FF
RZ
INR A
JMP crescente
F3
F5
CD 6E 03
16 01
CD F1 05
F1
FE FF
C8
3C
C3 ___ ___
decresc:
DI
DCR A
PUSH PSW
CALL MOSTRAA
MVI D,01h
CALL DELAY
POP PSW
CPI 00
RZ
JMP decresc
20CB h:
20CE h:
JMP decresc
JMP crescente
Label
2000
loop:
KIT DIDTICO
Mnemnico
LXI SP,4200h
MVI A,09h
SIM
MVI A,00h
EI
JMP loop
Cdigo
31 00 42
3E 09
30
3E 00
FB
C3 ___ ___
crescente:
DI
PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI FF
RZ
INR A
JMP crescente
F3
F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE FF
C8
3C
C3 ___ ___
F3
3D
F5
CD 6E 03
16 01
CD F1 05
F1
FE 00
C8
C3 ___ ___
decresc:
DI
DCR A
PUSH PSW
CALL APDIS
CALL DBYTE
CALL DEL1
POP PSW
CPI 00
RZ
JMP decresc
F3
3D
F5
CD 0B 07
CD A1 05
CD 70 07
F1
FE 00
C8
C3 ___ ___
C3 ___ ___
C3 ___ ___
4BDA h:
4BD7 h:
JMP decresc
JMP crescente
C3 ___ ___
C3 ___ ___
loop:
Perguntas:
5.4
1.
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.
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
75
Instrues de Recomeo
O 8085 tem 8 instrues de recomeo por software (restart), que so: RST 0, RST 1, RST 2, RST 3,
RST 4, RST 5, RST 6 e RST 7. Estas instrues so para chamadas de subrotinas que so usadas com
frequncia. O efeito de uma instruo RST o mesmo de uma chamada de subrotina, com uso da pilha para
guardar o endereo de retorno. A diferena que cada instruo RST desvia o processamento para um endereo
predeterminado, como mostra a tabela abaixo. Um outro detalhe que a chamada de uma RST feita com
apenas 1 byte de cdigo, ao contrrio de uma chamada de subrotina normal, que feita com 3 bytes de cdigo.
Do mesmo modo que no caso de uma subrotina comum, quando uma instruo RET encontrada o
processamento volta para o programa principal.
INSTRUES DE RECOMEO
Instruo
Efeito
RST 0
RST 1
RST 2
RST 3
RST 4
RST 5
RST 6
RST 7
CALL 0000h
CALL 0008h
CALL 0010h
CALL 0018h
CALL 0020h
CALL 0028h
CALL 0030h
CALL 0038h
Cdigo de
Operao
C7
CF
D7
DF
E7
EF
F7
FF
Posio do Vetor
0000h
0008h
0010h
0018h
0020h
0028h
0030h
0038h
Verifica-se da tabela acima que h apenas 8 posies (8 bytes) disponveis para cada instruo de
recomeo. Sendo assim, normalmente essas posies vetoradas so usadas apenas para desviar para uma
subrotina que frequentemente usada e que no caberia em apenas 8 posies. Uma instruo de desvio
incondicional JMP addr ento usada. A chamada da subrotina atravs de uma dessas instrues de recomeo
mais eficiente que a chamada direta da subrotina.
6.2
Interrupes
Alm das 8 instrues de recomeo por software, o 8085 possui 4 instrues de recomeo por hardware
(Interrupes Externas). Essas instrues so chamadas de TRAP (pino 6), RST 7.5 (pino 7), RST 6.5 (pino
8) e RST 5.5 (pino 9). Quando qualquer desses pinos ativado, os circuitos internos do 8085 produziro uma
chamada de subrotina ( CALL ) por hardware que desviaro o processamento para o endereo predeterminado. A
tabela das posies de recomeo por hardware (interrupes externas) dada a seguir.
As operaes de entrada e sada por interrupo usam uma das interrupes por hardware dadas na tabela,
de forma que, quando o perifrico est pronto para a transferncia de dados a interrupo selecionada acionada,
permitindo a transferncia de dados de uma forma mais rpida que a transferncia Programada.
Instruo
TRAP
RST 5.5
RST 6.5
RST 7.5
Interrupes do 8085
Efeito
Cdigo
de Operao
CALL 0024h
no tem
CALL 002Ch
no tem
CALL 0034h
no tem
CALL 003Ch
no tem
Posio
do Vetor
0024 h
002C h
0034 h
003C h
Pino
6
9
8
7
As interrupes externas tem uma ordem de prioridade, de forma que, no caso de dois ou mais pedidos
simultneos de interrupo, a ordem de atendimento :
Microprocessadores e Microcomputadores
76
Interrupo
TRAP
RST 7.5
RST 6.5
RST 5.5
INTR
Prioridade
1
2
3
4
5
Posio do Vetor
0024 h
003C h
0034 h
002C h
Nenhuma
TRAP
RST 7.5
RST 6.5
RST 5.5
INTR
8085
- acionada simultaneamente por nvel e por transio. usada para eventos catastrficos tais
como falhas na alimentao eltrica e erros de paridade.
RST 7.5 - acionada por transio somente
RST 6.5 - acionada apenas por nvel
RST 5.5 - acionada apenas por nvel
INTR
- acionada apenas por nvel. Essa interrupo em particular, permite a expanso da capacidade
de interrupes do 8085. Atravs desse pino um dispositivo de suporte pode ser usado para
aumentar os pinos de interrupo.
6.3
Circuitos de Interrupo
As interrupes so melhor entendidas atravs dos circuitos lgicos mostrados a seguir.
TRAP
CALL 0024 h
D
Flip-flop
Pino 6
CLK
CLR
TRAP
RESET IN
Pino 36
RECONHECIMENTO
DE TRAP
Microprocessadores e Microcomputadores
77
No circuito da Fig. 6.2 o sinal alto de clock habilita a porta AND na sada do Flip-Flop, enquanto que a
transio do clock do nvel baixo para o nvel alto faz com que a sada do Flip-Flop assuma o valor 1 e,
consequentemente, a sada geral do circuito da interrupo TRAP assume o valor 1, fazendo com que o
processamento seja desviado para o endereo 0024 h.
Um sinal baixo no pino RESET IN ou um sinal alto de RECONHECIMENTO DE TRAP limpa o pedido
de interrupo.
A Fig. 6.3 mostra os circuitos para as interrupes RST 7.5, RST 6.5 e RST 5.5. Observe que as portas
AND de sada dos circuitos das interrupes tem trs entradas. O sinal IE estando alto, todas as interrupes
esto habilitadas. Esse sinal fica alto quando a instruo EI (entrada do flip-flop) executada. Se nenhuma das
interrupes estiver com mscara, ento os sinais M7.5, M6.5 e M5.5 permanecem em nvel baixo e,
consequentemente as respectivas entradas das portas AND estaro altas. Dessa forma, todas as interrupes
estaro aptas a serem acionadas.
Um pulso ascendente (transio do nvel baixo para o nvel alto) no pino 7 faz com que a sada I7.5 do
flip-flop correspondente interrupo RST 7.5 fique alta, acionando essa interrupo.
Um nvel alto no pino 8 faz com que a interrupo RST 6.5 seja executada e um nvel alto no pino 9 faz
com que a interrupo RST 5.5 seja executada. Os sinais I7.5, I6.5 e I5.5 quando esto em nvel alto indicam que
h interrupo pendente.
Um sinal R7.5 alto limpa uma interrupo RST 7.5 pendente. Um sinal de Reconhecimento de
interrupo RST 7.5 tambm faz com que a sada do flip-flop seja zerada, limpando qualquer interrupo RST
7.5 pendente.
O bloqueio total das interrupo mostradas na Fig. 6.3 pode ser feito de trs maneiras distintas: (a) atravs
da instruo DI (Desable Interrupt), que desabilita todas as interrupes, com exceo da TRAP; (b) atravs de
um sinal alto no pino 36 (RESET IN) ou (c) atravs de um sinal alto de reconhecimento de qualquer interrupo.
1
Pino 7
RST 7.5
I 7.5
D
Q
Flip-flop
R 7.5
CLR
RECONHECIMENTO
DE RST 7.5
M 7.5'
M 7.5
CALL 003C h
Flip-flop
R
Pino 8
I 6.5
RST 6.5
M 6.5'
M 6.5
CALL 0034 h
Flip-flop
R
Pino 9
I 5.5
RST 5.5
M 5.5'
M 5.5
CALL 002C h
Flip-flop
R
MSE
DI
EI
IE
Flip-flop
RESET IN
QUALQUER RECONHECIMENTO
DE INTERRUPO
Fig. 6.3: Circuitos das interrupes RST 7.5, RST 6.5 e RST 5.5
A setagem de mscara tambm mostrada na Fig. 6.3. Verifica-se que um sinal alto MSE (Mask Set
Enable) necessrio para habilitar qualquer das mscaras de interrupo. A partir da, desejando-se mascarar
(no permitir a execuo) a interrupo RST 7.5, o sinal M7.5' deve ser levado ao nvel alto. Desejando-se
Microprocessadores e Microcomputadores
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
Embora os endereos de desvio sejam os indicados na Fig. 6.2 e 6.3, os endereos de desvio no ABACUS
e no kit didtico so diferentes. Na verdade, como o usurio final no pode inserir instrues/dados na ROM do
ABACUS nem do kit didtico, o criador dessas ferramentas incluiu no programa monitor uma instruo de
desvio para a RAM, de forma que a cada interrupo o programa seja automaticamente desviado para um
endereo acessvel pelo usurio final. Esses endereos so dados na tabela a seguir.
Interrupo
TRAP
RST 5.5
RST 6.5
RST 7.5
Endereo na ROM
0024 H
002C H
0034 H
003C H
Endereo no ABACUS
20D1 H
20C8 H
20CB H
20CE H
Endereo no Kit
4BE0 H
4BDD H
4BDA H
4BD7 H
Observaes.:
(a) comum usar a instruo EI como penltima instruo de uma subrotina, tendo em vista que o
microprocessador automaticamente desabilita todas as interrupes com o bit QUALQUER
RECONHECIMENTO DE INTERRUPO.
Subrotina: ----------EI
RET
(b) Quando se deseja evitar que uma parte do programa principal seja interrompida por qualquer interrupo,
exceto a TRAP, usa-se o comando DI no comeo do trecho a ser protegido.
Programa principal: ---------------------DI
----------------------EI
Microprocessadores e Microcomputadores
79
Exemplo:
O programa a seguir, a ser implementado no ABACUS, a cada interrupo RST 5.5, mostra uma
contagem hexadecimal crescente de 00 h at FF h e d mais um passo e pra em 00 h.
Rtulo/endereo
Mnemnico
LXI SP, 2090H
MVI A, 00H
PUSH PSW
CALL MOSTRAA
POP PSW
EI
JMP espera
Comentrio
Topo da pilha na posio 2090 h
Acumulador comea com valor 00 h
Guarda A e Flags na pilha
Mostra contedo de A no display de dados
Recupera contedo de A e Flags da pilha
Habilita interrupes
Lao de espera de pedido de interrupo
cresce:
INR A
PUSH PSW
CALL MOSTRAA
MVI D, 01H
CALL DELAY
POP PSW
CPI 00 H
JNZ cresce
EI
RET
Incrementa acumulador
Guarda contedo de A e F na pilha
Mostra contedo de A no display
Faz D = 01 h, para usar na subrotina de tempo
Chama subrotina de atraso de tempo
Recupera contedo de A e F da pilha
Compara A com 00 h.
Se A 00 h, volta para INR A. Se A = 00 h, sai da subrotina
Habilita novamente as interrupes
Retorna da subrotina de interrupo
20C8:
JMP cresce
espera:
6.4
M7.5'
M6.5'
M5.5'
Seta mscara da RST 5.5
Irrelevante
MSE
R7.5
SOE
Serial Outpu Enable
Habilita Sada Serial
SOD
Serial Output Data - Dado
da Sada Serial
Acumulador
A mscara de interrupo usada para que as interrupes sejam usadas de forma seletiva, onde as
interrupes no desejadas sejam bloqueadas.
A mscara de uma interrupo mascarvel s reconhecida aps a execuo do comando SIM (Set
Interrupt Mask = Setar a Mscara de Interrupo). E antes da execuo deste comando alguns valores do circuito
de interrupo (Fig. 6.3) devem ser carregados no acumulador de forma que a instruo SIM faz a transferncia
desses valores para os pontos necessrios. Os valores no acumulador devem ser como mostrado a seguir:
Exemplo: Desejando-se habilitar apenas a interrupo RST 5.5 e mascarar as demais, o contedo do
acumulador antes da instruo SIM dado a seguir:
A:
SOD
0
SOE
0
Microprocessadores e Microcomputadores
R7.5
0
MSE
1
M7.5'
1
M6.5'
1
M5.5'
0
80
M5.5
Mscara da interrupo RST 5.5
M6.5
Mscara da interrupo RST 6.5
M7.5
Mscara da interrupo RST 7.5
IE
Habilita
I5.5
Interrupt Enable
Interrupo
I6.5
I7.5
SID
Acumulador
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.
A:
SID
0
I7.5
1
I6.5
0
I5.5
0
IE
1
M7.5
1
M6.5
0
M5.5
0
Significado:
6.5
INTA
Controlador
de
Interrupo
8085
Dados
8 pedidos de
interrupo
8259
81
6.6
O nvel lgico de um ou mais dos pinos IR (IR0 a IR7) levado a 1, setando o correspondente registrador de
pedido de interrupo IRR;
O 8259 envia um pulso alto para o 8085 atravs do pino INTR (pino 10);
O 8085 envia de volta um sinal baixo INTA (Interrupt Acknowledge) de reconhecimento de pedido de
interrupo;
Aps receber o sinal de OK, o 8259 o bit ISR (In Service Register) do pedido de maior prioridade, limpa o
registro de interrupo IRR correspondente e envia para o 8085 o cdigo de chamada de subrotina;
O 8085 responde com outro sinal INTA baixo solicitando o byte inferior do endereo da subrotina;
O 8259 envia o byte inferior de endereo correspondente ao pedido de interrupo;
Um outro sinal INTA baixo enviado pelo 8085 solicitando o byte superior do endereo da subrotina;
O 8259 envia o byte superior do endereo da subrotina para o 8085 e, em seguida, limpa o bit ISR
correspondente;
A seguir, o contedo do contador de programa (PC) enviado para a pilha e o processamento desviado
para o endereo indicado
Microprocessadores e Microcomputadores
82
em bytes por segundo; OBS: a transmisso paralela utilizada em substituio transmisso serial quando a
distncia entre transmissor/receptor pequena e deseja-se maior velocidade de transferncia.
MTODOS DE CONTROLE DE ENTRADA E SADA
Referem-se a tcnicas de hardware e software utilizadas para controlar o fluxo de dados entre o
computador e seus perifricos. Os trs mtodos mais frequentemente encontrados so:
Varredura (ou E/S por consulta ou Pooling}:
Tcnica de comunicao na qual o processador interroga periodicamente o perifrico para
determinar seu estado;
Pode ser sncrona ou assncrona;
Desvantagem: perda de tempo: o processador abandona o programa principal para fazer a
varredura mesmo se nenhum perifrico deseja servio.
Interrupo:
Tcnica de comunicao na qual o processador somente ocupado se h pedido de servio de
algum perifrico;
Mecanismo assncrono;
Transferncia de dados feita por software (mais lento que DMA);
DMA (Direct Memory Access):
Tcnica de comunicao na qual no se interrompe o processamento do microprocessador (se a
instruo em curso no faz acesso ao barramento);
O DMAC (controlador de DMA) envia o sinal HOLD requerendo o barramento e a CPU responde
com HLDA. O DMAC passa a controlar as linhas de dados, linhas de endereo, e sinais de
controle (RD, WR, etc.);
A transferncia de dados feita por hardware: particularmente interessante quando necessita-se
transferncia de dados em alta velocidade.
Exemplo de Entrada Programada:
Perifrico
8 bits
Porta 10 h
8 bits
Porta 11 h
Dados
Porta 12 h
bit 6
INCIO
Microprocessador
bit 7
STATUS
8085
Dados
Nesse exemplo, quando a CPU est pronta para receber dados ela envia um bit alto de INCIO (bit 6) para
o perifrico. Quando os dados esto prontos, um bit alto de STATUS (bit 7) enviado de volta CPU. Em
seguida os dados so transferidos do perifrico para a CPU. O grande problema nesse tipo de transferncia de
dados que a CPU fica aguardando o bit alto de STATUS, o que pode significar um tempo considervel, uma
vez que a maior parte do tempo gasto esperando o perifrico terminar o processamento de dados.
Exemplo de Transferncia por Interrupo:
RST 5.5
Microprocessador
Interrupo
Reconhecimento
Perifrico
8085
Dados
Microprocessadores e Microcomputadores
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.
Controlador
de
DMA
HLDA
8085
Barramentos
MEMRIA
6.7
Exerccios Propostos
25. Explique como funciona uma interrupo no 8085. Explique habilitao e mscara de interrupo,
interrupo vetorada, interrupo por nvel, interrupo por transio. Exemplifique escrevendo as linhas de
programa para mascarar as interrupes RST 5.5 e RST 7.5.
26. Para que servem as instrues EI e DI? Descreva as instrues SIM e RIM.
27. Qual a finalidade do bit MSE?
28. Insira os bits adequados do acumulador para mascarar a interrupo RST 6.5 e deixar as demais livres.
SOD
SOE
R7.5
MSE
M7.5'
M6.5'
M5.5'
M6.5
1
M5.5
0
A:
29. Faa a leitura do acumulador mostrado abaixo, aps uma instruo RIM.
A:
SID
0
I7.5
0
I6.5
1
I5.5
1
IE
1
M7.5
1
30. Zerar o flip-flop da interrupo RST 7.5, setar e habilitar as interrupes RST 7.5 e RST 6.5 e mascarar a
interrupo RST 5.5. Comente o valor de cada bit utilizado na instruo de setagem de mscara. Desenhe
um circuito simples com fototransistor que possa ser usado para acionar a interrupo RST 7.5 com a
interrupo de um sinal luminoso.
31. Faa um programa no ABACUS, usando o assembly do 8085, que mostre uma contagem decimal crescente
no display de zero a 50. Ao alcanar o valor 50, a interrupo RST 7.5 deve ser habilitada e o programa
deve ficar aguardando um pedido de interrupo. Quando a interrupo RST 7.5 for solicitada, a contagem
no display deve se tornar decrescente (e a interrupo desabilitada) at alcanar o valor zero. Alcanado o
valor zero, a interrupo deve ser habilitada novamente para iniciar outra contagem decimal at 50, e assim
sucessivamente.
Microprocessadores e Microcomputadores
84
32. Faa um programa no ABACUS que mostre uma contagem decimal no display, sendo que esta contagem
deve ser crescente at que ocorra uma interrupo RST 6.5, quando ento a contagem dever se tornar
decrescente. Caso ocorra uma nova interrupo RST 6,5 o programa deve voltar a contar na forma
crescente, ou seja, a cada interrupo muda-se o modo de contagem alternando entre crescente e
decrescente.
33. Como feita a comunicao entre o microprocessadore 8085 e o controlador de interrupo 8259?
34. Como feita a transferncia por interrupo? E por DMA?
35. Faa um programa no ABACUSusando a linguagem assembly do 8085 que mostre um valor zero no display
enquanto aguarda um pedido de interrupo RST 6.5. Ocorrida a interrupo, o programa deve fazer uma
contagem decimal crescente no display de zero a 60, sem interrupes. Ao alcanar o valor 60, o programa
deve ficar esperando um pedido de interrupo RST 7.5. Ocorrida a interrupo, o programa deve fazer uma
contagem decimal decrescente no display at zero. A contagem deve se repetir caso ocorra novamente a
interrupo RST 6.5 e, depois, a RST 7.5.
36. Faa o comentrio de cada linha do programa a seguir e explique qual a finalidade do programa completo.
Complete os endereos.
Rtulo
End.
4000
volta:
pula:
Mnemnico
LXI SP,4100h
LXI H,4031h
MVI C,0Ah
LDA 4030h
CMP M
JC pula
MOV A,M
INX H
DCR C
JNZ volta
CALL APDIS
CALL DBYTE
HLT
Comentrios
37. mostrado a seguir o que representa cada bit do acumulador quando se deseja mascarar interrupes.
Escreva as instrues para mascarar as interrupes RST7.5 e RST6.5, em seguida, habilitar a RST5.5.
Acumulador
bit 7
SOD
bit 6
SOE
bit 5
bit 4
R7.5
bit 3
MSE
bit 2
M7.5
bit 1
M6.5
bit 0
M5.5
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
85
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
86
FIFO de 16 bytes; Esta FIFO armazena dados que foram recebidos pela interface serial mas que
no foram lidos pelo microprocessador; evita erro de overrun (perda de informao por
sobreescrita);
Funo Loopback (diagnstico);
Funes para controle de modem.
A placa me de um microcomputador Pentium possui 2 interfaces seriais: cada uma delas pode ser
configurada de duas formas:
- Interface 1: COM1 (IRQ4) ou COM3 (IRQ4);
- Interface 2: COM2 (IRQ3) ou COM4 (IRQ4).
Transmisso Serial Assncrona:
Processo de comunicao no qual os caracteres so enviados independentemente uns dos outros.
Uma das aplicaes mais comuns deste tipo de comunicao na interface entre teclado e computador.
Neste circuito cada tecla gera um cdigo ASCII de 7 bits que transmitido bit a bit para o computador por
intermdio de dois ou trs condutores. Para verificar a eficincia deste tipo de transmisso serial deve-se
observar o desempenho de um bom digitador: sabe-se que ele no supera uma taxa de 60 palavras por minuto
(cerca de 8 caracteres/seg). Logo a transmisso serial, relativamente lenta, aceita neste caso.
Observe uma caracterstica importante nesta interface: em alguns momentos a porta serial ser utilizada
para transferir dados a uma taxa de 10 a 20 caracteres/seg, em outros esta pode cair para 1 ou 2 caracteres/seg, e
ainda, em grande parte do tempo, o teclado no utilizado chegando a uma taxa de zero caracteres/seg. Por
causa deste tipo de caracterstica de transmisso de dados, um protocolo de comunicao assncrono deve ser
estabelecido entre estes dispositivos.
A tcnica aceita para comunicao serial assncrona a de segurar a linha de sada da transmisso serial
no nvel lgico 1 (marca) at que chegue dados para transmisso. Cada caracter ser iniciado com um nvel
lgico 0 (start bit). Este 1o bit, o start bit, utilizado para sincronizar a transmisso e a recepo. O dado
transmitido colocando-se o bit menos significativo em primeiro lugar aps o start bit. No final do dado so
transmitidos stop bits (1, 11/2 ou 2) com nvel lgico 1. Opcionalmente pode-se transmitir um bit de paridade
aps o MSB do caracter e antes do stop bit (ver figura abaixo: esta figura considera apenas 1 stop bit).
espera
start
Par.
stop
Microprocessadores e Microcomputadores
87
necessitamos de um certo tipo de overhead para sincronismo, pois como o receptor saberia quando o dado
significativo (para receb-lo e guard-lo) ?
O start bit (da comunicao assncrona) substitudo por um caracter de sincronismo. Este caracter diz ao
receptor que os dados esto a seguir. Os dados so transmitidos entre caracteres especiais que servem para
sincronismo e para informar quando iniciam e terminam os dados, para deteco de erros e para indicar o final
do pacote. Veja o formato tpico de um pacote de dados no exemplo do protocolo BISYNC logo abaixo:
SYN
onde:
SYN
STX
DADOS
ETX
BCC
PAD
Com este tipo de transmisso fica claro que o overhead reduzido: para uma mesma taxa de transmisso,
o modo sncrono ser mais rpido que o assncrono.
Interface RS-232: Interface proposta pela IBM na dcada de 60 e que vigora at hoje como a principal interface
para transmisso de dados (a baixas velocidades). Esta interface utiliza normalmente um conector DB25
(Conector em forma de "D" com 25 pinos). Pode ainda utilizar o DB9 (usado para conectar o mouse) e o DB15.
Seus circuitos eltricos so desbalanceados (ou seja, h um terra comum para todos os sinais). Quando a
interface RS-232 est inativa ela fica transmitindo Marca (-12V). Seus nveis eltricos so mostrados na tabela
abaixo.
Nvel Lgico
0
1
Tenso TTL
0,0 a 0,8V
2,2 a 5,0V
Principais Pinos
TX (Transmited Data)
RX (Received Data)
GND (Ground)
RTS
(Request to Send)
CTS
(Clear to Send)
DSR
(Data Set Ready)
DTR
(Data Terminal Ready)
CD (Carrier Detected)
Tenso RS-232
+12V (+3 a +15V)
12V (3 a 15V)
DB25
2
3
7
4
5
6
20
8
DB9
3
2
5
7
8
6
4
1
Interface RS-422: Interface que proporciona taxa de transferncia de at 10 Mbit/s (para distncias de at
300m). Seus circuitos eltricos so balanceados (ou seja, cada sinal transmitido atravs de um par de
condutores: um positivo e um negativo, o que proporciona maior imunidade ao rudo). Esta interface geralmente
est disponvel em conectores DB37.
Microprocessadores e Microcomputadores
88
7.2
Integrados de Suporte
7.2.1
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.
Tipo de Memria e
Capacidade
RAM 256 bytes
ROM 2 Kbytes
Nmero de Portas
de Entrada e Sada
3
2
Caractersticas
2048 bits organizados como 256 palavras de 8 bits cada
Possui 16384 bits organizados como 2048 palavras de 8 bits cada
A Fig. 6.2 mostra um sistema mnimo baseado no 8085 e contendo uma pastilha de memria RAM (8156)
e uma de memria ROM (8355).
A13
ALE
CLK OUT
A10
IO-M\
A9
READY
A8
RESET IN\
RESET OUT
RD\
8085
A10
CE
A9
ALE
PA
A8
IO-M\
PC
CE1\
ALE
IO-M\
RD\
RD\
RESET
RESET
CLK
PB
READY
WR\
8156
WR\
PA
8355
PB
Microprocessadores e Microcomputadores
89
Pino A13 Pino usado para habilitar/desabilitar a RAM e a ROM.
CE
CE1\
Pastilha Habilitada
A13
0
0
0
CI 8156
1
1
1
CI 8355
No sistema mnimo mostrado na Fig. 7.2 o pino de endereo A13 do 8085 usado para
habilitar/desabilitar a RAM e a ROM. Ele conectado ao pino CE (Chip Enable) da RAM e ao pino CE\ da
ROM. Isso significa que, quando o pino A13 est em nvel baixo, a ROM fica habilitada e a RAM desabilitada.
Quando em nvel alto a ROM fica desabilitada e RAM fica habilitada. Dessa forma, o endereo inicial da ROM
0000 h e o da RAM 2000 h, como demonstrado abaixo.
A15
A14
A12
A13
A11
A10
AD6
AD5
AD4
AD3
AD2
0
Endereo Final da ROM
1
1
1
1
AD1
AD0
1
F
Endereo Inicial da RAM
0
0
0
0
0
0
0
0
Endereo Final da RAM
0
0
0
1
1
1
0
F
2
0
AD7
0
0
A8
0
0
A9
F
0
0
0
1
F
Como a ROM 8355 tem 2048 bytes (800 h) de memria, as posies ocupadas por estes bytes vo de 0 a
2047, que em hexadecimal 0000 h at 07FF h. O nmero de linhas de endereo necessrias so 11 (de AD0 a
A10) , porque 211 = 2048.
Como a RAM 8156 tem apenas 256 bytes de memria, os endereos desses bytes vo de 0 a 255 (00 h a
FF h). Da, como o endereo inicial escolhido para a memria RAM 2000 h na conexo do sistema mnimo
dado, o endereo final ser 20FF h. O nmero de linhas de endereo necessrias so 8 (de AD0 a AD7), porque 28
= 256.
A memria RAM do Kit didtico usado no laboratrio a RAM 2114, de 1 K de memria, mas de apenas
4 bits. Assim, utiliza-se duas-a-duas para forma 1 byte por endereo. No kit o endereo inicial da RAM 4000 h.
So necessrias 10 linhas de endereo: 210 = 1024 ( = 400h). Posies de memria: 0 a 1023 (000 h a 3FF h)
A15
A14
A13
A12
4
0
1
4
A11
A10
A9
A8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
0
1
F
A Segunda RAM 2114 do Kit didtico deve ser acessada a partir do primeiro endereo aps a primeira
RAM, ou seja, endereo 4400 h.
A15
A14
A13
A12
4
0
1
4
A11
A10
A9
A8
AD7
AD6
AD5
AD4
AD3
Microprocessadores e Microcomputadores
AD2
AD1
AD0
0
1
F
90
A Terceira RAM 2114 do Kit didtico deve ser acessada a partir do primeiro endereo aps a segunda
RAM, ou seja, endereo 4800 h.
A15
A13
A14
A12
1
4
A11
A10
A9
A8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
0
1
F
Dessa forma, um circuito lgico deve ser usado quando h um conjunto de pastilhas de memria no
sistema mnimo. A Fig. 7.3 mostra o circuito lgico para conectar trs conjuntos de RAMs.
A14
A10
A11
CS\
RAM 2114
4000h 43FFh
Primeira RAM
CS\
RAM 2114
4400h 47FFh
Segunda RAM
CS\
RAM 2114
4800h 4BFFh
Terceira RAM
Fig. 7.3: Circuito lgico para conexo de 3 conjuntos de RAMs 2114 ao sistema mnimo
Desejando-se conectar um quarto conjunto de RAMs, tem-se o circuito lgico da Fig. 7.4, a seguir.
A14
A10
A11
CS\
2 RAM 2114
4000h 43FFh
Primeira RAM
CS\
2 RAM 2114
4400h 47FFh
Segunda RAM
CS\
2 RAM 2114
4800h 4BFFh
Terceira RAM
CS\
2 RAM 2114
4C00h 4FFFh
Quarta RAM
Fig. 7.4: Circuito lgico para conexo de 4 conjuntos de RAMs 2114 ao sistema mnimo
A Quarta RAM 2114 acessada a partir do endereo 4C00h
A15
A14
A13
A12
4
0
1
4
A11
A10
A9
A8
AD7
AD6
AD5
AD4
AD3
Microprocessadores e Microcomputadores
AD2
AD1
AD0
0
1
F
91
Desejando-se acrescentar mais 4 conjuntos de RAMs, de forma a ter um sistema mnimo com 8 Kbytes de
memria, precisa-se de mais um pino de seleo, que no caso o pino A12.
A14
A10
A11
A12
2 RAM 2114
CS\
2 RAM 2114
CS\
ENDEREO
4000 43FF
4400 47FF
4800 4BFF
4C00 4FFF
5000 - 53FF
5400 57FF
5800 5BFF
5C00 5FFF
6000 - 63FF
6400 67FF
6800 6BFF
6C00 6FFF
7000 - 73FF
7400 77FF
7800 7BFF
7C00 7FFF
8000 - 83FF
8400 87FF
8800 8BFF
8C00 8FFF
45
1024
F000 F3FF
46
1024
F400 F7FF
47
1024
F800 FBFF
48
1024
FC00 FFFF
Total: 48 Kbytes = 49.152 bytes
A15
A14
BYTES
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
1024
A13
A12
A11
A10
A9
4000h 43FFh
RAM 1
4400h 47FFh
RAM 2
2 RAM 2114
CS\
4800h 4BFFh
RAM 3
2 RAM 2114
CS\
4C00h 4FFFh
RAM 4
2 RAM 2114
CS\
5000h 50FFh
RAM 5
2 RAM 2114
CS\
5400h 57FFh
RAM 6
2 RAM 2114
CS\
5800h 5BFFh
RAM 7
2 RAM 2114
CS\
A8
AD7
AD6
AD5
AD4
AD3
5C00h 5FFFh
RAM 8
AD2
AD1
AD0
Fig. 7.5: Circuito lgico para conexo de 8 conjuntos de RAMs 2114 ao sistema mnimo
As pastilhas 8156 e 8355 no so apenas memrias RAM e ROM; elas tambm contm portas de entrada
e sada paralela, alm de temporizadores.
As trs portas de Entrada e Sada da 8156 so: Porta A (8 bits), Porta B (8 bits) e Porta C (6 bits), que so
numeradas respectivamente como 21h, 22h e 23h no sistema mnimo da Fig. 7.2. Internamente, tem-se ainda
acesso a trs outras portas: Porta 20h, usada como registrador de status e de comando, Porta 24h, usada como
byte inferior do contador de temporizao e Porta 25h, usada como modo e contador (6 bits superiores) do
temporizador.
Microprocessadores e Microcomputadores
92
AD1
0
0
1
1
0
0
AD0
0
1
0
1
0
1
Seleo
Registradores de comando e de status
Porta A
Porta B
Porta C
8 bits menos significativos do temporizador
2 bits de modo do temporizador e 6 bits superiores do temporizador
As duas portas de Entrada e Sada do 8355 so: Porta A (8 bits) e Porta B (8 bits), que so numeradas
respectivamente como 00h e 01h no sistema mnimo da Fig. 7.2. O endereamento dado na tabela a seguir:
AD1
AD0
0
0
1
1
0
1
0
1
Seleo
Nmero
da Porta
00h
01h
02h
03h
Porta A
Porta B
Registrador de Direo de Dados da Porta A (DDR A)
Registrador de Direo de Dados da Porta A (DDR A)
O temporizador da 8156 possui decrementador pr-setvel, controlado pelas portas 20h, 24h e 25h. O
contador pode operar em 4 modos, mostrados nas figuras a seguir:
Timer OUT
Timer IN
8156
CLK
D3
D2
D1
Temp
Int. B
Int. A
D0
Porta A
D4
Porta B
D5
Porta C
D6
Habilitao de interrupo A
D7
Temporizador
Comando
Habilita;o de interrupo B
D0
T3
T2
T1
T0
T9
T8
M1
T13
Microprocessadores e Microcomputadores
T12
T11
T10
93
Comear
contagem
Contagem
final
Contagem
final
Contagem
final
Contagem
final
Modo 00
Modo 01
Modo 10
Modo 11
M2
0
0
1
1
M1
0
1
0
1
D7
0
0
1
1
D6
0
1
0
1
Estado do Temporizador
No opera
Parar imediatamente
Parar depois de atingir contagem final
Comear contagem
Exemplo: Gerar uma onda quadrada de 1 kHz, sendo a frequncia de clock de 3 MHz
Contagem final =
3MHz
= 3000 = 0BB8 h
1kHz
C sada
B sada A Ent.
Comentrio
Onda quadrada contnua de 1kHz
Microprocessadores e Microcomputadores
94
7.2.2
Decodificador 74LS138
O CI 74LS138 um decodificador usado tanto para expanso de memria quanto para o endereamento
de muitas portas de entrada e sada. um decodificador 1 de 8, ou seja, cada CI permite a seleo de 8 sadas
diferentes. Trs pinos (C, B e A) so usados para selecionar uma das 8 linhas de sada (Y0 a Y7).
74LS138
Sada Selecionada
Yo
Y1
Y2
Y3
Y4
Y5
Y6
Y7
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.
Microprocessadores e Microcomputadores
95
Voltando s 8 pastilhas de memria RAM do exerccio anterior, pode-se fazer o endereamento usando
um decodificador 74LS138. O pino A14 usado para habilitao geral (G1) e os pinos A10, A11 e A12 so usados
para seleo da pastilha correspondente a cada faixa de endereo.
A11 A14
A12 A10
2 RAM 2114
CS
\
4000h 43FFh
RAM 1
2 RAM 2114
CS\
4400h 47FFh
RAM 2
CS\
2 RAM 2114
4800h 4BFFh
RAM 3
CS\
2 RAM 2114
4C00h4FFFh
RAM 4
2 RAM 2114
CS\
5000h 50FFh
RAM 5
CS\
2 RAM 2114
5400h 57FFh
RAM 6
C
A12
0
0
0
0
1
1
1
1
B
A11
0
0
1
1
0
0
1
1
A
A10
0
1
0
1
0
1
0
1
Sada
Selecionada
Yo
Y1
Y2
Y3
Y4
Y5
Y6
Y7
CS\
2 RAM 2114
5800h 5BFFh
RAM 7
CS\
2 RAM 2114
5C00h 5FFFh
RAM 8
Fig. 7.9: Uso do decodificador 74LS138 para conexo de 8 RAMs ao sistema mnimo
Cada 74LS138 pode enderear 8 zonas de endereo So necessrios 6 decodificadores 74LS138 para
cobrir toda a memria possvel a partir da posio 4000 h at FFFF h.
7.3
1.
Exerccios Propostos
Considere um sistema mnimo composto por um microprocessador 8085, uma memria ROM de 2 K e uma
memria RAM de 4 K. O pino CE da RAM e CE\ da ROM esto conectados ao pino A14 do 8085.
Responda as questes abaixo:
(a) Quais os endereos inicial e final da ROM e da RAM?
Microprocessadores e Microcomputadores
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 ,
Faa um programa que leia um byte da porta serial e o mostre no display. A cada interrupo RST 7.5 o
programa dever ler outro byte da porta serial e mostr-lo no display.
6.
Faa um programa que leia um dado do teclado, e ento, envie este byte pela sada serial por 5 vezes
seguidas, com um intervalo de 1s entre cada repetio (destas 5 vezes). Em outras palavras, enviar o byte 5
vezes pela porta serial, parar por 1 segundo e tornar a enviar o byte por mais 5 vezes, parar por mais 1s... e
assim por diante. O bit menos significativo deve ser enviado primeiramente.
7.
Faa um programa que leia dois nmeros pelo teclado, some estes nmeros e mostre o resultado no display,
repetindo esta operao indefinidamente. Caso ocorra uma interrupo RST 6,5, o programa passar a
subtrair esses nmeros (1o - 2o), mostrando o resultado no display. Aps uma nova interrupo RST 6,5 o
programa volta a somar os dois nmeros, e assim sucessivamente. Caso ocorra uma interrupo RST 5,5 o
ltimo resultado mostrado no display dever ser enviado pelo pino SOD, uma nica vez, aps o que o
processamento volta ao programa principal.
8.
A RAM 2114 de 1 K, mas possui apenas 4 bits cada uma. Por isso so usadas de duas em duas de modo a
formar 1 byte para cada endereo . Deseja-se associar 4 grupos de RAMs 2114 (ver figura a seguir), de
modo a formar uma memria RAM de 4 Kbytes. Pede-se:
(a) Quais so as linhas de endereo para a operao das RAMs 2114?
(b) Qual a faixa de endereos (endereos contnuos) de cada grupo de RAMs?
(c) Use portas lgicas para desenhar o circuito de habilitao dos grupos de RAMs a partir do endereo
1000h;
(d) Use o decodificador 74139 (figura a seguir) para a habilitao dos grupos de RAMs a partir do endereo
1000h. Os pinos A e B so usados para selecionar a sada e o pino G1 usado para habilitar a pastilha.
Y0 \
Linhas de endereo:________________
Y1 \
74139
Y2 \
2 RAM
2114
2 RAM
2114
2 RAM
2114
2 RAM
2114
CS\
CS\
CS\
CS\
Pinos de habilitao
Microprocessadores e Microcomputadores
G1
Y3 \
A
0
0
1
1
B
0
1
0
1
Y
Y0\
Y1\
Y2\
Y3\
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
98
8. INTERFACE ANALGICA
Como os dados de um microprocessador esto na forma digital e os dados do mundo exterior esto na
forma analgica (contnua), necessrio fazer a converso entre esses dados. Assim, tem-se o Conversor
Analgico-Digital (ADC), que faz a converso de sinal analgico para sinal digital e o Conversor DigitalAnalgico (DAC), que faz a converso de sinal digital para sinal analgico.
Sinal
Analgico
ADC
Sinal
Digital
Sistema
Mnimo
com 8085
Sinal
Digital
Sinal
Analgico
DAC
8.1
Conversor Digital-Analgico
Um circuito somador com Amplificador Operacional pode ser usado para construir um conversor digitalanalgico, bastando para isso escolher valores ponderados dos resistores, como na figura 8.2 a seguir. A figura
mostra um conversor DA de 4 bits.
I3 =
VREF
R
I2 =
VREF
2R
I1 =
VREF
4R
I0 =
VREF
8R
I=
VREF
(1 * D3 + 0.5 * D2 + 0.25 * D1 + 0.125 * D0 ) ,
R
onde os valores de D podem ser 0 para chave desligada e 1 para chave ligada. Assim, forma-se a tabela
abaixo, supondo VREF/R = 1:
Microprocessadores e Microcomputadores
99
Tabela de valores para o conversor de 4 bits
D3
D2
D1
D0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Corrente de
sada (mA)
0
0.125
0.250
0.375
0.500
0.625
0.750
0.875
1.000
1.125
1.250
1.375
1.500
1.625
1.750
1.875
Frao do
Mximo
0
1/15
2/15
3/15
4/15
5/15
6/15
7/15
8/15
9/15
10/15
11/15
12/15
13/15
14/15
15/15
Um vez que o conversor tem apenas 4 bits, existem 16 (24) possveis valores de sada, sendo o menor
valor 0 (zero) e o valor mximo correspondente ao decimal 15, ou binrio 1111, e hexadecimal F. A tenso de
sada dada por Vsada = Rsada*I. Os resistores ponderados so necessrios para que a sada corresponda frao
indicada na ltima coluna da tabela.
mx
incremento
1 LSB
0
Fig. 8.3: Forma da corrente de sada para uma variao de corrente de 0 a 15
Caractersticas de um Conversor DA:
(a) Cada degrau corresponde a 1 LSB (bit menos significativo)
(b) Nmero de degraus de um conversor: 2n-1, onde n o nmero de bits. Para n = 4 15 degraus.
1.
1
2 1
n
1
15
Microprocessadores e Microcomputadores
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.
Microprocessadores e Microcomputadores
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.
Microprocessadores e Microcomputadores
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.
2.
3.
4.
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
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
104
9. MICROCONTROLADORES 8086/8088
9.1
Introduo
Microprocessadores e Microcomputadores
105
Microprocessador
8085
Microprocessador 8088
Microprocessador
8086
Barramento de endereo
16 bits
20 bits
20 bits
Capacidade de
endereamento de memria
65.536
1.048.576
1.048.576
( 64 kB )
( 1 MB )
( 1 MB )
8 bits
Interno: 16 bits
Interno: 16 bits
Externo: 8 bits
Externo: 16 bits
Barramento de dados
Manipulao de STRINGS
NO
SIM
SIM
Registradores Internos
8 bits e 16 bits
16 bits
16 bits
NO
SIM
SIM
NO
SIM
SIM
Em sequncia:
Unidades Independentes:
Unidade de Interfaceamento
com Barramento (BIU)
responsvel pela Busca e
Unidades
Independentes:
Unidade de
Interfaceamento com
Barramento (BIU)
responsvel pela Busca
e
Unidade de Execuo
(EU)
Busca Executa
Acumulador
AH
Apontador de dados
BH
BL
CH
CL
CX Acumulador e Contador
DH
DL
SP
PC
Apontador de pilha
Contador de Programa
Microprocessadores e Microcomputadores
SP
Apontador de pilha
BP
SI
DI
IP
Ponteiro de Instruo
CS
Segmento de Cdigo
DS
Segmento de Dados
SS
Segmento de Pilha
ES
Segmento Extra
FLAGS
Registradores de
segmento. So
usados para a
formao do
endereo absoluto.
Registrador de Flags
106
9.2
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:
Microprocessadores e Microcomputadores
107
Barramento B
6
Unidade de Interfaceamento
com Barramento (BIU)
5
QUEUE
Extra Segment ES
Code Segment CS
Stack Segment SS
Data Segment DS
Instruction Pointer IP
4
3
2
Registradores de
Segmento
Sistema de Controle da
Unidade de Execuo
Barramento A
AH
AL
BH
BL
CH
CL
DH
DL
Stack Pointer
Base Pointer
Source Index
Destination Index
AX
BX
CX
DX
SP
BP
SI
DI
Unidade de
Execuo (EU)
ULA
FLAGS
Microprocessadores e Microcomputadores
Registrador de
Offset
108
0YYYY
XXXX0
Registrador de Segmento
(16 bits)
15
Registrador de Offset
(16 bits)
15
Extra Segment - ES
Code Segment - CS
Stack Segment - SS
Data Segment - DS
0
Stack Pointer - SP
Base Pointer - BP
Source Index - SI
Destination Index - DI
Memria
Offset
Segmento
16
Byte Endereado
Incio do Segmento
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
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
15
AX
BX
CX
DX
AH
BH
CH
DH
AL
BL
CL
DL
Accumulator
Base
Counter
Data
AX Acumulador primrio Todas as operaes de I/O so realizadas atravs deste registrador. Operaes que
utilizam dados imediatos necessitam de menos memria quando feitos atravs de AX. Algumas operaes
com strings e instrues aritmticas pedem o uso deste registrador. Geralmente usado pelos
compiladores como hospedeiro para valores retornados de subrotinas.
BX Registrador Base Parece com registrador HL do 8085. o nico registrador de finalidade geral que pode
ser utilizado no clculo de endereo de memria. Todas as referncias memria que usam esse
registrador no clculo do endereo usam o registrador DS, como segmento default.
CX Contador Parece com o registrador BC do 8085. decrementado durante operaes com loops e
strings. Tipicamente, usado para controlar o nmero de repeties do loop. Tambm usado para
rotaes e deslocamentos de vrios bits.
DX Endereador de I/O e Registrador de Dados Parece com o registrador DE do 8085. Recebe o nome de
registrador de dados, principalmente por fora dos mnemnicos. Em algumas operaes de I/O, fornece o
endereo, coisa que nenhum outro registrdor pode fazer. Tambm usado em operaes aritmticas,
incluindo multiplicao e diviso, com o resultado a 32 bits. Pode ser usado por compiladores, juntamente
com AX, para retornar valores de subrotinas.
9.3.2
Este grupo de 4 registradores tipicamente usado para gerar endereos de memria efetivo (nome dado
poro offset do endereo fsico). Apenas so usados em 16 bits. Podem ainda ser utilizados em operaes
aritmticas e lgicas para gerar novos endereos efetivos.
Registradores Apontadores e ndices
15
Stack Pointer
Base Pointer
Source Index
Destination Index
SP
BP
SI
DI
SP Ponteiro de Pilha Parece com o registrador SP do 8085. Armazena o offset do endereo do topo da pilha.
Todas as referncias ao SP, por definio, usam o registrador SS.
BP Ponteiro da Base Permite acessar dados no segmento da pilha. Tipicamente usado para acessar
parmetros que foram passados pela pilha.
SI e DI Registradores de Indexao So usados para acessar dados na memria de dados. So
extensivamente usados nas operaes com strings. Podem ser usados como operandos em todas as
operaes lgicas e aritmticas de 16 bits.
Microprocessadores e Microcomputadores
110
No conjunto de instrues do 8088 nem todos os registradores so especificados. Em muitos casos, uma
instruo pode usar um s registrador ou conjunto de registradores especficos. Para outras instrues, os
registradores tm uso implcito. A tabela a seguir lista as operaes que implicam no uso especfico (implcito)
de um determinado registrador.
Registradores
AX
AL
BX
CX
CL
DX
SP
SI
DI
9.3.3
Operaes
multiplicao de word (16 bits), diviso de word, I/O de word
multiplicao de byte, diviso de byte, I/O de byte, aritmtica decimal
referncia de memria (semelhante ao reg. par HL do 8085)
operao de strings, loops
deslocamento, rotao
multiplicao de word, diviso de word, end. indireto de I/O (0-65535)
operao de stack
operao de string (origem)
operao de string (destino)
Registradores de Segmento
Registradores de Segmento
15
Code Segment
Data Segment
Stack Segment
Extra Segment
CS
DS
SS
ES
Microprocessadores e Microcomputadores
Segmento
Base (default)
CS
SS
DS
DS
ES
SS
Alternativo
Offset
nenhum
nenhum
CS, ES, SS
CS, ES, SS
nenhum
CS, DS, ES
IP
SP
endereo efetivo
SI
DI
endereo efetivo
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
14
13
12
11
O
10
D
9
I
8
T
7
S
6
Z
4
A
2
P
0
C
Flags de Status
C Flag de carry reflete o vai um do bit mais significativo, nas operaes aritmticas (de 8 ou 16 bits). Ele
tambm modificado por algumas instrues de rotao e deslocamento.
Obs.: As operaes de subtrao usam aritmtica em complemento dois e, por isso, o carry invertido e
passa a funcionar como borrow. Se, aps uma operao de subtrao, obtm-se C = 1, isso indica que no
houve borrow, mas C=0, indica que houve borrow.
P Flag de Paridade indica a paridade (par), dos 8 bits menos significativos, do resultado da operao
realizada.
P = 1 nmero par de 1 nos 8 bits menos significativos
P = 0 nmero mpar de 1 nos 8 bits menos significativos
A Flag Auxiliar de Carry reflete o vai um do bit 3, em uma operao de 8 bits.
Z Flag de Zero indica se uma operao teve zero como resultado.
Z = 1 se o resultado da operao for igual a zero
Microprocessadores e Microcomputadores
112
Z = 0 se o resultado da operao for diferente de zero
S Flag de Sinal igual ao bit de mais alta ordem do resultado de uma operao aritmtica.
S = 0 resultado positivo
S = 1 resultado negativo
O Flag de Overflow seu contedo obtido atravs de uma operao XOR do carry in com o carry out do
bit de mais alta ordem do resultado de uma operao aritmtica. Ele indica um overflow de magnitude,
em aritmtica binria com sinal. Indica que o resultado muito grande para o campo destino.
Flags de Controle
T Flag de Trap (armadilha) usada para a depurao de programas. Coloca o 8086 no modo passo a passo.
Aps cada instruo uma interrupo gerada automaticamente.
I Flag de Interrupo habilita ou desabilita a interrupo externa (pedida pelo pino INTR). Ao contrrio do
8085, onde as interrupes RST 7.5, RST 6.5 e RST 5.5 podem ser habilitadas/desabilitadas
individualmente, no 8086 todas so habilitadas ou desabilitadas ao mesmo tempo. A habilitao/
desabilitao individual pode ser feita atravs do controlador de interrupo 8259.
I = 1 interrupo habilitada
I = 0 interrupo desabilitada
D Flag de Direo determina se as operaes com strings vo incrementar ou decrementar os registradores
de indexao (SI e DI).
D = 1 os registradores SI e DI sero decrementados, ou seja, a string ser acessada a partir do
endereo mais alto em direo ao mais baixo.
D = 0 os registradores SI e DI sero incrementados, ou seja, a stringser acessada a partir do
endereo mais baixo em direo ao mais alto.
EXEMPLO:
Descreva o estado dos flags aps a execuo da instruo ADD AL,1 (Adiciona 1 ao contedo do
registrador de 8 bits AL), sabendo que inicialmente AL =7Fh.
Resultado: AL ter o valor 80h (7F h + 01 h) e seus flags sero:
C 0
P 0
A 1
Z 0
S 1
O 1
9.4
A Pinagem do 8088
O microprocessador 8088 um CI com 40 pinos. Na figura a seguir alguns pinos apresentados tem duas
definies. O 8088 tem dois modos de operao que so selecionados pelo pino 33 (MN / MX ). Quando este
pino ligado um nvel alto, o P fica no modo mnimo e compatvel com o 8085, podendo substituir
diretamente este P.
Vcc
A15
A16/
A17/
A18/
A19/
S3
S4
S5
S6
Vcc
MN/
RD
MX
RQ/
RQ/
GT0
GT1
lock
S2
S1
S0
QS0
QS1
Test
RDY
RST
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
10
11
12
13
14
15
16
17
18
19
20
Microprocessadores e Microcomputadores
113
Gnd
A14
A13
A12
A11
A10
A9
A8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
No PC, o 8088 usado no modo mximo (MN / MX =0). As definies a seguir so relativas a este
modo.
(a) AD0-AD7 (9 -16): transmitem os 8 bits menos significativos dos endereos multiplexados com o byte de
dados. Os bits de endereo (A0-A7) so apresentados no incio do ciclo (T1) e os dados a partir de T2.
Ambos sinais so bufferizados para fazerem parte do barramento do sistema.
(b) A8-A15 (2-8 e 39): a outra parte dos bits de endereos. No so multiplexados (no 8086 so),
permanecendo estveis durante grande parte do ciclo de acesso a barramento. Aps bufferizao fazem parte
do barramento do sistema.
(c) A16/S3 - A19/S6 (35-38): sinais de status e endereos multiplexados. No incio do ciclo de barramento esto
presentes os bits dos endereos A16 a A19. Durante o restante do ciclo (a partir de T2) informa o status
interno do 8088.
S6 = 0 (permanece em nvel baixo no modo mximo);
S5 indica o status do flag de interrupo (se = 1 a interrupo est habilitada);
S3 e S4 so decodificados para indicar qual registrador de segmento est sendo usado no momento (ver
tabela abaixo). No so usados no PC-XT da IBM.
S3
0
0
1
1
S4
0
1
0
1
Reg. Segmento
Dados Extra (ES)
Pilha (SS)
Cdigo (CS)
Dados (DS)
(d) Clock (19): sinal de entrada responsvel pela gerao da temporizao no P. No projeto do PC este sinal
gerado pelo CI 8284A, tendo freqncia de 4,77Mhz e ciclo de trabalho (duty cycle) de 33%.
(e) RQ / GT0 (Request / Grant) (31): sinal bidirecional, usado por outros controladores de barramento local
para requerer o uso do barramento (faz o papel dos pinos HOLD e HLDA do 8085). No PC este sinal ligado
ao co-processador 8087.
(f)
(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
114
Reg. IP = 0000 e reg. CS = FFFF resultando no end. de incio de programa = FFFF0h;
Registradores DS, SS, ES e IP zerados;
Registrador Flags zerado.
(m) QSO, QS1 (24, 25) - Queue Status: sinais de sada que fornecem o status da fila de instruo (queue) do
8088. No PC so ligados ao co-processador de modo que este possa acompanhar o status da fila 8088.
(n)
TEST (23): pino de entrada, utilizado em conjunto com a instruo WAIT (no confundir com estado de
espera, "wait state"). Se aps a instruo WAIT o pino TEST estiver em nvel alto, o 8088 espera em estado
inativo at este pino obter sinal baixo. No PC ligado a um pino de sada do 8087.
(o) S0, S1, S2 (26 - 28) (status): apresentam informaes de status sobre o tipo de ciclo de barramento que
est sendo desenvolvido. Este status vlido no incio de cada ciclo de barramento (durante o perodo T1).
No PC estess pinos so ligados ao 8288, chip controlador de barramento, onde so decodificados. Os sinais
de sada decodificados no 8288 formam as linhas de controle do sistema. Os sinais de controle gerados pelo
8288 a partir das informaes de status so: IOR, IOW, MemR , MemW e ALE. Os bits de status
podem ser vistos na tabela abaixo.
9.5
S2
S1
S0
0
1
1
1
0
0
1
0
1
MemR )
Escrita memria ( MemW )
Passivo
Leitura memria (
Microprocessadores e Microcomputadores
115
T1 a T4 perodos de relgio
ALE Address Latch Enable O endereo s reconhecido depois que este sinal vai para nvel alto, mas
o endereo s efetivamente usado quando este sinal volta para o nvel lgico baixo. Durante o
ciclo T2 os sinais de endereo so removidos.
AD0 AD15 Barramento de dados. No ciclo de leitura esse barramento colocado em estado de alta
impedncia no estado T2, em preparao para a leitura de dados. No ciclo de escrita a
CPU coloca os dados no barra barramento no estado T2.
*
RD Ativo baixo. Indica leitura de dados da memria ou de um dispositivo de entrada e sada. Ativado
em T2.
*
WR Ativo baixo. Indica escrita de dados na memria ou em um dispositivo de entrada e sada.
Ativado em T2.
DT/*R Indica a direo da transferncia de dados.
*
DEN Ativo baixo. Data Enable. Indica que vai haver trfego de dados no barramento.
A19/S6, A16/S3 Barramento de dados durante ciclo T1. Barramento de sinais de estado de T2 a T4.
A17/S4
0
0
1
1
S5 = IF
S6 = 0
A16/S3
Significado
0
Segmento Extra
1
Segmento de Pilha
0
Segmento de Cdigo (ou nenhum)
1
Segmento de Dados
Estado de habilitao da interrupo
CPU 8086 tem controle do barramento
TW Wait State Tempo de espera. No perodo de leitura a CPU l o dado do barramento no perodo
T3, aps o dispositivo lido entregar esses dados. Se o dispositivo no conseguir entregar os dados at o final do
ciclo T3, o pino READY do 8086 colocado em nvel lgico baixo, fazendo com que a CPU fique estado de
espera, repetindo do estado T3 quantas vezes forem necessrias, enquanto aguarda o dispositivo entregar os
dados. No perodo de escrita pode acontecer o mesmo. A CPU est pronta para entregar os dados, mas o
dispositivo no est pronto para recebe-los. O pino READY colocado em nvel baixo, gerando perodos de
espera.
Microprocessadores e Microcomputadores
116
9.6
Endereamento de Memria
J foi explicado numa seo anterior como feita a composio do endereo fsico do 8088. Uma das
caractersticas desse microprocessador a sua capacidade de enderear mais que 64 kbytes de memria. O 8088
possui 20 bits de endereos, permitindo ter uma memria fsica de 1.048.576 bytes (ou 1MB).
A gerao de 20 bits, j explicada, feita manipulando o contedo de registradores especiais chamados
Registradores de Segmento. O valor carregado no registrador de segmento usado para localizar, no espao de
1MB, a regio de 64kB onde as instrues do 8088 iro operar. Um outro registrador (que pode ser um reg.
apontador, um reg. ndice ou o BX) pode especificar 64kB dentro de um segmento. O endereo de memria
fsico ser formado pelo deslocamento do contedo do registrador de segmento de 4 bits para a esquerda
(acrescentado-se 4 bits 0 direita), somado a outro valor de 16 bits (acrescentado-se 4 bits 0 esquerda),
resultando num endereo fsico com 20 bits. interessante observar que diferentes combinaes de endereos
lgicos (offsets) e registradores de segmento podem oferecer o mesmo endereo fsico, como exemplificado a
seguir:
EXEMPLO: supondo que SS=8F00h, SP=21F1h, CS=9020h, IP=0FF1h, os endereos fsicos para um
acesso pilha e para a busca da prxima instruo so dados por:
SS = 8F00h
SP =21F1h
endereo fsico
8F000
+ 021F1
CS = 9020h
IP = 0FF1h
endereo fsico
911F1h
90200
+ 00FF1
911F1h
Na realidade os quatro registradores de segmento no 8088 (CS, DS, SS e ES) podem assumir o mesmo
valor, ou valores prximos, ou seja, podem se sobrepor parcial ou totalmente. O programador deve tomar
cuidado para que isto apenas ocorra se for estritamente necessrio.
Estes 4 registradores podem apontar para qualquer regio de 64 kB, no espao de 1 MB. Uma vez
setados, haver uma regio de 64kB para o cdigo (CS), 64kB para dados (CS), 64kB para pilha (SS) e 64kB
para dados extra (ES). Em qualquer momento que o programa necessite manipular a memria fsica, fora das
atuais regies de 64 kB, ele deve manipular o registrador de segmento apropriado (alterando-o atravs de
instrues de transferncia de dados. As figuras a seguir ilustram as regies definidas pelos registradores de
segmento sem e com sobreposio.
Microprocessadores e Microcomputadores
117
FFFFFH
Offset
CS
16
Offset
DS
64 kB
16
Offset
SS
64 kB
16
Offset
ES
64 kB
64 kB
16
00000H
MULTIPLICIDADE DE ENDEREOS
Um mesmo endereo pode ser acessado usando diferentes registradores de segmentos e diferentes registradores
de offset
FFFFFH
64 kB
Endereo Fsico
CS
16
SS
16
64 kB
00000H
Exemplo: Endereo Fsico = 10020 h
Possibilidades de pares SEGMENTO:OFFSET
1000h:0020h = 1000h * 10h + 20h
1001h:0010h = 1001h * 10h + 10h
1002h:0000h = 1002h * 10h + 00h
Um segmento tem at 64 kBytes
Microprocessadores e Microcomputadores
118
No intervalo de 64 kBytes h 6353616 = 4096 possibilidades diferentes de enderear a mesma posio fsica de
memria.
9.7
Obs.:
Exemplos:
MOV AX, [BX] copia o word endereado por BX para AX o tipo do smbolo usado j est implcito
(uma vez que AX de 16 bits), no havendo necessidade de informar ao assembly.
INC [BX] necessrio informar se deve ser incrementado o BYTE de offset BX ou o WORD de offset BX:
INC BYTE PTR [BX] incrementa o byte cujo offset o valor contido em BX
INC WORD PTR [BX] incremeta word que se encontra nos endereos BX e BX+1.
2
opcode
1
s
0
w
0 7
postbyte
0 7
data
0
data if sw=01
Ou
7
Microprocessadores e Microcomputadores
5
4
3
2
opcode
postbyte
data
data if s w = 0 1
1
s
0
w
Byte 1
Byte 2
Byte 3
Byte 4
119
opcode cdigo da operao
w se w = 0 instruo manipula byte; se w = 1 instruo manipula word
postbyte:
7
mod
4
reg
1
r/m
9.8
Um Endereo Efetivo (EA: Effective Address) a parte offset do endereo fsico. Ele formado pela
soma de um deslocamento (um nmero) com um registrador base (BX ou BP) e com um registrador ndice (SI
ou DI) (exemplo: MOV AX, [BP+SI+4]). A referncia de memria com omisso de qualquer uma destas partes
tambm chamada de Endereo Efetivo (por exemplo, a parte offset do exemplo anterior poderia ser [BP+4] ou
[BP+SI]).
Uma das vantagens de se escrever instrues com endereos efetivos que um endereo de memria
pode ser modificado baseado em condies do programa. Isto particularmente til quando se trabalha com
tabelas (ou matrizes). Por exemplo, BP pode ser setado para apontar para a base (o incio) da tabela e SI (que
armazena o resultado de um clculo) localiza um elemento na tabela.
A tabela abaixo sumariza os modos de endereamento do 8088 e os registradores que esto disponveis
em cada modo.
Modo Endereamento
Imediato
Registrador
Direto
Indireto por Registro
(BX, BP, SI, DI)
Indexado
(SI ou DI)
Baseado
(BP ou BX)
Baseado e Indexado
Baseado e Indexado com
deslocamento
Strings
Exemplo
Mnemnico
MOV AX, 1000H
MOV DX, CX
MOV AH, [1000H]
MOV AX, [SI]
Registrador de
Segmento acessado
Code CS
Data DS
Data DS
Operao
Data DS
AL [SI+6]; AH [SI+7]
Stack SS
AL [BP+2]; AH [BP+3]
Data DS
Stack SS
MOVSB
Extra, Dado
ES, DS
AL [BX+SI];
AH [BX+SI+1]
AL [BX+SI+5];
AH [BX+SI+6]
[ES:DI] [DS:SI]
se DF = 0 ento:
SI SI+1 e DI DI+1
se DF = 1 ento:
SI SI -1 e DI DI -1
AX 1000H
DX CX
AH [1000H]
AL [SI]; AH [SI+1]
ENDEREAMENTO IMEDIATO
Microprocessadores e Microcomputadores
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
Dado
34H
12H
25H
ENDEREAMENTO INDIRETO
O operando est na memria. A instruo, ao invs de conter o offset do endereo, como no caso direto,
contm um registrador, que contm o offset do endereo do operando. Os registradores de offset podem ser BX,
BP, DI ou SI (o segmento DS).
Ex.: MOV AX, [BX] copia para AX o contedo localizado no offset dado em BX. Se BX = 1000h,
ento AX = 1234h
Endereo
1000H
1001H
1002H
Dado
34H
12H
25H
Exemplo de aplicao: Tabelas, onde o endereo de leitura da tabela dado atravs do registrador de
offset, que incrementado para varredura da tabela.
ENDEREAMENTO INDEXADO
Uma constante, denominada base, e um registrador de ndice so usados. A base e o ndice so somados
para a obteno do offset do endereo. Os registradores de ndice podem ser BX, BP, DI ou SI
Ex.: MOV AX, 0100H[BX] copia para AX o contedo localizado no offset dado por BX + 0100H.
Se BX = 1000h, ento BX + 0100H = 1100H e AX = 1234h
Endereo
1100H
1101H
1102H
Dado
34H
12H
25H
Exemplo de aplicao: Tabelas, onde a posio inicial da tabela pode ser dada atravs da base; o ndice
pode ento ser variado para varredura da tabela.
Microprocessadores e Microcomputadores
121
ENDEREAMENTO BASEADO
o contrrio do endereamento indexado, ou seja, o contedo de um registrador copiado para uma
posio varivel indicada por um registrador e uma constante. Registradores usados: BX, BP, DI ou SI
Ex.: MOV [BX + 0100H], AX copia contedo de AX para o endereo BX + 0100H. Se BX =
1000H, ento BX + 0100H = 1100H. Se AX = 1234H, ento o valor 34H ser armazenado
em 1100H e o valor 12H ser armazenado em 1101H.
Endereo
1100H
1101H
1102H
Dado
34H
12H
xxH
Exemplo de aplicao: Tabelas, onde a posio inicial da tabela pode ser dada atravs da base; o
ndice pode ento ser variado para varredura da tabela.
ENDEREAMENTO RELATIVO
As instrues de desvio e chamadas de subrotina do tipo near ou short somam ou subtraem um valor de
deslocamento para o desvio, ao invs de usar o endereo longo.
Offset de destino = offset da instruo seguinte + deslocamento
9.9
9.9.1
Interrupes do 8086
Estrutura de interrupo do 8086:
Enquanto o 8085 possui apenas 5 canais de interrupo, o 8086 capaz de tratar de 256 interrupes
diferentes, numeradas de 00h a FFh (ou 0 a 255 decimal). Ao contrrio do 8085, a localizao de cada
interrupo no vem pr-definida no microprocessador; existe uma tabela, mostrada a seguir, com os vetores de
interrupo, onde o endereo fsico de cada interrupo colocado.
Nmero da
Interrup.
0
0000h:0004h
CS:IP
0000h:0008h
CS:IP
0000h:4i
0000h:(4i+1)
0000h:(4i+2)
0000h:(4i+3)
IP low h
IP high h
CS low h
CS high h
0000h:4i
CS:IP
255
0000h:03FCh
IP low h
0000h:03FCh
CS:IP
Microprocessadores e Microcomputadores
122
0000h:03FDh
0000h:03FEh
0000h:03FFh
IP high h
CS low h
CS high h
9.9.3
Nmero da
Interrup.
00 H
Endereo do
vetor
0000h:0000h
01 H
0000h:0004h
02 H
0000h:0008h
03 H
0000h:000Ch
04 H
0000h:0010h
05 H 1F H
0000H:0014H
at
0000H:007C H
Finalidade
Diviso por zero. chamada sempre que o divisor de uma operao
de diviso for zero.
Execuo passo a passo. chamada sempre que a Flag de Trap (T)
estiver setada. Facilita a depurao de um programa.
NMI = Interrupo No-Mascarvel. Equivale TRAP do 8085. Pino
17 do 8086.
Breakpoints. Permite a execuo de programas para depurao at um
endereo especificado pelo programador.
Overflow. chamada sempre que a Flag de Overflow estiver setada,
indicando que o contedo do resultado no cabe no registrador de
destino.
Interrupes que no so pr-definidas, mas so reservadas para o
8086. As diversas verses de sistemas usando o 8086 usam essas
interrupes para finalidades especficas, mas no necessariamente
idnticas entre os sistemas.
So interrupes solicitadas atravs do pino INTR (pino 18). Nesse pino conectado um controlador de
interrupo que amplia para 8 os pedidos de interrupo. So interrupes mascarveis atravs do bit IF do
registrador de flags. A seqncia de atendimento de uma interrupo por hardware :
9.9.4
8086 envia primeiro pulso *INTA para perifrico, aps receber pedido de interrupo. Aps esse sinal
reconhecimento de pedido de interrupo o perifrico prepara-se para enviar o nmero da interrupo
8086 envia segundo pulso *INTA para perifrico, tendo como resposta do perifrico o nmero da
interrupo colocada no barramento de dados
8086 salva PSW na pilha
Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita
interrupes por INTR)
Salva CS (segmento) e IP (offset) na pilha
Carrega novo IP a partir do endereo 4*nn
Carrega novo CS a partir do endereo 4*nn + 2
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 :
Microprocessadores e Microcomputadores
123
Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita
interrupes por INTR)
Salva CS (segmento) e IP (offset) na pilha
Carrega novo IP a partir do endereo 4*nn
Carrega novo CS a partir do endereo 4*nn + 2
Embora existam 256 interrupes por software, cada uma delas pode ter at 256 sub-funes diferentes,
ou seja, atravs das interrupes por software, pode-se executar 256*256 = 65.536 funes diferentes.
Normalmente o registrador AH usado para passar para a interrupo qual a funo a ser executada. A tabela a
seguir exemplifica algumas dessas funes.
Interrupo
INT 10 H
Finalidade macro
Servios de vdeo
Subfuno
00 H
( uma funo do
BIOS)
01 H
02 H
INT 21 H
Servios Gerais
01 H
( uma funo do
DOS)
02 H
08 H
09 H
25 H
31 H
4C H
Registradores
AH = 00 H
AL = modo
AH = 01 H
CH: bit 7 = 0
Bits 6 e 5
Bits 4 a 0
CL: bits 4 a 0
AH = 02 H
BH = 0 a 3
DH = linha
DL = coluna
Descrio da subfuno
Seta o modo vdeo
AL = 03 VGA 80 x 25
Seta tamanho do cursor
00 normal; 01 invisvel
Linha mais alta do caracter para o cursor
Linha mais baixa do caracter para o cursor
Seta posio do cursor
Nmero da pgina de vdeo
00 H linha superior
00 H coluna da esquerda
AH = 01 H
AL
AH = 02 H
DL
AH = 08 H
AL
AH = 09 H
DS:DX
AH = 25 H
AL
DS:DX
AH = 31 H
AL
DX
AH = 4C H
AL
Microprocessadores e Microcomputadores
124
Podem ser movimentados byte ou word, sendo que os registradores Ponteiros (BP e SP), ndices (SI e
DI) e de Segmento (CS, DS, SS, ES) apenas podem ser acessados como word (16 bits).
DEFINIO DE POSIO DE MEMRIA: Ao escrever programas conveniente dar nomes a
posies de memria: para isto utiliza-se pseudo-instrues.
MEMBY
MEMBY
DB
DB
?
3A H
MEMWO
MEMWO
DW
DW
?
; varivel MEMWO (do tipo "word") com valor indefinido
21AB H ; varivel MEMWO com valor definido e igual a 21AB H
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
125
Mnemnico
XCHG AX, BX
XCHG AL, CL
XCHG DX, [SI]
LAHF
SAHF
IN AH, 26
IN AL, DX
OUT 26, AX
OUT DX, AX
LEA BX, MEMBY
Descrio
permuta registradores AX e BX (AX BX)
Permuta registradores AL e CL
Permuta DX com o contedo da posio de memria endereada por SI.
Neste exemplo DL [SI] e DH [SI + 1]
AH Flags low
Flags low AH
IN direto
IN indireto para as 65536 portas (0 - 65535 ou 0000 - FFFF).
Aplica-se as mesmas regras da instruo IN.
Descrio
Diretiva para o compilador gerar um arquivo .com
Diretiva que indica o endereo inicial do programa: 0100 H
Carrega registrador AX com valor B800 H
Copia valor de AX para DS, definindo segmento de dados
Carrega CL com o cdigo ASCII do caractere A, isto , 41 H
Carrega CH com o valor binrio 01011111 b = 5F H
Carrega registrador BX com valor 015E H
Copia contedo de CX na posio DS:BX, ou seja, B800:015E
Pra programa
Descrio
Diretiva para o compilador gerar um arquivo .com
Diretiva que indica o endereo inicial do programa: 0100 H
Microprocessadores e Microcomputadores
126
9.10.2
var1 DB 7
var2 DW 1234h
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.
MOVSW
Microprocessadores e Microcomputadores
127
Sendo a origem e o destino as regies padres (ao contrrio da instruo MOVS), a instruo
no precisa de argumentos.
ES:[DI] DS:[SI]; ES:[DI+1] DS:[SI+1].
Se D = 0, DI DI + 2 e SI SI + 2; Se D = 1, DI DI 2 e SI SI 2
CMPSB
CMPSW
Descrio
Diretiva para o compilador
Diretiva para o compilador programa comea na posio 100h
Offset SI assume o endereo do primeiro valor da varivel a1.
Offset DI assume o endereo da varivel a2.
Registrador CX recebe valor 5
Instruo MOVSB repetida at o registrador CX alcanar 0.
Encerra programa
a1 DB 1,2,3,4,5
a2 DB 5 DUP(0)
Variveis
A varivel a2 ter 5 valores zero, conforme declarado em 5 DUP(0).
EXEMPLO 2: Um bloco de memria de 10 bytes com caractere "A3" armazenado na memria, a partir do
endereo fsico E0000 H.
Mnemnico
#make_COM#
ORG 100h
Descrio
Diretiva para o compilador
Diretiva para o compilador programa comea na posio 100h
AX = E000 h
Segmento especial ES = AX = E000 h
DI = 0000h ES:DI = E0000 + 00000 = E0000 h
Byte a ser armazenado colocado em AL
clear direction flag (resseta flag "direo": modo auto-incremento)
Faz CX = 10 sero armazenado 10 bytes a partir de E0000 h
Repete instruo 10 vezes
Pra programa
EXEMPLO 3: Copiar um bloco de memria de 1000 bytes do endereo fsico A1000H para o endereo fsico
E1000 H.
Mnemnico
MOV AX, 0A000 H
MOV DS, AX
MOV SI, 1000 H
MOV AX, 0E000 H
MOV ES, AX
MOV SI,1000 H
MOV DI,1000 H
CLD
MOV CX, 03E7 H
REP MOVSB
Descrio
AX = A000 H valor que ser passado para registrador de segmento DS
Segmento de dados DS = AX = A000 h
SI = 1000h DS:SI = E0000 + 00000 = A1000 h
AX = E000 h valor que ser passado para registrador de segmento ES
Segmento especial ES = AX = E000 h
Registrador de offset SI = 1000 h DS:SI = A1000 H
Registrador de offset DI = 1000 h ES:DI = E1000 H
clear direction flag (resseta flag "direo": modo auto-incremento)
Faz CX = 03E7 h sero armazenado 1000 bytes a partir de E0000 h
Repete instruo 1000 vezes sero copiados 1000 bytes
Microprocessadores e Microcomputadores
128
9.10.3
Instrues Lgicas
Mnemnico
NOT BX
NOT BYTE PTR [SI]
NOT WORD PTR [SI]
AND CX, DX
AND BL, BYTE PTR [SI]
AND AX, 8000 H
OR CX, DX
OR BL, BYTE PTR [SI]
OR AX, 8000
XOR CL, DH
XOR BX, WORD PTR [SI]
XOR AX, 8000
TEST CX, DX
Descrio
BX complementado (seus bits so invertidos)
Byte apontado por SI complementado
Word apontado por SI complementado
Funo AND entre CX e DX
Funo AND entre BL e contedo do Byte apontado por SI
Funo AND entre AX e 8000 H
Funo OR entre CX e DX
SHR AX, 1
SHR BL, CL
Microprocessadores e Microcomputadores
129
ROL AL, 1
ROR CX, CL
Rodar esquerda.
Rodar direita CL vezes.
RCL AL, 1
RCR DL, CL
9.10.4
Instrues Aritmticas
Mnemnico
ADD SI, DX
ADD BYTE PTR [BX], CH
ADD DI, 6000
ADC SI, DX
ADC BYTE PTR [BX], CL
SUB AX, BX
SUB BL, 34
SBB AX, CX
SBB BL, 34
DAA
DAS
AAA
AAS
INC CL
INC WORD PTR [SI]
DEC CX
DEC WORD PTR [SI]
NEG DX
NEG WORD PTR [SI]
CMP BL, BH
CMP [BX], CX
MUL BL
MUL CX
IMUL BL
DIV BL
DIV CX
IDIV BL
9.10.5
Descrio
soma de registradores
Instrues de Desvio
Mnemnico
JMP [BX]
JMP BX
JMP DWORD PTR [BX];
Descrio
Desvio Incondicional
IP [BX+1:BX]
IP BX
IP [BX+1:BX] ; CS [BX+3:BX+2]
Desvio condicional
Microprocessadores e Microcomputadores
130
JNC LABEL
JS LABEL
LOOP LABEL
LOOPE LABEL
PUSH CX
PUSH [DI+2]
POP DS
PUSHF
POPF
CALL DELAY
CALL [BX]
CALL BX
RET
IRET
INT nn
9.10.6
Instrues de Controle
Mnemnico
STI
CLI
STC
CLC
CMC
STD
CLD
HLT
WAIT
NOP
LOCK instruction
Descrio
seta flag Interrupo
resseta flag Interrupo
seta carry flag
resseta carry flag
complementa carry flag
seta flag direo
resseta flag direo
para a CPU
para a CPU at o pino test ficar ativo
sem operao (utilizado para gerar delay)
coloca Pino LOCK em "0" durante a execuo da prxima instruo
(instruction)
Microprocessadores e Microcomputadores
131
O bit A9 tem um significado especial no projeto do PC: quando est inativo (0), os dados no podem ser
recebidos (pelo micro) vindo dos slots. So habilitados apenas dados vindos de dispositivos de I/O instalados na
prpria placa me (mother board, main board ou system board). Quando ativo (1), so habilitados a recepo
apenas de dados provenientes dos slots.
Tem-se assim 512 portas para uso interno do PC e 512 portas para uso de dispositivos conectados nos
slots (ver figura abaixo).
Esta diviso aplica-se apenas instruo IN (instruo de entrada de I/O). Para a instruo OUT
(instruo de sada de I/O), todos os 1024 endereos podem ser utilizados nos slots.
Em sintonia com a restrio da instruo IN, o PC usa a primeira metade dos endereos para os
dispositivos da placa principal (placa me) e a metade restante para os dispositivos dos slots (ver figura abaixo).
Endereo
0000 h
01FF h
0200 h
03FF h
0400 h
FFFF h
Quantidade de Endereos
Funo
512
512
64.512
No usado no projeto do PC
A seguir sero apresentados os mapas de endereos de I/O do PC-XT. Deve-se observar que novas
placas (por exemplo, placas de som ou de rede) podero decodificar endereos que atualmente esto livres.
Quantidade de Endereos
Microprocessadores e Microcomputadores
Funo
32
32
32
32
32
32
320
No codificado ou usado
132
01FF h
Quantidade de Endereos
Microprocessadores e Microcomputadores
Funo
16
Adaptador de Jogos
16
Unidades de Expanso
133
0220 h
026F h
0270 h
027F h
0280 h
02EF h
02F0 h
02FF h
0300 h
031F h
0320 h
032F h
0330 h
036F h
0370 h
037F h
0380 h
03AF h
03B0 h
03BF h
03C0 h
03CF h
03D0 h
03DF h
03E0 h
03EF h
03F0 h
03FF h
80
Reservada ou No Documentada
16
112
Reservada ou No Documentada
16
Porta Serial #2
32
Placa de Prototipo
16
64
No Documentada
16
48
Reservada ou No Documentada
16
16
16
16
Reservado
16
2.
Descrio
Diretiva do compilador para gerar um arquivo .bin
Registrador AX = 0005 (decimal)
Registrador BX = 0010 (decimal)
Faz AX AX + BX AX = 0005 h + 000A h = 000F h (15 dec)
Faz AX AX 0001 h AX = 000F 0001 = 000E h (14 dec)
Pra programa
Mnemnico
Microprocessadores e Microcomputadores
Descrio
134
#make_BIN#
MOV CX, 5
MOV AL, 0
MOV BX, 0
Next: ADD AL, V1[BX]
MOV V1[BX], BL
INC BX
LOOP Next
MOV V2, AL
HLT
V1 DB 4, 3, 2, 1, 0 Valores do vetor V1
V2 DB 0
Valor inicial da varivel V2
3.
Mnemnico
#make_BIN#
MOV AL, 00000101b
MOV BL, 0Ah
MOV CL, 10o
ADD AL, BL
SUB AL, CL
HLT
Descrio
Diretiva do compilador para gerar um arquivo .bin
Carrega AL com valor binrio correspondente a 5
Carrega registrador com o hexadecimal de 10
Carrega CL com o valor octal que corresponde a 8
Adicional o contedo de BL ao contedo de AL (5 + 10 = 15)
Subtrai o contedo de CL do contedo de AL (15 8 = 7)
Rodar o programa int21 do Emu8086 e verificar a entrada de textos pelo usurio e a impresso do
mesmo no vdeo.
2.
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.
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
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).
Microprocessadores e Microcomputadores