MICROPROCESSADORES E MICROCONTROLADORESjwilson/pdf/Micro_Parte_1(Conceitos).pdf · Emails:...
Transcript of MICROPROCESSADORES E MICROCONTROLADORESjwilson/pdf/Micro_Parte_1(Conceitos).pdf · Emails:...
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