MICROPROCESSADORES E MICROCONTROLADORES Parte 1 José Wilson Lima Nerys Página: www.emc.ufg.br/~jwilson Emails: jwlnerys@gmail.com e jose_wilson_nerys@ufg.br Prof. José Wilson 1 Lima Nerys 1 Microprocessadores
Prof. José Wilson 2 Lima Nerys 2 Microprocessadores
There are 10 types of people in the world: Those who know binary and those who don t. Three logicians walk into a bar. The bartender asks Do all of you want a drink? The first logician says I don t know. The second logician says I don t know. The third logician says Yes! Why do engineers confuse Halloween and Christmas? Because Oct 31 = Dec 25 The programmer s wife tells him: Run to the store and pick up a loaf of bread. If they have eggs, get a dozen. The programmer comes home with 12 loaves of bread. A logician s wife is having a baby. The doctor immediately hands the newborn to the dad. His wife asks impatiently: So, is it a boy or a girl? The logician replies: yes. A programmer s wife sends him to the store and says get some bread, and while you re there pick up some eggs The programmer never returns. Prof. José Wilson 3 Lima Nerys 3 Microprocessadores
Prof. José Wilson 4 Lima Nerys 4 Microprocessadores
Linha do Tempo Octograma chinês (4000 ac) Pascaline Calculadora de Blaise Pascal (1642) Tear automático com cartão perfurado (1801) Computadores Z1, Z2 e Z3 (1936) Máquina de Von Newman Programa armazenado (1946) Ábaco (4000 ac) Logaritmo John Napier Tabela de Logaritmo (1614) Calculadora de 4 funções de Leibniz (1671) Máquina de diferenças e Analítica (Babbage) (1822) Computador Colosso Válvulas (Alan Turing) (1943) IBM 7090 Transistores Fortran Cobol Pascal (1960) Prof. José Wilson 5 Lima Nerys 5 Microprocessadores
Linha do Tempo 8008 8 bits (1972) 8085 8 bits (1976) 8088 16 bits (1979) ARM 32 bits (1983) Atmel AVR 8 bits (1996) Arduíno (Atmel AVR) 8 bits (2005) 4004 4 bits (1971) 8080 8 bits (1974) 8086 16 bits (1978) 8051 8 bits (1980) PIC 8 bits (1985) Pentium 200MMX 64 bits (1997) Raspberry pi (ARM) 32 bits (2011) Prof. José Wilson 6 Lima Nerys 6 Microprocessadores
Evolução dos Processadores Prof. José Wilson 7 Lima Nerys 7 Microprocessadores
Evolução dos Processadores Prof. José Wilson 8 Lima Nerys 8 Microprocessadores
Microprocessador 8085 8 bits, 5 MHz, 3600 transistores 1976 Evolução do microprocessadores Prof. José Wilson 9 Lima Nerys 9 Microprocessadores
Quantidade de Transistores 8085 (1976) 3.600 transistores (5 MHz) 370.000 instruções/segundo 8 bits. Dual Core (2007): 820 milhões de transistores 53.000 milhões de instruções/segundo 64 bits. Tecnologia: 45 nm. 3,33 GHz Prof. José Wilson 10Lima Nerys 10 Microprocessadores
Quantidade de Transistores e Memória Prof. José Wilson 11 Lima Nerys 11 Microprocessadores
Número de bits dos Registradores 1 nibble Bit 3 Bit 2 Bit 1 Bit 0 Decimal Menor valor positivo 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 Hexa 0 1 2 3 Maior valor positivo 1 1 1 1 15 F Capacidade: 2 4 = 16 nibbles Prof. José Wilson 12Lima Nerys 12 Microprocessadores
- + Prof. José Wilson 13Lima Nerys 13 Microprocessadores
Número de bits dos Registradores 1 byte Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 1 byte = 8 bits Menor valor positivo 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 Decimal 0 1 2 3 Hexa 00 01 02 03 Maior valor positivo 1 1 1 1 1 1 1 1 255 FF 14 Capacidade: 2 8 = 256 bytes Intervalo dos valores positivos e negativos (notação com sinal): 0 a 127 = 00h a 7Fh -1 a -128 = FFh a 80h Prof. José Wilson Lima Nerys 14 Microprocessadores
Número de bits dos Registradores 1 word = 16 bits Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Intervalo dos valores positivos 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 Capacidade: 2 16 = 65.536 words Intervalo dos valores positivos: 0 a 65.535 = 0000h a FFFFh Intervalo dos valores positivos e negativos (notação com sinal): 0 a 32.767 = 0000h a 7FFFh -1 a -32.768 = FFFFh a 8000h Prof. José Wilson Lima Nerys 15 Microprocessadores
Número de bits dos Registradores double word = 32 bits Bit 31 Bit 30 Bit 29 Bit 28 Bit 27 Bit 26 Bit 25 Bit 24 Bit 23 Bit22 Bit 21 Bit20 Bit 19 Bit18 Bit17 Bit 16 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Capacidade: 2 32 = 4.294.967.296 double-words Intervalo dos valores positivos: 0 a 4.294.967.295 = 0000 0000h a FFFF FFFFh Intervalos considerando números com sinal: Intervalo positivo: 0 a 2.147.483.647 = 0000 0000 a 7FFF FFFFh Intervalo negativo: -1 a -2.147.483.648 = FFFF FFFF a 8000 0000h Prof. José Wilson 16Lima Nerys 16 Microprocessadores
Quantidade de Transistores Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 2 transistores por bit Quanto maior o número de transistores, maior a quantidade possível de registradores Aumento no desempenho Prof. José Wilson 17Lima Nerys 17 Microprocessadores
Aumento do desempenho Universidade Federal de Goiás Frequência de Clock Ano Processador Frequência de Clock Tecnologia (tamanho transistor) 1971 4004 108 khz 10 µm 1972 8008 200 khz 1976 8085 5 MHz 1978 8086 5 a 10 MHz 1979 8088 5 a 10 MHz 1989 80486 25 a 50 MHz 1997 Pentium II 450 MHz 0,25 µm 1999 Pentium III 500 MHz até 1,2 GHz 0,25 µm 2004 Pentium 4 (Prescott) 4 GHz 90 nm 2007 Core 2 3,33 GHz 45 nm 2010 Core i5 3,33 GHz 32 nm Prof. José Wilson 18Lima Nerys 18 Microprocessadores
Índice de Desempenho de um Microprocessador (velocidade de processamento) Tempo de processamento = tempo ciclo número de ciclos instrução instruções programa 1. Aumento da frequência de clock 2. Aumento do número interno de bits 3. Aumento do número externo de bits 4. Aumento da capacidade e velocidade da memória cache 5. Redução do número de ciclos para execução de cada instrução 6. Execução de instruções em paralelo Prof. José Wilson 19Lima Nerys 19 Microprocessadores
Aumento de Clock O sinal de clock é responsável pelo sincronismo entre as unidades de processamento internas ao microprocessador e pelas unidades externas. Quanto maior a frequência de clock mais rápido o processamento. No entanto, não se pode aumentar de forma indefinida essa frequência. Isso pode causar falhas de processamento e sobreaquecimento. O aumento depende de pesquisas com o objetivo de reduzir o tamanho dos componentes básicos do microprocessador e aumento da quantidade de componentes, sem perda de estabilidade no funcionamento. Prof. José Wilson 20Lima Nerys 20 Microprocessadores
Aumento do número interno de bits Uma maior quantidade de bits dos registradores e dos barramentos internos permite a movimentação de uma maior quantidade de dados por unidade de tempo, aumentando o desempenho do microprocessador. Aumento do número externo de bits Um número maior de bits externos permite a movimentação de uma maior quantidade de dados por unidade de tempo com os periféricos, tais como memória, unidade de entrada e saída, controlador de acesso direto à memória (DMA). Prof. José Wilson 21Lima Nerys 21 Microprocessadores
Redução do número de ciclos para executar cada instrução A execução de uma instrução normalmente é feita em duas etapas: busca (onde a instrução é transferida da memória para a unidade de decodificação) e execução (onde os sinais de controle ativam, em uma sequência lógica, todas as unidades envolvidas na execução). No microprocessador 8085 as instruções mais rápidas são executadas em quatro ciclos de clock; as mais lentas, em até 16 ciclos de clock. A redução do número de ciclos de clock na execução de uma instrução torna o processamento mais rápido. Prof. José Wilson 22Lima Nerys 22 Microprocessadores
Aumento da capacidade e velocidade da memória cache Como já foi dito anteriormente, ao longo dos anos, o aumento de velocidade de processamento dos microprocessadores tem sido muito maior do que o aumento da velocidade de acesso à memória principal. Assim, a velocidade de acesso à memória principal torna-se um limitador de desempenho dos processadores. Em razão desse problema foi criada a memória cache. A memória cache (constituída de memória RAM estática) é usada para acelerar a transferência de dados entre a CPU e a memória principal (constituída de RAM dinâmica, de menor volume, porém mais lenta). O aumento da capacidade e da velocidade da memória cache resulta no aumento da velocidade de transferência de dados entre a CPU e a memória principal e, consequentemente, resulta no aumento do desempenho global do sistema. Prof. José Wilson 23Lima Nerys 23 Microprocessadores
Execução de instruções em paralelo O microprocessador 8085 compartilha um barramento comum entre suas unidades internas e seus periféricos, o que significa dizer que não permite a execução simultânea de duas operações que utilizem o barramento. Assim, apenas uma instrução é executa por vez. Uma arquitetura que permita que duas ou mais operações sejam executadas simultaneamente torna o processamento mais rápido. Prof. José Wilson 24Lima Nerys 24 Microprocessadores
Microprocessador Microcontrolador Microcontrolador Microprocessador Memória de Programa Unidade Lógica e Aritmética (ULA) Unidade de Temporização e Controle Memória de Dados Registro de Instruções e Decodificador de Instruções Registradores Unidade de Entrada e Saída Prof. José Wilson 25Lima Nerys 25 Microprocessadores
Microprocessador Unidade Lógica e Aritmética (ULA) Unidade de Temporização e Controle Registro de Instruções e Decodificador de Instruções Registradores Microcontrolador Registradores - São usados para o Memória de Programa armazenamentos internos da CPU. Existem diversos registradores na CPU e o principal deles é chamado de Acumulador. Os registradores Memória são de construídos Dados com flip-flops, que podem reter (armazenar) dados. O acumulador contém um dos dados usados na operação que se deseja e ainda o resultado da Unidade de Entrada e Saída operação, que substitui o dado original. Prof. José Wilson 26Lima Nerys 26 Microprocessadores
Unidade Lógica e Aritmética (ULA ou ALU) - realiza funções básicas de processamento de dados (adição, subtração, funções lógicas, etc.). Microcontrolador Microprocessador Memória de Programa Unidade Lógica e Aritmética (ULA) Unidade de Temporização e Controle Memória de Dados Registro de Instruções e Decodificador de Instruções Registradores Unidade de Entrada e Saída Prof. José Wilson 27Lima Nerys 27 Microprocessadores
Microprocessador Unidade Lógica e Aritmética (ULA) Unidade de Temporização e Controle Microcontrolador Unidade de Temporização e Controle: Memória de Programa Responsável pela geração dos sinais de controle para todas as unidades, a partir da informação da Unidade de Decodificação. Os sinais de controle são sincronizados, de acordo com o sinal de clock. Memória de Dados Registro de Instruções e Decodificador de Instruções Registradores Unidade de Decodificação: Registrador de Instruções e Decodificador de Instruções Unidade de Entrada e Saída Responsável pela identificação da instrução a ser executada, a partir do código de operação (opcode). Prof. José Wilson 28Lima Nerys 28 Microprocessadores
Memória de Programa: ROM (Read-Only Memory) Memória que permite apenas a leitura, ou seja, as suas informações são gravadas pelo fabricante uma única vez e após isso não podem ser alteradas ou apagadas, somente acessadas. Microprocessador Unidade Lógica e Aritmética (ULA) Microcontrolador Memória de Programa Unidade de Temporização e Controle PROM (Programmable Read-Only Memory) Podem ser escritas com dispositivos especiais mas não podem mais ser apagadas. Memória de Dados Registro de Instruções e Decodificador de Instruções EPROM (Erasable Programmable Read-Only Memory) Podem ser apagadas pelo uso de radiação ultravioleta permitindo sua reutilização. Exemplo para o caso do 8051: Microcontrolador 8751 Registradores EEPROM Permite apagar eletricamente e gravar várias vezes. Unidade de Entrada e Saída FLASH Equivalente à memória EEPROM. Porém, ocupa menos espaço; menor consumo de energia; alta durabilidade. Prof. José Wilson 29Lima Nerys 29 Microprocessadores
Memória de Programa Universidade Federal de Goiás Unidade Lógica e Aritmética (ULA) Memória de Dados: Unidade de Temporização e Controle Memória de Dados Registro de Instruções e Decodificador de Instruções Memória RAM Permite a leitura e a gravação de dados. Registradores Unidade de Entrada e Saída Memória Dinâmica (DRAM) Baixa densidade, mas lenta. Capacitores com circuitos com atualização de dados - refresh. Memória estática (SRAM) Alta densidade. Rápida. Baseada em Flip-flops. Memória CACHE - Pequena quantidade de memória RAM estática (SRAM) usada para acelerar o acesso à memória principal (RAM dinâmica). Quando há necessidade de transferir dados da (para) memória dinâmica, estes são antes transferidos para a memória cache Prof. José Wilson 30Lima Nerys 30 Microprocessadores
Unidade de Entrada e Saída (I/O) Microprocessador A entrada de dados de um microprocessador (via teclado, mouse ou outros Unidade Lógica e Aritmética dispositivos) e a saída de dados (via (ULA) vídeo, impressora ou outros) exige circuito integrado adicional como interface. Unidade de Temporização e Controle O microcontrolador já possui essa unidade internamente. Exemplos de periféricos usados como unidade de entrada e saída: Registro de Instruções e Decodificador de Instruções CI 8156 RAM e porta de entrada e saída Microcontrolador Memória de Programa Memória de Dados CI 8355 ROM e portas de Registradores entrada e saída) Unidade de Entrada e Saída Prof. José Wilson 31Lima Nerys 31 Microprocessadores
Ferramentas do Curso: 1. Simulador do Microprocessador 8085: ABACUS 2. Programas aplicados ao microcontrolador 8051: Edição e Compilação: MCU 8051 IDE Simulação: MCU 8051 IDE e Proteus 3. Simulador do PIC MPLAB X IDE Prof. José Wilson 32Lima Nerys 32 Microprocessadores
Arquitetura RISC x Arquitetura CISC Prof. José Wilson 33Lima Nerys 33 Microprocessadores
Arquitetura RISC Memória de Programa Unidade de Controle Memória de Dados Arquitetura CISC Memória de Programa Unidade de Entrada e Saída Unidade de Controle Memória de Dados Registradores Prof. José Wilson 34Lima Nerys 34 Microprocessadores
Arquiteturas em uso nos computadores atuais: CISC Complex Instruction Set Computing (Computador com Conjunto Complexo de Instruções) Exemplos: Intel e AMD RISC Reduced Instruction Set Computing (Computador com Conjunto Reduzido de Instruções) Exemplos: PowerPC (da Apple, Motorola e IBM), SPARC (SUN) e MIPS R2000 Híbrida Combinação de ambas arquiteturas. Exemplo: Pentium Pro. O núcleo mais interno usa filosofia RISC. Prof. José Wilson 35Lima Nerys 35 Microprocessadores
Algumas Características RISC X CISC: RISC Instruções básicas executadas em apenas 1ciclo uso intenso de superposição na execução de instruções (através de pipeline) Uso reduzido da memória basicamente 2 instruções de acesso à memória (load/store). Instruções de tamanho fixo. Exemplo: as instruções do PIC 16F628 têm tamanho fixo de 14 bits. Muitos registradores. Exemplo: PIC típico possui de 32 a 128 registradores. Não há necessidade de decodificação das instruções antes de executá-las. As instruções são semelhantes às micro-instruções da arquitetura CISC. As instruções são executadas diretamente no hardware CISC No mínimo 4 ciclos de clock (8085) para executar uma instrução. Tem pouca ou nenhuma superposição na execução de instruções Muitas instruções com acesso à memória. Uso intenso da memória (load, store, mov... ) Instruções de tamanho variável. Exemplo: 8085 tem instruções de 1, 2 e 3 bytes. Poucos registradores. Exemplo: 8085 possui 7 registradores de propósito geral (A, B, C, D, E, H e L) Ciclo de busca inclui busca na memória e identificação em decodificadores. Uso de micro-instruções gravadas no processador. Necessidade de interpretação das instruções Prof. José Wilson 36Lima Nerys 36 Microprocessadores
Algumas Características RISC X CISC: RISC Número pequeno (ou médio de instruções). Exemplo: PIC 12 e PIC 16 possuem 32 instruções. Instruções simples 1 ciclo para execução Programa compilado tem maior número de instruções em assembly, comparado com mesmo programa implementado em arquitetura CISC. Uso maior de memória CISC Número elevado de instruções. Exemplo: 8085 possui cerca de 74 instruções, que resultam em cerca 255 códigos de operação (opcodes) Instruções complexas múltiplos ciclos para execução. Menor número de instruções assembly, comparado com mesmo programa implementado em arquitetura RISC. No entanto, é mais lento na execução. Uso de uma quantidade menor de memória. Prof. José Wilson 37Lima Nerys 37 Microprocessadores
Algumas Características RISC X CISC: Tempo de processamento = tempo ciclo número de ciclos instrução instruções programa Na arquitetura RISC, esse é um item fundamental para aumento do desempenho a execução em paralelo de instruções (com pipeline) reduz o número de ciclos na execução de cada instrução. Na arquitetura CISC, esse é um item fundamental para aumento do desempenho o número de instruções por programa pode ser reduzido, uma vez que cada instrução executa várias tarefas. Prof. José Wilson 38Lima Nerys 38 Microprocessadores
Etapas de execução de uma instrução: Prof. José Wilson 39Lima Nerys 39 Microprocessadores
CONJUNTO DE INSTRUÇÕES: Grupos de instruções mais comuns em processadores de qualquer arquitetura: Instruções de desvio (No CISC o valor de retorno é guardado na pilha; no RISC é guardado em um registrador. Instruções de transferência entre registradores e memória (No RISC: load/store; no CISC: load, store, mov etc) Instruções de transferência entre registradores Instruções de transferência entre posições de memória Operações aritméticas (soma, subtração...) Operações lógicas (and, or, not, rotação...) Prof. José Wilson 40Lima Nerys 40 Microprocessadores
CICLO DE EXECUÇÃO: RISC As instruções são executadas em um único ciclo de via de dados. São instruções muito parecidas com as micro-instruções da arquitetura CISC. Não precisam de decodificação. Não é possível ter instruções de multiplicação e divisão, por exemplo, por exigir muitos ciclos para execução. Multiplicações são resolvidas com adições e deslocamentos. CISC Antes de executar uma instrução, há necessidade de busca da instrução na memória e de decodificação. Utiliza-se micro-códigos gravados no processador, para a execução das instruções. Prof. José Wilson 41Lima Nerys 41 Microprocessadores
MEMÓRIA E REGISTRADORES: RISC Possui uma quantidade muito grande de registradores (em média 512 com 32 visíveis por vez: 8 para variáveis globais e ponteiros, 8 para parâmetros de entrada, 8 para variáveis locais e 8 para parâmetros de saída). Número reduzido de acesso à memória (o acesso à memória torna o processamento mais lento). Alocação de variáveis em registradores. Um ou dois modos de endereçamento para acesso à memória CISC Possui um número reduzido de registradores, comparado com o RISC. Alocação de variáveis em posições de memória, ao invés de registradores. Vários modos de endereçamento para acesso à memória. Prof. José Wilson 42Lima Nerys 42 Microprocessadores
MICRO-CÓDIGOS: RISC As instruções geradas por um compilador para uma máquina RISC são executadas diretamente no hardware, sem o uso de micro-códigos. A ausência de interpretação contribui para o aumento da velocidade de execução. CISC As instruções básicas são gravadas na forma de micro-códigos, que atuam no hardware estabelecendo os passos de cada instrução. Há necessidade de busca e decodificação das instruções. O programa compilado tem uma quantidade menor de instruções assembly do que um programa RISC, mas é mais lento na execução. Prof. José Wilson 43Lima Nerys 43 Microprocessadores
PIPELINE: Técnica usada para acelerar a execução de instruções. A cada ciclo de clock, enquanto uma instrução está na etapa de execução, a instrução seguinte está sendo buscada. O resultado global é que, a cada ciclo, uma nova instrução é iniciada e uma instrução é encerrada. No caso mostrado a instrução B faz referência à memória. Ciclos 1 2 3 4 5 Busca da instrução A B C D E Execução da instrução A B C D Referência à memória B Prof. José Wilson 44Lima Nerys 44 Microprocessadores
PIPELINE: Enquanto a instrução A precisa de apenas um ciclo para busca e um para execução, a instrução B precisa de dois ciclos para execução. Caso a instrução B interfira na etapa de execução da instrução C (por exemplo, usando o mesmo registrador ou quando a instrução C precisa do resultado da instrução B) é necessário aguardar o término da instrução B antes de executar a instrução C. Ciclos 1 2 3 4 5 6 Busca da instrução A B C NOP D E Execução da instrução A B NOP C D Referência à memória B Prof. José Wilson 45Lima Nerys 45 Microprocessadores
VANTAGENS RISC: Velocidade de execução O uso de pipeline torna os processadores RISC duas a quatro vezes mais rápidos que um CISC de mesmo clock Simplicidade de Hardware Ocupa menos espaço no chip, devido ao fato de trabalhar com instruções simples. Instruções de máquina simples e pequenas, o que aumenta sua performance. Prof. José Wilson 46Lima Nerys 46 Microprocessadores
DESVANTAGENS RISC: O desempenho de um processador RISC depende diretamente do código gerado pelo programador. Um código mal desenvolvido pode resultar em tempo de execução muito grande. Um programa originalmente compilado para uma máquina CISC tem um equivalente compilado para máquina RISC com uma quantidade muito maior de códigos assembly, ocupando um espaço maior na memória. A arquitetura RISC requer sistema de memória rápida para alimentar suas instruções. Normalmente possuem grande quantidade de memória cache interna, o que encarece o projeto. Prof. José Wilson 47Lima Nerys 47 Microprocessadores
Prof. José Wilson 48Lima Nerys 48 Microprocessadores
Característica Microprocessador 8085 Microprocessador 8088 Microprocessador 8086 Barramento de endereço 16 bits 20 bits 20 bits Capacidade de endereçamento de memória 65.536 ( 64 kb ) 1.048.576 ( 1 MB ) Barramento de dados 8 bits Interno: 16 bits Externo: 8 bits 1.048.576 ( 1 MB ) Interno: 16 bits Externo: 16 bits Manipulação de STRINGS NÃO SIM SIM Registradores Internos 8 bits e 16 bits 16 bits 16 bits Uso de segmentação para endereçamento 8085 8086 / 8088 NÃO SIM SIM Aritmética Decimal completa NÃO SIM SIM Etapas de Busca e Execução Em sequência: Busca Executa Unidades Independentes: Unidade de Interfaceamento com Barramento (BIU) responsável pela Busca e Unidades Independentes: Unidade de Interfaceamento com Barramento (BIU) responsável pela Busca e Unidade de Execução (EU) Unidade de Execução (EU) Prof. José Wilson 49Lima Nerys 49 Microprocessadores
8085 8086 / 8088 Registradores do 8085 Registradores do 8088 / 8086 A Acumulador AH AL (A) AX Acumulador Primário H L Apontador de dados BH BL BX Acumulador e Registrador Base B C CH CL CX Acumulador e Contador D E DH DL DX Acumulador e Endereçador de I/O SP Apontador de pilha SP Apontador de pilha BP SI DI Apontador base usado na pilha Índice da Fonte usado para indexação Índice de Destino usado para indexação PC Contador de Programa IP Ponteiro de Instrução CS Segmento de Código Registradores de DS Segmento de Dados segmento. São usados para a SS Segmento de Pilha formação do ES Segmento Extra endereço absoluto. FLAGS Registrador de Flags FLAGS Registrador de Flags Prof. José Wilson 50Lima Nerys 50 Microprocessadores
Arquitetura do 8085 Prof. José Wilson 51Lima Nerys 51 Microprocessadores
Arquitetura do 8085 (detalhe) Prof. José Wilson 52Lima Nerys 52 Microprocessadores
Arquitetura do 8086/88 Prof. José Wilson 53Lima Nerys 53 Microprocessadores
Arquitetura do 8051 Universidade Federal de Goiás Prof. José Wilson 54Lima Nerys 54 Microprocessadores
Arquitetura do PIC 16F Universidade Federal de Goiás Barramento de instrução Barramento de dados Prof. José Wilson 55Lima Nerys 55 Microprocessadores
Princípio de Funcionamento 8085 LOAD CLOCK ENABLE A B Chave de 3 estados LOAD CLOCK LOAD CLOCK ENABLE C D ENABLE LOAD CLOCK ENABLE Prof. José Wilson 56Lima Nerys 56 Microprocessadores
Célula básica de um registrador: CARREGA (LOAD) Entrada X CLK D Flipflop Q HABILITA SAÍDA (OE) Saída Y Chave 3 estados Linha do barramento CARREGA REGISTRADOR (LOAD) HABILITA SAÍDA (OUTPUT ENABLE) (OE) COMENTÁRIO 0 0 Registradores isolados do barramento. Barramento flutuando 0 1 Transfere dados do registrador para o barramento 1 0 Carrega o registrador com os dados do barramento Prof. José Wilson 57Lima Nerys 57 Microprocessadores
Princípio de Funcionamento 8085 MOV D,A LOAD CLOCK A = 15 H LOAD ENABLE B CLOCK LOAD 15 H ENABLE CLOCK C LOAD ENABLE D D = 15 H CLOCK ENABLE Prof. José Wilson 58Lima Nerys 58 Microprocessadores
Frequência de Clock CLK f Ciclo de Clock clock f cristal 2 8085A: f cristal = 500 khz a 3,125 MHz 8085A-2: f cristal = 500 khz a 5 MHz Exemplo: Se f cristal = 2 MHz f clock = 1 MHz T clock = 1 s Prof. José Wilson 59Lima Nerys 59 Microprocessadores
Ciclos de Clock, de Máquina e de Instrução Ciclo de Instrução Ciclo de Instrução Ciclo de Máquina 1: M1 Ciclo de Máquina 2 : M2 CLK Estados T1 T2 T3 T4 T1 T2 T3 Ciclo de Busca Ciclo de Execução Ciclo de Execução Prof. José Wilson 60Lima Nerys 60 Microprocessadores
Diagrama de Temporização M1 M2 CLK Estados T1 T2 T3 T4 T1 T2 T3 ALE PC FORA PC+1 PC INST IR PC FORA PC+1 PC INST IR A15-A8 PC H PC H AD7-AD0 PC L INST PC L INST Prof. José Wilson 61Lima Nerys 61 Microprocessadores
M1 M2 T1 T2 T3 T4 T1 T2 T3 PC FORA PC+1 PC INST IR SBE PC FORA PC+1 PC INST IR A15-A8 PC H PC H AD7-AD0 PC L INST PC L INST ALE RD\ WR\ IO-M\ Prof. José Wilson 62Lima Nerys 62 Microprocessadores
Princípio de Funcionamento 8088/8086: A BIU coloca o conteúdo do IP (que é somado ao registrador CS) no barramento para efetuar a busca de instrução; O registrador IP é incrementado (aponta para a próxima instrução); A instrução lida é passada para a fila; A EU pega a primeira instrução da fila; Enquanto a EU executa esta instrução a BIU faz uma nova busca de instrução para preencher a fila. Se a instrução a ser executada pela EU for muito demorada a BIU preenche toda a fila. Prof. José Wilson 63Lima Nerys 63 Microprocessadores
Princípio de Funcionamento 8088/8086: Há 2 situações em que não são aproveitadas as instruções contidas na fila. São elas: Na execução de instruções de desvio. Neste caso a fila é descartada (ou seja, é sobrescrita); Quando a instrução faz referência à memória. Prof. José Wilson 64Lima Nerys 64 Microprocessadores
Segmentação Consiste em combinar 2 registradores de 16 bits para gerar um endereço de memória de 20 bits (2 20 = 1.048.576 = 1 Mb) Registrador de Segmento + Registrador de Offset Endereço Físico = (Conteúdo do Registrador de Segmento) 16 + (Conteúdo do Registrador de Offset) Prof. José Wilson 65Lima Nerys 65 Microprocessadores
Endereço Físico (ou absoluto) XXXX0 0YYYY Registrador de Segmento (16 bits) 15 0 Extra Segment - ES Code Segment - CS Stack Segment - SS Data Segment - DS Registrador de Offset (16 bits) 15 0 Stack Pointer - SP Base Pointer - BP Source Index - SI Destination Index - DI Prof. José Wilson 66Lima Nerys 66 Microprocessadores
Vantagens da Utilização de Memória Segmentada Por haver uma área específica para armazenamento de código 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 várias entradas de dados). Programas que referenciam endereços lógicos (0000 a FFFF no caso do 8088) podem ser carregados em qualquer espaço (físico) da memória (00000 a FFFFF): possibilita a realocação de programas. Prof. José Wilson 67Lima Nerys 67 Microprocessadores
Memória Offset + Byte Endereçado Segmento 16 Início do Segmento Exemplo 1: Exemplo 2: Segmento = 2000H; Offset = 2000H Representação: 2000H:2000H Endereço Físico = 20000H + 02000H = 22000H Segmento = 4000H; Offset = 2000H Representação: 4000H:2000H Endereço Físico = 40000h + 02000h = 42000h Prof. José Wilson 68Lima Nerys 68 Microprocessadores
Alocação de diferentes regiões para diferentes conjuntos de dados F F F F F H Offset + CS 16 Offset + DS 16 Offset + ES 16 Offset + SS 16 64 kb 64 kb 64 kb 64 kb 0 0 0 0 0 H Prof. José Wilson 69Lima Nerys 69 Microprocessadores
Princípio de Funcionamento 8051 T clock f 1 clock Se f = 12 MHz Se f = 11.0592 MHz T T máquina T máquina máquina 12 T 12 12MHz Prof. José Wilson 70Lima Nerys 70 Microprocessadores 12 11,0592 clock 1 s MHz 12 f clock 1,085 s
Princípio de Funcionamento 8051 Estado S1: a próxima instrução é buscada na ROM, colocada no barramento principal e encaminhada para o registrador IR. Estado S2: a instrução é decodificada e o PC é incrementado. Estado S3: os operandos da instrução são preparados Prof. José Wilson 71Lima Nerys 71 Microprocessadores
Princípio de Funcionamento 8051 Estado S4: os operandos são enviados para os registradores temporários TMP1 e TMP2, na entrada da ULA Estado S5: a ULA executa a instrução Estado S6: o resultado da ULA é colocado no barramento principal e encaminhado para o registrador final. Prof. José Wilson 72Lima Nerys 72 Microprocessadores
Formato das Instruções do 8085 Tipo de instrução 1 byte 2 bytes 3 bytes Características O byte da instrução é o próprio Opcode (código de operação) O primeiro byte é o Opcode e o segundo byte é o Dado de 8 bits necessário para a instrução O primeiro byte é o Opcode; o segundo e o terceiro bytes correspondem a um dado de 16 bits. Exemplos MOV A,C ADD B RLC DCR C MVI A,35H ADI 05H ORI 01H LDA 2030H STA 2040H LXI H,2080H Prof. José Wilson 73Lima Nerys 73 Microprocessadores
Formato das Instruções do 8051 OPCODE OPCODE REG 1 Byte OPCODE OPERANDO OPCODE ENDEREÇO DE 11 BITS 2 Bytes OPCODE ENDEREÇO DE 16 BITS 3 Bytes OPCODE OPERANDO 1 OPERANDO 2 Prof. José Wilson 74Lima Nerys 74 Microprocessadores
Formato das Instruções do PIC 16F628 Todas as instruções tem 14 bits Tipo 1: Operações com registradores orientadas por byte 13 8 7 6 5 4 3 2 1 0 OPCODE d f (Endereço do registrador) OPCODE Código da operação d = 0 o destino do resultado é o registrador W d = 1 o destino do resultado é o registrador f f Registrador de endereços de 7 bits (operando) Prof. José Wilson 75Lima Nerys 75 Microprocessadores
Formato das Instruções do PIC 16F628 Tipo 2: Operações com registradores orientadas por bit 13 10 8 7 6 5 4 3 2 1 0 OPCODE b f (Endereço do registrador) OPCODE Código da operação b Endereço de 3 bits f Registrador de endereços de 7 bits (operando) Prof. José Wilson 76Lima Nerys 76 Microprocessadores
Formato das Instruções do PIC 16F628 Tipo 3: Operações de controle e literal 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OPCODE k (literal) OPCODE Código da operação k Indicam um valor constante ou literal Prof. José Wilson 77Lima Nerys 77 Microprocessadores
Formato das Instruções do PIC 16F628 Tipo 4: Operações de desvio 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OPCODE k (literal) OPCODE Código da operação k Indicam um valor constante ou literal de 11 bits Prof. José Wilson 78Lima Nerys 78 Microprocessadores
Modos de Endereçamento 8085 8086/8088 Imediato MVI A,15H Imediato MOV AX, 1000H Por registrador MOV A,B Por registrador MOV AX,BX Direto JMP 2005H Absoluto ou direto MOV AX,[1000H] Indireto por registrador MOV M,A Indireto por registrador Indexado Baseado Baseado e indexado Baseado e indexado com deslocamento Strings MOV AX,[BX] MOV AX,0100H[BX] MOV [BX + 0100H], AX MOV AX, [BX+SI] MOV AX, [BX+SI+5] MOVSB Prof. José Wilson 79Lima Nerys 79 Microprocessadores
Transferência de dados Aritmético Lógico Desvio Grupos de Instruções 8085 8086/8088 MOV A,B MVI A,15H ADD B SUB B ANA B ORI 0FH JMP 2005H JNZ 2010H Transferência de dados Aritmético Lógico Desvio Controle, Pilha, E/S PUSH PSW Controle Strings MOV AX,BX MOV DL,23H ADD SI,DX SUB AX,DX NOT BX AND CX,DX JMP BX CLC STC MOVSB STOSW Prof. José Wilson 80Lima Nerys 80 Microprocessadores
Tabela de Opcodes do 8085 Universidade Federal de Goiás Prof. José Wilson 81Lima Nerys 81 Microprocessadores
Exemplo 1 de Programa para o 8085 Endereço Código Mnemônico Comentário 2000H 3E 30 MVI A,30H Acumulador A recebe o valor 30 H 2002H 06 80 MVI B,80H Registrador B recebe o valor 80H 2004H 4F MOV C,A Copia em C o conteúdo de A 2005H 80 ADD B Faz A A + B. A recebe o resultado da soma A+B 2006H 76 HLT Encerra programa 82 82 Prof. José Wilson Lima Nerys 82 Microprocessadores
Exemplo 2 de Programa para o 8085 Endereço Código Mnemônico Comentário 2000H 3E 30 MVI A,02H Acumulador recebe valor 02H 2002H 06 80 OUT 20H Configura Porta 21H como entrada e 22H como saída 2004H DB 21 IN 21H Carrega no acumulador o conteúdo das chaves 2006H D3 22 OUT 22H Transfere para os Leds da porta 22H o conteúdo de A 2008H C3 02 20 JMP 2004 Volta para o endereço 2004H 200AH 76 HLT Encerra programa 83 83 Prof. José Wilson Lima Nerys 83 Microprocessadores
Exemplo 3 de Programa para o 8085 Endereço Código Mnemônico Comentário 2000H 3E 30 MVI A,02H Acumulador recebe valor 02H 2002H 06 80 OUT 20H Configura Porta 21H como entrada e 22H como saída 2004H 16 08 MVI D,08H Registrado D recebe o valor 08H 2006H DB 21 IN 21H Carrega no acumulador o conteúdo das chaves 2008H D3 22 OUT 22H Transfere para os Leds da porta 22H o conteúdo de A 200AH 07 RLC Rotaciona conteúdo de A para a esquerda 200BH 15 DCR D Decrementa conteúdo do registrador D 200CH C2 08 20 JNZ 2008H Se D =/= 0, volta para o endereço 2008H 200FH C3 04 20 JMP 2004H Pula para o endereço 2004H 2012H 76 HLT Encerra programa 84 84 Prof. José Wilson Lima Nerys 84 Microprocessadores
Flags no 8085 Registrador F: Registra o estado da última operação realizada na ULA Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 S Z AC P CY Prof. José Wilson 85Lima Nerys 85 Microprocessadores
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 S Z AC P CY Flag de Sinal: Assume valor 0 para número positivo (bit 7 = 0) e 1 para negativo (bit 7 = 1) Flag de Zero: Assume valor 0 para número diferente de zero e 1 para número igual a zero. Flag Auxiliar de Carry: Assume valor 1 quando há transporte do Bit 3 para o Bit 4 Prof. José Wilson 86Lima Nerys 86 Microprocessadores
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 S Z AC P CY Flag de Paridade: Assume valor 1 quando há uma quantidade par de dígitos 1 no acumulador. Assume valor 0 quando há uma quantidade ímpar. Flag de Carry: Assume valor 1 quando há transporte do Bit 7 para o bit 8 (O Bit 8 é fora do acumulador) Prof. José Wilson 87Lima Nerys 87 Microprocessadores
Exemplo de Operação com Flag do 8085 Bit 7 Bit 6 Bit5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Vai 1 1 1 1 1 A = 85H 1 0 0 0 0 1 0 1 B = 9CH 1 0 0 1 1 1 0 0 A A + B 0 0 1 0 0 0 0 1 S = 0 O último bit (bit 7) do resultado, no acumulador, é zero Z = 0 O resultado da operação é diferente de zero AC = 1 Houve um vai 1 do bit 3 para o bit 4 P = 1 Há uma quantidade par de dígitos 1 no resultado CY = 1 Houve um vai 1 do bit 7 para fora do acumulador (bit 8) 88 Prof. José Wilson Lima Nerys 88 Microprocessadores 88
Registrador de Flags 8051 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CY AC F0 RS1 RS0 OV P Carry Auxiliar de Carry Uso Geral Overflow Paridade RS1 RS0 Banco Selecionado 0 0 0 0 1 1 1 0 2 1 1 3 Prof. José Wilson 89Lima Nerys 89 Microprocessadores
Registrador de Flags 8051 OV overflow A flag de overflow é setada quando há um carry do bit 7, mas não do bit 6 ou um carry do bit 6, mas não bit 7. A flag de overflow é útil em operações com número sinalizado representados na forma de complemento de 2. Há duas situações que resultam em OV setado: Se a soma de dois números positivos for maior que 7F H e menor que FFH a flag de overflow indica que o número não deve ser interpretado como número negativo. Se a soma de dois números negativos (bit 7 = 1) resultar em um número no intervalo de 00 H a 7F H (ou 100 H a 17F H, considerando a flag de carry, que sempre estará presente nessa situação), a flag de overflow indicará que o número não é pra ser interpretado como número positivo. Prof. José Wilson 90Lima Nerys 90 Microprocessadores
Exemplos para a flag de overflow: 1. MOV A,#100 64H = 0 1 1 0:0 1 0 0 ADD A,#44 2CH = 0 0 1 0:1 1 0 0 Registrador de Flags 8051 Resultado: 144 = 90 H = 1 0 0 1:0 0 0 0 (OV = 1) Decimal Hexadecimal 1 1 1 1 100 64H 0 1 1 0 0 1 0 0 44 2CH 0 0 1 0 1 1 0 0 144 90H 1 0 0 1 0 0 0 0 Há transporte do bit 6 para o 7, mas não há do bit 7 para o bit 8. Os dois números (64H e 2CH) são positivos na operação com sinal. Assim, o resultado deve ser interpretado como número positivo, mesmo tendo bit 7 igual a 1. Prof. José Wilson 91Lima Nerys 91 Microprocessadores
Exemplos para a flag de overflow: Registrador de Flags 8051 2. ADD,#01H (Ao resultado da operação anterior: 90H) Resultado: 145 = 91 H = 1 0 0 1:0 0 0 1 (OV = 0) 144 90H 1 0 0 1 0 0 0 0 01 01H 0 0 0 0 0 0 0 1 145 91H 1 0 0 1 0 0 0 1 Não há transporte do bit 6 para o 7, nem do bit 7 para o bit 8. O número 90H é negativo nas operações com sinal e o número 01H é positivo. Nesse caso não há flag de overflow. Prof. José Wilson 92Lima Nerys 92 Microprocessadores
Pilha no 8085 e 8051 Prof. José Wilson 93Lima Nerys 93 Microprocessadores
Região de memória usada para guardar endereço de retorno e valores temporários Instruções que usam a pilha: CALL RET PUSH POP Interrupções SP Endereço Mnemônico Código 2000 H LXI SP,20FFH 31 FF 20 2003 H 2004 H xxxxx xxxxx xxxxx xxxxx 20FF H Prof. José Wilson 94Lima Nerys 94 Microprocessadores
Transferência de dados envolve sempre um par de bytes 16 bits O byte mais significativo é sempre guardado primeiro na pilha O byte menos significativo é retirado primeiro da pilha O Ponteiro de Pilha SP aponta sempre para o topo da pilha (último valor armazenado) Registradores utilizados PSW A + Flags B B + C D D + E H H + L Prof. José Wilson 95Lima Nerys 95 Microprocessadores
PUSH reg16 guarda conteúdo do registrador de 16 bits na pilha 1. O valor de SP é decrementado em 1 2. O byte mais significativo é armazenado na posição SP 1 3. O valor de SP é decrementado em 1 4. O byte menos significativo é armazenado na posição SP 2 POP reg16 carrega registrador de 16 bits com conteúdo da pilha 1. O conteúdo apontado por SP é copiado para o byte menos significativo 2. O valor de SP é incrementado em 1 3. O conteúdo apontado por SP + 1 é copiado para o byte mais significativo 4. O valor de SP é incrementado em 1 Prof. José Wilson 96Lima Nerys 96 Microprocessadores
Exemplo: A = 01 H, F = 23 H, B = 45 H, C = 67 H F A PUSH PSW Endereço da RAM 2089 208A 208B 208C 208D Conteúdo 208E 23 208F 01 2090 SP após a instrução: 208Eh Flags SP inicial: 2090h PUSH B Endereço da RAM 2089 208A 208B Conteúdo 208C 67 208D 45 208E 23 208F 01 2090 SP após a instrução: 208Ch C B Prof. José Wilson 97Lima Nerys 97 Microprocessadores F A
Exemplo: A = 01 H, F = 23 H, B = 45 H, C = 67 H F A Endereço da RAM 2089 208A 208B Conteúdo 208C 67 208D 45 208E 23 208F 01 2090 POP B SP após a instrução: 208Eh POP PSW Endereço da RAM 2089 208A 208B Conteúdo 208C 67 208D 45 208E 23 208F 01 2090 SP após a instrução: 2090h C B Prof. José Wilson 98Lima Nerys 98 Microprocessadores F A
Pilha Exemplo de aplicação Endereço Mnemônico Código 2000 H LXI SP,2040H 31 40 20 2003 H MVI A,20H 3E 20 2005 H PUSH PSW F5 2006 H CALL MOSTRAA CD 6E 03 2009 H POP PSW F1 200A H ADI 01H C6 01 200C H JNZ 2005 H DA 05 20 200F H JMP 2003 C3 03 20 2022 H Prof. José Wilson 99Lima Nerys 99 Microprocessadores
Pilha no 8051 Transferência de dados envolve dados de 8 bits e 16 bits. Registradores de 16 bits, como DPTR, são guardados em duas operações PUSH e retiradas em duas operações POP Exemplos: PUSH ACC Guarda conteúdo do acumulador PUSH DPH Guarda 8 bits mais significativos do DPTR PUSH DPL Guarda 8 bits menos significativos do DPTR POP ACC Recupera conteúdo do acumulador Prof. José Wilson 100Lima Nerys 100 Microprocessadores
Ao contrário do 8085, o apontador de pilha SP é incrementado no 8051, nas operações PUSH. PUSH reg8 guarda conteúdo do registrador de 8bits na pilha 1. O valor de SP é incrementado em 1 2. O byte é armazenado na posição SP + 1 POP reg8 carrega registrador de 8bits com conteúdo da pilha 1. O conteúdo apontado por SP é copiado para o registrador indicado 2. O valor de SP é decrementado em 1 Prof. José Wilson 101Lima Nerys 101 Microprocessadores
Diferenças básicas entre o uso da Pilha no 8051 e no 8085 Característica 8085 8051 Variação do apontador de pilha SP Região da memória Tamanho do dado guardado SP é decrementado nas operações para guardar valores na pilha (PUSH, CALL, chamada de interrupção) A região da pilha é a mesma do programa do usuário, podendo haver sobreposição São movimentados 16 bits em cada operação de pilha SP é incrementado nas operações para guardar valores na pilha (PUSH, CALL, chamada de interrupção) A pilha é reservada na memória RAM e o programa na memória ROM, não havendo risco de sobreposição São movimentados 8 bits nas operações PUSH e POP e 16 bits nas operações LCALL, RET e chamadas de interrupção. Prof. José Wilson 102Lima Nerys 102 Microprocessadores
Exemplo de Programa com uso da Pilha 8085 Universidade Federal de Goiás Endereço Mnemônico Comentário Endereço Dados 2000H LXI SP,2070 Apontador de Pilha recebe valor 2070H 2050H 70H 2003H LXI H,2050 Registradores H e L recebem valores H=20H e L=50H 2051H 35H 2006H MVI D,10H Registrador D como Contador. D = 10H = 16 decimal 2052H 00H 2008H MOV A,M Acumulador recebe valor da posição apontada pelo par HL 2053H F7H 2009H CPI 50H Compara conteúdo de A com 50H. Altera as Flags Z e CY 2054H 55H 200BH JC 2016H Se a Flag CY = 1, desvia para mostrar conteúdo de A 2055H 70H 200EH CPI 95H Compara conteúdo de A com 95H. Altera as Flags Z e CY 2056H 65H 2010H JC 201DH Se a Flag CY = 1, pula, para NÃO mostrar conteúdo de A 2057H A1H 2013H JZ 201DH Se a Flag Z = 1, pula, para NÃO mostrar conteúdo de A 2058H C5H 2016H PUSH H Guarda na Pilha o Conteúdo dos registradores H e L 2059H 95H 2017H PUSH D Guarda na Pilha o Conteúdo dos registradores D e E 205AH 50H 2018H CALL MOSTRAA Mostra o conteúdo do resgistrador A (acumulador) 205BH 40H 201BH POD D Recupera da pilha o conteúdo de D e E 205CH 85H 201CH POP H Recupera da pilha H e L 201DH INX H Incrementa HL HL + 1 201EH DCR D Decrementa D 201FH JNZ 2008H Volta para 103 CPI dado8bits CY Z A > dado8bits 0 0 A = dado8bits 0 1 A < dado8bits 1 0 205DH 99H 205EH 10H 205FH 90H 2021H HLT Encerra programa 103 Prof. José Wilson Lima Nerys 103 Microprocessadores
CPI dado8bits CY Z A > dado8bits 0 0 A = dado8bits 0 1 A < dado8bits Prof. José Wilson 104Lima Nerys 104 Microprocessadores
Bibliografia [1] ZILLER, Roberto M., Microprocessadores Conceitos Importantes, Edição do autor, Florianópolis, 2000. ISBN 85-901037-2-2 [2] MALVINO, Albert Paul, Microcomputadores e microprocessadores; tradução Anatólio Laschuk, revisão técnica Rodrigo Araês Farias. São Paulo: McGraw-Hill do Brasil, 1985. [3] NERYS, José Wilson Lima, Notas de Aula de Microprocessadores e Microcontroladores. Página: http://www.emc.ufg.br/~jwilson/teoria.htm Prof. José Wilson 105Lima Nerys 105 Microprocessadores