Você está na página 1de 135

Universidade Federal de Gois

Escola de Engenharia Eltrica e de Computao

Notas de Aula

Microprocessador 8085 Microprocessador 8088

Prof. Jos Wilson Lima Nerys

Ncleo de Estudo e Pesquisa em Processamento da Energia e Qualidade

Goinia, 2006

Observaes

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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

Informaes sobre a Disciplina


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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

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

7 - Projeto Experimental usando Microcontrolador da famlia 8051 8 - Atividades de Laboratrio LABORATRIO Laboratrio 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Uso do Kit do 8085 Programa de Simulao ABACUS Instrues de transferncia de dados (uso do Kit e do simulador ABACUS) Instrues aritmticas (uso do Kit e do simulador ABACUS) Instrues lgicas (uso do kit e do simulador ABACUS) Programao 8085 (uso do kit e do simulador ABACUS) Programao 8085 com Interrupo Programao 8085 com Interrupo Microprocessador 8086: caractersticas bsicas Microcontrolador 8051: Sequncia de LEDs e Motor de passo (uso de Kit e de simulador) Microcontrolador 8051: Motor de corrente contnua (uso de Kit e de simulador) Microcontrolador 8051: Conversores AD e DA (uso de Kit e de simulador) Projeto usando 8051 Projeto usando 8051 Projeto usando 8051 Projeto usando 8051 Projeto usando 8051 AVALIAO Nota
Nota 1 Nota 2 Nota 3 Nota 4

Contedo

Tipo de Avaliao
Prova 1 Laboratrio Prova 2 Laboratrio Prova 3 Laboratrio Prova 4 Projeto Experimental

Valor Mximo
8,0 2,0 8,0 2,0 8,0 2,0 5,0 5,0

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

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

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

4. SIMULADOR DIGITAL ABACUS ...............................................................................................57 4.1 4.2 4.3 SIMULADOR ABACUS PARA O MICROPROCESSADOR 8085.....................................................57 EXEMPLOS DE PROGRAMAS EM ASSEMBLY PARA O ABACUS................................................59 EXERCCIOS PROPOSTOS ............................................................................................................60
Prof. Jos Wilson Lima Nerys

Microprocessadores e Microcomputadores

4.4

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

5. KIT DIDTICO E ROTEIROS DE LABORATRIO ...............................................................63 5.1 5.2 5.3 5.4 SUB-ROTINAS DO PROGRAMA MONITOR DO KIT DIDTICO ....................................................63 PRINCIPAIS COMANDOS E ORIENTAES PARA USO DO KIT DIDTICO ..................................64 ROTEIROS DE EXPERIMENTOS....................................................................................................66 REFERNCIAS BIBLIOGRFICAS.................................................................................................74

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

7. ENTRADA E SADA SERIAL E PASTILHAS INTEGRADAS DE SUPORTE ......................85 7.1 7.2 7.2.1 7.2.2 7.3 7.4 INTERFACE SERIAL NO PC..........................................................................................................85 INTEGRADOS DE SUPORTE ..........................................................................................................88 MEMRIAS RAM E ROM...........................................................................................................88 DECODIFICADOR 74LS138.........................................................................................................94 EXERCCIOS PROPOSTOS ............................................................................................................95 REFERNCIAS BIBLIOGRFICAS.................................................................................................97

8. INTERFACE ANALGICA ..........................................................................................................98 8.1 8.2 8.3 8.4 CONVERSOR DIGITAL-ANALGICO ...........................................................................................98 CONVERSOR ANALGICO-DIGITAL .........................................................................................101 EXERCCIOS PROPOSTOS ..........................................................................................................102 REFERNCIAS BIBLIOGRFICAS...............................................................................................103

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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

1. INTRODUO AOS COMPUTADORES E MICROPROCESSADORES

1.1

Histrico sobre Computadores

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

baco

Octograma chins Yin Yang

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

Tabela de logaritmos

Pascaline

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

Calculadora de 4 funes de Leibniz Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys

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

Tear de Vaucanson

Tear de Jacquard

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

Mquina de diferenas

mquina analtica

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Mquina de Herman Hollerith

Z4

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

Colosso

Mark I

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Alguns Exemplos de Aplicao de Microprocessadores e Microcontroladores


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

1.2

Nmero de Transistores em um Microprocessador

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

Fig. 1.1: Evoluo do nmero de transistores no microprocessador

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

14

Tabela: Evoluo do nmero de transistores no microprocessador Processador 4004 8008 8080 8085 8086 8088 286 386 486 DX Pentium Pentium II Pentium III Pentium 4 Ano de Introduo 1971 1972 1974 1976 1978 1979 1982 1985 1989 1993 1997 1999 2000 Nmero de transistores 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 Barramento de dados (bits) 4 8 8 8 16 16 16 32 32 32 32 32 32 Capacidade de endereamento 1 kB 16 kB 64 kB 64 kB 1 MB 1 MB 16 MB 4 GB 4 GB 4 GB 4 GB 4 GB 4 GB

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

Fig. 1.2: Reduo do tamanho fsico dos processadores

1.3

Definies e Classificaes Bsicas


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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

15

COMPUTADOR (classificao quanto velocidade de processamento, nmero de registradores da CPU, complexidade do sistema operacional etc ): Microcomputador:
- Computador que tem a CPU implementada em um nico chip: o microprocessador

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

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

COMPUTADOR (classificao quanto grandeza manipulada): Computadores Analgicos:


- operam diretamente com grandeza fsica (variveis contnuas);

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

COMPUTADOR (funes bsicas):


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

1.4

Estrutura Bsica de um Computador


CPU

Fig. 1.3: Estrutura bsica de um computador

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

16

1.4.1

Unidade Central de Processamento (CPU)

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

1.4.2

Memria

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

1.4.3

Unidade de Entrada e Sada (I/O)

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

1.4.4

Barramento

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

1.5

ndice de Desempenho de Processadores


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

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

1.6

Microprocessador Microcontrolador

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

1.7

Outros conceitos bsicos:


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

MIPS -

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

19

1.8 1.8.1

Sistemas de Numerao Sistema Decimal


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

1.8.2

Sistema Binrio

O sistema binrio o sistema de numerao que o computador entende. Utiliza 2 dgitos, 0 e 1 ou (OFF e ON) ou (0V e 5V), ou (0V e 3,3V). Exemplo: 110010112 1o dgito: Armazena o equivalente a 20 (1). No ex.: 1 20 2o dgito: Armazena o equivalente a 21 (2). No ex.: 1 21 3o dgito: Armazena o equivalente a 22 (4). No ex.: 0 22 8o dgito: Armazena o equivalente a 27 : No ex.: 1 27 A soma destas parcelas resulta no seguinte equivalente decimal: 1 + 2 + 0 + 8 + 0 + 0 + 64 + 128 = 20310 A ponderao dada pelo nmero 2 elevado potncia representada pela coluna, sendo que a 1a coluna 0, a segunda coluna 1 e assim sucessivamente. 1 kbyte = 210 = 1.024 bytes; 1 Mbyte = 210 x 210 = 1.048.576 bytes = 1.024 kbytes; 1 Gbyte = 210 x 210 x 210 = 1.073.741.824 bytes = 1.024 Mbytes

1.8.3

Sistema BCD (Binary-Coded Decimal)

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

1.8.4

Sistema Octal

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

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

No ex.: 13 160

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

1.9

Exerccios Propostos

1 - Quais as funes bsicas de um computador? 2. Em que consiste a CPU de um computador? 3. Como feita a conexo da CPU com as demais unidades de um computador? 4. Diferencie memria DRAM de memria SRAM 5. Qual a finalidade da memria CACHE? 6. Quantas posies de memria podem ser endereadas com um barramento de endereos de 16 bits? E de 20 bits? Como os indicadores abaixo contribuem para o aumento do desempenho de um processador? (a) aumento da freqncia de clock (b) reduo do nmero de ciclos para executar uma instruo (c) processamento paralelo de instrues Qual a diferena entre microprocessador e microcontrolador? Diferencie bit, nibble e byte.

7.

8. 9.

10. Diferencie EPROM e EEPROM. 11. Converta os nmeros abaixo (que esto na base indicada) para hexadecimal

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

21 (a) (b) (c) (d) (e) (f) 34510 = _________ h 101001112 = _________ h 101010108 = _________ h 25510 = _________ h 12810 = _________ h 101001110112 = ___________ h

1.10 Referncias Bibliogrficas

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

22

2. ARQUITETURA E PRINCPIO DE FUNCIONAMENTO DO 8085


2.1 Diagrama de Blocos do Microprocessador 8085

Fig. 2.1: Diagrama de blocos do microprocessador 8085

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

23

2.2

Unidades Internas e Registradores do 8085

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

24

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

AC=1
1 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 1 1 1

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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

2.3

Frequncia de Clock

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

f clock =

f cristal 2
X1

J K

Q Q

CL

fcristal
X2

CL

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

2.4

Pinagem do 8085

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

Estado do ciclo de mquina:


IO/M 0 0 0 1 1 1 3S 3S 3S S1 0 1 1 0 1 1 0 x x S0 1 0 1 1 0 1 0 x x 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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

26 .

Pinos de conexo do cristal. X1 pode ser uma onda quadrada. Nesse caso, X2 pode ficar aberto. Indicas aos perifricos que a CPU est sendo ressetada Pino de sada de dado serial. Pino de entrada de dado serial. Pino da interrupo de maior prioridade. No mascarvel. Pino da interrupo que desvia para o endereo 3C h. Pino da interrupo que desvia para o endereo 34 h. Pino da interrupo que desvia para o endereo 2C h. Pino usado para expandir a capacidade de interrupo. Reconhecimento de pedido de interrupo. Byte menos significativo do endereo e barramento de dados.

Pino de alimentao. Vcc = +5 V Requerimento de barramento. Ativo alto. Reconhecimento de HOLD. Indica que pedido foi aceito. Sada de clock para os demais chips do sistema Reset do sistema. PC = 0000 h. Interrupes com mscara. 1 memria ou perif. prontos para acesso. 0 wait

Indica se a operao de entrada/sada ou com memria Com S0 e IO/M\ indicam estados do ciclo de mquina Sinal que habilita perifrico ou memria para leitura Sinal que habilita perifrico ou memria para escrita
Sinal para carga da parte baixa do endereo (no latch 74373)

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

Byte mais significativo do endereo

Pino de terra (GND).

Fig. 2.3: Pinagem do microprocessador 8085

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

27

2.5

Sistema Bsico de Temporizao e Princpio de Operao


M1
CLK

M2

T1
PC FORA

T2
PC+1PC

T3
INST IR

T4

T1
SBE PC FORA

T2
PC+1PC

T3
INST IR

A15 - A8

PC S

PC S

AD7- AD0

PC I

INST

PC I

INST

ALE

RD\

WR\

IO-M\

Fig. 2.4: Diagrama bsico de temporizao do 8085

M1
CLK

M2

T1
PC FORA

T2
PC+1PC

Twait

T3
INST IR

T4

T1
SBE PC FORA

T2
PC+1PC

T3
INST IR

A15 - A8

PC S

PC S

AD7- AD0

PC I

INST

PCI

INST

ALE

RD\

WR\

IO-M\

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Barramento de Endereos

Barramento de Dados

Acumulador A ou ACC

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

Unidade de Controle RAM Endereo Unidade Lgica e Aritmtica (ALU) Contedo

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

29

M1
CLK

M2

T1
ADD B MOV B,A PC FORA

T2
PC+1PC

T3
INST IR

T4
B TMP

T1
SBE PC FORA

T2
A+TMPA PC+1PC

T3
INST IR A TMP

A15 - A8

PC S

PC S

AD7- AD0

PC I

INST

PC I

INST

ALE

RD\

WR\

IO-M\

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

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

4 5 6

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

2.6

Formato das Instrues

As instrues de adio e de transferncia de dados, mostradas na seo anterior, so instrues de apenas 1 (um) byte, que chamado de OPCODE (Operation Code). Nesse caso toda a informao necessria para a execuo das duas instrues est contida no byte nico. Algumas instrues, no entanto, precisam de informaes adicionais para sua execuo. Assim, alm das instrues de 1 byte, o 8085 tambm tem instrues de 2 bytes e de 3 bytes. Os bytes adicionais so chamados de OPERANDOS. No caso da instruo de 2 bytes tem-se o Opcode e 1 operando e no caso da instruo de 3 bytes tem-se o Opcode e 2 operandos. mostrado a seguir o formato dos trs tipos de instruo. Antes, porm, importante mostrar o formato dos dados no 8085. D7 MSB D0 LSB MSB = Most Significant Bit (Bit mais significativo) LSB = Least Significant Bit (Bit menos significativo) D6 D5 D4 D3 D2 D1

a) Instrues de 1 byte: Opcode (byte 1) Exemplo: D7 D6 D5 D4 D3 D2 D1 D0

ADD B - Adiciona o contedo de B ao acumulador (A) (A) + (B) 1 0 0 0 0 0 0 0 = 80 h

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

D7 D7

D6 D6

D5 D5

D4 D4

D3 D3

D2 D2

D1 D1

D0 D0

MVI A, 32h - Move imediatamente o contedo 32h para A (A) (byte 2) 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 = 3E h = 32 h

Opcode (byte 1) Operando (byte 2)

c) Instrues de 3 bytes: 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 D0 D0 D0

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

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

T1

T2

T3

T5

T6

T1

T3

T1

T3

T1

T3

T1

T3

2.7
1.

Exerccios Propostos
Enumerar todos os registradores (endereveis ou no) do microprocessador 8085. Qual a capacidade (em bits) de cada um deles? Quais os possveis registradores pares do 8085? Com que finalidade usado o registrador-par HL? Qual a funo dos registradores PC e SP? Qual a funo dos registradores W e Z? Qual a funo do registrador TEMP? Descreva a estrutura interna da CPU? Qual a funo de cada uma das FLAGS do 8085? 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.

2. 3. 4. 5. 6. 7. 8. 9.

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 Comentrio

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

CLK T1
ADD B MOV B,A PC FORA

T2
PC+1 PC

T3
INST IR B

T4
TMP

T1
SBE PC FORA

