Escolar Documentos
Profissional Documentos
Cultura Documentos
8085 Cpu Process Adores
8085 Cpu Process Adores
Notas de Aula
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.
Microprocessadores e Microcomputadores
Obs.: As 96 horas de aulas tericas sero ministradas em 48 aulas de 2 horas cada uma. As 32 horas de aulas prticas sero ministradas em 16 aulas de 2 horas cada uma.
BIBLIOGRAFIA BSICA Microprocessador 8085: 1. ZILLER, Roberto M., Microprocessadores Conceitos Importantes, Edio do autor, Florianpolis, 2000. ISBN 85-901037-2-2 2. NERYS, Jos Wilson L., Apostila de Microprocessadores Microprocessador 8086: 3. ZILLER, Roberto M., Microprocessadores Conceitos Importantes, Edio do autor, Florianpolis, 2000. ISBN 85-901037-2-2 4. ZELENOVSKY, Ricardo e MENDONA, Alexandre, "PC: Um Guia Prtico de Hardware e Interfaceamento," Intercincia, Rio de Janeiro, 1996. ISBN: 85-7193-001-5 5. NERYS, Jos Wilson L., Apostila de Microprocessadores Microcontrolador 8051: 6. SILVA JR., Vidal Pereira da, Aplicaes Prticas do Microcontrolador 8051, rica, So Paulo, 1994. 7. GIMENEZ, Salvador P., Microcontroladores 8051: Teoria do hardware e do software / Aplicaes em controle digital / Laboratrio e simulao, Pearson Education do Brasil Ltda, So Paulo, 2002. ISBN: 85.87918-28-1 8. NERYS, Jos Wilson L., Apostila de Microprocessadores EMENTA Conceitos bsicos de microprocessadores e microcontroladores. Arquitetura de microprocessadores e microcontroladores. Princpio de funcionamento de microprocessadores e microcontroladores. Modos de endereamento. Programao de microcontroladores. Entrada/sada. Dispositivos perifricos. Interrupes. Temporizadores. Acesso direto memria. Barramentos padres. Expanso e mapeamento de memria. Ferramentas para anlise, desenvolvimento e depurao.
Microprocessadores e Microcomputadores
PROGRAMA 1 - Introduo aos Computadores e Microprocessadores: - Histrico - Computador (definies) - Estrutura Bsica do Computador - Unidade Central de Processamento - CPU - Memria - Unidade de Entrada e Sada - Microprocessadores e Microcontroladores - Outros Conceitos Bsicos - Ciclo de Clock, Ciclo de Mquina e Ciclo de Instruo - Memria ROM e Memria RAM - Memria RAM Esttica e Memria RAM Dinmica - Registradores - Diagrama de Blocos de uma CPU Genrica - Sistemas de Numerao 2 - Arquitetura do 8085: - Princpio Bsico de Operao de um Microprocessador - Diagrama de Blocos do Microprocessador 8085 - Pinagem; - Principais Caractersticas; - O Sistema Mnimo; - Modos de Endereamento; - Busca e Execuo de Instrues. 3 - Conjunto de Instrues do 8085: - Transferncia de Dados; - Aritmticas e Lgicas; - Rotao e Deslocamento; - Desvio; - Entrada e Sada; - Controle. 4 - Princpios Bsicos de Interfaceamento de Micros: - Interface Paralela - Interface Serial - Unidade de Temporizao - Controlador de Interrupo - Controlador de DMA (DMAC) - Integrados de Suporte - Arquitetura atual de um PC 5 - Arquitetura do 8086/8088 - Famlia 80x86: - Diagrama em Blocos; - Registradores; - Segmentao de Memria; - Pinagem; - Modos de Endereamento; - Evoluo dos processadores da famlia 80X86. 6 - Introduo ao Microcontrolador 8051 - Arquitetura da Famlia do Microcontrolador 8051 - Caractersticas Principais - Programao em Linguagem Assembly
Microprocessadores e Microcomputadores 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
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
1.1
4000 A.C - BACO Inveno do baco pelos babilnios. Instrumento usado para realizar operaes aritmticas, onde cada coluna representa uma casa decimal. Era o principal instrumento de clculo do sculo XVII e usado at hoje.
baco
Data da mesma poca do baco o octograma chins Yin Yang, o qual tido como a primeira representao binria dos nmeros de 0 a 8. Foi criado pelo imperador chins Fou-Hi para representar a interao entre as duas energias que juntas so o fundamento da totalidade. 1614 LOGARITMO O cientista escocs JOHN NAPIER criou os logaritmos. Atravs das tabelas criadas, as operaes de multiplicao e diviso tornaram-se mais simples, pois eram substitudas por operaes de adio e subtrao, reduzindo o tempo de processamento.
Tabela de logaritmos
Pascaline
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
11 Para ampliar seus negcios, a TMC se uniu com duas pequenas empresas para formar a CTRC (Computing Tabulation Recording Company), em 1914. Em 1924, a CTRC se tornou uma empresa internacional e mudou seu nome para IBM (Internacional Business Machine).
Z4
1936 COMPUTADORES Z1, Z3 e Z4 O cientista alemo KONRAD ZUSE criou o computador - Z1, baseado em rel eletro-mecnico. Criou tambm o computador Z3, que foi o primeiro computador de propsito geral controlado por programa. Criou ainda o Z4, computador projetado para o desenvolvimento de msseis. Ele foi destrudo por bomba na 2a. guerra mundial. 1943 COLOSSO Na Inglaterra, em 1943, Alan Turing, do Servio de Inteligncia Britnico, construiu o Colosso, de dimenses gigantescas. A mquina, abrigada em Bletchley Park, tinha 2000 vlvulas e lia smbolos perfurados numa argola de fita de papel, inserida na mquina de leitura fotoeltrica, comparando a mensagem codificada com sequncias conhecidas at encontrar uma coincidncia. Processava cerca de 5 mil caracteres por segundo e foi usada para descodificar as mensagens dos alemes, tendo sido decisiva no resultado final da guerra.
Colosso
Mark I
1944 MARK I Na Universidade de Harvard em 1937, o professor Howard Aiken, financiado pela IBM, comeou a construir o Mark I, concludo em 1944. Baseado em um sistema decimal, manipulava nmeros de at 23 dgitos e tinha medidas grotescas: 15 m de comprimento e 2,5 m de altura; 760.000 peas envoltas em vidro e ao inoxidvel brilhante; 800 km de fios e 420 interruptores para controle.trabalhava sob o controle de um programa perfurado em uma fita de papel. Adio e subtrao em 0,3 s, multiplicao em 3 s e diviso em 12 s, 1946 ENIAC (Electronic Numerical Integrator and Computer) - 1o Computador de propsito geral a vlvula: 18.000 vlvulas, 30 toneladas, 15.000 ps quadrados, 140 kW, representao e aritmtica com nmeros decimais, 5.000 adies /seg. Projetado pela Ballistics Research Labs. Foi aproveitado no desenvolvimento da Bomba H. 1946 VON NEWMANN MACHINE A Mquina de Von Newman, ou Mquina de Touring introduziu o conceito de programa armazenado (Stored Programa Concept) no qual a memria conteria, alm de dados, programas. Os computadores modernos so baseados na mquina de Von Newman. 1950 UNIVAC (Universal Automatic Computer) Lanado pela SPERRY, foi o 1o Computador de aplicao cientfica e comercial. Seguiram UNIVAC II e UNIVAC 1100 series .
Microprocessadores e Microcomputadores
12 1953 IBM 701 Computador desenvolvido para aplicaes cientficas. 1947 TRANSISTOR Inveno do transistor pelos cientistas John Bardeen, William Shockley e Walter Brattain. Passou a ser usado em escala comercial somente em 1952 pela Bell Laboratories. 1958 CIRCUITO INTEGRADO O engenheiro Jack Kilby, da Texas Instruments, criou o Circuito Integrado. 1960 IBM 7090, 7094 Computador transistorizado. Utilizao de linguagens de programao de alto nvel, tais como FORTRAN, COBOL e PASCAL. 1964 IBM 360 Primeira famlia planejada de computadores. DEC PDP 8 Introduziu o conceito de Minicomputador. Criou a estrutura de barramento, ou seja, unidadade de Entrada e Sada, Memria e CPU interligados por um conjunto de condutores. 1971 4004 (INTEL) - 1o microprocessador a ser lanado, de 4 bits, com aplicao voltada para calculadoras (manipulao de nmeros em BCD) - 45 instrues - 640 Bytes de memria - clock de 108 KHz 60.000 instrues/seg. (OBS: desempenho superior ao ENIAC) - 2.300 transistores. 1972 8008 (INTEL) - 1o microprocessador de 8 bits, com aplicao voltada para terminais (que trabalham com caracteres - codificao ASCII) - 48 instrues - 16KB de memria - clock de 200 KHz - 300.000 instrues/seg. 3500 transistores. 1974 8080 (INTEL) - Processador de 8 bits, de propsito geral - 72 instrues - opera com 12V - clock de 2 MHz - 640.000 instrues/s. 64KB de memria. 6.000 transistores. 1975 Z80 (ZILOG), 6502 (MOS) Utilizado pelo 1o APPLE (APPLE 1) em 1976 por Steve Wozniak e Steve Jobs (data da fundao da APPLE). 1976 8085 (INTEL) 8080 operando com 5V - 2 instrues a + que o 8080 - melhor performance. 5 MHz 370.000 instrues/s. 6500 transistores. 1978 8086 (INTEL) - Processador 16 bits (barram. externo de 16 bits e registradores de 16 bits). 5 MHz - 0.33 MIPS, 8 MHz - 0.66 MIPS e 10 MHz - 0.75 MIPS. 29.000 transistores. 1979 8088 (INTEL) - Processador 16 bits (barram. externo de 8 bits e registradores de 16 bits) - 133 instrues - chip utilizado no primeiro PC em 1981. O PC/XT seria lanado em 1983 com HD de 10 MB e 128 Kbyte RAM. 29.000 transistores. Lanado o 68.000 (MOTOROLA) que foi utilizado no Machintosh em 1984 1980 Coprocessador 8087 (processador matemtico). 8051 (INTEL Lanado o microcontrolador 8051: microprocessador + perifricos (RAM, ROM, Serial, Timer, Controlador de Interrupo, etc.) num nico chip, voltado para aplicaes de controle 1982 80186/188 - 80286 - 80287 (INTEL) PC/AT 16 bits, modo protegido, 24 linhas endereos. 1985 80386 (INTEL) Processador de 32 bits - bus ext. de dados de 32bits - 275.000 transistores. 16MHz 2.5 MIPS, 20 MHz - 2.5 MIPS, 25 MHz - 2.7 MIPS, 33 MHz - 2.9 MIPS. 1989 80486 (INTEL) - Processador de 32 bits: 386 que incorpora o 387 (coprocessador), cache interna (L1) de 8KB e maior performance - 235 instrues - 1,2 milhes de transistores. 25 MHz - 20 MIPS, 33 MHz - 27 MIPS, 50 MHz - 41 MIPS. 1991 WEB Tim Berners-Lee desenvolve a Rede Mundial de Computadores (World Wide Web). O primeiro servidor Web lanado. O conceito de conexo de vrios usurios a um nico computador por via remota nasceu no MIT no final da dcada de 50 e incio da dcada de 60. As idias bsicas da Internet foram desenvolvidas em 1973 por Bob Kahn e Vint Cerf.
Microprocessadores e Microcomputadores
13 1993 Pentium 60 MHz e 66 MHz - Processador de 32 bits bus ext. de 64 bits - 5V - 3 milhes de transistores. Primeiro processador de 5a gerao. 1994 Pentium 90 MHz e 100 MHz - Alimentao de 3,3V (maior confiabilidade). 3.2 milhes de transistores. 1996 Pentium Pro 200 - Incorpora cache L2 de 256kB, utilizando tecnologia MCM (Multi-Chip Module) - 5 milhes de transistores - idealizado para programas de 32 bits. Usa memria de 64 bits. 1997 Pentium 200MMX (Pentium MultiMidia eXtensions): contm 57 novas instrues dedicadas para programas de Multimdia. 4.5 milhes de transistores. 200 MHz e 166 MHz. Barramento de 64 bits. Cada instruo MMX equivale a vrias instrues comuns. 1997 Pentium II 233, 266, 300MHz utiliza o slot I. 7,5 milhes de transistores (tecnologia 0.35 micron), cache L2 com 512kB - 242 pinos - 64GB de memria enderevel. Poder de processamento de 32 bits do Pentium Pro e maior eficincia no processamento de 16 bits. Instrues MMX. 1998 Pentium II 450 MHz - Cache L2 de 512 kB, 7.5 milhes de transistores, tecnologia 0.25 micron, barramento de 64 bits. 64 GB de memria enderevel. 1999 Pentium III 450 e 500 MHz (at 1,2 GHz) Barramento de sistema de 100 MHz ou 133 MHz, cache L2 de 512 kB, processador de 32 bits, 9,5 milhes de transistores, tecnologia 0.25 micron, 64 GB de memria enderevel. 70 novas instrues voltadas para multimdia e processamento 3D. 2000 Pentium IV at 2 GHz, barramento de sistema de 400 MHz, Cach L1 de 32 kB e L2 de 256 kB, 42 milhes de transistores.
1.2
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.
Microprocessadores e Microcomputadores
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).
1.3
Microprocessadores e Microcomputadores
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.
Computadores Digitais:
- operam com variveis discretas (nmeros).
1.4
Microprocessadores e Microcomputadores
16
1.4.1
A Unidade Central de Processamento a responsvel por buscar e executar instrues, que ficam armazenadas na memria. A CPU possui internamente os seguintes blocos, dentre outros: Control Unit - Unidade de Controle (UC) - tem por funo bsica o controle das demais unidades da CPU de uma forma lgica e sincronizada. ALU (Aritmetic and Logic Unit) - Unidade Lgica e Aritmtica (ULA) - realiza funes bsicas de processamento de dados (adio, subtrao, funes lgicas, etc.). Registers - Registradores - So usados para o armazenamento interno da CPU. Existem diversos registradores na CPU e o principal deles chamado de Acumulador. CPU interconnection - o barramento interno da CPU; ele permite a comunicao entre a Unidade de Controle, a Unidade Lgica e Aritmtica e os Registradores.
1.4.2
Memria
o local de armazenamento de dados e programas. Possui palavras de tamanho fixo, sendo cada palavra vinculada a um endereo nico. Possui ainda linhas de controle, sendo as principais: READ (leitura) / WRITE (escrita). Existem dois tipos bsicos de memria: Memria somente para leitura (ROM), onde ficam armazenados permanentemente informaes fundamentais para o funcionamento do computador e cujos dados no so perdidos na falta de energia; e a memria RAM, que permite gravar e apagar dados de acordo com os interesses do usurio, e cujo contedo perdido quando o computador desligado. A memria RAM divide-se ainda em Memria Dinmica (DRAM) e memria esttica (SRAM), que sero melhor detalhadas posteriormente. A principal caracterstica a ser destacada neste ponto a baixa velocidade de acesso da memria RAM. Com o passar dos anos os processadores tornaram-se cada vez mais rpidos, o mesmo no acontecendo com as pastilhas de memria, que evoluram de forma bem menos acentuada (em particular, a memria dinmica, que possui velocidade de acesso bem menor que a esttica, mas bem mais barata). Para evitar com que a baixa velocidade de acesso da memria comprometesse o desempenho dos processadores mais modernos, um tipo especial de memria RAM foi criado: a memria CACHE. A memria CACHE consiste numa pequena quantidade de memria RAM esttica (SRAM) usada para acelerar o acesso RAM dinmica. Quando h necessidade de ler dados da memria dinmica, estes so antes transferidos para a memria cache. Enquanto o processador l dados da memria cache, mais dados so antecipadamente transferidos da memria dinmica para a memria cache, de forma que o processamento tornase mais rpido.
1.4.3
a unidade atravs da qual o usurio se comunica com o sistema. Ela abriga componentes responsveis pelo interfaceamento do sistema com perifricos tais como teclado, LCD, mouse, impressora e monitor. tambm atravs da unidade de entrada e sada que so enviados sinais de interrupo para a CPU.
1.4.4
Barramento
Barramento o meio fsico usado para o transporte de um conjunto de sinais digitais usados para comunicao entre o processador, a memria e o meio externo. O barramento especfico para a comunicao entre o processador e a memria chamado de barramento de sistema. Para a comunicao com os perifricos os trs tipos mais comuns de barramento hoje so: barramento ISA, usado para interfaces seriais, paralelas, interface para drivers e alto falante; barramento PCI, usado para interfaces IDE e USB; e barramento AGP, usado para placas de vdeo 3D de alto desempenho. Um barramento constitudo de um barramento de dados, um barramento de endereos e um barramento de controle. O barramento de dados nos computadores mais modernos possui at 64 linhas (bits) e permite o fluxo bidirecional de dados. O microprocessador 8085, objeto de estudo na primeira parte do presente curso, possui 8 bits de dados e, por esta razo, denominado de processador de 8 bits.
Microprocessadores e Microcomputadores
17 A quantidade de posies de memria que um computador pode acessar ditada pela quantidade de bits do barramento de endereos. Um barramento com 32 bits pode acessar at 4.294.967.296 (232) posies de memria, o que corresponde a 4 GB de memria (4.294.967.296 = 4 1024 1024 1024 = 4 GB). Todos os processadores da classe Pentium possuem barramento de endereo com 32 bits. Os processadores Pentium II, Pentium III e Celeron possuem barramento de endereo de 36 bits, podendo ento acessar at 64 GB de memria. O barramento de controle de um computador comporta uma srie de sinais com finalidades diversas. Alguns exemplos so: sinal RW que indica se a operao uma leitura ou uma escrita, sinal MIO, que indica se a operao envolve a memria ou a unidade de entrada e sada, sinal de RESET, entradas das interrupes, sinal de CLOCK, etc. Barramento ISA - O barramento ISA (Industry Standard Architecture) formado por slots de 8 e 16 bits existentes nas placas de CPU e foi originado no IBM PC, na verso de 8 bits, e aperfeioado no IBM PC AT, quando foi criada a verso de 16 bits. Permite transferncia de dados em grupos de 8 ou 16 bits a um clock de 8 MHz. Embora possua velocidade de transferncia pequena para os padres atuais, o barramento ISA ainda muito utilizado para placas tais como fax/modem, placas de som e placas de rede, cujos desempenhos no ficam comprometidos com a baixa velocidade de transferncia do barramento. Barramento PCI - O barramento PCI (Peripheral Component Interconnect) foi desenvolvimento pela Intel, quando do desenvolvimento do processador Pentium. Ele opera com 32 ou 64 bits, apresenta taxa de transferncia de at 132 MB/s, com 32 bits e possui suporte para o padro PnP (Plug and Play). Seu clock geralmente de 33 MHz, para valores de clock interno acima de 150 MHz. Barramento AGP - O barramento AGP (Accelerated Graphics Port) foi devolvido pela Intel com o intuito de aumentar a taxa de transferncia entre a CPU e a placa de vdeo, melhorando o desempenho de operao com grficos. Esse barramento foi incorporado CPU de processadores Pentium II mais modernos. A principal vantagem do AGP o uso de maior quantidade de memria para armazenamento de texturas para objetos tridimensionais, alm de alta velocidade no acesso a essas texturas para aplicao na tela.
1.5
chaves: 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
MIPS -
Microprocessadores e Microcomputadores
18 FLOPS - FLOating point instructions Per Seconds (Instrues com Ponto Flutuante Por Segundo). tambm uma unidade de desempenho do microprocessador. Indica a capacidade de trabalhar com nmeros decimais. Representao em Ponto Fixo - Sistema numrico no qual o ponto est implicitamente fixo ( direita do digito mais a direita); Representao em Ponto Flutuante - Sistema numrico no qual um nmero real representado por um par distinto de numerais: uma mantissa (ou significante) e um expoente. Possibilita representao de nmeros fracionrios. Bit - Abreviatura para 'Binary Digit', ou, Dgito Binrio. Pode assumir valor 0, que corresponde a tenso O V, ou 1, que representa normalmente uma tenso de 5 V ou 3.3 V. Byte - Conjunto (cordo) de 8 bits. a unidade bsica de dados nos computadores, que tambm utilizam alguns mltiplos de 8, tais como 16 bits (Word) e 32 bits (Dword). BYTE nibble superior nibble inferior Bit 7 Bit 6 Bit 5 Bit 5 Bit 3 Bit 2 Bit 1 Bit 0 Nibble, Word, Dword Palavra digital composta de 4, 16, 32 bits, respectivamente. Set de instrues - Conjunto de Instrues. Conjunto de Mnemnicos (siglas que fazem lembrar uma ao) que representam todas as instrues do processador. Cada processador possui o seu set de instrues particular. CISC - Complex Instruction Set Computer: Tecnologia atribuda s CPUs de um modo geral, que contm set de instrues complexo. O barramento de comunicao entre as unidades que compem a CPU comum a todas as unidades, ou seja, no h comunicao direta entre unidades, atravs de um barramento exclusivo. RISC - Reduced Instruction Set Computer: Computador com set de instrues reduzido. Principais caractersticas: Conjunto de instrues limitado e simples; Grande nmero de registradores de propsito geral; Pipeline otimizado. Em outras palavras, h comunicao direta entre algumas unidades, atravs de barramento exclusivo, possibilitando, assim, o processamento paralelo de intrues. BIOS - Basic Input/Output System o conjunto mnimo de instrues necessrias para a inicializao do computador. Tambm gerencia o fluxo de dados entre o sistema operacional do computador e os dispositivos perifricos conectados. Memria EPROM - (Erasable Programmable Read Only Memory) - So memrias somente de leitura usadas para a gravao de programas. A gravao feita atravs de uma gravadora especfica e os dados gravados podem ser apagados atravs de raios ultravioletas. Pode-se repetir esse processo gravar/apagar por vrias vezes. Memria EEPROM ou E2PROM - (Electrically Erasable Programmable Read Only Memory) - So memrias que podem ser usadas tanto para leitura quanto para escrita porque a gravao pode ser atravs de gravadora especfica ou pelo sistema. So apagadas eletricamente. o feita atravs de uma gravadora especfica e os dados gravados podem ser apagados atravs de raios ultravioletas. Pode-se repetir esse processo gravar/apagar por vrias vezes.
Microprocessadores e Microcomputadores
19
1.8 1.8.1
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
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
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
21 (a) (b) (c) (d) (e) (f) 34510 = _________ h 101001112 = _________ h 101010108 = _________ h 25510 = _________ h 12810 = _________ h 101001110112 = ___________ h
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Edio do Autor, Florianpolis, SC, 2000. [2] http://www.intel.com/research/silicon/moorespaper.pdf [3] www.maebee.com.br [4] http://www.intel.com/intel/intelis/museum/exhibits/hist_micro/hof/ [5] http://www.computerhistory.org/timeline/
Microprocessadores e Microcomputadores
22
Principais Caractersticas:
microprocessador de 8 bits de propsito geral (com 6.200 transistores); opera com +5V e GND. O 8080, seu antecessor, opera com +12V, +5V e -5V; 100% compatvel em software com o 8080A; conjunto de instrues com 74 instrues. Estas 74 instrues resultam num total de 246 opcodes distintos; instrues do 8085 possuem 1, 2 ou 3 bytes; H 2 registradores temporrios de 8 bits (W e Z) no aparentes ao programador (no endereveis); 8 linhas de dados: barramento bidirecional e com 3S (three state); 16 linhas de endereo; permite endereamento de at 64kbytes = 65.536 posies de memria; barramento de dados multiplexado com parte baixa do barramento de endereo (o hardware deve conter um latch (ex.: 74373) para armazenar os endereos baixos: A0 a A7); possui pino de seleo de Entrada (I) e Sada (O) - (IO/M)
possui gerador de clock interno ( necessrio apenas um cristal externo, juntamente com dois capacitores).
Reset do 8085: PC em 0000h; Flip-Flop IE (Interrupt Enable) em 0 (indicando interrupes desabilitadas); HLDA em 0; demais registradores com valores indeterminados; Interrupes RST 5.5, RST 6.5, RST 7.5 mascaradas; SOD em 0.
Microprocessadores e Microcomputadores
23
2.2
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
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
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
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.
Microprocessadores e Microcomputadores
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)
Microprocessadores e Microcomputadores
27
2.5
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\
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\
Microprocessadores e Microcomputadores
28 O diagrama de temporizao mostra os sinais essenciais no processo de busca e execuo de cada instruo. Observa-se, por exemplo, que a cada novo ciclo de mquina, no estado T1, um novo valor de endereo colocado no barramento pelo contador de programa PC. Esse novo endereo pode ser o endereo da prxima instruo ou os bytes restantes (ou o byte restante) da instruo em andamento. O sinal ALE o sinal de habilitao do Latch do endereo, ou seja, o endereo transferido para a memria ROM, de onde ser lida a instruo. O sinal RD\ vai a zero aps o estado T1 indicando que haver uma operao de leitura. Como o sinal IO-M\ permanece zero durante todo o tempo, figura mostrada, significa que trata-se de leitura de memria, e no de qualquer dispositivo de entrada e sada. Assim, a memria ROM lida nesse intervalo. O sinal WR\ permanece alto durante todo o intervalo mostrado, indicando que no h operao de escrita, seja na memria, seja em dispositivo de entrada e sada. No estado T3 a instruo lida da ROM transferida para o Registrador de Instruo (IR), encerrando a o ciclo de busca. A instruo decodificada e sinais de controle so emitidos da Unidade de Temporizao e Controle de forma que o ciclo de execuo j tenha incio a partir do estado T4. Muitas das instrues do 8085, depois do ciclo de busca, precisam apenas de mais um ciclo de clock para o ciclo de execuo. O ciclo de execuo pode ocorrer no estado T4, ou no prximo estado T2, durante o cilco de busca da prxima instruo. No ltimo caso diz-se que houve sobreposio dos ciclos de busca e execuo (SBE). No diagrama da Fig. 2.4 aparece um estgio a mais, denominado de Perodo de Espera (Twait). Ele gerado quando h necessidade de retardar o processo de busca da instruo, em funo de atraso no processamento de informaes por um perifrico. Esse intervalo de espera aparece sempre aps o estado T2. Para exemplificar o princpio de operao do 8085 mostrado a seguir o processo de busca e execuo das instrues ADD B (adio do contedo do registrador B ao contedo do registrador A. O resultado guardado em A) e MOV B,A ( move - copia - o contedo do registrador A no registrador B ). Microprocessador (CPU)
Contador de Programa (PC) 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
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
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\
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
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
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
D7 D7
D6 D6
D5 D5
D4 D4
D3 D3
D2 D2
D1 D1
D0 D0
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
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
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
33
Significado: O contedo do registrador r2 transferido (copiado) para o registrador r1. O valor de SSS identifica o registrador r2 (origem) e o valor de DDD identifica o registrador r1 (destino). Para transferir o contedo do registrador B para o registrador A, o mnemnico da instruo MOV A,B. A cada mnemnico corresponde um cdigo de operao (opcode) em hexadecimal. No caso dessa instruo 78 h. Para transferir o contedo do registrador E para o registrador D, o mnemnico da instruo MOV D,E. O opcode 53 h. Exemplo 2: Instruo Indicao simblica : LDA addr : (A) ((byte 3)(byte 2))
Significado: O contedo da memria, cujo endereo especificado nos bytes inferior (byte 2) e superior (byte 3), transferido (copiado) para o registrador A. uma instruo de 3 bytes (opcode + byte 3 + byte 2) Para transferir o contedo do endereo 234B h da memria, a instruo e o cdigo da instruo seriam: LDA 234B h Opcode: 3A 4B 23 (O contedo do byte menos significativo digitado primeiro)
3.2
Modos de Endereamento
As instrues do 8085 fazem referncia aos dados de forma explcita ou implcita. H 4 maneiras distintas de se fazer esta referncia: IMEDIATO: A instruo contm o dado no byte ou bytes seguintes ao Opcode. Exemplos: MVI r, dado8 = move o dado especificado para o registrador r ( r ) (byte 2) ADI dado8 = adiciona o dado especificado ao acumulador (A) (A) + (byte 2)
Microprocessadores e Microcomputadores
34 DIRETO: O 2o e o 3o bytes da instruo contm o endereo da posio de memria onde se encontra o dado. Exemplo: LDA addr = carrega o acumulador com o dado do endereo indicado (A) ((byte 3)(byte 2)) REGISTRO: A instruo especifica o registrador ou o par de registradores onde o dado est armazenado. Exemplo: MOV r1, r2 = move contedo do registrador r2 para o registrador r1 (r1) (r2) ADD r = adiciona o contedo do registrador r ao acumulador (A) (A) + ( r ) INDIRETO POR REGISTRO: A instruo especifica o registrador par (rp) que contm o endereo da posio de memria onde o dado est armazenado. Exemplo: MOV r, M = move para o registrador r o contedo da memria localizado na posio indicada pelo para HL ( r ) ((H)(L))
3.3
Grupos de Instrues
As instrues do 8085 so distribudas em 5 grupos, cujas caractersticas so dadas a seguir:
1.
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
35
3.4
MVI r, dado8
LDA addr
13
direto
nenhuma
STA addr
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
nenhuma
STAX rp
nenhuma
XCHG
nenhuma
Microprocessadores e Microcomputadores
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
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
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
40
NO de Ciclos 1 3 1
No de Estados 6 10 4
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
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
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
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
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
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
2 1 2
7 4 7
2 1
7 4
todas todas
CMP M
todas
Microprocessadores e Microcomputadores
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
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
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
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
Microprocessadores e Microcomputadores
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
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)
imediato imediato imediato imediato imediato imediato imediato imediato imediato e indireto por registrador
((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
nenhuma
Microprocessadores e Microcomputadores
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
1/3
6/12
nenhuma
RST n
12
nenhuma
PCHL
nenhuma
Microprocessadores e Microcomputadores
49
3.8
PUSH PSW
12
nenhuma
POP rp
10
nenhuma
POP PSW
10
todas
XTHL
16
nenhuma
1 3 3
6 10 10
(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
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
1+ 1 1
5 4 4
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
51
3.9
Funcionamento da Pilha
Como j foi dito anteriormente, a Pilha uma regio da memria RAM, definida pelo usurio, para guardar valores que sero usados posteriormente. Assim, o usurio pode guardar o contedo de qualquer registrador (dois a dois: A e Flags, B e C, D e E, H e L) na pilha e o microprocessador guarda automaticamente os endereos de retorno de subrotinas comuns e de subrotinas de interrupes. A seguir ilustrada a regio da memria definida como Pilha (Stack). Observaes: (a) O contedo guardado na pilha sempre de 16 bits. Assim, o microprocessador normalmente guarda o contedo de PC, que j de 16 bits, mas o usurio normalmente guarda o contedo de registradores de 8 bits, que ento so associados 2 a 2; (b) Os registradores duplos que podem ser guardados na pilha so PSW (= A + Flags), B (= B + C), D (= D + E) e H (= H + L); (c) Para guardar o contedo de um desses registradores duplos usa-se a instruo PUSH rp; (d) Para recuperar o contedo que foi guardado na pilha usa-se a instruo POP rp; (e) Quando uma informao enviada para a pilha o byte mais significativo guardado primeiro; isso significa que o byte menos significativo vai ser retirado primeiro porque o ltimo dado armazenado o primeiro a ser retirado; (f) A pilha do 8085 evolui do maior endereo para o menor, ou seja, a cada vez que uma informao (2 bytes) enviada para a pilha, o endereo do topo da pilha reduzido de 2. Ele acrescido de 2 quando a informao retirada da pilha; (g) O apontador de pilha SP aponta sempre para o topo da pilha, mas ele incrementado de 1 antes de cada byte ser armazenado. Exemplo de armazenamento na pilha: Supondo que inicialmente SP = 2090 h, A = 01 h, F = 23 h, B = 45 h e C = 67 h, as figuras a seguir mostram a evoluo da pilha aps cada instruo dada. A regio em destaque corresponde posio apontada por SP aps a instruo.
PUSH PSW Endereo Contedo da RAM (HEX) 2089 208A 208B 208C 208D 208E 23 208F 01 2090 SP aps a instruo: 208E h PUSH B Endereo Contedo da RAM (HEX) 2089 208A 208B 208C 67 208D 45 208E 23 208F 01 2090 SP aps a instruo: 208C h POP B Endereo Contedo da RAM (HEX) 2089 208A 208B 208C 67 208D 45 208E 23 208F 01 2090 SP aps a instruo: 208E h POP PSW Endereo Contedo da RAM (HEX) 2089 208A 208B 208C 67 208D 45 208E 23 208F 01 2090 SP aps a instruo: 2090 h
Observaes: (a) Apesar da regio da pilha continuar com o mesmo contedo aps as instrues POP rp, eles no acessveis porque o Apontador de Pilha SP aponta para a posio original, de quando a pilha estava vazia; (b) POP B vem antes de POP PSW porque a ordem de retirada da pilha inversa ordem de armazenagem.
Microprocessadores e Microcomputadores
52
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
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
54
Instruo
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
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
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
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
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:
Microprocessadores e Microcomputadores
57
4.1
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
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
58
Subrotina LETECLA
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
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
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:
Cdigo 31 20 20 3E 00 F5 CD 6E 03 F1 3C C3 05 20
Comentrio Define pilha na posio 2020 h da RAM Carrega registrador A com valor 00 h Guarda valor de A e flags na pilha Mostra contedo de A no display. Afeta "A" Recupera valor de A guardado na pilha Incrementa contedo de A Volta para a posio "volta", ou seja, 2005 h
Microprocessadores e Microcomputadores
59
4.2
Exemplo 1: Faa no ABACUS um programa que executa uma contagem crescente em hexadecimal de 00 h at 60 h.
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
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
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
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
63
O laboratrio de microprocessadores conta com um Kit Didtico para realizao de experimentos usando o microprocessador 8085. Esse Kit j possui vrias sub-rotinas no programa residente (chamado de programa monitor). Elas so dadas a seguir, juntamente com uma breve descrio e com os endereos onde elas esto armazenadas.
Subrotina APDIS Endereo (h) 070B Funo 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
A e flags A e flags
A, BC, DE e flags
DBYTE
05A1
nenhuma
A, BC e flags
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
nenhuma
TECLA
06BA
nenhuma
temporizador (tempo = 0,6 ms) temporizador (tempo = 50 ms) temporizador (tempo = 850 ms)
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
DE
A, C 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
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
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
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
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
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
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
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
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
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
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:
4. Questes do Experimento 5 (a) Por que foram usadas as instrues PUSH B e POP B no primeiro programa? (b) Por que foram usadas as instrues PUSH PSW e POP PSW no segundo e no terceiro programas? (c) Observando o programa durante a execuo, verifica-se que ele vai ficando mais lento na medida em que os mltiplos maiores vo sendo mostrados. Por que isso acontece? (d) Voc pode sugerir uma maneira de resolver o problema citado no item anterior? (e) Qual a finalidade da instruo CPI 50 h no segundo e no terceiro programas?
Microprocessadores e Microcomputadores
72
EXPERIMENTO 6
Objetivo: Programao com o assembly do 8085 Material: Computador com o simulador ABACUS e kit didtico Roteiro: 1. 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
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:
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
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
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 ___ ___
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:
ENDEREO DAS INTERRUPES Pino do 8085 Endereo na ROM Endereo no ABACUS 6 0024 h 20D1h 7 003C h 20CE h 8 0034 h 20CB h 9 002C h 20C8 h
Microprocessadores e Microcomputadores
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:
Label 4000
loop:
crescente:
crescente:
decresc:
decresc:
20CB h: 20CE h:
4BDA h: 4BD7 h:
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
75
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
Pino 6 9 8 7
As interrupes externas tem uma ordem de prioridade, de forma que, no caso de dois ou mais pedidos simultneos de interrupo, a ordem de atendimento :
Microprocessadores e Microcomputadores
76 Interrupo TRAP RST 7.5 RST 6.5 RST 5.5 INTR Prioridade 1 2 3 4 5 Posio do Vetor 0024 h 003C h 0034 h 002C h Nenhuma
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
Microprocessadores e Microcomputadores
77 No circuito da Fig. 6.2 o sinal alto de clock habilita a porta AND na sada do Flip-Flop, enquanto que a transio do clock do nvel baixo para o nvel alto faz com que a sada do Flip-Flop assuma o valor 1 e, consequentemente, a sada geral do circuito da interrupo TRAP assume o valor 1, fazendo com que o processamento seja desviado para o endereo 0024 h. Um sinal baixo no pino RESET IN ou um sinal alto de RECONHECIMENTO DE TRAP limpa o pedido de interrupo. A Fig. 6.3 mostra os circuitos para as interrupes RST 7.5, RST 6.5 e RST 5.5. Observe que as portas AND de sada dos circuitos das interrupes tem trs entradas. O sinal IE estando alto, todas as interrupes esto habilitadas. Esse sinal fica alto quando a instruo EI (entrada do flip-flop) executada. Se nenhuma das interrupes estiver com mscara, ento os sinais M7.5, M6.5 e M5.5 permanecem em nvel baixo e, consequentemente as respectivas entradas das portas AND estaro altas. Dessa forma, todas as interrupes estaro aptas a serem acionadas. Um pulso ascendente (transio do nvel baixo para o nvel alto) no pino 7 faz com que a sada I7.5 do flip-flop correspondente interrupo RST 7.5 fique alta, acionando essa interrupo. Um nvel alto no pino 8 faz com que a interrupo RST 6.5 seja executada e um nvel alto no pino 9 faz com que a interrupo RST 5.5 seja executada. Os sinais I7.5, I6.5 e I5.5 quando esto em nvel alto indicam que h interrupo pendente. Um sinal R7.5 alto limpa uma interrupo RST 7.5 pendente. Um sinal de Reconhecimento de interrupo RST 7.5 tambm faz com que a sada do flip-flop seja zerada, limpando qualquer interrupo RST 7.5 pendente. O bloqueio total das interrupo mostradas na Fig. 6.3 pode ser feito de trs maneiras distintas: (a) atravs da instruo DI (Desable Interrupt), que desabilita todas as interrupes, com exceo da TRAP; (b) atravs de um sinal alto no pino 36 (RESET IN) ou (c) atravs de um sinal alto de reconhecimento de qualquer interrupo.
1 Pino 7 RST 7.5 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
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
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
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
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
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
IE Habilita
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
Controlador de Interrupo
8085 8259
8 pedidos 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
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
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
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
Microprocessadores e Microcomputadores
83 Nesse exemplo a CPU no precisa aguardar o processamento do perifrico. Quando o perifrico est pronto para transferir ou receber os dados um bit de INTERRUPO enviado CPU. O processamento normal da CPU interrompido para atender o pedido externo. Um bit de RECONHECIMENTO de interrupo enviado para o perifrico, havendo ento a transferncia dados para a CPU.
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
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
85
7.1
Interface Serial no PC
Os microcomputadores atuais utilizam uma pastilha especial para a comunicao serial. Os primeiros PCs usavam o CI 8250:UART (Universal Asynchronous Receiver-Transmitter), que permitia o armazenamento de apenas um byte por vez, limitando a velocidade de comunicao serial. Atualmente o CI utilizado o 16550, que permite o armazenamento simultneo de at 16 bytes de informao. A seguir so dadas as caractersticas da Interface Serial no PC: Possui 2 interfaces seriais; So interfaces assncronas; So baseadas no CI 16550 UART (Universal Asynchronous Receiver /Transmiter); Este CI um upgrade do CI 8250 da National utilizado PC original (com taxa de transmisso mxima de 9.600bit/s); Caractersticas do CI 16550 UART: Taxa de transmisso de at 115.200bit/s;
Microprocessadores e Microcomputadores
86 FIFO de 16 bytes; Esta FIFO armazena dados que foram recebidos pela interface serial mas que no foram lidos pelo microprocessador; evita erro de overrun (perda de informao por sobreescrita); Funo Loopback (diagnstico); Funes para controle de modem. A placa me de um microcomputador Pentium possui 2 interfaces seriais: cada uma delas pode ser configurada de duas formas: - Interface 1: COM1 (IRQ4) ou COM3 (IRQ4); - Interface 2: COM2 (IRQ3) ou COM4 (IRQ4). Transmisso Serial Assncrona: Processo de comunicao no qual os caracteres so enviados independentemente uns dos outros. Uma das aplicaes mais comuns deste tipo de comunicao na interface entre teclado e computador. Neste circuito cada tecla gera um cdigo ASCII de 7 bits que transmitido bit a bit para o computador por intermdio de dois ou trs condutores. Para verificar a eficincia deste tipo de transmisso serial deve-se observar o desempenho de um bom digitador: sabe-se que ele no supera uma taxa de 60 palavras por minuto (cerca de 8 caracteres/seg). Logo a transmisso serial, relativamente lenta, aceita neste caso. Observe uma caracterstica importante nesta interface: em alguns momentos a porta serial ser utilizada para transferir dados a uma taxa de 10 a 20 caracteres/seg, em outros esta pode cair para 1 ou 2 caracteres/seg, e ainda, em grande parte do tempo, o teclado no utilizado chegando a uma taxa de zero caracteres/seg. Por causa deste tipo de caracterstica de transmisso de dados, um protocolo de comunicao assncrono deve ser estabelecido entre estes dispositivos. A tcnica aceita para comunicao serial assncrona a de segurar a linha de sada da transmisso serial no nvel lgico 1 (marca) at que chegue dados para transmisso. Cada caracter ser iniciado com um nvel lgico 0 (start bit). Este 1o bit, o start bit, utilizado para sincronizar a transmisso e a recepo. O dado transmitido colocando-se o bit menos significativo em primeiro lugar aps o start bit. No final do dado so transmitidos stop bits (1, 11/2 ou 2) com nvel lgico 1. Opcionalmente pode-se transmitir um bit de paridade aps o MSB do caracter e antes do stop bit (ver figura abaixo: esta figura considera apenas 1 stop bit).
espera
start
Par.
stop
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
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
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
88
7.2 7.2.1
Como j foi enfatizado anteriormente, o microprocessador 8085 precisa de alguns componentes auxiliares que, alm de conterem memrias ROM e RAM, possibilitem a comunicao do 8085 com ambiente externo. Dois desses componentes so os Circuitos Integrados 8156 e 8355.
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
IO-M\
RD\ RESET
PB
PC
WR\
8156
PA
8355
PB
Microprocessadores e Microcomputadores
89 Pino A13 Pino usado para habilitar/desabilitar a RAM e a ROM. CE CE1\ Pastilha Habilitada A13 0 0 0 CI 8156 1 1 1 CI 8355 No sistema mnimo mostrado na Fig. 7.2 o pino de endereo A13 do 8085 usado para habilitar/desabilitar a RAM e a ROM. Ele conectado ao pino CE (Chip Enable) da RAM e ao pino CE\ da ROM. Isso significa que, quando o pino A13 est em nvel baixo, a ROM fica habilitada e a RAM desabilitada. Quando em nvel alto a ROM fica desabilitada e RAM fica habilitada. Dessa forma, o endereo inicial da ROM 0000 h e o da RAM 2000 h, como demonstrado abaixo.
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
0 0
0 0
0 0
0 0
0 2
0 2
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
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\
CS\
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
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\ 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
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
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
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
Porta A
Porta C
Porta B
93
Comear contagem
Contagem final
Contagem final
Contagem final
Contagem final
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 =
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.
Microprocessadores e Microcomputadores
94
7.2.2
Decodificador 74LS138
O CI 74LS138 um decodificador usado tanto para expanso de memria quanto para o endereamento de muitas portas de entrada e sada. um decodificador 1 de 8, ou seja, cada CI permite a seleo de 8 sadas diferentes. Trs pinos (C, B e A) so usados para selecionar uma das 8 linhas de sada (Y0 a Y7).
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
A sada est ativa quando est em nvel zero. A pastilha 74LS138 habilitada fazendo G1 = 1, G2A = 0, G2B = 0. Quando qualquer desses pinos est desativado o CI est desabilitado.
Microprocessadores e Microcomputadores
95 Voltando s 8 pastilhas de memria RAM do exerccio anterior, pode-se fazer o endereamento usando um decodificador 74LS138. O pino A14 usado para habilitao geral (G1) e os pinos A10, A11 e A12 so usados para seleo da pastilha correspondente a cada faixa de endereo.
CS \
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
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
Microprocessadores e Microcomputadores
97 9. A RAM 2114 de 1 K, mas possui apenas 4 bits cada uma. Por isso so usadas de duas em duas de modo a formar 1 byte para cada endereo . Deseja-se associar 4 grupos de RAMs 2114 (ver figura abaixo), de modo a formar uma memria RAM de 4 Kbytes. Pede-se: (e) Quais so as linhas de endereo para a operao das RAMs 2114? (f) Qual a faixa de endereos (endereos contnuos) de cada grupo de RAMs?
10. Faa um programa para o ABACUS com a seguinte caracterstica: Quando a chave CH0 OU a chave CH1 est ligada os LEDs ficam piscando em intervalos regulares. Quando esto desligadas, o programa fica num loop de espera.
7.4
Referncias Bibliogrficas
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC, 2000. [3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
Microprocessadores e Microcomputadores
98
8. INTERFACE ANALGICA
Como os dados de um microprocessador esto na forma digital e os dados do mundo exterior esto na forma analgica (contnua), necessrio fazer a converso entre esses dados. Assim, tem-se o Conversor Analgico-Digital (ADC), que faz a converso de sinal analgico para sinal digital e o Conversor DigitalAnalgico (DAC), que faz a converso de sinal digital para sinal analgico.
Sinal Analgico
ADC
Sinal Digital
Sinal Digital
DAC
Sinal Analgico
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
I=
onde os valores de D podem ser 0 para chave desligada e 1 para chave ligada. Assim, forma-se a tabela abaixo, supondo VREF/R = 1:
Microprocessadores e Microcomputadores
99 Tabela de valores para o conversor de 4 bits D3 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
1 15
Microprocessadores e Microcomputadores
100 Resoluo do DA versus Nmero de bits Nmero de bits Resoluo Resoluo Percentual (%) 4 1/15 6.67 8 1/255 0.392 12 1/4095 0.0244 16 1/65535 0.000381 2. Preciso Absoluta: Refere-se a quo prxima cada corrente de sada est de seu valor ideal. A preciso depende da tolerncia dos resistores, do descasamento dos transistores e da tenso de referncia. 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.
Microprocessadores e Microcomputadores
101 Para que o conversor seja monotnico a tolerncia dos resistores ponderados deve ser inferior resoluo percentual. Assim, a tolerncia dos resistores deve ser no mximo de 6.67% para o conversor de 4 bits e de 0.4% para o conversor de 8 bits. Portanto, quanto maior o nmero de bits do conversor, maior a dificuldade de contruo usando o modelo de resistores ponderados, alm da difuldade com os diferentes valores. A soluo encontrada foi o modelo da Escada R-2R, mostrado na Fig. 8.4. Nesse circuito a corrente permanece constante em cada ramo. O que muda a posio do ponto de terra, onde o terra da corrente de sada um terra virtual do amplificador operacional. Dessa forma, a corrente de sada varia de acordo com o fechamento das chaves D. A Fig. 8.5 mostra a conexo de um conversor Digital-Analgico (DAC0808) com um sistema mnimo formado pelo microprocessador 8085, memria ROM 8355 e memria RAM 8156.
8.2
Conversor Analgico-Digital
A Fig. 8.6 mostra um circuito que converte um sinal analgico em digital. O processo de converso usa um conversor digital-analgico e um contador. No incio da converso um sinal de controle zera a sada do contador. Como o valor digital inicial zero, a sada do conversor DA tambm zero, o que resulta um sinal alto na sada do amplificador operacional que compara o sinal analgico de entrada Vent com o sinal analgico Vsada de sada do conversor DA. Esse sinal alto d incio ao processo de converso.
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.
Microprocessadores e Microcomputadores
102 O processo de converso desse tipo de conversor diferente do anterior. Nesse conversor o nmero mximo de perodos de clock utilizados na cconverso corresponde ao nmero de bits do conversor, ou seja, o conversor de 8 bits leva at 8 ciclos de clock para completar uma converso e o de 16 bits leva at 16 ciclos de clock. Um pulso alto de incio de converso enviado ao Registrador de Aproximao Sucessiva (RAS) d incio ao processo. O registrador RAS comea setando o bit mais significativo D7 (MSB) que alimenta o conversor DA. Se a sada do DA for maior que o sinal a ser convertido Vent, o bit MSB zerado. Caso o bit D7 no resulte em sada analgica Vsada maior que o sinal a ser convertido, o bit D7 mantido. A seguir o segundo bit mais significativo, D6, e os demais bits restantes so testados seguindo o mesmo procedimento, at atingir o valor correto de converso. Ao final da converso, um sinal baixo emitido para o Registrador Buffer, liberando a sada digital e, ao mesmo tempo, conservando esse valor durante a prxima converso.
8.3
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
103 Observao: No o caso de usar DAA e sim fazer a converso da base hexadecimal para a base decimal. Essa converso feita da seguinte forma: Passo 1: Divide-se o nmero hexadecimal pelo decimal 10 (hexadecimal 0A). O resto dessa primeira diviso o dgito menos significativo do nmero decimal resultante (d0). Se o quociente for zero o processo encerrado. Passo 2: Se o quociente da diviso anterior for diferente de zero, divide-se esse quociente novamente pelo decimal 10 at obter o segundo resto, que o segundo dgito menos significativo (d1). Se o quociente dessa segunda diviso for zero, o processo encerrado. Passo 3: Se o quociente da diviso anterior for diferente de zero, divide-se esse quociente novamente pelo decimal 10 at obter o terceiro resto, que o dgito mais significativo (d2). Como o valor mximo possvel FF h, no h possibilidade de um Passo 4. O decimal resultante : d2d1d0. d2 deve ser mostrado em D e d1d0 deve ser mostrado em E. Subrotina 2 (atendimento da RST 5.5 a cada fim de converso do AD da velocidade) (a) L o valor da velocidade, presente na Porta 23h; (b) Verifica o valor da velocidade (atravs de seu equivalente digital) e carrega em A o valor hexadecimal que liga os LEDs desejados, de acordo com o que foi explicado no item (d) da parte inicial desta avaliao. (c) Retorna ao programa principal com o valor de A definido no item anterior.
8.4
Referncias Bibliogrficas
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC, 2000. [3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
Microprocessadores e Microcomputadores
104
9. MICROCONTROLADORES 8086/8088
9.1 Introduo
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
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
106
9.2
Uma das principais inovaes do 8088 foi a separao entre lgica de execuo e lgica de controle do barramento, criando dois blocos que funcionam de forma assncrona: a Unidade de Execuo (EU) e a Unidade de Interface com o Barramento (BIU). A EU tem como funo processar (decodificar e executar) instrues obtidas da BIU. A EU constituda de: Registradores de Dados; Registradores de Endereos; ALU; Unidade de Controle.
A BIU tem apenas funes de hardware: controla o acesso ao barramento (linhas de endereamento, linhas de dados e sinais de controle). A BIU constituda de: 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
107
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
FLAGS
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
108
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
Memria
Offset
Byte Endereado
Segmento
16
Incio do Segmento
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
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
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
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
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
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
113
Gnd A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND
No PC, o 8088 usado no modo mximo (MN / MX =0). As definies a seguir so relativas a este modo. (a) AD0-AD7 (9 -16): transmitem os 8 bits menos significativos dos endereos multiplexados com o byte de dados. Os bits de endereo (A0-A7) so apresentados no incio do ciclo (T1) e os dados a partir de T2. Ambos sinais so bufferizados para fazerem parte do barramento do sistema. (b) A8-A15 (2-8 e 39): a outra parte dos bits de endereos. No so multiplexados (no 8086 so), permanecendo estveis durante grande parte do ciclo de acesso a barramento. Aps bufferizao fazem parte do barramento do sistema. (c) A16/S3 - A19/S6 (35-38): sinais de status e endereos multiplexados. No incio do ciclo de barramento esto presentes os bits dos endereos A16 a A19. Durante o restante do ciclo (a partir de T2) informa o status interno do 8088. S6 = 0 (permanece em nvel baixo no modo mximo); S5 indica o status do flag de interrupo (se = 1 a interrupo est habilitada); S3 e S4 so decodificados para indicar qual registrador de segmento est sendo usado no momento (ver tabela abaixo). No so usados no PC-XT da IBM.
S3 0 0 1 1
S4 0 1 0 1
Reg. Segmento Dados Extra (ES) Pilha (SS) Cdigo (CS) Dados (DS)
(d) Clock (19): sinal de entrada responsvel pela gerao da temporizao no P. No projeto do PC este sinal gerado pelo CI 8284A, tendo freqncia de 4,77Mhz e ciclo de trabalho (duty cycle) de 33%. (e) RQ / GT0 (Request / Grant) (31): sinal bidirecional, usado por outros controladores de barramento local para requerer o uso do barramento (faz o papel dos pinos HOLD e HLDA do 8085). No PC este sinal ligado ao co-processador 8087. (f)
(g) Lock (29): ativado pela instruo LOCK e permanece ativo at o fim da prxima instruo. usado para indicar a outros controladores de barramento que estes no devem tentar obter o controle do barramento durante a execuo da instruo seguinte LOCK. O PC no projetado para multi-controladores e portanto, este pino no usado. (h) NMI (17): sinal de entrada, usado para gerar uma interrupo no mascarvel no P. No PC este sinal mascarado externamente por uma lgica programvel (um FlipFlop). equivalente ao pino TRAP do 8085. (i) INTR (18): entrada para solicitao de interrupo mascarvel. No PC este pino ligado ao CI 8259A que expande esta entrada de 1 para 8, adicionando, dentre outras funes, nveis de prioridade. (j) Ready (22): sinal de entrada usado para inserir estados de espera no ciclo de barramento, estendendo-os. No PC este sinal vem do chip do clock 8284A que o sincroniza com o clock do sistema. (l) Reset (21): usado para reiniciar o P. No PC este sinal vem do chip de clock 8284A que recebe uma entrada da fonte do sistema. A fonte envia um sinal chamado "Power Good" indicando que os nveis de tenso esto apropriados e o sinal Reset pode ser ento removido para iniciar o P. A situao dos registradores do 8088 aps o RESET a seguinte:
Microprocessadores e Microcomputadores
114 Reg. IP = 0000 e reg. CS = FFFF resultando no end. de incio de programa = FFFF0h; Registradores DS, SS, ES e IP zerados; Registrador Flags zerado. (m) QSO, QS1 (24, 25) - Queue Status: sinais de sada que fornecem o status da fila de instruo (queue) do 8088. No PC so ligados ao co-processador de modo que este possa acompanhar o status da fila 8088. (n)
TEST (23): pino de entrada, utilizado em conjunto com a instruo WAIT (no confundir com estado de espera, "wait state"). Se aps a instruo WAIT o pino TEST estiver em nvel alto, o 8088 espera em estado
inativo at este pino obter sinal baixo. No PC ligado a um pino de sada do 8087.
(o) S0, S1, S2 (26 - 28) (status): apresentam informaes de status sobre o tipo de ciclo de barramento que est sendo desenvolvido. Este status vlido no incio de cada ciclo de barramento (durante o perodo T1). No PC estess pinos so ligados ao 8288, chip controlador de barramento, onde so decodificados. Os sinais de sada decodificados no 8288 formam as linhas de controle do sistema. Os sinais de controle gerados pelo 8288 a partir das informaes de status so: IOR, IOW, MemR , MemW e ALE. Os bits de status podem ser vistos na tabela abaixo.
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
Reconhecimento de interrupo ( INTA ) Leitura I/O ( IOR ) Escrita I/O ( IOW ) Halt Busca de instruo
9.5
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
115
T1 a T4 perodos de relgio ALE Address Latch Enable O endereo s reconhecido depois que este sinal vai para nvel alto, mas o endereo s efetivamente usado quando este sinal volta para o nvel lgico baixo. Durante o ciclo T2 os sinais de endereo so removidos. AD0 AD15 Barramento de dados. No ciclo de leitura esse barramento colocado em estado de alta impedncia no estado T2, em preparao para a leitura de dados. No ciclo de escrita a CPU coloca os dados no barra barramento no estado T2. * RD Ativo baixo. Indica leitura de dados da memria ou de um dispositivo de entrada e sada. Ativado em T2. * WR Ativo baixo. Indica escrita de dados na memria ou em um dispositivo de entrada e sada. Ativado em T2. DT/*R Indica a direo da transferncia de dados. * DEN Ativo baixo. Data Enable. Indica que vai haver trfego de dados no barramento. A19/S6, A16/S3 Barramento de dados durante ciclo T1. Barramento de sinais de estado de T2 a T4. A17/S4 0 0 1 1 S5 = IF S6 = 0 A16/S3 Significado 0 Segmento Extra 1 Segmento de Pilha 0 Segmento de Cdigo (ou nenhum) 1 Segmento de Dados Estado de habilitao da interrupo CPU 8086 tem controle do barramento
TW Wait State Tempo de espera. No perodo de leitura a CPU l o dado do barramento no perodo T3, aps o dispositivo lido entregar esses dados. Se o dispositivo no conseguir entregar os dados at o final do ciclo T3, o pino READY do 8086 colocado em nvel lgico baixo, fazendo com que a CPU fique estado de espera, repetindo do estado T3 quantas vezes forem necessrias, enquanto aguarda o dispositivo entregar os dados. No perodo de escrita pode acontecer o mesmo. A CPU est pronta para entregar os dados, mas o dispositivo no est pronto para recebe-los. O pino READY colocado em nvel baixo, gerando perodos de espera.
Microprocessadores e Microcomputadores
116
9.6
Endereamento de Memria
J foi explicado numa seo anterior como feita a composio do endereo fsico do 8088. Uma das caractersticas desse microprocessador a sua capacidade de enderear mais que 64 kbytes de memria. O 8088 possui 20 bits de endereos, permitindo ter uma memria fsica de 1.048.576 bytes (ou 1MB). A gerao de 20 bits, j explicada, feita manipulando o contedo de registradores especiais chamados Registradores de Segmento. O valor carregado no registrador de segmento usado para localizar, no espao de 1MB, a regio de 64kB onde as instrues do 8088 iro operar. Um outro registrador (que pode ser um reg. apontador, um reg. ndice ou o BX) pode especificar 64kB dentro de um segmento. O endereo de memria fsico ser formado pelo deslocamento do contedo do registrador de segmento de 4 bits para a esquerda (acrescentado-se 4 bits 0 direita), somado a outro valor de 16 bits (acrescentado-se 4 bits 0 esquerda), resultando num endereo fsico com 20 bits. interessante observar que diferentes combinaes de endereos lgicos (offsets) e registradores de segmento podem oferecer o mesmo endereo fsico, como exemplificado a seguir: EXEMPLO: supondo que SS=8F00h, SP=21F1h, CS=9020h, IP=0FF1h, os endereos fsicos para um acesso pilha e para a busca da prxima instruo so dados por: SS = 8F00h SP =21F1h endereo fsico 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
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
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
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
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
DS SS DS SS
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)
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
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
CS:IP
255
0000h:03FCh
CS:IP
Microprocessadores e Microcomputadores
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
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
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
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
01 H 02 H 08 H 09 H 25 H
31 H
4C H
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]
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.
Microprocessadores e Microcomputadores
129 ROL AL, 1 ROR CX, CL Rodar esquerda. Rodar direita CL vezes.
RCL AL, 1
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
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 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.
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
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.
Microprocessadores e Microcomputadores
132 01FF h
Microprocessadores e Microcomputadores
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
Calcula a soma dos elementos do vetor V1 e armazena o resultado na varivel V2. Rtulo Mnemnico Descrio
Microprocessadores e Microcomputadores
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
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)
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
135 13. Fazer um programa para ler dois valores pelo teclado, adiciona-los e mostrar o resultado no display de 7-segmentos. 14. Adapte o programa stepper_motor do Emu8086 para que o motor fique girando 10 vezes para um lado e 10 vezes para o outro lado, ininterruptamente. 15. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento simples, ou seja, permisso para seguir em frente ou virar direita para as duas avenidas (sinal de dois tempos). 16. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os dois sentidos da avenida horizontal tenha permisso para seguir em frente, virar esquerda ou virar direita e os veculos da avenida vertical tenham permisso apenas para seguir em frente ou virar direita (sinal de trs tempos). 17. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os veculos de todas as pistas possam seguir em frente, virar direita ou virar esquerda (sinal de quatro tempos).
Microprocessadores e Microcomputadores