A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES.

Apresentações semelhantes


Apresentação em tema: "Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES."— Transcrição da apresentação:

1 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES E MICROCONTROLADORES José Wilson Lima Nerys Página: jwilson.emc.ufg.br Emails: jwlnerys@gmail.com e jose_wilson_nerys@ufg.brjwlnerys@gmail.com Parte 1

2 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 2 Prof. José Wilson Lima Nerys 2 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

3 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 3 Prof. José Wilson Lima Nerys 3 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

4 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 4 Prof. José Wilson Lima Nerys 4 Microprocessadores O que eles têm em comum?

5 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 5 Prof. José Wilson Lima Nerys 5 Microprocessadores Microprocessadores Microcontroladores

6 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 6 Prof. José Wilson Lima Nerys 6 Microprocessadores Linha do Tempo Ábaco (4000 ac) Octograma chinês (4000 ac) Logaritmo John Napier Tabela de Logaritmo (1614) Calculadora de 4 funções de Leibniz (1671) Computadores Z1, Z2 e Z3 (1936) Máquina de diferenças e Analítica (Babbage) (1822) Pascaline Calculadora de Blaise Pascal (1642) Tear automático com cartão perfurado (1801) Computador Colosso Válvulas (Alan Turing) (1943) Máquina de Von Newman Programa armazenado (1946) IBM 7090 Transistores Fortran Cobol Pascal (1960)

7 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 7 Prof. José Wilson Lima Nerys 7 Microprocessadores Linha do Tempo 4004 4 bits (1971) 8008 8 bits (1972) 8080 8 bits (1974) 8086 16 bits (1978) 8051 8 bits (1980) Atmel AVR 8 bits (1996) Pentium 200MMX 64 bits (1997) Rasperry pi (ARM) 32 bits (2011) 8085 8 bits (1976) 8088 16 bits (1979) PIC 8 bits (1985) Arduíno (Atmel AVR) 8 bits (2005) ARM 32 bits (1983)

8 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 8 Prof. José Wilson Lima Nerys 8 Microprocessadores Bit 3Bit 2Bit 1Bit 0 1 nibble Menor valor positivo00000 00011 00102 00113 ………… Maior valor positivo111115 Capacidade: 2 4 = 16 nibbles Decimal 0 1 2 3 F Hexa Número de bits dos Registradores

9 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 9 Prof. José Wilson Lima Nerys 9 Microprocessadores Número de bits dos Registradores + -

10 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 10 Prof. José Wilson Lima Nerys 10 Microprocessadores Bit 3Bit 2Bit 1Bit 0 Bit 7Bit 6Bit 5Bit 4 1 byte Menor valor positivo 00000000 00000001 00000010 00000011 …………………… Maior valor positivo 11111111 0 1 2 3 255 Decimal Capacidade: 2 8 = 256 bytes 00 01 02 03 FF Hexa 1 byte = 8 bits Intervalo dos valores positivos e negativos (notação com sinal): 0 a 127 = 00h a 7Fh -1 a -128 = FFh a 80h Número de bits dos Registradores

11 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 11 Prof. José Wilson Lima Nerys 11 Microprocessadores Bit 3Bit 2Bit 1Bit 0 Bit 7Bit 6Bit 5Bit 4 Bit 11Bit 10 Bit 9Bit 8 Bit 15Bit 14Bit 13Bit 12 1 word = 16 bits Intervalo dos valores positivos 00000000 00000001 00000010 00000011 …………………… 11111111 00000000 00000000 00000000 00000000 …………………… 11111111 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 Número de bits dos Registradores

12 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 12 Prof. José Wilson Lima Nerys 12 Microprocessadores Número de bits dos Registradores double word = 32 bits Intervalo dos valores positivos: 0 a 4.294.967.295 = 0000 0000h a FFFF FFFFh Capacidade: 2 32 = 4.294.967.296 double-words 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 Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 Bit 15Bit 14Bit 13Bit 12Bit 11Bit 10Bit 9Bit 8 Bit 23Bit22Bit 21Bit20Bit 19Bit18Bit17Bit 16Bit 31Bit 30Bit 29Bit 28Bit 27Bit 26Bit 25Bit 24

13 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 13 Prof. José Wilson Lima Nerys 13 Microprocessadores Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 Quantidade de Transistores 2 transistores por bit Quanto maior o número de transistores, maior a quantidade possível de registradores Aumento no desempenho

14 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 14 Prof. José Wilson Lima Nerys 14 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

15 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 15 Prof. José Wilson Lima Nerys 15 Microprocessadores Frequência de Clock AnoProcessadorFrequência de Clock Tecnologia (tamanho transistor) 19714004108 kHz10 µm 19728008200 kHz 197680855 MHz 197880865 a 10 MHz 197980885 a 10 MHz 19898048625 a 50 MHz 1997Pentium II450 MHz0,25 µm 1999Pentium III500 MHz até 1,2 GHz0,25 µm 2004 Pentium 4 (Prescott) 4 GHz90 nm 2007Core 23,33 GHz45 nm 2010Core i53,33 GHz32 nm Aumento do desempenho

16 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 16 Prof. José Wilson Lima Nerys 16 Microprocessadores Índice de Desempenho de um Microprocessador (velocidade de processamento) 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

17 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 17 Prof. José Wilson Lima Nerys 17 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.

18 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 18 Prof. José Wilson Lima Nerys 18 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).

19 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 19 Prof. José Wilson Lima Nerys 19 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.

20 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 20 Prof. José Wilson Lima Nerys 20 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.

21 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 21 Prof. José Wilson Lima Nerys 21 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.

22 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 22 Prof. José Wilson Lima Nerys 22 Microprocessadores Microprocessador × Microcontrolador

23 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 23 Prof. José Wilson Lima Nerys 23 Microprocessadores Registradores - São usados para o armazenamentos internos da CPU. Existem diversos registradores na CPU e o principal deles é chamado de Acumulador. Os registradores são construídos 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 operação, que substitui o dado original.

24 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 24 Prof. José Wilson Lima Nerys 24 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.).

25 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 25 Prof. José Wilson Lima Nerys 25 Microprocessadores Unidade de Decodificação: Registrador de Instruções e Decodificador de Instruções Responsável pela identificação da instrução a ser executada, a partir do código de operação (opcode). Unidade de Temporização e Controle: 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.

26 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 26 Prof. José Wilson Lima Nerys 26 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. PROM (Programmable Read-Only Memory) – Podem ser escritas com dispositivos especiais mas não podem mais ser apagadas. 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 EEPROM – Permite apagar eletricamente e gravar várias vezes. FLASH – Equivalente à memória EEPROM. Porém, ocupa menos espaço; menor consumo de energia; alta durabilidade.