T2
A+TMP A PC+1 PC

T3

T4

INST

IR

A15 - A8

PC S

PC S

AD7- AD0

PC I

INST

PC I

INST

ALE

RD\

WR\

IO-M\

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

2.8

Referncias Bibliogrficas

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

33

3. CONJUNTO DE INSTRUES DO MICROPROCESSADOR 8085


3.1
-

Simbologia das Instrues


addr = address (endereo) = quantidade de 16 bits. dado8 = dado de 8 bits dado16 = dado de 16 bits byte 2 = segundo byte da instruo byte 3 = terceiro byte da instruo r, r1, r2 = Um dos registradores: A, B, C, D, E, H, L = operador lgico AND = operador lgico OR

Exemplo 1: Instruo Indicao simblica : MOV r1, r2 : (r1) (r2)

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

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

3.2

Modos de Endereamento

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

3.3

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

1.

Grupo de Transferncia de Dados - Move dados entre registradores ou posies de memria e registradores. Inclui movimentos, cargas, armazenamentos a troca de dados. Exemplo: MVI M, dado8 = move o dado especificado para a posio de memria indicada pelo registrador par HL. ((H)(L)) (byte 2)

2.

Grupo Aritmtico - Adies, subtraes, incrementos, ou decrementos de dados em registradores ou memria. Exemplo: SUB r = o contedo do registrador r subtrado do acumulador. O resultado guardado de volta no acumulador (A) (A) - ( r )

3.

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

4.

Grupo de Desvio - Inicia desvios condicionais ou incodicionais, chamadas de subrotina, retornos e reincios. Exemplo: JMP addr = desvia incodicionalmente para o endereo indicado (PC) (byte 3) (byte 2)

5.

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

35

3.4

Instrues de Transferncia de Dados


Mnemnico Genrico Simbologia (r) (byte 2) (r1) (r2) (r) ((H)(L)) ((H)(L)) (r) ((H)(L)) (byte 2) (rh) (byte 3) (rl) (byte 2) NO de Ciclos 2 1 2 2 3 3 No de Estados 7 4 7 7 10 10 Modo de Endereamento Imediato Registrador Indireto por registrador Indireto por registrador Indireto por registrador e imediato Imediato Flags Afetadas nenhuma 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.

MVI r, dado8

MOV r1, r2 MOV r, M MOV M, r


MVI M, dado8

LXI rp, dado16

LDA addr

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

13

direto

nenhuma

STA addr

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

13

direto

nenhuma

LHLD addr

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

16

direto

nenhuma

SHLD addr

16

direto

nenhuma

LDAX rp

(A) ((rp)) ((rp)) (A) (H) (D) (L) (E)

Indireto por registrador Indireto por registrador registrador

nenhuma

STAX rp

nenhuma

XCHG

nenhuma

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

36

As instrues apresentadas na tabela anterior esto na forma genrica. Cada uma dessas instrues representada por diferentes cdigos de operao (OPCODES) para diferentes registradores. Na tabela a seguir as instrues de transferncia de dados so desmembradas em seus diferentes opcodes. MNEMNICO LDA adr LDAX B LDAX D LHLD addr LXI B, Dado16 LXI D, Dado16 LXI H, Dado16 LXI SP, Dado16 MOV A,B MOV A,C MOV A,D MOV A,E MOV A,H MOV A,L MOV A,M MOV B,A MOV B,B MOV B,C MOV B,D MOV B,D MOV B,E OPCODE MNEMNICO OPCODE MNEMNICO OPCODE 3A 0A 1A 2A 01 11 21 31 78 79 7A 7B 7C 7D 7E 47 40 41 42 42 43 MOV B,H MOV B,L MOV B,M MOV C,A MOV C,B MOV C,C MOV C,D MOV C,E MOV C,H MOV C,L MOV C,M MOV D,A MOV D,B MOV D,C MOV D,D MOV D,E MOV D,H MOV D,L MOV D,M MOV E,A MOV E,B 44 45 46 4F 48 49 4A 4B 4C 4D 4E 57 50 51 52 53 54 55 56 5F 58 MOV E,C MOV E,D MOV E,E MOV E,H MOV E,L MOV E,M MOV H,A MOV H,B MOV H,C MOV H,D MOV H,E MOV H,H MOV H,L MOV H,M MOV L,A MOV L,B MOV L,C MOV L,D MOV L,E MOV L,H MOV L,L 59 5A 5B 5C 5D 5E 67 60 61 62 63 64 65 66 6F 68 69 6A 6B 6C 6D MNEMNICO OPCODE MOV L,M MOV M,A MOV M,B MOV M,C MOV M,D MOV M,E MOV M,H MOV M,L MVI A, Dado8 MVI B, Dado8 MVI C, Dado8 MVI D, Dado8 MVI E, Dado8 MVI L, Dado8 MVI M, Dado8 SHLD addr STA addr STAX B STAX D XCHG 6E 77 70 71 72 73 74 75 3E 06 0E 16 1E 2E 36 22 32 02 12 EB

Exemplos de uso de instrues de transferncia de dados: Mnemnico MVI H,10h MVI L,00h MVI A,0Ah MOV M,A MOV C,M MVI M,2Bh Mnemnico LXI B,1000h LXI D,2000h LXI H,3000h LXI SP,4000h LDA 1000h STA 2000h Cdigo 26 10 2E 00 3E 0A 77 4E 36 2B Cdigo 01 11 21 31 3A 00 00 00 00 00 10 20 30 40 10 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

32 00 20

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

37 Mnemnico LHLD 1000h SHLD 2000h LXI H,3000h LXI B,4000h LXI D,5000h LDAX B STAX D XCHG Cdigo 2A 00 10 22 00 20 21 00 30 01 00 40 11 00 50 0A 12 EB Comentrio Carrega contedo da posio 1000h no registrador L. Carrega contedo da posio 1001h no registrador H Move o contedo do registrador L para a posio 2000h. Move o contedo do registrador H para a posio de memria 2001h. Carrega registrador duplo HL com valor 3000h Carrega registrador duplo BC com valor 4000h Carrega registrador duplo DE com valor 5000h Carrega acumulador com o contedo da posio de memria indicada pelo registrador duplo BC, ou seja, posio 4000h Move contedo do acumulador para a posio de memria indicada pelo registrador duplo DE, ou seja, posio 5000h O contedo de H (30h) trocado com o contedo de D (50h). O contedo de L (00h) trocado com o contedo de E (00h). Depois da instruo, temos: HL = 5000h e DE = 3000h

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

39

3.5

Instrues Aritmticas

Obs.: A menos que seja indicado, todas as instrues desse grupo afetam todas as Flags: Zero, Sinal, Paridade, Transporte (Carry) e Auxiliar de Transporte (Auxiliar de Carry) Mnemnico Genrico ADD r ADD M ADI dado8 ADC r ADC M ACI dado8 SUB r SUB M SUI dado8 SBB r SBB M SBI dado8 INR r INR M DCR r DCR M INX rp Simbologia (A) (A) + ( r ) (A) (A) + ( (H) + (L)) (A) (A) + (byte 2) (A) (A) + ( r ) + (CY)
(A) (A) + ( (H)(L)) + (CY) (A) (A) + (byte 2) + (CY)

NO de Ciclos 1 2 2 1 2 2 1 2 2 1 2 2 1 3 1 3 1

No de Estados 4 7 7 4 7 7 4 7 7 4 7 7 4 10 4 10 6

Modo de Endereamento registrador registrador imediato registrador imediato por registrador imediato registrador indireto por registrador imediato registrador indireto por registrador imediato registrador indiretor por registrador registrador indireto por registrador registrador

Flags Afetadas todas todas todas todas todas todas todas todas todas todas todas todas Z, S, P e AC Z, S, P e AC 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.

(A) (A) - ( r ) (A) (A) - ( (H)(L)) (A) (A) - (byte 2) (A) (A) - ( r ) - (CY) (A) (A) - ( (H)(L)) (CY)
(A) (A) - (byte 2) - (CY)

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

40

Instrues Aritmticas - Continuao


Mnemnico Genrico DCX rp DAD rp DAA Simbologia (rh)(rl) (rh)(rl) - 1
((H)(L))((H)(L))+ (rh)(rl)

NO de Ciclos 1 3 1

No de Estados 6 10 4

Modo de Endereamento registrador registrador registrador

Flags Afetadas nenhuma CY todas

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

Na tabela a seguir as instrues aritmticas de dados so desmembradas em seus diferentes opcodes. MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE ACI Dado8 ADC A ADC B ADC C ADC D ADC E ADC H ADC L ADC M ADD A CE 8F 88 89 8A 8B 8C 8D 8E 87 ADD B ADD C ADD D ADD E ADD H ADD L ADD M ADI Dado8 DAA DAD B DAD D 80 81 82 83 84 85 86 C6 27 09 19 DAD H DAD SP DCR A DCR B DCR C DCR D DCR E DCR H DCR L DCR M DCX B 29 39 3D 05 0D 15 1D 25 2D 35 0B DCX D DCX H DCX SP INR A INR B INR C INR D INR E INR H INR L INR M 1B 2B 3B 3C 04 0C 14 1C 24 2C 34 INX B INX D INX H INX SP SBB A SBB B SBB C SBB D SBB E SBB H SBB L 03 13 23 33 9F 98 99 9A 9B 9C 9D SBB M SBI Dado8 SUB A SUB B SUB C SUB D SUB E SUB H SUB L SUB M SUI Dado8 9E DE 97 90 91 92 93 94 95 96 D6

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

41 Exemplos de uso de intrues aritmticas: Mnemnico MVI A,05h MVI C,02h ADD C ADI 10h ADC A ACI 03h Mnemnico MVI A,05h MVI C,02h LXI H,2050h MVI M,08h SUB C SUI 02h SBB C SBI 03h SBB M Cdigo 3E 05 0E 02 81 C6 10 8F CE 03 Cdigo 3E 05 0E 02 21 50 20 36 08 91 D6 02 99 DE 03 9E 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 Comentrio Carrega acumulador com valor 05 h Carrega registrador C com valor 02 h Carrega registrador duplo HL com valor 2050 h Move valor 08h para posio 2050 h (apontada por HL) Subtrai o contedo de C do contedo de A. A = 05 - 02 = 03h Adiciona 10h ao contedo de A. A = 03h - 02h = 01h Subtrai o contedo de C do contedo de A, incluindo o valor de carry. A = 01h - 02h - 0 = FFh. O carry antes Zero. Depois passa para 1. Subtrai 03h do contedo do acumulador, incluindo carry. A = FFh 03h 1h = FBh. A Flag CY passa para Zero. CY = 0. Subtrai com carry o contedo da posio de memria 4100h do contedo do acumulador. A = FBh 08h 0 = F3h

Obs.: No se esquecer de que a subtrao no 8085 no feita diretamente. A subtrao feita atravs de uma adio com o complementar de 2. Ex.: Subtrao direta: Subtrao com complementar de 2: A = 03 02 = 01h A = 03 + (FD + 1) = 01h

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

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

0 0 0 1 1 0 0 0 1 0 0 0 CY = 0

Exemplo 2: Operao de subtrao Obs.: As operaes de subtrao so executadas pelo 8085 usando o complementar de 2 subtrao normal 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 Carry = 0 CY = 0 subtrao usando complementar de 2 0 0 0 0 1 1 1 1 + 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 Carry = 1 CY = 0

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

42 Exemplo 3: Operao de subtrao subtrao normal 0 0 0 0 1 1 0 0 - 0 0 0 1 0 0 1 0 1 1 1 1 1 1 0 1 0 Carry = 1 CY = 1 subtrao usando complementar de 2 0 0 0 0 1 1 0 0 + 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 Carry = 0 CY = 1

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

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

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

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

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

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

Hexa
1

Binrio Byte Superior


1 1 1 1

Byte Inferior
1 1

4 9 1 3

5 2 7

2 6 8

1 3 5

C 9 6

4 E 2 1 1 0

1 1 1

1 1 0

1 0 1

0 0 1

0 1 0

0 1 0

1 1 0

0 1 1

0 0 0

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

43

3.6

Instrues Lgicas
Flags Afetadas todas 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

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) (A) (A) ((H)(L)) (A) (A) (byte 2) (A) (A) (r) (A) (A) ((H)(L)) (A) (A) (byte 2) (A) (A) (r) (A) (A) ((H)(L)) (A) (A) (byte 2) (A) - (r)

ANA M

indireto por registrador imediato

todas

ANI dado8

todas

XRA r XRA M

1 2

4 7

registrador indireto por registrador imediato registrador indireto por registrador imediato registrador

todas todas

XRI dado8 ORA r ORA M

2 1 2

7 4 7

todas todas todas

ORI dado8 CMP r

2 1

7 4

todas todas

CMP M

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

indireto por registrador

todas

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

CPI dado8

(A) (A) - (byte 2)

imediato

todas

RLC

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

CY

RRC

CY

RAL

CY

RAR

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

CY

CMA

nenhuma

CMC STC

1 1

4 4

CY CY

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

45

Resumo das condies da instruo CMP r Condio (A) = (r) (A) > (r) (A) < (r) Z 1 0 0 CY 0 0 1

Opcode e Mnemnico das Instrues Lgicas: MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE
ANA A ANA B ANA C ANA D ANA E ANA H ANA L ANA M ANI Dado8 CMC ORA A

A7 A0 A1 A2 A3 A4 A5 A6 E6 3F B7

ORA B ORA C ORA D ORA E ORA H ORA L ORA M ORI Dado8 RAL RAR RC

B0 B1 B2 B3 B4 B5 B6 F6 17 1F D8

RLC RNC RRC XRA A XRA B XRA C XRA D XRA E XRA H XRA L XRA M

07 D0 0F AF A8 A9 AA AB AC AD AE

