125
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: www.emc.ufg.br/~jwilson Emails: [email protected] e [email protected] Parte 1

MICROPROCESSADORES E MICROCONTROLADORESjwilson/pdf/Micro_Parte_1(Conceitos).pdf · Introdução ao curso de Microprocessadores e microcontroladores: histórico e ... AVR 8 bits (1996)

  • Upload
    dobao

  • View
    235

  • Download
    4

Embed Size (px)

Citation preview

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

1Prof. José Wilson Lima Nerys 1 Microprocessadores

MICROPROCESSADORES E

MICROCONTROLADORES

José Wilson Lima Nerys

Página: www.emc.ufg.br/~jwilson

Emails: [email protected] e [email protected]

Parte 1

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

2Prof. José Wilson Lima Nerys 2 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

3Prof. José Wilson Lima Nerys 3 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

4Prof. José Wilson Lima Nerys 4 Microprocessadores

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

5Prof. José Wilson Lima Nerys 5 Microprocessadores

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

6Prof. 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)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

8Prof. José Wilson Lima Nerys 8 Microprocessadores

Evolução dos Processadores

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

9Prof. José Wilson Lima Nerys 9 Microprocessadores

Evolução dos Processadores

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

10Prof. José Wilson Lima Nerys 10 Microprocessadores

Evolução do

microprocessadores

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

12Prof. José Wilson Lima Nerys 12 Microprocessadores

Quantidade de Transistores e Memória

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

13Prof. José Wilson Lima Nerys 13 Microprocessadores

Bit 3 Bit 2 Bit 1 Bit 01 nibble

Menor valor positivo 0 0 0 0 0

0 0 0 1 1

0 0 1 0 2

0 0 1 1 3

… … … …

Maior valor positivo 1 1 1 1 15

Capacidade: 24 = 16 nibbles

Decimal

0

1

2

3

F

Hexa

Número de bits dos Registradores

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

14Prof. José Wilson Lima Nerys 14 Microprocessadores

+

-

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

15Prof. José Wilson Lima Nerys 15 Microprocessadores

Bit 3 Bit 2 Bit 1 Bit 0Bit 7 Bit 6 Bit 5 Bit 41 byte

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

… … … … … … … …

Maior valor positivo 1 1 1 1 1 1 1 1

0

1

2

3

255

Decimal

Capacidade: 28 = 256 bytes

00

01

02

03

FF

Hexa1 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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

16Prof. José Wilson Lima Nerys 16 Microprocessadores

Bit 3 Bit 2 Bit 1 Bit 0Bit 7 Bit 6 Bit 5 Bit 4Bit 11 Bit 10 Bit 9 Bit 8Bit 15 Bit 14 Bit 13 Bit 12

1 word = 16 bits

Intervalo dos valores positivos

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

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

Capacidade: 216 = 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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

17Prof. José Wilson Lima Nerys 17 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: 232 = 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 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8

Bit 23 Bit22 Bit 21 Bit20 Bit 19 Bit18 Bit17 Bit 16Bit 31 Bit 30 Bit 29 Bit 28 Bit 27 Bit 26 Bit 25 Bit 24

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

18Prof. José Wilson Lima Nerys 18 Microprocessadores

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

19Prof. José Wilson Lima Nerys 19 Microprocessadores

Frequência de Clock

Ano Processador Frequência de ClockTecnologia

(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

2004Pentium 4

(Prescott)4 GHz 90 nm

2007 Core 2 3,33 GHz 45 nm

2010 Core i5 3,33 GHz 32 nmA

um

en

to d

o d

ese

mp

en

ho

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

𝑇𝑒𝑚𝑝𝑜 𝑑𝑒 𝑝𝑟𝑜𝑐𝑒𝑠𝑠𝑎𝑚𝑒𝑛𝑡𝑜 =𝑡𝑒𝑚𝑝𝑜

𝑐𝑖𝑐𝑙𝑜×𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑐𝑖𝑐𝑙𝑜𝑠

𝑖𝑛𝑠𝑡𝑟𝑢çã𝑜×𝑖𝑛𝑠𝑡𝑟𝑢çõ𝑒𝑠

𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑎

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

22Prof. José Wilson Lima Nerys 22 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).

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

26Prof. José Wilson Lima Nerys 26 Microprocessadores

Microprocessador × Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

27Prof. José Wilson Lima Nerys 27 Microprocessadores

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

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.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

28Prof. José Wilson Lima Nerys 28 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.).

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

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.

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

PROM (Programmable Read-Only Memory) – Podem ser escritas com dispositivos