27 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 27 Prof. José Wilson Lima Nerys 27 Microprocessadores Memória de Dados: Memória RAM – Permite a leitura e a gravação de dados. 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

28 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 28 Prof. José Wilson Lima Nerys 28 Microprocessadores Unidade de Entrada e Saída (I/O) A entrada de dados de um microprocessador (via teclado, mouse ou outros dispositivos) e a saída de dados (via vídeo, impressora ou outros) exige circuito integrado adicional como interface. O microcontrolador já possui essa unidade internamente. Exemplos de periféricos usados como unidade de entrada e saída: CI 8156 – RAM e porta de entrada e saída CI 8355 – ROM e portas de entrada e saída)

29 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 29 Prof. José Wilson Lima Nerys 29 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

30 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 30 Prof. José Wilson Lima Nerys 30 Microprocessadores 30 Ferramentas do Curso: 1.Simulador do microprocessador 8085 – AbacusAbacus 2.Programas aplicados ao microcontrolador 8051: Edição e Compilação: MCU 8051 IDEMCU 8051 IDE Simulação: MCU 8051 IDE e ProteusProteus 3.Simulador do PIC – MPLAB X IDE

31 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 31 Prof. José Wilson Lima Nerys 31 Microprocessadores Arquitetura RISC x Arquitetura CISC

32 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 32 Prof. José Wilson Lima Nerys 32 Microprocessadores Arquitetura RISC Arquitetura CISC

33 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 33 Prof. José Wilson Lima Nerys 33 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.

34 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 34 Prof. José Wilson Lima Nerys 34 Microprocessadores RISCCISC Instruções básicas executadas em apenas 1ciclo – uso intenso de superposição na execução de instruções (através de pipeline) 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 Uso reduzido da memória – basicamente 2 instruções de acesso à memória (load/store). Muitas instruções com acesso à memória. Uso intenso da memória (load, store, mov... ) Instruções de tamanho fixo. Exemplo: as instruções do PIC 16F628 têm tamanho fixo de 14 bits. Instruções de tamanho variável. Exemplo: 8085 tem instruções de 1, 2 e 3 bytes. Muitos registradores. Exemplo: PIC típico possui de 32 a 128 registradores. Poucos registradores. Exemplo: 8085 possui 7 registradores de propósito geral (A, B, C, D, E, H e L) 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 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 Algumas Características RISC X CISC:

35 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 35 Prof. José Wilson Lima Nerys 35 Microprocessadores RISCCISC Número pequeno (ou médio de instruções). Exemplo: PIC 12 e PIC 16 possuem 32 instruções. 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 simples – 1 ciclo para execuçãoInstruções complexas – múltiplos ciclos 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 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. Algumas Características RISC X CISC:

36 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 36 Prof. José Wilson Lima Nerys 36 Microprocessadores Algumas Características RISC X CISC: 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.

37 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 37 Prof. José Wilson Lima Nerys 37 Microprocessadores Etapas de execução de uma instrução:

38 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 38 Prof. José Wilson Lima Nerys 38 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...)

39 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 39 Prof. José Wilson Lima Nerys 39 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.

40 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 40 Prof. José Wilson Lima Nerys 40 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.

41 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 41 Prof. José Wilson Lima Nerys 41 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.

42 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 42 Prof. José Wilson Lima Nerys 42 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. Ciclos12345 Busca da instruçãoABCDE Execução da instruçãoABCD Referência à memóriaB

43 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 43 Prof. José Wilson Lima Nerys 43 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. Ciclos123456 Busca da instruçãoABCNOPDE Execução da instruçãoABNOPCD Referência à memóriaB

44 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 44 Prof. José Wilson Lima Nerys 44 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.

45 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 45 Prof. José Wilson Lima Nerys 45 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.

46 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 46 Prof. José Wilson Lima Nerys 46 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

47 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 47 Prof. José Wilson Lima Nerys 47 Microprocessadores

48 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 48 Prof. José Wilson Lima Nerys 48 Microprocessadores CaracterísticaMicroprocessador 8085 Microprocessador 8088Microprocessador 8086 Barramento de endereço16 bits20 bits Capacidade de endereçamento de memória 65.536 ( 64 kB ) 1.048.576 ( 1 MB ) 1.048.576 ( 1 MB ) Barramento de dados8 bitsInterno: 16 bits Externo: 8 bits Interno: 16 bits Externo: 16 bits Manipulação de STRINGSNÃOSIM Registradores Internos8 bits e 16 bits16 bits Uso de segmentação para endereçamento NÃOSIM Aritmética Decimal completaNÃOSIM Etapas de Busca e ExecuçãoEm sequência: Busca  Executa Unidades Independentes: Unidade de Interfaceamento com Barramento (BIU) – responsável pela Busca e Unidade de Execução (EU) Unidades Independentes: Unidade de Interfaceamento com Barramento (BIU) – responsável pela Busca e Unidade de Execução (EU) 8085  8086 / 8088

49 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 49 Prof. José Wilson Lima Nerys 49 Microprocessadores Registradores do 8085Registradores do 8088 / 8086 A Acumulador AHAL (A) AX – Acumulador Primário HL Apontador de dados BHBL BX – Acumulador e Registrador Base BCCHCL CX – Acumulador e Contador DEDHDL DX – Acumulador e Endereçador de I/O SP Apontador de pilha SP Apontador de pilha BP Apontador base – usado na pilha SI Índice da Fonte – usado para indexação DI Índice de Destino – usado para indexação PC Contador de Programa IP Ponteiro de Instrução CS Segmento de CódigoRegistradores de segmento. São usados para a formação do endereço absoluto. DS Segmento de Dados SS Segmento de Pilha ES Segmento Extra FLAGS Registrador de Flags FLAGS Registrador de Flags 8085  8086 / 8088

50 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 50 Prof. José Wilson Lima Nerys 50 Microprocessadores Arquitetura do 8085

51 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 51 Prof. José Wilson Lima Nerys 51 Microprocessadores Arquitetura do 8085 (detalhe)

52 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 52 Prof. José Wilson Lima Nerys 52 Microprocessadores Arquitetura do 8086/88

53 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 53 Prof. José Wilson Lima Nerys 53 Microprocessadores Arquitetura do 8051

54 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 54 Prof. José Wilson Lima Nerys 54 Microprocessadores Arquitetura do PIC 16F

55 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 55 Prof. José Wilson Lima Nerys 55 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