Exemplo de programa usando instrues lgicas: Mnemnico MVI A,0Fh MVI C,52h MVI B,46h ANA C ANI 44h XRI 23h CPI 33h RLC CMP B CMC RAR Cdigo 3E 0F 0E 52 06 46 A1 E6 44 EE 23 FE 33 07 B8 3F 1F Comentrio Carrega acumulador com valor 0Fh Carrega registrador C com valor 52h Carrega registrador B com valor 46h Faz operao A AND C, ou, 0F AND 52h A = 02h Faz A AND 44h, ou, 02h AND 44h. A = 00h Faz A XOR 23h, ou, 00h XOR 23h A = 23h Faz A - 33h, sem alterar A. Ou, 23 - 33h Z = 0 e CY = 1 Rotaciona A esquerda. Resultado: A = 46h e CY = 0 Faz A - B, sem alterar A. Ou, 46h - 46h Z = 1 e CY = 0 Complementa flag de Carry. CY = 1 Rotaciona A direita com Carry A = A3h e CY = 0

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

46

3.7

Instrues de Desvio

(a) As instrues desse grupo alteram o fluxo normal do programa. (b) Nenhuma flag afetada por qualquer das instrues do grupo de instrues de desvio. (c) As instrues de desvio so divididas em: instrues de desvio condicional e instrues de desvio incondicional. (d) As instrues de desvio incondicional simplesmente alteram o fluxo do programa alterando o valor do contador de programa PC. (e) As instrues de desvio condicional examinam o estado (status) de uma das quatro flags (Z, S, P e CY), para verificar se o desvio indicado deve ser executado. As condies que podem ser especificadas so dadas a seguir: Smbolo NZ Z NC C PO PE P M Condio indicada Not Zero (Z = 0) Zero (Z = 1) No Carry (CY = 0) Carry (CY = 1) Parity odd = Paridade mpar (P = 0) Parity Even = Paridade Par (P = 1) Plus Positivo (S = 0) Minus Negativo (S = 1) bits de identificao C C C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

47 Instrues de Desvio: Mnemnico Simbologia Genrico (PC) (byte 3)(byte 2) JMP addr Jcondio addr
Se (CCC), ento, (PC) (byte 3)(byte 2)

NO de Ciclos 3 2/3

No de Estados 10 7/10

Modo de Endereamento imediato imediato

Flags Afetadas nenhuma nenhuma

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.

JNZ addr JZ addr JNC addr JC addr JPO addr JPE addr JP addr JM addr CALL 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) Se (CCC), ento, (PC) (byte 3)(byte 2)

2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 5

7/10 7/10 7/10 7/10 7/10 7/10 7/10 7/10 18

imediato imediato imediato imediato imediato imediato imediato imediato imediato e indireto por registrador

nenhuma nenhuma nenhuma nenhuma nenhuma nenhuma nenhuma nenhuma nenhuma

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

Ccondition addr

2/5

9/18

imediato e direto por registrador

nenhuma

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

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 registrador

nenhuma

PCHL

(PCH) (H) (PCL) (L)

nenhuma

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

49

3.8

Instrues de Controle, Pilha e Entrada e Sada