especiais mas não podem mais ser apagadas.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

32Prof. José Wilson Lima Nerys 32 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)

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Unidade Lógica e Aritmética

(ULA)

Unidade de Temporização e

Controle

Registro de Instruções e

Decodificador de Instruções

Registradores

MicroprocessadorMemória de Programa

Memória de Dados

Unidade de Entrada e Saída

Microcontrolador

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

33Prof. José Wilson Lima Nerys 33 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

35Prof. José Wilson Lima Nerys 35 Microprocessadores

Arquitetura RISC x

Arquitetura CISC

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

36Prof. José Wilson Lima Nerys 36 Microprocessadores

Arquitetura RISC

Unidade de Controle Memória de DadosMemória de

Programa

Arquitetura CISC

Unidade de Controle

Memória de Dados

Memória de

Programa

Registradores

Unidade de

Entrada e Saída

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

38Prof. José Wilson Lima Nerys 38 Microprocessadores

RISC CISC

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

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

Algumas Características RISC X CISC:

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

39Prof. José Wilson Lima Nerys 39 Microprocessadores

RISC CISC

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ção Instruçõ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:

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

41Prof. José Wilson Lima Nerys 41 Microprocessadores

Etapas de execução de uma instrução:

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

42Prof. José Wilson Lima Nerys 42 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 ...)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

50Prof. José Wilson Lima Nerys 50 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

51Prof. José Wilson Lima Nerys 51 Microprocessadores

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

52Prof. José Wilson Lima Nerys 52 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 )

1.048.576

( 1 MB )

Barramento de dados 8 bits Interno: 16 bits

Externo: 8 bits

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

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

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

53Prof. José Wilson Lima Nerys 53 Microprocessadores

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 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ódigo Registradores 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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

54Prof. José Wilson Lima Nerys 54 Microprocessadores

Arquitetura do 8085

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

55Prof. José Wilson Lima Nerys 55 Microprocessadores

Arquitetura do 8085 (detalhe)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

56Prof. José Wilson Lima Nerys 56 Microprocessadores

Arquitetura do 8086/88

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

57Prof. José Wilson Lima Nerys 57 Microprocessadores

Arq

uit

etu

rad

o 8

05

1

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

58Prof. José Wilson Lima Nerys 58 Microprocessadores

Arq

uit

etu

rad

o P

IC 1

6F

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

59Prof. José Wilson Lima Nerys 59 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

60Prof. José Wilson Lima Nerys 60 Microprocessadores

Princípio de Funcionamento 8085

B

A

C

D

LOAD

LOAD

LOAD

LOAD

ENABLE

ENABLE

ENABLE

ENABLE

CLOCK

CLOCK

CLOCK

CLOCK

Chave de 3 estados

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

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

Chave 3

estados

Célula básica de um registrador:

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

62Prof. José Wilson Lima Nerys 62 Microprocessadores

A = 15 H

Princípio de Funcionamento 8085

B

C

D

LOAD

LOAD

LOAD

LOAD

ENABLE

ENABLE

ENABLE

ENABLE

CLOCK

CLOCK

CLOCK

CLOCK

MOV D,A

D = 15 H

15 H

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

63Prof. José Wilson Lima Nerys 63 Microprocessadores

Frequência de Clock

CLK

Ciclo de Clock

2

cristalclock

ff

8085A: fcristal = 500 kHz a 3,125 MHz

8085A-2: fcristal = 500 kHz a 5 MHz

Exemplo: Se fcristal = 2 MHz fclock = 1 MHz

Tclock = 1 s

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

64Prof. José Wilson Lima Nerys 64 Microprocessadores

Ciclos de Clock, de Máquina e de Instrução

CLK

Estados T1 T2 T3 T4 T1 T2 T3

Ciclo de Máquina 1: M1 Ciclo de Máquina 2 : M2

Ciclo de Instrução

Ciclo de Instrução

Ciclo de Busca

Ciclo de Execução

Ciclo de

Execução

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

65Prof. José Wilson Lima Nerys 65 Microprocessadores

Diagrama de Temporização

Estados T1 T2 T3 T4 T1 T2 T3

PC FORA PC+1PC INST IR PC FORA PC+1PC INST IR

ALE

A15-A8 PC H PC H

AD7-AD0 PC L INST PC L INST

M1 M2

CLK

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

66Prof. José Wilson Lima Nerys 66 Microprocessadores

T1 T2 T3 T4 T1 T2 T3

PC FORA PC+1PC INST IR SBE