56 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 56 Prof. José Wilson Lima Nerys 56 Microprocessadores Princípio de Funcionamento 8085 B A C D LOAD ENABLE CLOCK Chave de 3 estados

57 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 57 Prof. José Wilson Lima Nerys 57 Microprocessadores Linha do barramento CARREGA (LOAD) HABILITA SAÍDA (OE) Entrada X Saída Y D CLK Q Flip- flop CARREGA REGISTRADOR (LOAD) HABILITA SAÍDA (OUTPUT ENABLE) (OE) COMENTÁRIO 00Registradores isolados do barramento. Barramento flutuando 01Transfere dados do registrador para o barramento 10Carrega o registrador com os dados do barramento Chave 3 estados Célula básica de um registrador:

58 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 58 Prof. José Wilson Lima Nerys 58 Microprocessadores A = 15 H Princípio de Funcionamento 8085 BC D LOAD ENABLE CLOCK MOV D,A D = 15 H 15 H

59 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 59 Prof. José Wilson Lima Nerys 59 Microprocessadores Frequência de Clock CLK Ciclo de Clock 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

60 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 60 Prof. José Wilson Lima Nerys 60 Microprocessadores Ciclos de Clock, de Máquina e de Instrução CLK EstadosT1T2T3T4T1T2T3 Ciclo de Máquina 1: M1Ciclo de Máquina 2 : M2 Ciclo de Instrução Ciclo de Busca Ciclo de Execução

61 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 61 Prof. José Wilson Lima Nerys 61 Microprocessadores Diagrama de Temporização EstadosT1T2T3T4T1T2T3 PC FORA PC+1  PCINST  IR PC FORA PC+1  PCINST  IR ALE A15-A8 PC H AD7-AD0 PC LINSTPC LINST M1M2 CLK

62 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 62 Prof. José Wilson Lima Nerys 62 Microprocessadores T1T2T3T4T1T2T3 PC FORA PC+1  PCINST  IR SBE PC FORA PC+1  PCINST  IR A15-A8 PC H AD7-AD0 PC LINSTPC LINST ALE RD\ WR\ IO-M\ M1M2

63 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 63 Prof. José Wilson Lima Nerys 63 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.

64 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 64 Prof. José Wilson Lima Nerys 64 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.

65 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 65 Prof. José Wilson Lima Nerys 65 Microprocessadores Registrador de Segmento Registrador de Offset + Endereço Físico = (Conteúdo do Registrador de Segmento)  16 + (Conteúdo do Registrador de Offset) 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)

66 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 66 Prof. José Wilson Lima Nerys 66 Microprocessadores  XXXX0 0YYYY Endereço Físico (ou absoluto) Registrador de Offset (16 bits) Registrador de Segmento (16 bits) 15 0 Extra Segment - ES Code Segment - CS Stack Segment - SS Data Segment - DS 15 0 Stack Pointer - SP Base Pointer - BP Source Index - SI Destination Index - DI

67 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 67 Prof. José Wilson Lima Nerys 67 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.

68 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 68 Prof. José Wilson Lima Nerys 68 Microprocessadores Segment o  16 Offset + Memória Byte Endereçado Início do Segmento Exemplo 1: Segmento = 2000H; Offset = 2000H Representação: 2000H:2000H Endereço Físico = 20000H + 02000H = 22000H Exemplo 2:Segmento = 4000H; Offset = 2000H Representação: 4000H:2000H Endereço Físico = 40000h + 02000h = 42000h

69 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 69 Prof. José Wilson Lima Nerys 69 Microprocessadores DS  16 Offset +  64 kB ES  16 Offset + CS  16 Offset + SS  16 Offset +  64 kB F F F F F H 0 0 0 0 0 H Alocação de diferentes regiões para diferentes conjuntos de dados

70 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 70 Prof. José Wilson Lima Nerys 70 Microprocessadores Princípio de Funcionamento 8051 Se f = 12 MHz  Se f = 11.0592 MHz 

71 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 71 Prof. José Wilson Lima Nerys 71 Microprocessadores 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

72 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 72 Prof. José Wilson Lima Nerys 72 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.

73 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 73 Prof. José Wilson Lima Nerys 73 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

74 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 74 Prof. José Wilson Lima Nerys 74 Microprocessadores Flags no 8085 Registrador F: Registra o estado da última operação realizada na ULA Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 SZ  AC  P  CY

75 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 75 Prof. José Wilson Lima Nerys 75 Microprocessadores Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 SZ  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

76 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 76 Prof. José Wilson Lima Nerys 76 Microprocessadores Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 SZ  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)