Obs.: As instrues desse grupo no afetam as flags, a menos que seja indicado. Mnemnico Genrico PUSH rp Simbologia ((SP) - 1 (rh) ((SP) - 2 (rl) (SP) (SP) - 2 NO de Ciclos 3 No de Estados 12 Modo de Endereamento indireto por registrador Flags Afetadas nenhuma
Comentrio

PUSH PSW

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

12

indireto por registrador

nenhuma

POP rp

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

10

indireto por registrador

nenhuma

POP PSW

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

10

indireto por registrador

todas

XTHL

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

16

indireto por registrador

nenhuma

SPHL IN porta OUT porta

(SP) (H) (L) (A) (dado 8 bits) (dado 8 bits) (A)

1 3 3

6 10 10

registrador direto direto

nenhuma nenhuma nenhuma

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

DI

nenhuma

HLT NOP RIM

1+ 1 1

5 4 4

nenhuma nenhuma nenhuma

SIM

nenhuma

Cdigos de Operao das Instrues de Desvio e de Controle MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE MNEMNICO OPCODE CALL adr CC adr CM adr CMA CMC CMP A CMP B CMP C CMP D CMP E CMP H CMP L CD DC FC 2F 3F BF B8 B9 BA BB BC BD CMP M CNC adr CNZ adr CP adr CPE adr CPI D8 CPO adr CZ adr DI EI IN D8 JC adr BE D4 C4 F4 EC FE E4 CC F3 FB DB DA JM adr JMP adr JNC adr JNZ adr JP adr JPE adr JPO adr JZ adr NOP ORI D8 OUT D8 PCHL FA C3 D2 C2 F2 EA E2 CA 00 F6 D3 E9 POP B POP D POP H POP PSW PUSH B PUSH D PUSH H PUSH PSW RC RET RIM RM C1 D1 E1 F1 C5 D5 E5 F5 D8 C9 20 F8 RNC RNZ RP RPE RPO RST 0 RST 1 RST 2 RST 3 RST 4 RST 5 D0 C0 F0 E8 E0 C7 CF D7 DF E7 EF RST 6 RST 7 RZ SIM SPHL STC XCHG XRI D8 XTHL F7 FF C8 30 F9 37 EB EE E3

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

51

3.9

Funcionamento da Pilha

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

52

3.10 Exemplos de Programas em Assembly do 8085


1. Exemplo de uso de instrues de desvio e de controle. A instruo MOV A,B no afeta nenhuma flag e, portanto, no afeta a flag de zero (Z) decorrente da instruo DCR C. Label volta: Instrues MVI C,10h DCR C MOV A,B JNZ volta HLT 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: 2.

Exemplo similar ao anterior, mas usando a instruo JZ endereo e JMP endereo. Label volta: Instrues MVI C,10h DCR C JZ fim MOV A,B JMP volta HLT Comentrio Carrega o registrador C com o valor 10 h Decrementa contedo do registrador C Se o resultado de DCR C for ZERO, desvia para "fim" Copia contedo de B em A. No afeta nenhuma flag. Desvio incondicional para "volta". Esta instruo pra o processamento do programa

fim: 3.

Exemplo usando comparao entre registradores (A e B). A operao de comparao e volta repetida at o valor de B alcanar o valor 08h, quando ento a flag de carry setada, fazendo o processamento encerrar. Label Instrues MVI A,07h MVI B,00h INC B CMP B JNC volta HLT Comentrio
Carrega registrador A com valor 07 h Carrega registrador B com valor 00 h. Incrementa em "1" o contedo do registrador B Compara contedo de B com o contedo de A, sem alterar valor de A. Desvia para "volta", se a flag CY = 0. CY =0 se A > B ou A = B Pra processamento quando CY = 1, ou seja, quando B=8 (A < B).

volta:

4.

Exemplo similar ao anterior, mas usando a instruo JC endereo, ao invs de JNC endereo. Label 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:

fim:

5.

Programa que faz a multiplicao de 4 por 3. usada a instruo ADI Dado8. Label 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.

volta:

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

53 6. Outra verso de programa que faz a multiplicao de 4 por 3. A instruo ADI Dado8 substituda pela instruo ADD B. O acumulador vai assumir os valores 00 h, 04 h, 08 h e, finalmente, 0C h, isto 12 decimal. Label Mnemnico 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.

volta:

7.

Programa que faz a multiplicao de 4 por 3 usando uma subrotina. Label Mnemnico LXI SP, 2090h MVI A,00h MVI B,04h MVI C,03h CALL soma HLT 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

soma:

8.

Programa que gera uma contagem crescente, em hexadecimal, de 00 h a FF h e envia o resultado para a sada 1. Label volta: Mnemnico MVI A,00h OUT 01h INR A JNZ volta HLT Comentrio Zera acumulador. A = 00 h Envia valor de A para a Porta de sada 01h Incrementar contedo do acumulador. A = A + 1 "volta" se contedo do acumulador for diferente de zero Encerra quando contedo do acumulador for zero.

Obs.: Nesse programa o acumulador inicia com valor 00h e encerra quando o acumulador volta para o valor 00h, aps passar por todos os valores de 00 a FFh. 9. Subrotina de atraso de 1 ms. feita a suposio de que um programa chama a subrotina denominada atraso, que dada logo a seguir. suposto um tempo de 1s para cada estado. _____ _____ CALL atraso _____ _____ Label atraso: volta: Mnemnico MVI C,46h DCR C JNZ volta NOP HLT Comentrio Registrador C recebe valor 46 h 70 d Decrementa C. C = C - 1 Volta, se flag de zero for zero (Z=0) C 0 Estado inoperante (No Operation). Apenas retardo Encerra quando contedo do acumulador for zero.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

54

Instruo

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

Tempo gasto em cada instruo e tempo total: No de Vezes que a No de Estados Tempo de cada instruo de cada Instruo Estado executada (s) 1 7 1 70 4 1 69 10 1 1 7 1 1 4 1 1 10 1 Tempo Total

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

10. Subrotina de atraso de 10 ms. suposto um tempo de 1s para cada estado. Label atraso: repete1 repete2: Mnemnico MVI B,0Ah MVI C,47h DCR C JNZ repete2 DCR B JNZ repete1 RET 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.

Instruo

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

Tempo gasto em cada instruo e tempo total No de Vezes a No de Estados de Tempo de instruo cada Instruo cada Estado executada (s) 1 7 1 10 7 1 710 4 1 700 10 1 10 10 9 1 1 Tempo Total 7 4 10 7 10 1 1 1 1 1

Tempo Parcial (s)

7 70 2840 7000 70 40 90 7 10 10134 s 10 ms

3.11 Exerccios Propostos


1. 2. Cite todas as instrues possveis a partir da instruo genrica MOV A, r. Se os registradores H e L contm, respectivamente, os valores 40 h e 50 h, qual o significado da instruo MVI M, 08h? A que grupo de instrues pertence a instruo MVI M, 08h? Explique em poucas palavras como funciona a pilha no 8085. Mostre, atravs de um mapa de memria, a evoluo da pilha quando se realiza as seguintes instrues, na seqncia mostrada: PUSH B, PUSH D, ADD B, PUSH PSW, ADD D, POP PSW, OUT 90, POP D, POP B Valores iniciais: SP = 20C0 h, A = 33 h, B = 1C h, C = 4B h, D = 10 h, E = FE h e F = 3D h Prof. Jos Wilson Lima Nerys

3. 4.

Microprocessadores e Microcomputadores

55

5.

Mostre, atravs de um mapa de memria, a evoluo da pilha quando se executam as seguintes instrues, na seqncia mostrada: PUSH PSW, PUSH B, CALL ADIO, (RET), MOV B, A, POP B, POP PSW Valores iniciais: SP = 2090 h, A = 53 h, B = 0F h, C = 05 h, D = 12 h, E = 01 h e F = 55 h

Endereo da chamada de subrotina CALL ADIO: 2020 h

6.

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

7.

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

volta:

pula:

(a) O que o programa acima faz? (b) Desenhe uma tabela mostrando os endereos e o contedo da pilha aps a execuo da instruo CALL 0200h. (c) Quais os valores enviados pela porta de sada 01? (d) Mostre o que deve ser feito se o reg. B for usado no lugar do reg. C 8. Escreva um programa que produz um retardo de 1 s, sabendo que o 8085 acionado por um cristal de 6 MHz. 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.

9.

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

56 12. Faa o comentrio de cada linha do programa abaixo e, a seguir, explique qual a finalidade do programa completo. Complete os endereos. End. 4000 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

volta:

pula:

3.12 Referncias Bibliogrficas


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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

57

4. SIMULADOR DIGITAL ABACUS

4.1

Simulador ABACUS para o Microprocessador 8085

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

LEDs para
Memria RAM: Endereo, cdigo em hexadecimal e mnemnico
Chaves para entrada de dados

Contedo da memria RAM

Registradores: A, Flags (Z, S, P, CY, AC), B, C, D, E, H, L, PC e SP Estado das mscaras de interrupo: IE, 5.5, 6.5, 7.5 Indicadores se h pedido pendente de interrupo: 5.5?, 6.5?, 7.5?

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

58

Subrotina LETECLA

Endereo (h) 02E7

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

Entrada nenhuma

Sada A - valor da tecla lida nenhuma nenhuma

Registradores Afetados A, H e L

MOSTRAA MOSTRAD

036E 0363

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

todos todos

DELAY

05F1

Provoca atraso de tempo proporcional ao contedo de D

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 Endereo 2000 2003 2005 2006 2009 200A 200b Mnemnico LXI SP, 2020 MVI A,00h PUSH PSW
CALL MOSTRAA

volta:

POP PSW INR A JMP volta

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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

59

4.2

Exemplos de Programas em Assembly para o ABACUS


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

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

Label

SP 2090 h A 00 h

volta:

AA+1 N

Mostra A

A = 60 h?
S Fim

fim:

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

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

volta:

AA+1 N

Mostra A

cresce:
A = 60 h?
S AA1

decresce:

Mostra A N

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

A = 00 h?
S

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

60

4.3
1. 2. 3. 4.

Exerccios Propostos
Faa no ABACUS um programa que executa uma contagem decimal de 00 a 60. Faa no ABACUS um programa que executa uma contagem decrescente em hexadecimal de 60 h at 00 h. Repita o problema anterior para uma contagem decimal de 60 at 00. 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. Repita o problema anterior, selecionando e mostrando o menor nmero. 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. 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. Adapte o programa do problema 7 para ordenar os nmeros em ordem decrescente. 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

5. 6.

7.

8. 9.

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

L_PRXIMO:

Aps analisar o trecho de programa dado, pede-se: (a) Explique o funcionamento da subrotina "LEITURA"; (b) Faa a continuao do programa acima de modo que o maior nmero da tabela montada seja mostrado no display de dados; (c) Faa a continuao do programa acima de modo que o menor nmero da tabela montada seja mostrado no display de dados; 21. Codifique as instrues dadas a seguir usando o mnemnico do 8085; indique o endereo de cada instruo e indique o contedo dos registradores pedidos e das flags de carry e de zero, aps a execuo da instruo indicada.
OPERAO (A) 70 h (C) 0F h (H,L) 2020 h ((H)(L)) F0 h (A) (A) (C) (A) ((H)(L)) (A) (A) + (C) + CY (C) (C) ((H)(L)) (A) FF h END. 2000 MNEMNICO 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 ORA M MOV C,A CPI FF h A C CY Z

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

60

30

30

70

Dado de entrada

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Label
A < 15 h ? N

Mnemnico

A > 45 h ? N Mostra A

C1

(b) Label
E E+1 S CY = 0? N A E Mostra A A AB

Mnemnico

Fim

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

4.4

Referncias Bibliogrficas

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

63

5. KIT DIDTICO E ROTEIROS DE LABORATRIO


5.1 Sub-rotinas do Programa Monitor do Kit Didtico

O laboratrio de microprocessadores conta com um Kit Didtico para realizao de experimentos usando o microprocessador 8085. Esse Kit j possui vrias sub-rotinas no programa residente (chamado de programa monitor). Elas so dadas a seguir, juntamente com uma breve descrio e com os endereos onde elas esto armazenadas.
Subrotina APDIS Endereo (h) 070B Funo apagar display (e inicializar WRITE DISPLAY RAM na posio 0) (LEFT entry) leitura da tecla apertada mostra no display o caracter contido no registrador C Entrada nenhuma Sada nenhuma Registradores Afetados nenhum

CI CO

05C1 05CB

nenhuma 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 nenhuma

DADD

05B8

mostra 2 bytes no display (LEFT entry)

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

A e flags A e flags

A, BC, DE e flags

DBYTE

05A1

mostra 1 byte no display (LEFT entry)

nenhuma

A, BC e flags

PRINT

05D6

imprime mensagem no display (mensagem localizada no endereo dado por M e que termina com um byte FF) l 2 bytes do teclado e mostra no display (p. ex.: endereos) l 1 byte do teclado e mostra no display

nenhuma

A, C, HL e flags

RADD RBYTE

0580 0558

RDATA

0593

mostra 2 bytes no display

nenhuma

TECLA

06BA

guarda em A a posio (na TABTEC) da tecla lida

nenhuma

DELAY DEL 1 DEL 2

077A 0770 0766

temporizador (tempo = 0,6 ms) temporizador (tempo = 50 ms) temporizador (tempo = 850 ms)

nenhuma nenhuma 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

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

DE

A, C e flags

A e flags A, B e flags A, BC e flags

Exemplo de programa usando sub-rotinas da tabela anterior: O programa a seguir mostra uma contagem hexadecimal crescente de 00 h at FF h no display do Kit didtico. O programa deve ser digitado a partir da posio de memria 4000 h.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

64 Label volta: Endereo 4000 4002 4005 4006 4009 400A 400B Mnemnico MVI A,00h CALL APDIS PUSH PSW CALL DBYTE POP PSW INR A JMP volta Cdigo 3E 00 CD 0B 07 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

5.2

Principais comandos e orientaes para uso do Kit Didtico

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

EXC

RST

PRG

TR

VER K-7 ESC

COM K-7 LER

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

DSP C

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

SP

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

65 SUB Substitui-se o contedo de uma determinada posio de memria por outro byte. Usa-se digitando essa tecla, seguida do endereo desejado. O contedo atual aparece no display de dados quando, ento, pode-se substitudo. Em seguida digita-se <EXC>. Resumindo: <SUB> <endereo> <novo contedo> <EXC> DSP Permite mostrar (Display) o contedo de uma determinada posio de memria. Uso: <DSP> <endereo desejado>

DNX Permite mostrar no display o contedo do prximo endereo de memria, aps o uso da tecla DSP. Usando repetidas vezes essa tecla, pode-se percorrer todo o programa digitado. DMN Permite mostrar no display de dados o contedo de memria do endereo anterior ao atual. usado da mesma forma que a tecla DNX. GO SST usada para executar o programa. Uso: <GO> <endereo de incio do programa> <EXC> Permite executar o programa passo-a-passo. Uso: <SST> <endereo de incio do programa> <NXT> Cada prximo passo executado aps a tecla NXT. RST usada para ressetar o programa, ou seja, zerar o contedo do contador de programa e de outros registradores. INS usada para a insero de cdigos e dados no Kit Didtico. Uso: <INS> <endereo de incio do programa> <cdigo 1> <cdigo / dado 2> <cdigo / dado 3> . . <ltimo cdigo / dado > <EXC>

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Memria ROM Embora essa memria possa ir de 0000 h at 3FFF h, somente uma pastilha de memria usada e o endereo vai de 0000 h at 07FF h Espao reservado 2716 0800 h 0FFF h Espao reservado 1800 h 1FFF h Espao reservado 2800 h 2FFF h Espao reservado 3800 h 3FFF h 0000 h 07FF h Espao reservado 1000 h 17FF h Espao reservado 2000 h 27FF h Espao reservado 3000 h 37FF h

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 4000 h 43FF h 2114 4400 h 47FF h 2114 4800 h 4BFF h Espao reservado 4C00 h 4FFF h Espao vazio 5000 h 53FF h Espao reservado 5400 h 57FF h Espao reservado 5800 h 5BFF h Espao reservado 5C00 h 5FFF h 4000 h 43FF h 2114 4400 h 47FF h 2114 4800 h 4BFF h Espao reservado 4C00 h 4FFF h Espao reservado 5000 h 53FF h Espao reservado 5400 h 57FF h Espao reservado 5800 h 5BFF h Espao reservado 5C00 h 5FFF h

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

5.3

Roteiros de Experimentos

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

67

EXPERIMENTO 1
Objetivo: Familiarizao com o simulador ABACUS e com o kit didtico Material: computador com o simulador ABACUS e kit didtico 1. Inclua no ABACUS e execute o programa da seo anterior, repetido a seguir. Endereo 2000 2003 2005 2006 2009 200A 200b Mnemnico LXI SP, 2020 MVI A,00h PUSH PSW
CALL MOSTRAA INCIO

A 00 h

POP PSW INR A JMP 2005

Mostra A AA+1

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

3. Inclua no Kit didtico e execute o programa da seo anterior, repetido a seguir. Endereo 4000 4002 4005 4006 4009 400A 400B Mnemnico MVI A,00h CALL APDIS PUSH PSW CALL DBYTE POP PSW INR A JMP 4002 Cdigo 3E 00 CD 0B 07 F5 CD A1 05 F1 3C C3 02 40

4. Inclua, aps a instruo CALL DBYTE, a subrotina de atraso de tempo DEL 1 (50 ms), execute o programa novamente e observe o aumento no tempo entre cada valor mostrado no display. O trecho a ser includo mostrado a seguir: Endereo 4009 400C 400D 400E Mnemnico CALL DEL1 POP PSW INR A JMP 4002 Cdigo CD 70 07 F1 3C C3 02 40

5. Questes do Experimento 1 (a) (b) (c) (d) O que ocorre quando se diminui o valor de D no ABACUS? Por que foram usadas as instrues PUSH PSW e POP PSW no ABACUS e no Kit Didtico? Sendo SP = 2020 h no ABACUS, em que endereo ser armazenado o primeiro dado da pilha? A subrotina DEL1 provoca um atraso de 50 ms. Mostre como ela pode ser usada para gerar um atraso de tempo de aproximadamente 200 ms.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

68

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

End.
2000 2002

Mnemnico
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
(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)

End.
4000 4002

Mnemnico
MVI A, 99

Cdigo
3E 99

Comentrio
Carrega acumulador com valor 99

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

69

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

End.
2000 2003

Mnemnico
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
(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 (D) (C) + (H)

End.
4000 4003

Mnemnico
LXI H, 4050

Cdigo
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 Prof. Jos Wilson Lima Nerys

70

EXPERIMENTO 4
Objetivo: Familiarizao com as instrues lgicas do 8085 Material: Computador com o simulador ABACUS e kit didtico Roteiro: 1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois, execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e posies de memria envolvidas. Operao
(A) 0F h (B) EA h (C) 52 h (A) (A) (C) (H,L) 2040 h ((H,L)) FF h (A) (C) ((H,L)) (A) (A) 44 h (A) (A) 23 h (A) 33 h (An+1) (An) (A0) (A7) (CY) ( CY ) (A) - (B) (B) (B) (C)

End
2000

Mnemnico

Comentrio

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
(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)) (A) (A) 44 h (A) (A) 23 h (A) 33 h (An+1) (An) (A0) (A7) (CY) ( CY ) (A) - (B) (B) (B) (C)

End
4000

Mnemnico

Cdigo

Comentrio

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

71

EXPERIMENTO 5
Objetivo: Programao com o assembly do 8085 Material: Computador com o simulador ABACUS Roteiro: 1. O programa a seguir gera os mltiplos de 4, a partir de 4 at 20 h. Esses valores so armazenados na memria a partir do valor dado para HL. Insira os mnemnicos no ABACUS e execute o programa. Observe o resultado. Label Mnemnico Label Mnemnico
LXI SP, 2090 h LXI H, 2050 h MVI C,01 h MVI B,04 h MVI A,00 h PUSH B CALL produto MOV M,A CPI 20h JNC fim POP B INX H INR C JMP volta HLT ADD B DCR C JNZ subrotina RET
INCIO

A 00 h

volta:

fim: produto:

P1 A AA+1

2. O programa a seguir uma nova verso do programa anterior incluindo a subrotina para mostrar os mltiplos de 4 no display de dados e retirando as instrues para armazenamento na memria. Label Mnemnico Label Mnemnico
LXI SP, 2090 h MVI C,01 h MVI B,04 h MVI A,00 h PUSH B CALL produto PUSH PSW CALL MOSTRAA POP PSW CPI 50h JNC fim POP B INR C JMP volta HLT ADD B DCR C JNZ subrotina RET

volta:

fim: produto:

3. O programa a seguir uma nova verso dos programas anteriores, onde o nmero para o qual se deseja os mltiplos inserido atravs do teclado. Label Mnemnico Label Mnemnico
LXI SP, 2090 h MVI C,01 h CALL LETECLA MOV B,A MVI A,00 h PUSH B CALL produto PUSH PSW CALL MOSTRAA POP PSW CPI 50h JNC fim POP B INR C JMP volta HLT

volta:

fim:

produto:

ADD B DCR C JNZ subrotina RET

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

72

EXPERIMENTO 6
Objetivo: Programao com o assembly do 8085 Material: Computador com o simulador ABACUS e kit didtico Roteiro: 1. O programa a seguir gera e mostra no display uma seqncia crescente de 00 h a FF h, seguida de uma seqncia decrescente de FF h a 00 h, de forma ininterrupta. Insira os mnemnicos no ABACUS e execute o programa. Observe o resultado.
Label Mnemnico LXI SP,2090 h MVI A,00 h PUSH PSW CALL MOSTRAA POP PSW INR A CPI FF h JNZ cresce INCIO A 00 h

Label
decresce:

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

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

cresce:

A = 00h ?

2. O programa a seguir uma nova verso do programa anterior, mas com contagem em decimal que vai de 00 a 99 e volta para 00, de forma ininterrupta. Label Mnemnico Label Mnemnico
LXI SP, 2090 h MVI A,00 h PUSH PSW CALL MOSTRAA POP PSW ADI 01 h DAA CPI 99 h JNZ cresce decresce: PUSH PSW CALL MOSTRAA POP PSW ADI 99 h DAA CPI 00 h JNZ decresce JMP cresce HLT

cresce:

3. O programa a seguir uma adaptao do programa anterior (contagem decimal) para ser executado no kit didtico. Codifique o programa e insira-o no kit didtico. Label Mnemnico Cdigo Label Mnemnico Cdigo
LXI SP, 4090 h MVI A,00 h CALL APDIS PUSH PSW CALL DBYTE CALL DEL1 POP PSW ADI 01 h DAA CPI 99 h JNZ cresce decresce: CALL APDIS PUSH PSW CALL DBYTE CALL DEL1 POP PSW ADI 99 h DAA CPI 00 h JNZ decresce JMP cresce HLT

cresce:

4. (a) (b) (c) (d) (e)

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

73

EXPERIMENTO 7
Objetivo: Programao com o assembly do 8085 e uso de INTERRUPES Material: Computador com o simulador ABACUS e kit didtico 1. Execute os programas dados a seguir usando o simulador ABACUS e usando o mdulo didtico.

Programa 1: Usa subrotinas para gerar de forma ininterrupta uma sequncia crescente de 00 h a FF h no display de dados, seguida de uma seqncia decrescente (FF h a 00 h). Complete os cdigos.
ABACUS Mnemnico LXI SP,2040h MVI A,00h CALL crescente CALL decresc JMP repete PUSH PSW CALL MOSTRAA MVI D,01h CALL DELAY POP PSW CPI FF RZ INR A JMP crescente DCR A PUSH PSW CALL MOSTRAA MVI D,01h CALL DELAY POP PSW CPI 00 RZ JMP decresc KIT DIDTICO Mnemnico LXI SP,4200h MVI A,00h CALL crescente CALL descresc JMP repete PUSH PSW CALL APDIS CALL DBYTE CALL DEL1 POP PSW CPI FF RZ INR A JMP crescente DCR A PUSH PSW CALL APDIS CALL DBYTE CALL DEL1 POP PSW CPI 00 RZ JMP decresc

Label 2000 repete:

Cdigo 31 40 20 3E 00 CD ___ ___ CD ___ ___ C3 ___ ___ F5 CD 6E 03 16 01 CD F1 05 F1 FE FF C8 3C C3 ___ ___ 3D F5 CD 6E 03 16 01 CD F1 05 F1 FE 00 C8 C3 ___ ___

Label 4000 repete:

Cdigo 31 00 42 3E 00 CD ___ ___ CD ___ ___ C3 ___ ___ F5 CD 0B 07 CD A1 05 CD 70 07 F1 FE FF C8 3C C3 ___ ___ 3D F5 CD 0B 07 CD A1 05 CD 70 07 F1 FE 00 C8 C3 ___ ___

crescente:

crescente:

decresc:

decresc:

Interrupo TRAP RST 7.5 RST 6.5 RST 5.5

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

74 Programa 2: Adapte o programa 1 para que a contagem crescente seja chamada atravs da interrupo RST 7.5 e a contagem decrescente seja chamada pela interrupo RST 6.5. Desabilite a interrupo RST 5.5.
ABACUS Mnemnico LXI SP,2050h MVI A,09h SIM MVI A,00h EI JMP loop DI PUSH PSW CALL MOSTRAA MVI D,01h CALL DELAY POP PSW CPI FF RZ INR A JMP crescente DI DCR A PUSH PSW CALL MOSTRAA MVI D,01h CALL DELAY POP PSW CPI 00 RZ JMP decresc KIT DIDTICO Mnemnico LXI SP,4200h MVI A,09h SIM MVI A,00h EI JMP loop DI PUSH PSW CALL APDIS CALL DBYTE CALL DEL1 POP PSW CPI FF RZ INR A JMP crescente DI DCR A PUSH PSW CALL APDIS CALL DBYTE CALL DEL1 POP PSW CPI 00 RZ JMP decresc

Label 2000

loop:

Cdigo 31 50 20 3E 09 30 3E 00 FB C3 ___ ___ F3 F5 CD 6E 03 16 01 CD F1 05 F1 FE FF C8 3C C3 ___ ___ F3 3D F5 CD 6E 03 16 01 CD F1 05 F1 FE 00 C8 C3 ___ ___

Label 4000

loop:

Cdigo 31 00 42 3E 09 30 3E 00 FB C3 ___ ___ F3 F5 CD 0B 07 CD A1 05 CD 70 07 F1 FE FF C8 3C C3 ___ ___ F3 3D F5 CD 0B 07 CD A1 05 CD 70 07 F1 FE 00 C8 C3 ___ ___

crescente:

crescente:

decresc:

decresc:

20CB h: 20CE h:

JMP decresc JMP crescente

C3 ___ ___ C3 ___ ___

4BDA h: 4BD7 h:

JMP decresc JMP crescente

C3 ___ ___ C3 ___ ___

Perguntas: 1. 2. Por que h necessidade de desabilitar a interrupo RST 5.5? 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? Qual a finalidade da instruo RZ usada nas subrotinas?

3.

5.4

Referncias Bibliogrficas

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

75

6. INTERRUPOES E OPERAES DE ENTRADA E SADA


6.1 Instrues de Recomeo

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

INSTRUES DE RECOMEO Instruo RST 0 RST 1 RST 2 RST 3 RST 4 RST 5 RST 6 RST 7 Efeito 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. Interrupes do 8085 Efeito Cdigo de Operao CALL 0024h no tem CALL 002Ch no tem CALL 0034h no tem CALL 003Ch no tem

Instruo TRAP RST 5.5 RST 6.5 RST 7.5

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

Pino 6 9 8 7

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

76 Interrupo TRAP RST 7.5 RST 6.5 RST 5.5 INTR Prioridade 1 2 3 4 5 Posio do Vetor 0024 h 003C h 0034 h 002C h Nenhuma

Quando um pedido de interrupo feito, o microprocessador termina a execuo da instruo em curso para somente depois atender a interrupo pendente. A interrupo INTR, tambm presente na tabela de prioridades um canal que permite expandir a capacidade de interrupo. ento usado um CI extra para essa expanso, como ser visto numa seo posterior. Como j foi mencionado, as interrupes so acionadas por sinais externos nos pinos correpondentes. Para o caso do 8085 esses sinais de acionamento de interrupo podem ser nvel alto no pino (acionamento por nvel) ou transio do nvel baixo para o nvel alto (acionamento por borda, ou por transio). A figura a seguir ilustra cada uma delas. Ativada por Nvel e Borda Ativada apenas por Borda Ativada apenas por Nvel Ativada apenas por Nvel Ativada apenas por Nvel TRAP RST 7.5 RST 6.5 RST 5.5 INTR 8085
CALL 0024 h

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

6.3

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

TRAP D Flip-flop Q

Pino 6
TRAP RESET IN Pino 36 RECONHECIMENTO DE TRAP

CLK CLR

Fig. 6.2: Circuito da interrupo TRAP

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

I 7.5 D Q Flip-flop CLR

M 7.5

CALL 003C h

M 6.5

CALL 0034 h

I 5.5 Q
M 5.5

CALL 002C h

S Flip-flop R

IE

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

78 mascarar a interrupo RST 6.5 o sinal M6.5' deve estar em nvel alto. E, finalmente, se a interrupo que se deseja mascarar a RST 5.5, o sinal M5.5'deve ficar em nvel alto. SMBOLO
I7.5, I6.5, I5.5 IE M7.5, M6.5 e M5.5 RST 7.5, RST 6.5 e RST 5.5 TRAP EI DI MSE RESET IN \ QUALQUER RECONHECIMENTO DE INTERRUPO SIM RIM

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

79 Exemplo: O programa a seguir, a ser implementado no ABACUS, a cada interrupo RST 5.5, mostra uma contagem hexadecimal crescente de 00 h at FF h e d mais um passo e pra em 00 h. Rtulo/endereo Mnemnico LXI SP, 2090H MVI A, 00H PUSH PSW CALL MOSTRAA POP PSW EI JMP espera INR A PUSH PSW CALL MOSTRAA MVI D, 01H CALL DELAY POP PSW CPI 00 H JNZ cresce EI RET JMP cresce 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 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 Vai para o incio da subrotina "cresce"

espera: cresce:

20C8:

6.4

Setagem e Leitura da Mscara de Interrupo

A mscara de interrupo usada para que as interrupes sejam usadas de forma seletiva, onde as interrupes no desejadas sejam bloqueadas. A mscara de uma interrupo mascarvel s reconhecida aps a execuo do comando SIM (Set Interrupt Mask = Setar a Mscara de Interrupo). E antes da execuo deste comando alguns valores do circuito de interrupo (Fig. 6.3) devem ser carregados no acumulador de forma que a instruo SIM faz a transferncia desses valores para os pontos necessrios. Os valores no acumulador devem ser como mostrado a seguir: Acumulador SOD Serial Output Data - Dado da Sada Serial SOE Serial Outpu Enable Habilita Sada Serial R7.5 Zera flip-flop da RST 7.5 MSE Mask Set Enable - Habilita Setagem de Mscara M7.5' Seta mscara da RST 7.5 M6.5' Seta mscara da RST 6.5 M5.5' Seta mscara da RST 5.5 M5.5' 0

Exemplo: Desejando-se habilitar apenas a interrupo RST 5.5 e mascarar as demais, o contedo do acumulador antes da instruo SIM dado a seguir: SOD 0 SOE 0 0 R7.5 0 MSE 1 M7.5' 1 M6.5' 1

A:

Microprocessadores e Microcomputadores

Irrelevante

Prof. Jos Wilson Lima Nerys

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

Acumulador

SID Serial Input Data - Dado de Entrada Serial

I7.5 Interrupo RST 7.5 pendente

I6.5 Interrupo RST 6.5 pendente

I5.5 Interrupo RST 5.5 pendente

IE Habilita

M7.5 Mscara da interrupo RST 7.5

M6.5 Mscara da interrupo RST 6.5

M5.5 Mscara da interrupo RST 5.5

Exemplo: Aps a instruo RIM o contedo do acumulador ficou: SID 0 I7.5 1 I6.5 0 I5.5 0 IE 1 M7.5 1 M6.5 0 M5.5 0

A: Significado:

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

6.5

Ampliando a Capacidade de Interrupo


INTR Microprocessador INTA Dados

Controlador de Interrupo

Interrupt Enable Interrupo

8085 8259

8 pedidos de interrupo

Fig. 6.4: Controlador de interrupo

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

81

Fig. 6.5: Diagrama de blocos do controlador de interrupo 8259 O procedimento para uso de interrupes atravs do 8259 : 1. 2. 3. 4. 5. 6. 7. 8. 9. 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

6.6

Dispositivos de Entrada e Sada

Os dispositivos de Entrada e Sada (ou dispositivos de I/O) so necessrios para possibilitar a comunicao entre a CPU e o resto do sistema. Este captulo tem o objetivo de fornecer maiores informaes sobre o hardware que se associa CPU (microprocessador) em um microcomputador, assim como conhecimentos de alguns recursos que podem ser utilizados em interfaces de microcomputadores.

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

STATUS

Fig. 6.6: Entrada de dados programada

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

Fig. 6.7: Transferncia de dados por interrupo

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Exemplo de Transferncia por DMA:


HOLD Microprocessador 8085 Barramentos HLDA Controlador de DMA

MEMRIA

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

6.7

Exerccios Propostos

25. Explique como funciona uma interrupo no 8085. Explique habilitao e mscara de interrupo, interrupo vetorada, interrupo por nvel, interrupo por transio. Exemplifique escrevendo as linhas de programa para mascarar as interrupes RST 5.5 e RST 7.5. 26. Para que servem as instrues EI e DI? Descreva as instrues SIM e RIM. 27. Qual a finalidade do bit MSE? 28. Insira os bits adequados do acumulador para mascarar a interrupo RST 6.5 e deixar as demais livres. SOD A: 29. Faa a leitura do acumulador mostrado abaixo, aps uma instruo RIM. SID 0 I7.5 0 I6.5 1 I5.5 1 IE 1 M7.5 1 M6.5 1 M5.5 0 SOE R7.5 MSE M7.5' M6.5' M5.5'

A:

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

volta:

pula:

37. mostrado a seguir o que representa cada bit do acumulador quando se deseja mascarar interrupes. Escreva as instrues para mascarar as interrupes RST7.5 e RST6.5, em seguida, habilitar a RST5.5.
Acumulador bit 7 SOD bit 6 SOE bit 5 bit 4 R7.5 bit 3 MSE bit 2 M7.5 bit 1 M6.5 bit 0 M5.5

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

6.8

Referncias Bibliogrficas

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

85

7. ENTRADA E SADA SERIAL E PASTILHAS INTEGRADAS DE SUPORTE


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

7.1

Interface Serial no PC

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

espera

start

Par.

stop

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

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

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

Nvel Lgico 0 1

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

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

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)

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

88

7.2 7.2.1

Integrados de Suporte Memrias RAM e ROM

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

Fig. 7.1: Pastilhas de memria ROM e RAM


CI 8156 8355 Tipo de Memria e Capacidade RAM 256 bytes ROM 2 Kbytes Nmero de Portas de Entrada e Sada 3 2 Caractersticas 2048 bits organizados como 256 palavras de 8 bits cada Possui 16384 bits organizados como 2048 palavras de 8 bits cada

A Fig. 6.2 mostra um sistema mnimo baseado no 8085 e contendo uma pastilha de memria RAM (8156) e uma de memria ROM (8355).
A13 A10 A9 A8 8 bits: AD0 a AD7 ALE CLK OUT IO-M\ READY RESET IN\ RESET OUT RD\

8085

WR\

CE ALE PA

A10 A9 A8

CE1\ ALE IO-M\ RD\ RESET CLK READY

IO-M\
RD\ RESET

PB

PC

WR\

8156

PA

8355

PB

Fig. 7.2: Sistema mnimo baseado no microprocessador 8085

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

89 Pino A13 Pino usado para habilitar/desabilitar a RAM e a ROM. 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 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

0 0

0 0

Endereo Inicial da ROM 0 0 0 0 0 Endereo Final da ROM 1 1 1 1

0 0

0 0

0 2

0 2

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 7

1 F

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 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

1 4

1 4

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

0 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 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

1 4

1 4

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

0 0 1 F

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

90 A Terceira RAM 2114 do Kit didtico deve ser acessada a partir do primeiro endereo aps a segunda RAM, ou seja, endereo 4800 h.
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

1 4

1 4

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

0 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 2 RAM 2114 4800h 4BFFh Terceira RAM 2 RAM 2114 4C00h 4FFFh Quarta RAM

CS\

CS\

Fig. 7.4: Circuito lgico para conexo de 4 conjuntos de RAMs 2114 ao sistema mnimo A Quarta RAM 2114 acessada a partir do endereo 4C00h
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

1 4

1 4

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

0 0 1 F

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

91 Desejando-se acrescentar mais 4 conjuntos de RAMs, de forma a ter um sistema mnimo com 8 Kbytes de memria, precisa-se de mais um pino de seleo, que no caso o pino A12. A14 A10 A11 A12
2 RAM 2114 CS\ 4000h 43FFh RAM 1 2 RAM 2114 CS\ 4400h 47FFh RAM 2 2 RAM 2114 CS\ 4800h 4BFFh RAM 3 2 RAM 2114 4C00h 4FFFh RAM 4

ZONAS DE ENDEREO PARA A RAM 2114, A PARTIR DE 4000h ZONA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 BYTES 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024

CS\

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\ 5C00h 5FFFh RAM 8

A15

A14

A13

A12

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

AD2

AD1

AD0

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

92

O endereamento das portas da 8156 so dados na tabela a seguir: AD2 0 0 0 0 1 1 AD1 0 0 1 1 0 0 AD0 0 1 0 1 0 1 Seleo Registradores de comando e de status Porta A Porta B Porta C 8 bits menos significativos do temporizador 2 bits de modo do temporizador e 6 bits superiores do temporizador

As duas portas de Entrada e Sada do 8355 so: Porta A (8 bits) e Porta B (8 bits), que so numeradas respectivamente como 00h e 01h no sistema mnimo da Fig. 7.2. O endereamento dado na tabela a seguir: AD1 0 0 1 1 AD0 0 1 0 1 Seleo Porta A Porta B Registrador de Direo de Dados da Porta A (DDR A) Registrador de Direo de Dados da Porta A (DDR A) Nmero da Porta 00h 01h 02h 03h

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

Timer IN

Timer OUT

8156
CLK

Fig. 7.6: Temporizador do CI 8156

Comando

D7

D6

D5 Habilita;o de interrupo B

D4 Habilitao de interrupo A

D3

D2

D1

D0

Temporizador

Porta 20h - Registro de comando para as portas A, B e C do 8156 e para o temporizador D7 D6 D5 D4 D3 D2 D1 Temp Temp Int. B Int. A C C B

D0 A

Porta 24h - Byte menos significativo do Temporizador T7 T6 T5 T4

T3

T2

T1

T0

Porta 25h - Byte mais significativo do Temporizador e modo do temporizador M2 M1 T13 T12 T11 T10 T9 T8

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

Porta A

Porta C

Porta B

93

Comear contagem

Contagem final

Contagem final

Contagem final

Contagem final

Modo 00 Modo 01 Modo 10 Modo 11

M2 0 0 1 1

M1 0 1 0 1

Onda de sada no pino Timer OUT Onda quadrada simples (um ciclo) Onda quadrada contnua Pulso simples (nico) Pulso contnuo

D7 0 0 1 1

D6 0 1 0 1

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

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

3MHz = 3000 = 0BB8 h 1kHz

Porta 24h - LSB: B8h 1

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

Onda quadrada contnua Porta 20h - Registro de comando para as portas A, B e C do 8156 e para o temporizador 1 1 0 0 1 1 1 Int. A e B des. Comear contagem do temporizador Instrues MVI A,B8h OUT 24h MVI A,4Bh OUT 25h MVI A,Ceh OUT 20h Comentrio Onda quadrada contnua de 1kHz C sada

B sada A Ent.

Comea contagem e dasabilita interrupes de A e B

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

94

7.2.2

Decodificador 74LS138

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

C 0 0 0

B 0 0 1 1 0 0 1 1

A 0 1 0 1 0 1 0 1

Sada Selecionada Yo Y1 Y2 Y3 Y4 Y5 Y6 Y7

74LS138

0 1 1 1 1

Fig. 7.7: Decodificador 74LS138 e tabela verdade

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

Fig. 7.8: Diagrama de blocos do decodificador 74LS138

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

A11 A14 A12 A10


2 RAM 2114

CS \

4000h 43FFh RAM 1 2 RAM 2114

CS\ 4400h 47FFh RAM 2 2 RAM 2114 4800h 4BFFh RAM 3 2 RAM 2114 4C00h4FFFh RAM 4 2 RAM 2114 CS\ 5000h 50FFh RAM 5 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 2 RAM 2114 5800h 5BFFh RAM 7 2 RAM 2114 5C00h 5FFFh RAM 8

CS\

CS\

CS\

CS\

CS\

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

7.3
1.

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

96 (b) Qual a finalidade dos pinos CE, WR e IO/M de uma memria RAM? (c) Quantas linhas de endereo so necessrias para a ROM e para a RAM? (d) Conceitue ROM, EPROM, RAM esttica e RAM dinmica 2. Gerar um pulso contnuo na sada do temporizador da pastilha 8156, em uma freqncia de 1 kHz, sabendo que a freqncia de clock de 1 MHz. D uma sugesto de como o temporizador pode ser usado para a gerao de sinal PWM (Modulao de Largura de Pulso). 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 ,

3.

Y1 , Y2 e Y3 ). O habilitador da memria RAM o pino CE\. Os habilitadores do CI 74139 so G1, G2 e G3 , como no caso do CI 74138. Inclua as linhas de endereos / dados.
5. Faa um programa que leia um byte da porta serial e o mostre no display. A cada interrupo RST 7.5 o programa dever ler outro byte da porta serial e mostr-lo no display. 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. 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. A RAM 2114 de 1 K, mas possui apenas 4 bits cada uma. Por isso so usadas de duas em duas de modo a formar 1 byte para cada endereo . Deseja-se associar 4 grupos de RAMs 2114 (ver figura a seguir), de modo a formar uma memria RAM de 4 Kbytes. Pede-se: (a) Quais so as linhas de endereo para a operao das RAMs 2114? (b) Qual a faixa de endereos (endereos contnuos) de cada grupo de RAMs? (c) Use portas lgicas para desenhar o circuito de habilitao dos grupos de RAMs a partir do endereo 1000h; (d) Use o decodificador 74139 (figura a seguir) para a habilitao dos grupos de RAMs a partir do endereo 1000h. Os pinos A e B so usados para selecionar a sada e o pino G1 usado para habilitar a pastilha.
A B 74139 Y0 \ Y1 \ Y2 \ 2 RAM 2114 2 RAM 2114 2 RAM 2114 2 RAM 2114 G1 Y3 \