PC FORA PC+1PC INST IR

A15-A8 PC H PC H

AD7-AD0 PC L INST PC L INST

ALE

RD\

WR\

IO-M\

M1 M2

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

69Prof. José Wilson Lima Nerys 69 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 (220 = 1.048.576 = 1 Mb)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

73Prof. José Wilson Lima Nerys 73 Microprocessadores

DS 16

Offset +

64 kB

64 kB

ES 16

Offset +

CS 16

Offset +

SS 16

Offset +

64 kB

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

74Prof. José Wilson Lima Nerys 74 Microprocessadores

Princípio de Funcionamento 8051

Se f = 12 MHz

clock

clockf

T1

clock

clockmáquinaf

TT12

12

Se f = 11.0592 MHz

sMHz

Tmáquina 112

12

sMHz

Tmáquina 085,10592,11

12

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

77Prof. José Wilson Lima Nerys 77 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

80Prof. José Wilson Lima Nerys 80 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)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

81Prof. José Wilson Lima Nerys 81 Microprocessadores

Registrador de Flags – 8086

(Registrador de Estado do Programa (PSW)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

× × × × O D I T S Z × 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.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

84Prof. José Wilson Lima Nerys 84 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_IN CY_OUT OV = (XOR)

0 0 0

0 1 1

1 0 1

1 1 0

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

85Prof. José Wilson Lima Nerys 85 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)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

86Prof. José Wilson Lima Nerys 86 Microprocessadores

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

ParidadeOverflowUso Geral

Auxiliar

de Carry

Carry

RS1 RS0 Banco Selecionado

0 0 0

0 1 1

1 0 2

1 1 3

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

88Prof. José Wilson Lima Nerys 88 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)

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.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

89Prof. José Wilson Lima Nerys 89 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)

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.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

90Prof. José Wilson Lima Nerys 90 Microprocessadores

Pilha no

8085 e 8051

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

91Prof. José Wilson Lima Nerys 91 Microprocessadores

Região de memória usada para guardar endereço de retorno e

valores temporários

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

Instruções que usam a

pilha:

CALL

RET

PUSH

POP

Interrupções

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

94Prof. José Wilson Lima Nerys 94 Microprocessadores

Exemplo: A = 01 H, F = 23 H, B = 45 H, C = 67 H

A

F

A

F

B

C

Flags

Endereço

da RAM

Conteúdo

2089

208A

208B

208C

208D

208E 23

208F 01

2090

SP após a instrução:

208Eh

Endereço

da RAM

Conteúdo

2089

208A

208B

208C 67

208D 45

208E 23

208F 01

2090

SP após a instrução:

208Ch

PUSH PSW PUSH B

SP inicial:

2090h

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

95Prof. José Wilson Lima Nerys 95 Microprocessadores

Exemplo: A = 01 H, F = 23 H, B = 45 H, C = 67 H

A

F

A

F

B

C

Endereço

da RAM

Conteúdo

2089

208A

208B

208C 67

208D 45

208E 23

208F 01

2090

SP após a instrução:

208Eh

Endereço

da RAM

Conteúdo

2089

208A

208B

208C 67

208D 45

208E 23

208F 01

2090

SP após a instrução:

2090h

POP B POP PSW

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

96Prof. José Wilson Lima Nerys 96 Microprocessadores

Pilha

Exemplo de aplicação

Endereço Mnemônico Código

2000 H LXI SP,203FH 31 22 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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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

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ória A 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 nas

operações PUSH e POP e 16

bits nas operações LCALL,

RET e chamadas de

interrupção.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

100Prof. José Wilson Lima Nerys 100 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

101Prof. José Wilson Lima Nerys 101 Microprocessadores

Instruções de Transferência de Dados do 8085

Instrução Efeito Descriçã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) byte Carrega 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) word Carrega 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.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

102Prof. José Wilson Lima Nerys 102 Microprocessadores

Exemplos usando instruções de transferência de dados

Endereço Instrução Descrição

2000H MVI C,20H O registrador C é carregado com o valor hexadecimal 20h

2002H MOV B,C Copia em B o conteúdo do registrador C

2003H LXI H,2030H Carrega registradores H e L com os valores 20H e 30H

2006H MOV M,BCopia o conteúdo de B na posição de memória apontada por HL

(2030H)

2007H LDA 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

200AH XCHGOs 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

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

103Prof. José Wilson Lima Nerys 103 Microprocessadores

Instruções Aritméticas do 8085

Instrução Efeito Descrição