77 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 77 Prof. José Wilson Lima Nerys 77 Microprocessadores Registrador de Flags – 8086 (Registrador de Estado do Programa (PSW) 1514131211109876543210 ××××ODITSZ×A×P×C Flag de Overflow Flag de Direção Flag de Interrupção Flag de Trap Flag de Sinal Flag de Zero Flag Auxiliar de Carry Flag de Paridade Flag de Carry É um registrador de 16 bits, mas apenas 9 bits são usados para as flags: Seis deles são bits de status que refletem os resultados de operações aritméticas e lógicas. Três são bits de controle.

78 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 78 Prof. José Wilson Lima Nerys 78 Microprocessadores Registrador de Flags – 8086 (Registrador de Estado do Programa (PSW) Flags de Status C – Flag de carry – reflete o ´vai um´ do bit mais significativo, nas operações aritméticas (de 8 ou 16 bits). Ele também é modificado por algumas instruções de rotação e deslocamento. Nas operações de subtração (aritmética em complemento dois) o ´carry´ é invertido e passa a funcionar como ´borrow´ (empréstimo). Se, após uma operação de subtração, obtém-se C = 1, isso indica que não 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 operação realizada. P = 1  número par de ´1´ nos 8 bits menos significativos P = 0  número ímpar de ´1´ nos 8 bits menos significativos A – Flag Auxiliar de Carry – reflete o ´vai um´ do bit 3, em uma operação de 8 bits.

79 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 79 Prof. José Wilson Lima Nerys 79 Microprocessadores Registrador de Flags – 8086 (Registrador de Estado do Programa (PSW) Flags de Status Z – Flag de Zero – indica se uma operação teve zero como resultado. Z = 1  se o resultado da operação for igual a zero Z = 0  se o resultado da operação for diferente de zero S – Flag de Sinal – é igual ao bit de mais alta ordem do resultado de uma operação aritmética. S = 0  resultado positivo S = 1  resultado negativo O – Flag de Overflow – seu conteúdo é obtido através de uma operação XOR do ´carry in´ com o ´carry out´ do bit de mais alta ordem do resultado de uma operação aritmética. Ele indica um ´overflow´ de magnitude, em aritmética binária com sinal. Indica que o resultado é muito grande para o campo destino.

80 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 80 Prof. José Wilson Lima Nerys 80 Microprocessadores Registrador de Flags – 8086 (Registrador de Estado do Programa (PSW) O – Flag de Overflow – seu conteúdo é obtido através de uma operação XOR do ´carry in´ com o ´carry out´ do bit de mais alta ordem do resultado de uma operação aritmética. CY_INCY_OUTOV = (XOR) 000 011 101 110

81 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 81 Prof. José Wilson Lima Nerys 81 Microprocessadores Flags de Controle T – Flag de Trap (armadilha) – usada para a depuração de programas. Coloca o 8086 no modo passo a passo. Após cada instrução uma interrupção é gerada automaticamente. I – Flag de Interrupção – habilita ou desabilita a interrupção externa (pedida pelo pino INTR). Ao contrário do 8085, onde as interrupções RST 7.5, RST 6.5 e RST 5.5 podem ser habilitadas/desabilitadas individualmente, no 8086 todas são habilitadas ou desabilitadas ao mesmo tempo. A habilitação/ desabilitação individual pode ser feita através do controlador de interrupção 8259. I = 1  interrupção habilitada I = 0  interrupção desabilitada D – Flag de Direção – determina se as operações com ´strings´ vão incrementar ou decrementar os registradores de indexação (SI e DI). D = 1  SI e DI serão decrementados, ou seja, a ´string´ será acessada a partir do endereço mais alto em direção ao mais baixo. D = 0  SI e DI serão incrementados, ou seja, a ´string´será acessada a partir do endereço mais baixo em direção ao mais alto. Registrador de Flags – 8086 (Registrador de Estado do Programa (PSW)

82 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 82 Prof. José Wilson Lima Nerys 82 Microprocessadores Registrador de Flags – 8051 Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 CYACF0RS1RS0OV  P Paridade Overflow Uso Geral Auxiliar de Carry Carry RS1RS0Banco Selecionado 000 011 102 113

83 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 83 Prof. José Wilson Lima Nerys 83 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.

84 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 84 Prof. José Wilson Lima Nerys 84 Microprocessadores Registrador de Flags – 8051 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 Resultado: 144 = 90 H = 1 0 0 1:0 0 0 0 (OV = 1) DecimalHexadecimal1111 10064H01100100 442CH00101100 14490H10010000 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.

85 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 85 Prof. José Wilson Lima Nerys 85 Microprocessadores Registrador de Flags – 8051 Exemplos para a flag de overflow: 2. ADD,#01H (Ao resultado da operação anterior: 90H) Resultado: 145 = 91 H = 1 0 0 1:0 0 0 1 (OV = 0) 14490H10010000 0101H00000001 14591H10010001 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.

86 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 86 Prof. José Wilson Lima Nerys 86 Microprocessadores Pilha no 8085 e 8051

87 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 87 Prof. José Wilson Lima Nerys 87 Microprocessadores Região de memória usada para guardar endereço de retorno e valores temporários SP  EndereçoMnemônicoCódigo 2000 HLXI SP,20FFH31 FF 20 2003 H 2004 H xxxxx 20FF H Instruções que usam a pilha: CALL RET PUSH POP Interrupções

88 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 88 Prof. José Wilson Lima Nerys 88 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

89 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 89 Prof. José Wilson Lima Nerys 89 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

90 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 90 Prof. José Wilson Lima Nerys 90 Microprocessadores Exemplo: A = 01 H, F = 23 H, B = 45 H, C = 67 H A  F   A A  F  B B  C Flags Endereço da RAM Conteúdo 2089 208A 208B 208C 208D 208E23 208F01 2090 SP após a instrução: 208Eh Endereço da RAM Conteúdo 2089 208A 208B 208C67 208D45 208E23 208F01 2090 SP após a instrução: 208Ch PUSH PSW PUSH B SP inicial: 2090h

91 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 91 Prof. José Wilson Lima Nerys 91 Microprocessadores Exemplo: A = 01 H, F = 23 H, B = 45 H, C = 67 H A  F   A A  F  B B  C Endereço da RAM Conteúdo 2089 208A 208B 208C67 208D45 208E23 208F01 2090 SP após a instrução: 208Eh Endereço da RAM Conteúdo 2089 208A 208B 208C67 208D45 208E23 208F01 2090 SP após a instrução: 2090h POP B POP PSW

92 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 92 Prof. José Wilson Lima Nerys 92 Microprocessadores Pilha Exemplo de aplicação EndereçoMnemônicoCódigo 2000 HLXI SP,203FH31 22 20 2003 HMVI A,20H3E 20 2005 HPUSH PSWF5 2006 HCALL MOSTRAACD 6E 03 2009 HPOP PSWF1 200A HADI 01HC6 01 200C HJNZ 2005 HDA 05 20 200F HJMP 2003C3 03 20 2022 H

93 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 93 Prof. José Wilson Lima Nerys 93 Microprocessadores Pilha no 8051 Transferência de dados envolve apenas um byte  8bits 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

94 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 94 Prof. José Wilson Lima Nerys 94 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 reg18  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

95 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 95 Prof. José Wilson Lima Nerys 95 Microprocessadores Diferenças básicas entre o uso da Pilha no 8051 e no 8085 Característica80858051 Variação do apontador de pilha SP SP é decrementado nas operações para guardar valores na pilha (PUSH, CALL, chamada de interrupção) SP é incrementado nas operações para guardar valores na pilha (PUSH, CALL, chamada de interrupção) Região da memóriaA região da pilha é a mesma do programa do usuário, podendo haver sobreposição A pilha é reservada na memória RAM e o programa na memória ROM, não havendo risco de sobreposição Tamanho do dado guardado São movimentados 16 bits em cada operação de pilha São movimentados 8 bits em cada operação de pilha

96 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 96 Prof. José Wilson Lima Nerys 96 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

97 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 97 Prof. José Wilson Lima Nerys 97 Microprocessadores Instruções de Transferência de Dados do 8085 InstruçãoEfeitoDescrição MOV A,B(A)  (B)Copia no registrador A (acumulador) o conteúdo do registrador B MOV C,E(C)  (E)Copia no registrador C o conteúdo do registrador E MOV A,M(A)  ((H,L)) Copia no registrador A o conteúdo da posição de memória M, indicada pelos registradores H e L MVI D,byte(D)  byteCarrega o registrador D com valor “byte”, buscado na memória MOV M,B((H,L))  (A) Copia na posição de memória M, indicada pelos registradores H e L, o conteúdo do registrador A o conteúdo LXI H,word(HL)  wordCarrega registrador duplo HL com o valor de 16 bits “word” LDA ender.(A)  (ender.)Carrega acumulador com conteúdo do endereço “ender.” STA ender.(ender.)  (A)Copia no endereço “ender.” o conteúdo do acumulador XCHG (H)  (D) (L)  (E) Os conteúdos dos registradores H e L são trocados com os conteúdos dos registradores D e E. Obs.: as instruções de transferência de dados não afetam nenhuma flag.

98 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 98 Prof. José Wilson Lima Nerys 98 Microprocessadores Exemplos usando instruções de transferência de dados EndereçoInstruçãoDescrição 2000HMVI C,20HO registrador C é carregado com o valor hexadecimal 20h 2002HMOV B,CCopia em B o conteúdo do registrador C 2003HLXI H,2030HCarrega registradores H e L com os valores 20H e 30H 2006HMOV M,B Copia o conteúdo de B na posição de memória apontada por HL (2030H) 2007HLDA 2030H Copia no acumulador o conteúdo da posição na posição de memória M, indicada pelos registradores H e L, o conteúdo do registrador A o conteúdo 200AHXCHG Os conteúdos dos registradores H e L são trocados com os conteúdos dos registradores D e E. Assim, D=20H e E=30H

99 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 99 Prof. José Wilson Lima Nerys 99 Microprocessadores Instruções Aritméticas do 8085 InstruçãoEfeitoDescrição ADD BA  A + BAcumulador “A” recebe o resultado da adição “A + B” ADC DA  A + D + CYAcumulador recebe o resultado da adição “A + B + CY” ADI byteA  A + byteAcumulador recebe o resultado da adição “A + byte” ACI byteA  A +byte+CYAcumulador recebe o resultado da adição “A + byte + CY” SUB MA  A - ((H,L)) Acumulador recebe resultado da subtração “A – conteúdo da posição indicada pelo registrador duplo HL” SUI byteA  A – byteAcumulador recebe o resultado da subtração “A – byte” INR CC  C + 1Incrementa em “1” o conteúdo do registrador C INX HHL  HL + 1Incrementa em “1” o conteúdo do registrador duplo HL DCR LL  L – 1Decrementa em “1” o conteúdo do registrador L DCX BBC  BC – 1Decrementa em “1” o conteúdo do registrador duplo BC DAAFaz o ajuste decimal do conteúdo do acumulador Obs.: Todas as flags (com poucas exceções) são afetadas: Z, S, P, CY, AC

100 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 100 Prof. José Wilson Lima Nerys 100 Microprocessadores Exemplos usando instruções de transferência de dados e aritméticas EndereçoInstruçãoDescrição 2000HMVI A,20HO registrador A é carregado com o valor hexadecimal 20h 2002HMVI B,30HO registrador B é carregado com o valor hexadecimal 30h 2004HADD BO acumulador recebe o resultado de A + B 2005HINR AIncrementa em 1 unidade o conteúdo do acumulador 2006HSUI 02HSubtrai em duas unidades o conteúdo do acumulador 2008HADI 05HAdiciona 05H ao conteúdo do acumulador 200AHDAAFaz o ajuste decimal do conteúdo do acumulador 200BHLXI D,2050HCarrega registradores D e E com valores 20H e 50H 200EHINX DIncrementa em 1 registrador duplo DE 200FHLXI H,2070HCarrega registradores H e L com valores 20H e 10H 2012HDAD DAdiciona o conteúdo de DE ao conteúdo de HL

101 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 101 Prof. José Wilson Lima Nerys 101 Microprocessadores Instruções de Desvio do 8085 InstruçãoEfeitoDescrição JMP ender.PC  ender. Processamento é desviado, de forma incondicional, para o endereço “ender.”. JNC ender. PC  ender., se CY = 0 Processamento é desviado para o endereço “ender.”, se a flag de carry “CY” for zero (CY = 0). JC ender. PC  ender., se CY = 1 Processamento é desviado para o endereço “ender.”, se a flag de carry “CY” estiver setada (CY = 1). JNZ ender. PC  ender., se Z = 0 Processamento é desviado para o endereço “ender.”, se a flag de zero “Z” for zero (Z = 0). JZ ender. PC  ender., se Z = 1 Processamento é desviado para o endereço “ender.”, se a flag de zero “Z” estiver setada (Z = 1). CALL ender. PC  ender. ((SP))  ender. + 3 Processamento é desviado para uma subrotina, cujo endereço é “ender.”. Retorna ao encontrar “RET”. RETPC  ((SP)) Busca a pilha a posição da próxima instrução e retorna para o processamento anterior do programa. Obs.: as instruções de desvio não afetam nenhuma flag.

102 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 102 Prof. José Wilson Lima Nerys 102 Microprocessadores Exemplos usando instruções de desvio EndereçoInstruçãoDescrição 2000HMVI A,20HO registrador A é carregado com o valor hexadecimal 20h 2002HMVI B,30HO registrador B é carregado com o valor hexadecimal 30h 2004HADD BO acumulador recebe o resultado de A + B 2005HJNC 2004HSe CY=0, desvia para 2004; se CY=1, vai para a próxima linha 2008HDCR BDecrementa o registrador B 2009HJNZ 2008HSe Z=0, desvia para 2008H; se Z=1, vai para a próxima linha

103 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 103 Prof. José Wilson Lima Nerys 103 Microprocessadores Instruções Lógicas do 8085 InstruçãoEfeitoDescrição ANA B A  A  B Acumulador recebe o resultado da operação lógica “AND” (bit a bit) entre o conteúdo do acumulador e o registrador B. ANI byte A  A  byte Acumulador recebe o resultado da operação lógica “AND” (bit a bit) entre o conteúdo do acumulador e o “byte”. ORA E A  A  E Acumulador recebe o resultado da operação lógica “OR” (bit a bit) entre o conteúdo do acumulador e o registrador E. ORI byte A  A  byte Acumulador recebe o resultado da operação lógica “OR” (bit a bit) entre o conteúdo do acumulador e o “byte”. XRA DA  A XOR D Acumulador recebe resultado da operação lógica “XOR” (bit a bit) entre o conteúdo do acumulador e do registrador D RLCA n+1  A n Rotaciona à esquerda o conteúdo do acumulador RAR A n  A n+1 A 7  CY Rotaciona à direita o conteúdo do acumulador, incluindo a flag de carry. Ou seja, rotação à direita de 9 bits. CMP BA – B Compara o conteúdo de A com o conteúdo de B. O resultado afeta as flags CY e Z. O resultado não é armazenado em A CPI byteA – byteCompara o conteúdo de A como o byte. Obs.: as instruções lógicas afetam todas as flags (algumas exceções)

104 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 104 Prof. José Wilson Lima Nerys 104 Microprocessadores Exemplos usando instruções lógicas EndereçoInstruçãoDescrição 2000HMVI A,25HO registrador A é carregado com o valor hexadecimal 25h 2002HMVI B,0FHO registrador B é carregado com o valor hexadecimal 0Fh 2004HANA BO acumulador recebe o resultado da operação A AND B 2005HORI 70HO acumulador recebe o resultado da operação A OR 70H 2007HRLCRotaciona à esquerda o conteúdo do acumulador 2008HCPI 99HCompara o conteúdo do acumulador com 99H 200AHJC 2004HSe CY=1, desvia para 2004H 200DHJMP 2002HDesvia para 2002H CPI byteCYZ A > byte00 A = byte01 A < byte10

105 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 105 Prof. José Wilson Lima Nerys 105 Microprocessadores Instruções de Pilha e de Controle InstruçãoEfeitoDescrição PUSH PSWPilha  (A,F) Guarda na pilha o conteúdo do acumulador (A) e do registrador de flags (F). O conteúdo de A, na posição SP-1; o de F, na posição SP-2. PUSH BPilha  (B,C) Guarda na pilha o conteúdo dos registradores B e C. O conteúdo de B, na posição SP-1; o de C, na posição SP-2. POP D(D,E)  Pilha Carrega os registradores D e E com valores guardados na pilha. O conteúdo da posição atual (SP) é guardado em E; o conteúdo de SP + 1 é guardado em D. POP H(H,L)  Pilha Carrega os registradores D e E com valores guardados na pilha. O conteúdo da posição atual (SP) é transferido par o registrador L; o conteúdo de SP + 1 é transferido para H. IN 80HA  Porta 80h Copia no acumulador o conteúdo externo que foi lido através da Porta paralela 80H. OUT 80HPorta 90h  ATransfere para a Porta 90H o conteúdo do acumulador HLTPara o processamento. Obs.: as instruções de pilha e de controle não afetam nenhuma flag.

106 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 106 Prof. José Wilson Lima Nerys 106 Microprocessadores Exemplos usando instruções de pilha e de controle EndereçoInstruçãoDescrição 2000HMVI A,25HO registrador A é carregado com o valor hexadecimal 25h 2002HMVI B,0FHO registrador B é carregado com o valor hexadecimal 0Fh 2004HANA BO acumulador recebe o resultado da operação A AND B 2005HORI 70HO acumulador recebe o resultado da operação A OR 70H 2007HRLCRotaciona à esquerda o conteúdo do acumulador 2008HCPI 99HCompara o conteúdo do acumulador com 99H 200AHJC 2004HSe CY=1, desvia para 2004H 200DHJMP 2002HDesvia para 2002H

107 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 107 Prof. José Wilson Lima Nerys 107 Microprocessadores AulaDiaConteúdo 31/03 (Qui) 105/04 (Ter) Introdução ao curso de Microprocessadores e microcontroladores: histórico e conceitos básicos. 207/04 (Qui)Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC 312/04 (Ter) Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 414/04 (Qui) Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e Microcontroladores 8051 e PIC 519/04 (Ter)Registradores de Flags. Princípio de operação da pilha 21/04 (Qui)Feriado Nacional - Tiradentes 626/04 (Ter)Instruções do 8085. Princípios de programação do 8085. 728/04 (Qui)Programação básica do Microprocessador 8085 803/05 (Ter) Prova 1 - conteúdo das aulas 1 a 7 (conceitos básicos, pilha, flags, princípio de funcionamento de microprocessadores e microcontroladores e programação do 8085)

108 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 108 Prof. José Wilson Lima Nerys 108 Microprocessadores Programa-exemplo 1: contagem crescente EndereçoInstruçãoDescrição 2000HLXI SP,2050HO registrador duplo HL recebe o valor 2050H (pilha) 2003HMVI A,00HO registrador A é carregado com o valor hexadecimal 00H 2005HPUSH PSWGuarda na pilha o conteúdo de A e F (acumulador e flags) 2006HCALL 036EHMostra no display o conteúdo de A 2009HPOP PSWRecupera da pilha o conteúdo de A e F 200AHADI 01HAdiciona 01H ao conteúdo de A 200CHJMP 2005HDesvia para 2004H 200FHHLTEncerra o programa

109 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 109 Prof. José Wilson Lima Nerys 109 Microprocessadores Programa-exemplo 2: contagem crescente decimal EndereçoInstruçãoDescrição 2000HLXI SP,2050HO registrador duplo HL recebe o valor 2050H (pilha) 2003HMVI A,00HO registrador A é carregado com o valor hexadecimal 00H 2005HPUSH PSWGuarda na pilha o conteúdo de A e F (acumulador e flags) 2006HCALL 036EHMostra no display o conteúdo de A 2009HPOP PSWRecupera da pilha o conteúdo de A e F 200AHADI 01HAdiciona 01H ao conteúdo de A 200CHDAAFaz a correção decimal do conteúdo do acumulador 200FHJMP 2004HDesvia para 2004H 2012HHLTEncerra o programa

110 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 110 Prof. José Wilson Lima Nerys 110 Microprocessadores Programa-exemplo 3: contagem decrescente decimal EndereçoInstruçãoDescrição 2000HLXI SP,2070HO registrador SP recebe o valor 2070H (pilha) 2003HMVI A,00HO registrador A é carregado com o valor hexadecimal 00H 2005HPUSH PSWGuarda na pilha o conteúdo de A e F (acumulador e flags) 2006HCALL 036EHMostra no display o conteúdo de A 2009HPOP PSWRecupera da pilha o conteúdo de A e F 200AHADI 99HAdiciona 99H ao conteúdo de A (subtrai uma unidade) 200CHDAAFaz a correção decimal do conteúdo do acumulador 200FHJMP 2004HDesvia para 2004H 2012HHLTEncerra o programa

111 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 111 Prof. José Wilson Lima Nerys 111 Microprocessadores Programa-exemplo 4: mostra no display o conteúdo da Tabela Ender.InstruçãoDescrição 2000HLXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha) 2003HLXI H,2050H O registrador duplo HL é carregado com o valor 2050H 2006HMOV A,M Carrega em A o conteúdo da posição apontada por HL 2007HPUSH HGuarda na pilha o conteúdo de HL 2008HCALL 036EHRecupera da pilha o conteúdo de A e F 200BHPOP HRecupera da pilha o conteúdo de HL 200CHINX HIncrementa em 1 o registrador duplo HL 200DHJMP 2006HDesvia para 2006H Ender.Dados 2050H50H 2051HA5H 2052H15H 2053HF1H 2054H05H 2055H66H 2056HB4H 2057H87H 2058H45H 2059H39H 205AH77H 205BHC5H

112 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 112 Prof. José Wilson Lima Nerys 112 Microprocessadores Programa-exemplo 5: mostra no display o conteúdo da Tabela Com subrotina de atraso de tempo e contador de 16 valores Ender.InstruçãoDescrição 2000HLXI SP,2070HO registrador duplo SP recebe o valor 2070H (pilha) 2003HLXI H,2050HO registrador duplo HL é carregado com o valor 2050H 2006HMVI D,10HContador para leitura de 16 elementos da tabela 2008HMOV A,MCarrega em A o conteúdo da posição apontada por HL 2009HPUSH DGuarda na pilha os conteúdos de D e E 200AHPUSH HGuarda na pilha os conteúdos de H e L 200BHCALL 036EHMostra no Display de Dados o conteúdo de A 200EHCALL 2020HChama subrotina de atraso de tempo no ender. 2020H 2011HPOP HRecupera da pilha o conteúdo de H e L 2012HPOP DRecupera da pilha o conteúdo de D e E 2013HINX HIncrementa em 1 o registrador duplo HL 2014HDCR DDecrementa em uma unidade o conteúdo de D 2015HJNZ 2008HDesvia para 2008H se a Flag Z = 0 (D diferente de 0) 2018HHLTEncerra o programa Ender.Dados 2050H50H 2051HA5H 2052H15H 2053HF1H 2054H05H 2055H66H 2056HB4H 2057H87H 2058H45H 2059H39H 205AH77H 205BHC5H 205CH40H 205DH11H 205EH33H 205FH44H Ender.Dados 2020HMVI B,50H 2022HDCR B 2023HJNZ 2022H 2026HRET Atraso de tempo Tabela de Dados

113 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 113 Prof. José Wilson Lima Nerys 113 Microprocessadores Programa-exemplo 6: mostra no display o conteúdo da Tabela Com subrotina de atraso de tempo. Conta 16 valores através de L Ender.InstruçãoDescrição 2000HLXI SP,2070HO registrador duplo SP recebe o valor 2070H (pilha) 2003HLXI H,2050HO registrador duplo HL é carregado com o valor 2050H 2006HMOV A,MCarrega em A o conteúdo da posição apontada por HL 2007HPUSH HGuarda na pilha os conteúdos de H e L 2008HCALL 036EHMostra no Display de Dados o conteúdo de A 200BHCALL 2020HChama subrotina de atraso de tempo no ender. 2020H 200EHPOP HRecupera da pilha o conteúdo de H e L 200FHINX HIncrementa em 1 o registrador duplo HL 2010HMOV A,LA recebe o valor de L, para verificar se já chegou a 60H 2011HCPI 60HCompara A com 60H. 2013HJNZ 2006HDesvia para 2006H se a Flag Z = 0 (A diferente de 60H) 2016HHLTEncerra o programa Ender.Dados 2050H50H 2051HA5H 2052H15H 2053HF1H 2054H05H 2055H66H 2056HB4H 2057H87H 2058H45H 2059H39H 205AH77H 205BHC5H 205CH40H 205DH11H 205EH33H 205FH44H Ender.Dados 2020HMVI B,50H 2022HDCR B 2023HJNZ 2022H 2026HRET Atraso de tempo Tabela de Dados

114 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 114 Prof. José Wilson Lima Nerys 114 Microprocessadores Programa-exemplo 7: mostra no display os valores maiores que 40H, lidos da Tabela Ender.InstruçãoDescrição 2000HLXI SP,2070HO registrador duplo SP recebe o valor 2070H (pilha) 2003HLXI H,2050HO registrador duplo HL é carregado com o valor 2050H 2006HMOV A,MCarrega em A o conteúdo da posição apontada por HL 2007HCPI 40HCompara A com 40H (se A > 40H, então Z=0 e CY=0) 2009HJC 2017HSe CY = 1, então A < 40H (A não será mostrado) 200CHJZ 2017HSe Z = 1, então A = 40H (A não será mostrado) 200FHPUSH HGuarda os conteúdos de H e L na pilha 2010HCALL 036EHMostra no Display de Dados os valores de A > 40H 2013HCALL 2020HChama subrotina de atraso de tempo no ender. 2020H 2016HPOP HRecupera da pilha o conteúdo de H e L 2017HINX HIncrementa em 1 o registrador duplo HL 2018HMOV A,LA recebe o valor de L, para verificar se já chegou a 60H 2019HCPI 60HCompara A com 60H. 201BHJNZ 2006HDesvia para 2006H se a Flag Z = 0 (A diferente de 60H) 201EHHLTEncerra o programa Ender.Dados 2050H50H 2051HA5H 2052H15H 2053HF1H 2054H05H 2055H66H 2056HB4H 2057H87H 2058H45H 2059H39H 205AH77H 205BHC5H 205CH40H 205DH11H 205EH33H 205FH44H Ender.Dados 2020HMVI B,50H 2022HDCR B 2023HJNZ 2022H 2026HRET Atraso de tempo Tabela de Dados

115 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 115 Prof. José Wilson Lima Nerys 115 Microprocessadores Programa-exemplo 8: mostra no display os valores maiores ou iguais a 40H, lidos da Tabela Ender.InstruçãoDescrição 2000HLXI SP,2070HO registrador duplo SP recebe o valor 2070H (pilha) 2003HLXI H,2050HO registrador duplo HL é carregado com o valor 2050H 2006HMOV A,MCarrega em A o conteúdo da posição apontada por HL 2007HCPI 40HCompara A com 40H (se A >= 40H, então CY=0) 2009HJC 2014HSe CY = 1, então A < 40H (A não será mostrado) 200CHPUSH HGuarda os conteúdos de H e L na pilha 200DHCALL 036EHMostra no Display de Dados os valores de A >= 40H 2010HCALL 2020HChama subrotina de atraso de tempo no ender. 2020H 2013HPOP HRecupera da pilha o conteúdo de H e L 2014HINX HIncrementa em 1 o registrador duplo HL 2015HMOV A,LA recebe o valor de L, para verificar se já chegou a 60H 2016HCPI 60HCompara A com 60H. 2018HJNZ 2006HDesvia para 2006H se a Flag Z = 0 (A diferente de 60H) 201BHHLTEncerra o programa Ender.Dados 2050H50H 2051HA5H 2052H15H 2053HF1H 2054H05H 2055H66H 2056HB4H 2057H87H 2058H45H 2059H39H 205AH77H 205BHC5H 205CH40H 205DH11H 205EH33H 205FH44H Ender.Dados 2020HMVI B,50H 2022HDCR B 2023HJNZ 2022H 2026HRET Atraso de tempo Tabela de Dados

116 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 116 Prof. José Wilson Lima Nerys 116 Microprocessadores Programa-exemplo 9: mostra no display os valores maiores ou iguais a 40H e menores que 80H, lidos da Tabela Ender.InstruçãoDescrição 2000HLXI SP,2070HO registrador duplo SP recebe o valor 2070H (pilha) 2003HLXI H,2050HO registrador duplo HL é carregado com o valor 2050H 2006HMOV A,MCarrega em A o conteúdo da posição apontada por HL 2007HCPI 40HCompara A com 40H (se A >= 40H, então CY=0) 2009HJC 2019HSe CY = 1, então A < 40H (A não será mostrado) 200CHCPI 80HCompara A com 80H (se A < 80H, então CY = 1) 200EHJNC 2019HSe CY=0, então A >= 80H (A não será mostrado) 2011HPUSH HGuarda os conteúdos de H e L na pilha 2012HCALL 036EHMostra no Display de Dados os valores de A >= 40H e <80H 2015HCALL 2025HChama subrotina de atraso de tempo no ender. 2025H 2018HPOP HRecupera da pilha o conteúdo de H e L 2019HINX HIncrementa em 1 o registrador duplo HL 201AHMOV A,LA recebe o valor de L, para verificar se já chegou a 60H 201BHCPI 60HCompara A com 60H. 201DHJNZ 2006HDesvia para 2006H se a Flag Z = 0 (A diferente de 60H) 2020HHLTEncerra o programa Ender.Dados 2050H50H 2051HA5H 2052H15H 2053HF1H 2054H05H 2055H66H 2056HB4H 2057H87H 2058H45H 2059H39H 205AH77H 205BHC5H 205CH40H 205DH11H 205EH33H 205FH44H Ender.Dados 2025HMVI D,50H 2027HDCR D 2028HJNZ 2027H 202BHRET Atraso de tempo Tabela de Dados

117 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 117 Prof. José Wilson Lima Nerys 117 Microprocessadores Programa-exemplo 10: Rotação de LEDs para a esquerda Ender.InstruçãoDescrição 2000HLXI SP,2070HO registrador duplo SP recebe o valor 2070H (pilha) 2003HMVI A,02 Configura os LEDs como saída de dados e as chaves com entrada de dados 2005HOUT 20H 2007HMVI A,01HA recebe o valor 01H, para ser rotacionado 2009HOUT 22HTransfere o conteúdo de A para a porta 22H 200CHCALL 2015HChama subrotina de atraso de tempo no ender. 2015H 200DHRLCRotaciona à esquerda o conteúdo de A 2010HJMP 2009HDesvia para o endereço 2009H 201BHHLTEncerra o programa Ender.Dados 2015HMVI D,50H 2017HDCR D 2018HJNZ 2017H 201BHRET Atraso de tempo

118 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 118 Prof. José Wilson Lima Nerys 118 Microprocessadores Programa-exemplo 11: Rotação de LEDs para a esquerda e direita, de acordo com a chave acionada CH0 = 1  rotaciona para a esquerda. CH1 = 1  rotaciona para a direita Parte 1 Ender.InstruçãoDescrição 2000HLXI SP,2070HO registrador duplo SP recebe o valor 2070H (pilha) 2003HMVI A,02 Configura os LEDs como saída de dados e as chaves com entrada de dados 2005HOUT 20H 2007HMVI B,01HB recebe o valor 01H, para ser rotacionado (necessário porque A vai recebe valores das chaves) 2009HIN 21HTransfere o valor atual das chaves para o acumulador A 200BHANI 03HIsola os dois bits menos significativos de A (A resulta em 00H, 01H, 02H ou 03H) 200DHCPI 01HVerifica se A = 01H. Se verdadeiro (Z=1), rotacionar à esquerda. 200FHJNZ 201DHSe Z = 0, então A é diferente de 01H. Desvia para verificar se A = 02H 2012HMOV A,BSe Z=1, então A=01H. Transfere conteúdo de B para A, para rotação à esquerda 2013HOUT 22HTransfere para os LEDs o conteúdo de A 2015HRLCRotaciona à esquerda o conteúdo de A 2016HMOV B,ADevolve para B o conteúdo rotacionado de A 2017HCALL 2030HChama subrotina de atraso de tempo no endereço 2030H 201AHJMP 2009HRetorna para ver ler novamente o conteúdo das chaves, no endereço 2009H 201DH

119 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 119 Prof. José Wilson Lima Nerys 119 Microprocessadores Programa-exemplo 11: Rotação de LEDs para a esquerda e direita, de acordo com a chave acionada CH0 = 1  rotaciona para a esquerda. CH1 = 1  rotaciona para a direita Parte 2 Ender.InstruçãoDescrição 201DHCPI 02HVerifica se A = 02H. Se verdadeiro (Z=1), rotacionar à direita. 201FHJNZ 2009HSe Z = 0, então A é diferente de 02H. Desvia para ler novamente a chave 2022HMOV A,BSe Z=1, então A=02H. Transfere conteúdo de B para A, para rotação à direita 2023HOUT 22HTransfere para os LEDs o conteúdo de A 2025HRRCRotaciona à direita o conteúdo de A 2026HMOV B,ADevolve para B o conteúdo rotacionado de A 2027HCALL 2030HChama subrotina de atraso de tempo no endereço 2030H 202AHJMP 2009HRetorna para ver ler novamente o conteúdo das chaves, no endereço 2009H 202DHHLTEncerra programa 202EH 202FH 2030HMVI D,50HD recebe o valor 50H, para gera atraso de tempo 2032HDCR DDecrementa o conteúdo de D 2033HJNZ 2032HSe Z = 0 (D é diferente de zero), então retorna para decrementar D novamente, até zerar 2036HRETRetorna da subrotina de atraso de tempo

120 Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 120 Prof. José Wilson Lima Nerys 120 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


Carregar ppt "Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES."

Apresentações semelhantes


Anúncios Google