6.

7.

8.

Linhas de endereo:________________

CS\

CS\

CS\

CS\

Pinos de habilitao

A 0 0 1 1

B 0 1 0 1

Y Y0\ Y1\ Y2\ Y3\

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

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

7.4

Referncias Bibliogrficas

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

98

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

Sinal Analgico

ADC

Sinal Digital

Sistema Mnimo com 8085

Sinal Digital

DAC

Sinal Analgico

Fig. 8.1: Processamento de sinal analgico pelo Microprocessador

8.1

Conversor Digital-Analgico

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

Fig. 8.2: Circuito Bsico de um Conversor Analgico-Digital Estas chaves podem ser substitudas por transistores que trabalharo na regio de corte quando D = 0, na regio de saturao quando D = 1. Correntes nas resistncias quando as chaves D3, D2, D1 e D0 esto ligadas:

I3 =

VREF R

I2 =

VREF 2R

I1 =

VREF 4R

I0 =

VREF 8R

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

I=

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

99 Tabela de valores para o conversor de 4 bits D3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 D2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Corrente de sada (mA) 0 0.125 0.250 0.375 0.500 0.625 0.750 0.875 1.000 1.125 1.250 1.375 1.500 1.625 1.750 1.875 Frao do Mximo 0 1/15 2/15 3/15 4/15 5/15 6/15 7/15 8/15 9/15 10/15 11/15 12/15 13/15 14/15 15/15

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