ADD B A A + B Acumulador “A” recebe o resultado da adição “A + B”

ADC D A A + D + CY Acumulador recebe o resultado da adição “A + B + CY”

ADI byte A A + byte Acumulador recebe o resultado da adição “A + byte”

ACI byte AA +byte +CY Acumulador recebe o resultado da adição “A + byte + CY”

SUB M A A - ((H,L))Acumulador recebe resultado da subtração “A – conteúdo da

posição indicada pelo registrador duplo HL”

SUI byte A A – byte Acumulador recebe o resultado da subtração “A – byte”

INR C C C + 1 Incrementa em “1” o conteúdo do registrador C

INX H HL HL + 1 Incrementa em “1” o conteúdo do registrador duplo HL

DCR L L L – 1 Decrementa em “1” o conteúdo do registrador L

DCX B BC BC – 1 Decrementa em “1” o conteúdo do registrador duplo BC

DAA Faz o ajuste decimal do conteúdo do acumulador

Obs.: Todas as flags (com poucas exceções) são afetadas: Z, S, P, CY, AC

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

104Prof. José Wilson Lima Nerys 104 Microprocessadores

Exemplos usando instruções de transferência de dados e aritméticas

Endereço Instrução Descrição

2000H MVI A,20H O registrador A é carregado com o valor hexadecimal 20h

2002H MVI B,30H O registrador B é carregado com o valor hexadecimal 30h

2004H ADD B O acumulador recebe o resultado de A + B

2005H INR A Incrementa em 1 unidade o conteúdo do acumulador

2006H SUI 02H Subtrai em duas unidades o conteúdo do acumulador

2008H ADI 05H Adiciona 05H ao conteúdo do acumulador

200AH DAA Faz o ajuste decimal do conteúdo do acumulador

200BH LXI D,2050H Carrega registradores D e E com valores 20H e 50H

200EH INX D Incrementa em 1 registrador duplo DE

200FH LXI H,2070H Carrega registradores H e L com valores 20H e 10H

2012H DAD D Adiciona o conteúdo de DE ao conteúdo de HL

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

105Prof. José Wilson Lima Nerys 105 Microprocessadores

Instruções de Desvio do 8085

Instrução Efeito Descrição

JMP ender. PC ender.Processamento é desviado, de forma incondicional, para

o endereço “ender.”.

JNC ender. PC ender., se CY=0Processamento é desviado para o endereço “ender.”, se a

flag de carry “CY” for zero (CY = 0).

JC ender. PC ender., se CY=1Processamento é desviado para o endereço “ender.”, se a

flag de carry “CY” estiver setada (CY = 1).

JNZ ender. PC ender., se Z=0Processamento é desviado para o endereço “ender.”, se a

flag de zero “Z” for zero (Z = 0).

JZ ender. PC ender., se Z =1Processamento é 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”.