mx

incremento 1 LSB

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

1 2 1
n

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

1 15

Resoluo Percentual = Resoluo x 100% No caso de 4 bits Resoluo Percentual = 6.67%

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

100 Resoluo do DA versus Nmero de bits Nmero de bits Resoluo Resoluo Percentual (%) 4 1/15 6.67 8 1/255 0.392 12 1/4095 0.0244 16 1/65535 0.000381 2. Preciso Absoluta: Refere-se a quo prxima cada corrente de sada est de seu valor ideal. A preciso depende da tolerncia dos resistores, do descasamento dos transistores e da tenso de referncia. 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. 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. 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.

3.

4.

5.

Fig. 8.4: Conversor Digital-Analgico em escada

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

8.2

Conversor Analgico-Digital

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

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

Fig. 8.7: Conversor AD por aproximao sucessiva

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

8.3
1.

Exerccios Propostos
Explique de forma resumida o princpio de operao de um conversor Analgico/Digital (conversor AD) com aproximao sucessiva. Explique a caracterstica monotonicidade de um conversor digital-analgico (conversor DA). Diferencie preciso absoluta de preciso relativa de um conversor DA. Como se calcula a resoluo de um conversor DA? Qual a resoluo de um conversor DA de 12 bits? 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? 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. 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.

2. 3. 4. 5.

6.

7.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

8.4

Referncias Bibliogrficas

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

104

9. MICROCONTROLADORES 8086/8088
9.1 Introduo

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

105

Caractersticas dos Microprocessadores 8085, 8086 e 8088 Caracterstica Barramento de endereo Capacidade de endereamento de memria Microprocessador 8085 16 bits 65.536 ( 64 kB ) Barramento de dados 8 bits Microprocessador 8088 20 bits 1.048.576 ( 1 MB ) Interno: 16 bits Externo: 8 bits Manipulao de STRINGS Registradores Internos Uso de segmentao para endereamento Aritmtica Decimal completa Etapas de Busca e Execuo NO 8 bits e 16 bits NO SIM 16 bits SIM Microprocessador 8086 20 bits 1.048.576 ( 1 MB ) Interno: 16 bits Externo: 16 bits SIM 16 bits SIM

NO Em sequncia:

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

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

Busca Executa

Registradores dos microprocessadores 8085, 8086 e 8088 Registradores do 8085 A H B D SP L C E Apontador de pilha Acumulador Apontador de dados AH BH CH DH SP BP SI DI PC Contador de Programa IP CS DS SS ES
FLAGS Registrador de Flags

Registradores do 8088 / 8086 AL (A) AX Acumulador Primrio BL CL DL BX Acumulador e Registrador Base CX Acumulador e Contador DX Acumulador e Endereador de I/O Apontador de pilha Apontador base usado na pilha ndice da Fonte usado para indexao ndice de Destino usado para indexao Ponteiro de Instruo Segmento de Cdigo Segmento de Dados Segmento de Pilha Segmento Extra Registrador de Flags Registradores de segmento. So usados para a formao do endereo absoluto.

FLAGS

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

106

9.2

Diagrama de Blocos do 8088

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

A BIU tem apenas funes de hardware: controla o acesso ao barramento (linhas de endereamento, linhas de dados e sinais de controle). A BIU constituda de: Lgica de interface com o barramento; Registradores de segmento; Lgica para endereamento de memria (somador); Fila de instrues (4 bytes para o 8088 e 6 bytes para o 8086).

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

107

Interface com Memria

Barramento B Unidade de Interfaceamento com Barramento (BIU)


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

Sistema de Controle da Unidade de Execuo

Barramento A
AH AL BH BL CH CL DH DL Stack Pointer Base Pointer Source Index Destination Index AX BX CX DX SP BP SI DI

Unidade de Execuo (EU)


ULA

FLAGS

Diagrama de blocos do 8088/8086

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

108

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

Endereo Fsico (ou absoluto)

XXXX0
Registrador de Segmento (16 bits) 15 0 15

0YYYY

Registrador de Offset (16 bits) 0 Stack Pointer - SP Base Pointer - BP Source Index - SI Destination Index - DI

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

Memria

Offset

Byte Endereado

Segmento

16

Incio do Segmento

Representao do endereo: SEGMENTO:OFFSET

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

9.3

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

Os Registradores de Dados so tambm chamados Registradores de Propsito Geral. So 4 registradores de 16 bits de uso geral, normalmente utilizados pelo conjunto de instrues para realizar operaes lgicas e aritmticas. Podem tambm ser usados como registradores de 8 bits para instrues envolvendo 1 byte. 15
AX BX CX DX AH BH CH DH

Registradores de Dados 8 7 0
AL BL CL DL Accumulator Base Counter Data

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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

110

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

Registradores
AX AL BX CX CL DX SP SI DI

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)

9.3.3

Registradores de Segmento Registradores de Segmento 15


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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

111 BX usado como reg. pointer DS CS, SS, ES endereo efetivo

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

9.3.4

Apontador de Instrues

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

3.5 - O Registrador de Flags um registrador de 16 bits mas apenas 9 bits so usados. Seis deles so bits de status que refletem os resultados de operaes aritmticas e lgicas. Os outros trs so bits de controle. O conjunto de instrues do 8088 possui instrues especficas setar e ressetar seus flags (que ser visto mais adiante). Registrador de Flags = Registrador de Estado do Programa (PSW) 15 14 13 12 11 O 10 D 9 I 8 T 7 S 6 Z 5 4 A 3 2 P 1 0 C

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

112 Z=0 se o resultado da operao for diferente de zero

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

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

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

9.4

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

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

Vcc

A15

A16/ S3

A17/ S4

A18/ S5

A19/ S6

Vcc

MN/ MX

RD

RQ/ GT0

RQ/ GT1

lock

S2

S1

S0

QS0

QS1

Test

RDY

RST

40

39

38

37

36

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

10

11

12

13

14

15

16

17

18

19

20

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

113
Gnd A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND

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

S3 0 0 1 1

S4 0 1 0 1

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

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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

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

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

S2
0 0 0 0 1 1 1 1

S1
0 0 1 1 0 0 1 1

S0
0 1 0 1 0 1 0 1

Tipo de ciclo no BUS

Reconhecimento de interrupo ( INTA ) Leitura I/O ( IOR ) Escrita I/O ( IOW ) Halt Busca de instruo

MemR ) Escrita memria ( MemW )