RET PC ((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.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

106Prof. José Wilson Lima Nerys 106 Microprocessadores

Exemplos usando instruções de desvio

Endereço Instrução Descrição

2000H MVI A,20H O registrador A é carregado com o valor hexadecimal 20h

2002H MVI B,30H O registrador B é carregado com o valor hexadecimal 30h

2004H ADD B O acumulador recebe o resultado de A + B

2005H JNC 2004H Se CY=0, desvia para 2004; se CY=1, vai para a próxima linha

2008H DCR B Decrementa o registrador B

2009H JNZ 2008H Se Z=0, desvia para 2008H; se Z=1, vai para a próxima linha

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

107Prof. José Wilson Lima Nerys 107 Microprocessadores

Instruções Lógicas do 8085

Instrução Efeito Descrição

ANA B A A BAcumulador 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 byteAcumulador 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 EAcumulador recebe o resultado da operação lógica “OR” (bit

a bit) entre o conteúdo do acumulador e o registrador E.

ORI byte AA byteAcumulador recebe o resultado da operação lógica “OR” (bit

a bit) entre o conteúdo do acumulador e o “byte”.

XRA D A A XOR DAcumulador recebe resultado da operação lógica “XOR” (bit a

bit) entre o conteúdo do acumulador e do registrador D

RLC An+1 An Rotaciona à esquerda o conteúdo do acumulador

RARAn An+1

A7 CY

Rotaciona à direita o conteúdo do acumulador, incluindo a

flag de carry. Ou seja, rotação à direita de 9 bits.

CMP B A – 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 byte A – byte Compara o conteúdo de A como o byte.Ob

s.:

as in

str

uçõ

es ló

gic

as a

feta

m to

da

s a

s f

lag

s

(alg

um

as e

xce

çõ

es)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

108Prof. José Wilson Lima Nerys 108 Microprocessadores

Exemplos usando instruções lógicas

Endereço Instrução Descrição

2000H MVI A,25H O registrador A é carregado com o valor hexadecimal 25h

2002H MVI B,0FH O registrador B é carregado com o valor hexadecimal 0Fh

2004H ANA B O acumulador recebe o resultado da operação A AND B

2005H ORI 70H O acumulador recebe o resultado da operação A OR 70H

2007H RLC Rotaciona à esquerda o conteúdo do acumulador

2008H CPI 99H Compara o conteúdo do acumulador com 99H

200AH JC 2004H Se CY=1, desvia para 2004H

200DH JMP 2002H Desvia para 2002H

CPI byte CY Z

A > byte 0 0

A = byte 0 1

A < byte 1 0

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

109Prof. José Wilson Lima Nerys 109 Microprocessadores

Instruções de Pilha e de Controle

Instrução Efeito Descrição

PUSH PSW Pilha (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 B Pilha (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 80H A Porta 80hCopia no acumulador o conteúdo externo que foi lido através

da Porta paralela 80H.

OUT 80H Porta 90h A Transfere para a Porta 90H o conteúdo do acumulador

HLT Para o processamento.

Obs.: as instruções de pilha e de controle não afetam nenhuma flag.

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

110Prof. José Wilson Lima Nerys 110 Microprocessadores

Exemplos usando instruções de pilha e de controle

Endereço Instrução Descrição

2000H MVI A,25H O registrador A é carregado com o valor hexadecimal 25h

2002H MVI B,0FH O registrador B é carregado com o valor hexadecimal 0Fh

2004H ANA B O acumulador recebe o resultado da operação A AND B

2005H ORI 70H O acumulador recebe o resultado da operação A OR 70H

2007H RLC Rotaciona à esquerda o conteúdo do acumulador

2008H CPI 99H Compara o conteúdo do acumulador com 99H

200AH JC 2004H Se CY=1, desvia para 2004H

200DH JMP 2002H Desvia para 2002H

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

111Prof. José Wilson Lima Nerys 111 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

112Prof. José Wilson Lima Nerys 112 Microprocessadores

Programa-exemplo 1: contagem crescente

Endereço Instrução Descrição

2000H LXI SP,2050H O registrador duplo HL recebe o valor 2050H (pilha)

2003H MVI A,00H O registrador A é carregado com o valor hexadecimal 00H

2005H PUSH PSW Guarda na pilha o conteúdo de A e F (acumulador e flags)

2006H CALL 036EH Mostra no display o conteúdo de A

2009H POP PSW Recupera da pilha o conteúdo de A e F

200AH ADI 01H Adiciona 01H ao conteúdo de A

200CH JMP 2005H Desvia para 2005H

200FH HLT Encerra o programa

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

113Prof. José Wilson Lima Nerys 113 Microprocessadores

Programa-exemplo 2: contagem crescente decimal

Endereço Instrução Descrição

2000H LXI SP,2050H O registrador duplo HL recebe o valor 2050H (pilha)

2003H MVI A,00H O registrador A é carregado com o valor hexadecimal 00H

2005H PUSH PSW Guarda na pilha o conteúdo de A e F (acumulador e flags)

2006H CALL 036EH Mostra no display o conteúdo de A

2009H POP PSW Recupera da pilha o conteúdo de A e F

200AH ADI 01H Adiciona 01H ao conteúdo de A

200CH DAA Faz a correção decimal do conteúdo do acumulador

200DH JMP 2005H Desvia para 2005H

2010H HLT Encerra o programa

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

114Prof. José Wilson Lima Nerys 114 Microprocessadores

Programa-exemplo 3: contagem decrescente decimal

Endereço Instrução Descrição

2000H LXI SP,2070H O registrador SP recebe o valor 2070H (pilha)

2003H MVI A,00H O registrador A é carregado com o valor hexadecimal 00H

2005H PUSH PSW Guarda na pilha o conteúdo de A e F (acumulador e flags)

2006H CALL 036EH Mostra no display o conteúdo de A

2009H POP PSW Recupera da pilha o conteúdo de A e F

200AH ADI 99H Adiciona 99H ao conteúdo de A (subtrai uma unidade)

200CH DAA Faz a correção decimal do conteúdo do acumulador

200FH JMP 2004H Desvia para 2004H

2012H HLT Encerra o programa

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

115Prof. José Wilson Lima Nerys 115 Microprocessadores

Programa-exemplo 4: mostra no display o conteúdo da Tabela

Ender. Instrução Descrição

2000H LXI SP,2070HO registrador duplo SP recebe o valor

2070H (pilha)

2003H LXI H,2050HO registrador duplo HL é carregado com

o valor 2050H

2006H MOV A,MCarrega em A o conteúdo da posição

apontada por HL

2007H PUSH H Guarda na pilha o conteúdo de HL

2008H CALL 036EH Recupera da pilha o conteúdo de A e F

200BH POP H Recupera da pilha o conteúdo de HL

200CH INX H Incrementa em 1 o registrador duplo HL

200DH JMP 2006H Desvia para 2006H

Ender. Dados

2050H 50H

2051H A5H

2052H 15H

2053H F1H

2054H 05H

2055H 66H

2056H B4H

2057H 87H

2058H 45H

2059H 39H

205AH 77H

205BH C5H

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

116Prof. José Wilson Lima Nerys 116 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ção Descrição

2000H LXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha)

2003H LXI H,2050H O registrador duplo HL é carregado com o valor 2050H

2006H MVI D,10H Contador para leitura de 16 elementos da tabela

2008H MOV A,M Carrega em A o conteúdo da posição apontada por HL

2009H PUSH D Guarda na pilha os conteúdos de D e E

200AH PUSH H Guarda na pilha os conteúdos de H e L

200BH CALL 036EH Mostra no Display de Dados o conteúdo de A

200EH CALL 2020H Chama subrotina de atraso de tempo no ender. 2020H

2011H POP H Recupera da pilha o conteúdo de H e L

2012H POP D Recupera da pilha o conteúdo de D e E

2013H INX H Incrementa em 1 o registrador duplo HL

2014H DCR D Decrementa em uma unidade o conteúdo de D

2015H JNZ 2008H Desvia para 2008H se a Flag Z = 0 (D diferente de 0)

2018H HLT Encerra o programa

Ender. Dados

2050H 50H

2051H A5H

2052H 15H

2053H F1H

2054H 05H

2055H 66H

2056H B4H

2057H 87H

2058H 45H

2059H 39H

205AH 77H

205BH C5H

205CH 40H

205DH 11H

205EH 33H

205FH 44H

Ender. Dados

2020H MVI B,50H

2022H DCR B

2023H JNZ 2022H

2026H RET

Atraso de tempo

Tabela de Dados

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

117Prof. José Wilson Lima Nerys 117 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ção Descrição

2000H LXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha)

2003H LXI H,2050H O registrador duplo HL é carregado com o valor 2050H

2006H MOV A,M Carrega em A o conteúdo da posição apontada por HL

2007H PUSH H Guarda na pilha os conteúdos de H e L

2008H CALL 036EH Mostra no Display de Dados o conteúdo de A

200BH CALL 2020H Chama subrotina de atraso de tempo no ender. 2020H

200EH POP H Recupera da pilha o conteúdo de H e L

200FH INX H Incrementa em 1 o registrador duplo HL

2010H MOV A,L A recebe o valor de L, para verificar se já chegou a 60H

2011H CPI 60H Compara A com 60H.

2013H JNZ 2006H Desvia para 2006H se a Flag Z = 0 (A diferente de 60H)

2016H HLT Encerra o programa

Ender. Dados

2050H 50H

2051H A5H

2052H 15H

2053H F1H

2054H 05H

2055H 66H

2056H B4H

2057H 87H

2058H 45H

2059H 39H

205AH 77H

205BH C5H

205CH 40H

205DH 11H

205EH 33H

205FH 44H

Ender. Dados

2020H MVI B,50H

2022H DCR B

2023H JNZ 2022H

2026H RET

Atraso de tempo

Tabela de Dados

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

118Prof. José Wilson Lima Nerys 118 Microprocessadores

Aula Dia Conteúdo

09/03 (Qui) Não haverá aulas

1 14/03 (Ter)Introdução ao curso de Microprocessadores e microcontroladores: histórico e

conceitos básicos.

2 16/03 (Qui) Ferramentas de simulação. Arquitetura CISC x Arquitetura RISC

3 21/03 (Ter)Arquitetura, diagrama de blocos dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

4 23/03 (Qui)Princípio de funcionamento dos microprocessadores 8085, 8086/8088 e

Microcontroladores 8051 e PIC

5 28/03 (Ter) Registradores de Flags. Princípio de operação da pilha

6 30/03 (Qui) Instruções do 8085. Princípios de programação do 8085.

7 04/04 (Ter) Programação básica do Microprocessador 8085

8 06/04 (Qui) Programação básica do Microprocessador 8085

9 11/04 (Ter)

Prova 1 - conteúdo das aulas 1 a 8 (conceitos básicos, pilha, flags, princípio de

funcionamento de microprocessadores e microcontroladores e programação do

8085)

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

119Prof. José Wilson Lima Nerys 119 Microprocessadores

Programa-exemplo 7: mostra no display os valores maiores que 40H, lidos

da Tabela

Ender. Instrução Descrição

2000H LXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha)

2003H LXI H,2050H O registrador duplo HL é carregado com o valor 2050H

2006H MOV A,M Carrega em A o conteúdo da posição apontada por HL

2007H CPI 40H Compara A com 40H (se A > 40H, então Z=0 e CY=0)

2009H JC 2017H Se CY = 1, então A < 40H (A não será mostrado)

200CH JZ 2017H Se Z = 1, então A = 40H (A não será mostrado)

200FH PUSH H Guarda os conteúdos de H e L na pilha

2010H CALL 036EH Mostra no Display de Dados os valores de A > 40H

2013H CALL 2020H Chama subrotina de atraso de tempo no ender. 2020H

2016H POP H Recupera da pilha o conteúdo de H e L

2017H INX H Incrementa em 1 o registrador duplo HL

2018H MOV A,L A recebe o valor de L, para verificar se já chegou a 60H

2019H CPI 60H Compara A com 60H.

201BH JNZ 2006H Desvia para 2006H se a Flag Z = 0 (A diferente de 60H)

201EH HLT Encerra o programa

Ender. Dados

2050H 50H

2051H A5H

2052H 15H

2053H F1H

2054H 05H

2055H 66H

2056H B4H

2057H 87H

2058H 45H

2059H 39H

205AH 77H

205BH C5H

205CH 40H

205DH 11H

205EH 33H

205FH 44H

Ender. Dados

2020H MVI B,50H

2022H DCR B

2023H JNZ 2022H

2026H RET

Atraso de tempo

Tabela de Dados

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

120Prof. José Wilson Lima Nerys 120 Microprocessadores

Programa-exemplo 8: mostra no display os valores maiores ou iguais a 40H,

lidos da Tabela

Ender. Instrução Descrição

2000H LXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha)