Leitura memria ( Passivo

9.5

Ciclos de Barramento do 8086

O 8086 COMUNICA-SE COM AMBIENTE EXTERNO ATRAVS DE UM SISTEMA DE BARRAMENTOS. ASSIM, EXISTEM CICLOS DE BARRAMENTO PARA BUSCAR (FETCH) INSTRUES E PARA TRANSFERIR DADOS (ESCREVER OU LER). AS FIGURAS A SEGUIR (ZELENOVSKY, PG. 22) MOSTRAM OS CICLOS DE LEITURA E ESCRITA, RESPECTIVAMENTE.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

115

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

116

9.6

Endereamento de Memria

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

117 FFFFFH Offset CS 16

64 kB

Offset DS 16

64 kB

Offset ES 16

64 kB

Offset SS 16

64 kB

00000H MULTIPLICIDADE DE ENDEREOS Um mesmo endereo pode ser acessado usando diferentes registradores de segmentos e diferentes registradores de offset FFFFFH

64 kB Endereo Fsico CS 16 64 kB

SS

16

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

118

Como o segmento multiplicado por 16 na formao do endereo O espao mnimo entre dois segmentos consecutivos 16 bytes No intervalo de 64 kBytes h 6353616 = 4096 possibilidades diferentes de enderear a mesma posio fsica de memria.

9.7

Linguagem de Programao ASSEMBLY do 8086


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

Tipos da linguagem assembly ASM-86: BYTE PTR referencia uma varivel de 1 byte WORD PTR referencia uma varivel de 1 word DWORD PTR referencia uma varivel de 2 words NEAR PTR referencia o endereo de destino de uma instruo de desvio do tipo near FAR PTR referencia o endereo de destino de uma instruo de desvio do tipo far NUMBER constante de 16 bits Obs.: near altera somente IP (intra segmento) far altera IP e CS (inter segmento)

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

FORMATO DAS INSTRUES DO 8086 Instrues compactas otimizao do uso da memria e da velocidade de leitura das instrues codificao mais complexa do que a do 8085 instrues com comprimento de 1 a 6 bytes instrues no precisam ocupar exatamente 1 byte bits restantes podem ser usados Formato das instrues de transferncia de dados: 7 opcode 2 1 s 0 w 7 postbyte Ou 7 6 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 0 7 data 0 7 data if sw=01 0

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

119 opcode cdigo da operao w se w = 0 instruo manipula byte; se w = 1 instruo manipula word postbyte: 7 mod 6 5 4 reg 3 2 1 r/m 0

Se mod = 1 1 o operando da instruo um registrador, que identificado em r/m Se a instruo envolver dois registradores o campo reg identifica o segundo registrador.

9.8

Modos de Endereamento e Endereos de Memria Efetivo


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

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

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

AX 1000H DX CX AH [1000H] AL [SI]; AH [SI+1] AL [SI+6]; AH [SI+7] AL [BP+2]; AH [BP+3] 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

MOV AX, [SI+6] MOV AX, [BP+2] MOV AX, [BX+SI] MOV AX, [BX+SI+5] MOVSB

Data Stack Data Stack

DS SS DS SS

Extra, Dado ES, DS

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

ENDEREAMENTO IMEDIATO Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys

120

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

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

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

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

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

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

121

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

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

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

9.9
9.9.1

Interrupes do 8086
Estrutura de interrupo do 8086:

Enquanto o 8085 possui apenas 5 canais de interrupo, o 8086 capaz de tratar de 256 interrupes diferentes, numeradas de 00h a FFh (ou 0 a 255 decimal). Ao contrrio do 8085, a localizao de cada interrupo no vem pr-definida no microprocessador; existe uma tabela, mostrada a seguir, com os vetores de interrupo, onde o endereo fsico de cada interrupo colocado. Nmero da Interrup. 0 Endereo do vetor Endereo do tratador de interrupo da interrupo 0000h:0000h IP low h 0000h:0001h IP high h 0000h:0002h CS low h 0000h:0003h CS high h 0000h:0004h IP low h 0000h:0005h IP high h 0000h:0006h CS low h 0000h:0007h CS high h 0000h:0008h IP low h 0000h:0009h IP high h 0000h:000Ah CS low h 0000h:000Bh CS high h Endereo efetivo do Endereo do tratador vetor de interrupo da interrupo 0000h:0000h CS:IP

0000h:0004h

CS:IP

0000h:0008h

CS:IP

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

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

0000h:4i

CS:IP

255

0000h:03FCh

CS:IP

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

122 0000h:03FDh 0000h:03FEh 0000h:03FFh IP high h CS low h CS high h

Obs.: O endereo efetivo da interrupo INT n : 0000h:4n 9.9.2 Interrupes Pr-definidas, reservada ou excees

O 8086 possui trs tipos de interrupo: Interrupes Pr-definidas, reservadas ou excees, Interrupes por Hardware e Interrupes por Software. As interrupes de 0 a 31 (ou 00h a 1Fh) so reservadas. Elas tm finalidades especficas para o 8086. Dentre as reservadas 5 interrupes j so pr-definidas no 8086: Nmero da Interrup. 00 H 01 H 02 H 03 H 04 H Endereo do vetor 0000h:0000h 0000h:0004h 0000h:0008h 0000h:000Ch 0000h:0010h 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.

05 H 1F H

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

9.9.3

Interrupes por Hardware

So interrupes solicitadas atravs do pino INTR (pino 18). Nesse pino conectado um controlador de interrupo que amplia para 8 os pedidos de interrupo. So interrupes mascarveis atravs do bit IF do registrador de flags. A seqncia de atendimento de uma interrupo por hardware : 8086 envia primeiro pulso *INTA para perifrico, aps receber pedido de interrupo. Aps esse sinal reconhecimento de pedido de interrupo o perifrico prepara-se para enviar o nmero da interrupo 8086 envia segundo pulso *INTA para perifrico, tendo como resposta do perifrico o nmero da interrupo colocada no barramento de dados 8086 salva PSW na pilha Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita interrupes por INTR) Salva CS (segmento) e IP (offset) na pilha Carrega novo IP a partir do endereo 4*nn Carrega novo CS a partir do endereo 4*nn + 2

9.9.4

Interrupes por Software

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

123 Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita interrupes por INTR) Salva CS (segmento) e IP (offset) na pilha Carrega novo IP a partir do endereo 4*nn Carrega novo CS a partir do endereo 4*nn + 2 Embora existam 256 interrupes por software, cada uma delas pode ter at 256 sub-funes diferentes, ou seja, atravs das interrupes por software, pode-se executar 256*256 = 65.536 funes diferentes. Normalmente o registrador AH usado para passar para a interrupo qual a funo a ser executada. A tabela a seguir exemplifica algumas dessas funes.
Interrupo INT 10 H Finalidade macro Servios de vdeo ( uma funo do BIOS) Subfuno 00 H 01 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 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 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 L caractere da entrada padro, com eco. Retorna o cdigo ASCII do caractere lido Escreve caractere na sada padro Contm o cdigo ASCII do caractere L caractere da entrada padro, sem eco Retorna o cdigo ASCII do caractere lido Escreve na sada padro textos terminados em $ Endereo de incio do texto Seta vetor de interrupo Nmero do vetor de interrupo a ser modificado Novo valor para o vetor a ser modificado Encerra programa e deixa residente (TSR) Cdigo de retorno Nmero de pargrafos que devem ficar residentes Encerra programa Cdigo de retorno

02 H

INT 21 H

Servios Gerais ( uma funo do DOS)

01 H 02 H 08 H 09 H 25 H

31 H

4C H

9.10 Conjunto de Instrues do 8088/86


H mais de 3000 opcodes distintos se considerados os vrios modos de endereamento. Abaixo esto listadas algumas instrues relativas a cada grupo funcional. 9.10.1 Instrues de Transferncia de Dados movimentao de dados entre dois registradores, entre um registrador e posio de memria, entre registradores e portas [I/O]. FORMATO: destino, fonte

Formas genricas possveis: MOV REG, memria MOV memria, REG MOV REG, REG MOV memria, imediato MOV REG, immediate Copia contedo da posio de memria para o Registrador indicado Copia contedo do registrador indicado para a posio de memria Copia contedo de um registrador para outro Carrega posio de memria com valor indicado Carrega registrador com valor indicado Prof. Jos Wilson Lima Nerys

Microprocessadores e Microcomputadores

124

Formas genricas possveis para os registradores de segmento: MOV SREG, memria MOV memria, SREG MOV SREG, REG MOV REG, SREG Copia contedo da posio de memria para o Registrador de segmento indicado Copia contedo do registrador de segmento indicado para a posio de memria Copia contedo de um registrador comum para um de segmento Copia contedo de um registrador de segmento para um comum

Podem ser movimentados byte ou word, sendo que os registradores Ponteiros (BP e SP), ndices (SI e DI) e de Segmento (CS, DS, SS, ES) apenas podem ser acessados como word (16 bits). DEFINIO DE POSIO DE MEMRIA: Ao escrever programas conveniente dar nomes a posies de memria: para isto utiliza-se pseudo-instrues. MEMBY MEMBY MEMWO MEMWO DB DB DW DW ? 3A H ; varivel MEMBY (do tipo "byte") com valor indefinido ; varivel MEMBY com valor definido e igual a 3A H

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

Exemplos de mnemnicos com instrues de transferncia Mnemnico Descrio MOV AX, 0100 H MOV DL, 23 H MOV CL,char MOV BP, A8 MOV DS, AX MOX AX, BX MOV AL, BL MOV AX, CS MOV AX, [BX] MOV [BP], CL MOV AH, [SI] MOV AX, [1000 H] MOV CL, MEMBY MOV CX, MEMWO MOV CX, [MEMWO] MOV BX, [BX+2] MOV [BP+2], BH MOV AX, [SI-6] MOV AX, [BX+SI] MOV BX, [BP+SI+3] MOV BX, MEMBY[SI] Observaes.: (a) Um registrador de segmento no pode ser carregado usando o modo imediato. Exemplos incorretos: MOV CS, 1000, MOV DS, 3A00. (b) Somente o registrador BX e os ponteiros e ndices podem referenciar memria. Exemplos incorretos: MOV AX, [DX], MOV CX, [AX] (c) Destino e fonte no podem especificar posies de memria ao mesmo tempo. Exemplo incorreto: MOV [BX], [SI] Instrues Especiais de Transferncia de Dados: Microprocessadores e Microcomputadores Prof. Jos Wilson Lima Nerys Carrega registrador de 16 bits AX com valor 0100 h Carrega registrador de 8 bits DL com valor 23 h Carrega registrador de 8 bits com cdigo ASCII do caractere Carrega registrador de 16 bits BP com valor 00A8 h Registrador de segmento DS carregado com contedo de AX Carrega AX com contedo de BX Carrega registrador de 8 bits AL com contedo de BL Carrega registrador AX com contedo do segmento CS Carrega AX com contedo do endereo de offset BX Carrega posio de offset BP com valor contido em CL Carrega AH com valor da posio cujo offset SI Faz AL [1000 H] e AH [1001 H] Carrega CL com posio da varivel de 1 byte MEMBY Carrega CX com posio da varivel de 1 word MEMWO Carrega CX com posio da varivel de 1 word MEMWO Carrega BX com contedo da posio BX+2 e BX+2+1 Carrega posio BP+2 com contedo do registrador BH AL [SI 6] e AH [SI 5] AL [BX + SI] e AH [BX + SI + 1] BL [BP + SI + 3] e BH [BP + SI + 3 + 1] O mesmo que MOV BX, [SI+MEMBY]

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

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

Exemplo 1: O programa a seguir demonstra o uso de instrues de transferncia de dados. O caractere A escrito diretamente na memria de vdeo. Mnemnico #MAKE_COM# ORG 100h MOV AX, 0B800h MOV DS, AX MOV CL, 'A' MOV CH, 01011111b MOV BX, 15Eh MOV [BX], CX HLT Descrio Diretiva para o compilador gerar um arquivo .com Diretiva que indica o endereo inicial do programa: 0100 H Carrega registrador AX com valor B800 H Copia valor de AX para DS, definindo segmento de dados Carrega CL com o cdigo ASCII do caractere A, isto , 41 H Carrega CH com o valor binrio 01011111 b = 5F H Carrega registrador BX com valor 015E H Copia contedo de CX na posio DS:BX, ou seja, B800:015E Pra programa

Exemplo 2: Programa que demonstra o uso de variveis Mnemnico #MAKE_COM# ORG 100h Descrio Diretiva para o compilador gerar um arquivo .com Diretiva que indica o endereo inicial do programa: 0100 H Prof. Jos Wilson Lima Nerys

Microprocessadores e Microcomputadores

126 MOV AL, var1 MOV BX, var2 RET var1 DB 7 var2 DW 1234h Carrega registrador de 8 bits AL com valor 7 (varivel var1) Carrega registrador BX de 16 bits com valor 1234 H (var2) Pra o programa Define varivel var1 como byte de valor 7 decimal Define varivel var2 como Word de valor 1234 hexadecimal

9.10.2

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

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

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

LODS BYTE PTR AL, ES:[DI] LODS WORD PTR AX, ES:[DI]

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

Instrues para movimentao de strings Mnemnico Descrio STOSB Armazena o byte em AL no endereo padro ES:DI. ES:[DI] AL. Se D = 0 incrementa DI; se D = 1 decrementa DI STOSW Armazena o word em AX no endereo padro ES:DI. ES:[DI] AL ; ES:[DI + 1] AH. Se D = 0 DI DI + 2; Se D = 1 DI DI -2 LODSB LODSW MOVSB Copia em AL o byte localizado no endereo padro DS:SI. AL DS:[SI]. Se DF=0 incrementa SI; Se DF=1 decrementa SI Copia em AX o word localizado no endereo padro DS:SI. AL DS:[SI]; AH DS:[SI+1]. Se DF=0 SI SI+2; Se DF=1 SI SI -2 Copia bytes da regio de origem padro (DS:SI) para a regio de destino padro (ES:DI). Sendo a origem e o destino as regies padres (ao contrrio da instruo MOVS), a instruo no precisa de argumentos. ES:[DI] DS:[SI]. Se D = 0, incrementa SI e DI; Se D = 1, decrementa SI e DI. Copia words da regio de origem padro (DS:SI) para a regio de destino padro (ES:DI). Prof. Jos Wilson Lima Nerys

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 Compara os bytes das posies DS:SI e ES:DI e atualiza Flags. DS:[SI] ES:[DI]. Compara os words das posies DS:SI e ES:DI e atualiza Flags. DS:[SI+1:SI] ES:[DI+1:DI].

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

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 Variveis A varivel a2 ter 5 valores zero, conforme declarado em 5 DUP(0).

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

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

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

EXEMPLO 3: Copiar um bloco de memria de 1000 bytes do endereo fsico A1000H para o endereo fsico E1000 H. Mnemnico MOV AX, 0A000 H MOV DS, AX MOV SI, 1000 H MOV AX, 0E000 H MOV ES, AX MOV SI,1000 H MOV DI,1000 H CLD MOV CX, 03E7 H REP MOVSB Descrio AX = A000 H valor que ser passado para registrador de segmento DS Segmento de dados DS = AX = A000 h SI = 1000h DS:SI = E0000 + 00000 = A1000 h AX = E000 h valor que ser passado para registrador de segmento ES Segmento especial ES = AX = E000 h Registrador de offset SI = 1000 h DS:SI = A1000 H Registrador de offset DI = 1000 h ES:DI = E1000 H clear direction flag (resseta flag "direo": modo auto-incremento) Faz CX = 03E7 h sero armazenado 1000 bytes a partir de E0000 h Repete instruo 1000 vezes sero copiados 1000 bytes Prof. Jos Wilson Lima Nerys

Microprocessadores e Microcomputadores

128

9.10.3

Instrues Lgicas referem-se a funes de lgica booleanas; cada instruo realizada bit a bit; H tambm instrues de rotao e deslocamento; H 5 instrues booleanas: NOT, AND, OR, XOR, TEST. 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

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 TEST AX, 3000

Funo XOR entre CL e DH Funo XOR entre BX e o Word apontado por SI Semelhante ao AND, apenas no altera os operandos. utilizado quando se deseja testar vrios bits: se o teste do 1o bit fracassa, pode-se testar o 2o bit.

EXEMPLO: Determine o estado do registrador AL e dos flags aps as sequncia de instrues: MOV AL, 6D MOV BH, 40 AND AL, BL Resultado das Flags: C=0 Z=1 S=0 O=0 P=1 A=0 I=1 D=0 no houve transporte do bit 7 para o 8 na operao de 8 bits executada o resultado da operao zero o bit mais significativo aps a operao zero (nmero positivo) no houve overflow na operao. h um nmero par de bits 1 nos 8 primeiros bits, aps a operao (nmero de 1s = 0) no houve transporte do bit 3 para o bit interrupo desabilitada os registradores SI e DI sero incrementados nas operaes com string Instrues de Deslocamento e de Rotao SHL AL, 1 SHL BX, CL Deslocar esquerda uma vez. Formato: SHL destino, contador Deslocar a esquerda CL vezes.