2003H LXI H,2050H O registrador duplo HL é carregado com o valor 2050H

2006H MOV A,M Carrega em A o conteúdo da posição apontada por HL

2007H CPI 40H Compara A com 40H (se A >= 40H, então CY=0)

2009H JC 2014H Se CY = 1, então A < 40H (A não será mostrado)

200CH PUSH H Guarda os conteúdos de H e L na pilha

200DH CALL 036EH Mostra no Display de Dados os valores de A >= 40H

2010H CALL 2020H Chama subrotina de atraso de tempo no ender. 2020H

2013H POP H Recupera da pilha o conteúdo de H e L

2014H INX H Incrementa em 1 o registrador duplo HL

2015H MOV A,L A recebe o valor de L, para verificar se já chegou a 60H

2016H CPI 60H Compara A com 60H.

2018H JNZ 2006H Desvia para 2006H se a Flag Z = 0 (A diferente de 60H)

201BH HLT Encerra o programa

Ender. Dados

2050H 50H

2051H A5H

2052H 15H

2053H F1H

2054H 05H

2055H 66H

2056H B4H

2057H 87H

2058H 45H

2059H 39H

205AH 77H

205BH C5H

205CH 40H

205DH 11H

205EH 33H

205FH 44H

Ender. Dados

2020H MVI B,50H

2022H DCR B

2023H JNZ 2022H

2026H RET

Atraso de tempo

Tabela de Dados

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

121Prof. José Wilson Lima Nerys 121 Microprocessadores

Programa-exemplo 9: mostra no display os valores maiores ou iguais a 40H

e menores que 80H, lidos da Tabela

Ender. Instrução Descrição

2000H LXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha)

2003H LXI H,2050H O registrador duplo HL é carregado com o valor 2050H

2006H MOV A,M Carrega em A o conteúdo da posição apontada por HL

2007H CPI 40H Compara A com 40H (se A >= 40H, então CY=0)

2009H JC 2019H Se CY = 1, então A < 40H (A não será mostrado)

200CH CPI 80H Compara A com 80H (se A < 80H, então CY = 1)

200EH JNC 2019H Se CY=0, então A >= 80H (A não será mostrado)

2011H PUSH H Guarda os conteúdos de H e L na pilha

2012H CALL 036EH Mostra no Display de Dados os valores de A >= 40H e <80H

2015H CALL 2025H Chama subrotina de atraso de tempo no ender. 2025H

2018H POP H Recupera da pilha o conteúdo de H e L

2019H INX H Incrementa em 1 o registrador duplo HL

201AH MOV A,L A recebe o valor de L, para verificar se já chegou a 60H