SHR AX, 1 SHR BL, CL

Deslocar direita uma vez. Deslocar direita CL vezes

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

129 ROL AL, 1 ROR CX, CL Rodar esquerda. Rodar direita CL vezes.

RCL AL, 1

rodar a esquerda atravs do CY

RCR DL, CL 9.10.4

Rodar direita atravs do CY CL vezes.

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 Descrio soma de registradores

soma de registradores com carry subtrao de registradores subtrao de cte imediata subtrao de registradores com borrow subtrao de cte imediata com borrow ajuste decimal para adio ajuste decimal para subtrao ajuste ASCII para adio ajuste ASCII para subtrao incremento de registrador incremento de byte apontado por SI decremento de registrador complemento de 2 de registrador comparao entre dois registradores, BL e BH comparao entre word apontado por BX e CX multiplicao de byte: AX AL * BL multiplicao de word: DX:AX AX * CX multiplicao de nmero com sinal diviso de byte: AX AL / BL (AL: quociente; AH: resto) diviso de word: DX:AX AX / CX (AX: quoc.; DX: resto) diviso de nmero com sinal

9.10.5

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

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

PUSH CX PUSH [DI+2] POP DS PUSHF POPF

PUSH e POP S pode ser aplicado a registrador de 16 bits salva registrador CX na pilha salva posio de memria apontada por DI+2 e DI+3 Recupera DS da pilha Salva registrador de Flags na pilha Recupera registrador de Flags da pilha CALL e RETURN chamada de sub-rotina "DELAY" chamada de sub-rotina iniciada pelo contedo de memria apontado por BX: IP [BX+1:BX] chamada de sub-rotina iniciada pelo BX: IP BX retorno de sub-rotina retorno de rotina de interrupo (restaura CS e IP) Interrupes por Software Guarda na pilha o endereo de retorno (CS:IP), antes de chamar a interrupo nn.

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)

9.11 Caractersticas de I/O do PC-XT 9.11.1 Diviso dos Endereos dos Dispositivos de I/O do PC-XT
Apesar de possuir 20 bits de endereo, a arquitetura do 8088 suporta apenas 64KB (65.536) endereos de dispositivos de I/O pois os bits de endereamento A16 a A19 no so utilizados. A configurao usada no PC tambm no usa toda esta capacidade. Somente os 10 bits menos significativos do barramento de endereos so utilizados. Como 210 = 1024, este o nmero de endereos de I/O disponveis no PC (0000h a 03FFh). A figura abaixo mostra a diviso de endereos no PC.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

131

O bit A9 tem um significado especial no projeto do PC: quando est inativo (0), os dados no podem ser recebidos (pelo micro) vindo dos slots. So habilitados apenas dados vindos de dispositivos de I/O instalados na prpria placa me (mother board, main board ou system board). Quando ativo (1), so habilitados a recepo apenas de dados provenientes dos slots. Tem-se assim 512 portas para uso interno do PC e 512 portas para uso de dispositivos conectados nos slots (ver figura abaixo).

Esta diviso aplica-se apenas instruo IN (instruo de entrada de I/O). Para a instruo OUT (instruo de sada de I/O), todos os 1024 endereos podem ser utilizados nos slots. Em sintonia com a restrio da instruo IN, o PC usa a primeira metade dos endereos para os dispositivos da placa principal (placa me) e a metade restante para os dispositivos dos slots (ver figura abaixo). Endereo 0000 h 01FF h 0200 h 03FF h 0400 h FFFF h Quantidade de Endereos 512 512 64.512 Funo Dispositivos da Placa Principal Dispositivos dos Slots No usado no projeto do PC

A seguir sero apresentados os mapas de endereos de I/O do PC-XT. Deve-se observar que novas placas (por exemplo, placas de som ou de rede) podero decodificar endereos que atualmente esto livres.

9.11.2 Endereos dos Dispositivos da Placa Principal (Placa Me)


Dispositivos de I/O residentes na placa principal fazem o servio de interrupo, transferncia de dados (DMA), contagem, etc. Na figura abaixo pode ser visto o mapa de endereamento de I/O para a placa principal. Endereo 0000 h 001F h 0020 h 003F h 0040 h 005F h 0060 h 007F h 0080 h 009F h 00A0 h 00BF h 00C0 h Quantidade de Endereos 32 32 32 32 32 32 320 Funo Chip de DMA (8239) Chip de interrupo (8259) Chip temporizador (8253) Chip PPI (8255) Registrador de pginas DMA Bit de interrupo NMI No codificado ou usado

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

132 01FF h

9.11.3 Endereos dos Dispositivos dos Slots


O conhecimento destes endereos torna-se a base de qualquer projeto de interface, j que representam o ponto de entrada e sada de dados (ver figura na pgina 16). Nem todos os 512 endereos disponveis no slots podem ser utilizados para interfaceamento pois vrios endereos so previamente reservados para dispositivos comuns ao sistema. Os dispositivos de I/O que normalmente so conectados nos slots so joysticks, portas paralelas (impressoras), portas seriais (RS-232), adaptador grfico (CGA, MDA, EGA, VGA), acionador de disquetes e de disco rgido. Para evitar problemas de incompatibilidade de placa de interface entre diferentes micros deve-se evitar a duplicao desses endereos. O modo mais simples de decodificar um endereo para uma porta de I/O ou um grupo de endereos para projetos de interface inspecionar o mapa de endereamento e encontrar um bloco de endereos no utilizado, e ento, construir um circuito decodificador adequado. O endereo decodificado dever ser acionado logicamente com os sinais de barramento IOR (leitura de I/O) ou IOW (escrita de I/O) para gerar entradas ou sadas de dados, respectivamente. Outro sinal importante o AEN (Address ENable), gerado pelo controlador de DMA. Quando ativo (1), o DMA assume o controle dos barramentos e o microprocessador desabilitado. Portanto, tem a funo de desabilitar a decodificao de endereos de I/O durante o ciclo de DMA: deve fazer parte da lgica de decodificao. Como mostrado mais frente, a faixa de endereos de 0300h 031Fh est livre para uso em placas de interface.

9.11.4 O Slot do PC (ISA 8 bits)


O slot do PC apresenta todos os sinais de interesse para a interface com qualquer dispositivo de I/O. Os sinais disponveis nos slots so os sinais de endereamento, de dados, clock, tenses, etc. A configurao dos sinais no slot ISA 8 bits pode ser visualizada na figura da pgina 17. Os sinais mais utilizados so dados a seguir: Alimentao: Servem para alimentar os CI's digitais e analgicos). So eles: GND +5 V (B3, B29) - 5 V (B5) +12 V (B9) - 12 V (B7) Sinais de Controle de I/O: Servem para controlar o acesso aos CI's de I/O). Alguns principais sinais de controle so: IOW (B13) - habilita escrita nos perifricos de I/O quando em nvel lgico baixo; IOR (B14) - habilita leitura dos perifricos pelo microprocessador quando em nvel lgico baixo; RESET DRV (B2) - sinal de reset utilizado para ressetar portas programveis da placa de interface; AEN (A11): utilizado na lgica de decodificao de endereos para indicar quando est ocorrendo um DMA; CLOCK (B20): sinal de clock fornecido pela placa principal, freqncia = 4,77 MHz; DADOS: de D0 D7 (A9 - A2): sinais provenientes do barramento de dados; ENDEREOS: de A0 A9 (A31 - A22): sinais provenientes do barramento de endereos. Todos os demais sinais no so usados freqentemente, pois apenas placas de interface mais sofisticadas necessitam destes outros recursos. Endereo 0200 h 020F h 0210 h 021F h Quantidade de Endereos 16 16 Funo Adaptador de Jogos Unidades de Expanso (B1, B10, B31) Imx = 700 mA Imx = 30 mA Imx = 100 mA Imx = 50 mA

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

133 0220 h 026F h 0270 h 027F h 0280 h 02EF h 02F0 h 02FF h 0300 h 031F h 0320 h 032F h 0330 h 036F h 0370 h 037F h 0380 h 03AF h 03B0 h 03BF h 03C0 h 03CF h 03D0 h 03DF h 03E0 h 03EF h 03F0 h 03FF h

80 16 112 16 32 16 64 16 48 16 16 16 16 16

Reservada ou No Documentada Porta Paralela ou Impressora # 2 Reservada ou No Documentada Porta Serial #2 Placa de Prototipo Adaptador de Disco Rgido No Documentada Impressora Paralela Principal Reservada ou No Documentada Placa de Vdeo Monocromtica Placa de Vdeo EGA Placa de Vdeo CGA Reservado Disco Flexvel e Porta Serial

9.12 Decodificao de Endereos


A decodificao de endereos de I/O semelhante ao mapeamento de memria e utilizada em qualquer placa de interface. Para acessar perifricos de I/O, o PC-XT utiliza-se apenas 10 bits de endereos, de A0 a A9. Pode, portanto enderear 1024 endereos diferentes. Decodificar um endereo ou grupo de endereos gerar um nico sinal, geralmente baixo, a partir dos sinais de endereo e controle. Este sinal chamado de habilitao e ligado nos CI's perifricos no pino CS (Chip Select) ou CE (Chip Enable). Para gerar este sinal pode-se utilizar CI's decodificadores e portas lgicas mais simples, decodificando os sinais de controle ( IOR, IOW e AEN) e os sinais de Endereos 99(A0 at A9). O decodificador 74LS138 um dos decoficadores usados nesse processo. Um decoficador 74LS154, cuja principal diferena do 74LS138 possuir dois sinais de habilitao e quatro sinais de seleo, gerando, portanto 16 sadas diferentes.

9.13 Exemplos Gerais


A maioria dos exemplos dados a seguir so exemplos do emulador do 8086 chamado Emu8086 v2.58. Eles podem ser verificados atravs desse emulador. 1. Adiciona o contedo de dois registradores Mnemnico #make_BIN# MOV AX, 5 MOV BX, 10 ADD AX, BX SUB AX,1 HLT 2. Descrio Diretiva do compilador para gerar um arquivo .bin Registrador AX = 0005 (decimal) Registrador BX = 0010 (decimal) Faz AX AX + BX AX = 0005 h + 000A h = 000F h (15 dec) Faz AX AX 0001 h AX = 000F 0001 = 000E h (14 dec) Pra programa

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

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

134 #make_BIN# MOV CX, 5 MOV AL, 0 MOV BX, 0 Next: ADD AL, V1[BX] MOV V1[BX], BL INC BX LOOP Next MOV V2, AL HLT Diretiva do compilador para gerar um arquivo .bin Nmero de elementos CE = 5 (decimal) Registrador AL registrar a soma dos elementos (valor inicial = 0) BX o indexador. Valor inicial = 0. Faz AL AL + [V1 + BX]. Contedo da posio V1 + BX. Modifica o contedo da posio V1 + BX com o valor de BL Incrementa BX
Retorna para Next at o contador CX = 0. Decrementa CX automaticamente

Armazena contedo de AL na varivel V2 Pra programa

V1 DB 4, 3, 2, 1, 0 Valores do vetor V1 V2 DB 0 Valor inicial da varivel V2 3. Carrega registradores com valores em notao binria, hexadecimal e octal. Rtulo Mnemnico #make_BIN# MOV AL, 00000101b MOV BL, 0Ah MOV CL, 10o ADD AL, BL SUB AL, CL HLT Descrio Diretiva do compilador para gerar um arquivo .bin Carrega AL com valor binrio correspondente a 5 Carrega registrador com o hexadecimal de 10 Carrega CL com o valor octal que corresponde a 8 Adicional o contedo de BL ao contedo de AL (5 + 10 = 15) Subtrai o contedo de CL do contedo de AL (15 8 = 7)

9.14 Problemas Propostos


1. Rodar o programa int21 do Emu8086 e verificar a entrada de textos pelo usurio e a impresso do mesmo no vdeo. Rodar o programa Advanced_io do Emu8086 e verificar o uso do display de 7-segmentos. 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. Repetir o programa anterior para uma contagem hexadecimal de 0000h at FFFF h, ininterrupta. Criar um programa para fazer uma contagem decimal crescente de 0 a 50, ininterrupta. Mostrar resultado no display de 7-segmentos. Repetir o programa anterior para uma contagem decimal de 0 a 50000. 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. Criar um programa para fazer um contagem decimal decrescente ininterrupta de 50000 a 0. Mostrar no display de 7-segmentos. 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.

2. 3.

4. 5.

6. 7.

8.

9.

10. Fazer um programa que simula um relgio no formato hh:mm:ss. Mostrar resultado no vdeo. 11. Criar um programa para mostrar trs diferentes frases no vdeo, em linhas diferentes. 12. Fazer um programa para somar os elementos de dois vetores de 5 valores, cada. O resultado deve ser mostrado no vdeo.

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys

135 13. Fazer um programa para ler dois valores pelo teclado, adiciona-los e mostrar o resultado no display de 7-segmentos. 14. Adapte o programa stepper_motor do Emu8086 para que o motor fique girando 10 vezes para um lado e 10 vezes para o outro lado, ininterruptamente. 15. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento simples, ou seja, permisso para seguir em frente ou virar direita para as duas avenidas (sinal de dois tempos). 16. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os dois sentidos da avenida horizontal tenha permisso para seguir em frente, virar esquerda ou virar direita e os veculos da avenida vertical tenham permisso apenas para seguir em frente ou virar direita (sinal de trs tempos). 17. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os veculos de todas as pistas possam seguir em frente, virar direita ou virar esquerda (sinal de quatro tempos).

9.15 Referncias Bibliogrficas


[1] ZILLER, Roberto M., Microprocessadores: Conceitos Importantes, Edio do autor, Florianpolis, SC, Brasil, 2000. [2] ZELENOVSKY, Ricardo, MENDONA, Alexandre, PC: Um Guia Prtico de Hardware e Interfaceamento, Intercincia, Rio de Janeiro, RJ, 1996. [3] Tutorial do Emulador emu8086 http://www.emu8086.com

Microprocessadores e Microcomputadores

Prof. Jos Wilson Lima Nerys