201BH CPI 60H Compara A com 60H.

201DH JNZ 2006H Desvia para 2006H se a Flag Z = 0 (A diferente de 60H)

2020H HLT Encerra o programa

Ender. Dados

2050H 50H

2051H A5H

2052H 15H

2053H F1H

2054H 05H

2055H 66H

2056H B4H

2057H 87H

2058H 45H

2059H 39H

205AH 77H

205BH C5H

205CH 40H

205DH 11H

205EH 33H

205FH 44H

Ender. Dados

2025H MVI D,50H

2027H DCR D

2028H JNZ 2027H

202BH RET

Atraso de tempo

Tabela de Dados

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

122Prof. José Wilson Lima Nerys 122 Microprocessadores

Programa-exemplo 10: Rotação de LEDs para a esquerda

Ender. Instrução Descrição

2000H LXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha)

2003H MVI A,02 Configura os LEDs como saída de dados e as chaves com

entrada de dados2005H OUT 20H

2007H MVI A,01H A recebe o valor 01H, para ser rotacionado

2009H OUT 22H Transfere o conteúdo de A para a porta 22H

200CH CALL 2015H Chama subrotina de atraso de tempo no ender. 2015H

200DH RLC Rotaciona à esquerda o conteúdo de A

2010H JMP 2009H Desvia para o endereço 2009H

201BH HLT Encerra o programa

Ender. Dados

2015H MVI D,50H

2017H DCR D

2018H JNZ 2017H

201BH RET

Atraso de tempo

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

123Prof. José Wilson Lima Nerys 123 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ção Descrição

2000H LXI SP,2070H O registrador duplo SP recebe o valor 2070H (pilha)

2003H MVI A,02Configura os LEDs como saída de dados e as chaves com entrada de dados

2005H OUT 20H

2007H MVI B,01H B recebe o valor 01H, para ser rotacionado (necessário porque A vai recebe valores das chaves)

2009H IN 21H Transfere o valor atual das chaves para o acumulador A

200BH ANI 03H Isola os dois bits menos significativos de A (A resulta em 00H, 01H, 02H ou 03H)

200DH CPI 01H Verifica se A = 01H. Se verdadeiro (Z=1), rotacionar à esquerda.

200FH JNZ 201DH Se Z = 0, então A é diferente de 01H. Desvia para verificar se A = 02H

2012H MOV A,B Se Z=1, então A=01H. Transfere conteúdo de B para A, para rotação à esquerda

2013H OUT 22H Transfere para os LEDs o conteúdo de A

2015H RLC Rotaciona à esquerda o conteúdo de A

2016H MOV B,A Devolve para B o conteúdo rotacionado de A

2017H CALL 2030H Chama subrotina de atraso de tempo no endereço 2030H

201AH JMP 2009H Retorna para ver ler novamente o conteúdo das chaves, no endereço 2009H

201DH

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

124Prof. José Wilson Lima Nerys 124 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ção Descrição

201DH CPI 02H Verifica se A = 02H. Se verdadeiro (Z=1), rotacionar à direita.

201FH JNZ 2009H Se Z = 0, então A é diferente de 02H. Desvia para ler novamente a chave

2022H MOV A,B Se Z=1, então A=02H. Transfere conteúdo de B para A, para rotação à direita

2023H OUT 22H Transfere para os LEDs o conteúdo de A

2025H RRC Rotaciona à direita o conteúdo de A

2026H MOV B,A Devolve para B o conteúdo rotacionado de A

2027H CALL 2030H Chama subrotina de atraso de tempo no endereço 2030H

202AH JMP 2009H Retorna para ver ler novamente o conteúdo das chaves, no endereço 2009H

202DH HLT Encerra programa

202EH

202FH

2030H MVI D,50H D recebe o valor 50H, para gera atraso de tempo

2032H DCR D Decrementa o conteúdo de D

2033H JNZ 2032H Se Z = 0 (D é diferente de zero), então retorna para decrementar D novamente, até zerar

2036H RET Retorna da subrotina de atraso de tempo

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

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