Escolar Documentos
Profissional Documentos
Cultura Documentos
Bonacorso 2001
Capítulo 2 – MICROPROCESSADORES
......................................................................................................................................... ...........................
2.1 - Evolução
2.2 - Arquitetura Interna de um Microprocessador
2.3 - Hardware Típico de um Microprocessador
2.4 - Memórias
2.5 - Decodificação de Endereços
2.6 – Linguagens de Programação
2.1 – Evolução
A seguir, em 1972 a INTEL lançou uma versão mais poderosa deste microprocessador chamado
8008, este já de 8 bits de dados e com um conjunto de 48 instruções. Em 1973 o 8080 que se seguiu ao
8008 já continha 30 instruções a mais que o 8008, o que ampliava para 78 instruções, além da maior
capacidade de endereçamento: 65535 posições de memória.
Em 1976 a INTEL já fornecia diversas versões do 8080, incluindo o 8085 que tinha importantes
aperfeiçoamentos como a alimentação de uma só tensão de 5V, e capacidade de leitura/escrita de dados
seriais. O conjunto de instruções do 8085 era quase o mesmo exceto por duas novas instruções, portanto
mantendo a compatibilidade de software com o 8080.
O microprocessador Z-80 da Zilog é um microprocessador de 8 bits que dividiu com o 8085 e com
o 6.800 da Motorola, a predominância no mercado, porém o Z-80 alcançou uma maior popularidade por
oferecer compatibilidade de software com a família 8080 com uma nítida vantagem pelo fato de oferecer
um complemento de 80 instruções sobre este.
1
Microprocessadores Prof. Nelso G. Bonacorso 2001
Outro fabricante que aparece com destaque no cenário dos microprocessadores de 8 bits é a
Motorola com sua CPU MC6800 e MCS6502. A Motorola no entanto obteve mais sucesso com o seu
microprocessador de 16 bits o MC68.000, o qual é usado na plataforma de hardware dos
microcomputadores da marca Apple, os famosos MacIntosh. A tabela 2.1 dá uma idéia de como foi a
evolução dos microprocessadores, incluindo os principais fabricantes.
Podemos dividir o microprocessador em geral em três blocos básicos que são: a ALU (unidade de
aritmética e lógica ), a rede de registradores da CPU (o acumulador, registrador auxiliar e os outros
2
Microprocessadores Prof. Nelso G. Bonacorso 2001
registradores) e a seção de controle. A figura 2.1 mostra o diagrama de blocos da arquitetura interna de
uma CPU genérica.
Alimentação
Via de
Control
Decodificador
de Instruções e
Registrador Controle da CPU
de Instruções
Flags
Via de
Dados Controle da
ALU
Via de Dados
Via de
Registros Controle da Endereços
da CPU Via de Endereços
- Via de Dados (Data Bus): são as linhas (8 nos microprocessadores de 8 bits) nas quais temos os dados
com os quais o microprocessador irá trabalhar, ou os resultados de cálculos efetuados a serem enviados para
fora do chip. São vias bidirecionais, isto é, emitem e recebem dados.
- Via de Endereços (Address Bus): em geral, 16 linhas (nos microprocessadores de 8bits) que dessa forma
podem endereçar 65.536 posições diferentes nas memórias externas ao microprocessador. Essas linhas são
unidirecionais, isto é, só emitem o endereço.
- Via de Controle (Control Bus): essas linhas, algumas de saída outras de entrada, permitem ao
microprocessador controlar dispositivos externos ou ser, pelo menos, controlado.
- ALU (Unidade de Lógica e Aritmética): é o local onde o microprocessador efetua as operações de
lógica e aritmética.
- Decodificador de Instruções: é um circuito lógico que, ao receber o código binário da instrução, gera os
sinais de controle necessários para que o microprocessador execute a função desejada.
3
Microprocessadores Prof. Nelso G. Bonacorso 2001
MUNDO EXTERIOR
A interface de entrada são circuitos que interligam o mundo exterior às linhas de entrada do
sistema microprocessado e são usadas para prover informações deste mundo exterior ao sistema. O
sistema, após tratar, ou processar estas informações, entrega através das suas linhas de saída as mesmas à
interface de saída para serem interpretadas pelo usuário, acionar algum dispositivo, etc.
A interface de entrada pode estar conectada a dispositivos os mais variados, recebendo do mundo
exterior as mais variadas informações. Por exemplo esta interface de entrada poderia estar recebendo
caracteres de um teclado de computador, se o sistema microprocessado em questão fosse um
microcomputador, mas também poderia ser proveniente de um circuito de aquisição de dados ligados a
sensores, por exemplo sensores de pressão, temperatura, vibração, posição, etc., e neste caso o sistema
microprocessado poderia ser um computador de bordo de um avião, ou mesmo um automóvel mais
sofisticado. Em suma, a informação de entrada para o sistema depende da aplicação deste sistema
microprocessado.
4
Microprocessadores Prof. Nelso G. Bonacorso 2001
A interface de saída da mesma forma poderá estar conectada aos mais variados dispositivos
transmitindo a informação previamente processada pelo sistema ao mundo exterior. No exemplo no qual o
sistema se tratava de um microcomputador, esta interface de saída estará conectada, por exemplo, ao
monitor de vídeo, ou à impressora. No caso do computador de bordo, a interface de saída poderá estar
conectada aos dispositivos de controle de temperatura, pressão, suspensão, ou atuadores diversos.
A CPU, a interface de I/0, as memórias físicas, e os periféricos, são o que chamamos de hardware
do sistema. As instruções que residem na memória de programa é a porção denominada software ou
programa. O sistema microprocessado visto em maior detalhe, figura 2.3, consiste dos seguintes blocos:
ALIMENTAÇÃO
Via de Dados
GERADOR
DO
rd RESET
rd MEMÓRIA rd MEMÓRIA
MICRO DE
DE P
INTERRUPÇÕES DADOS PROGRAMA O
PROCESSADOR
wr R
T
A
CPU S
Via de Endereços
cs0 cs1
D
Via de Controle E
cs2
SELEÇÃO DE
OSCILADOR ENDEREÇOS I/O
cs3
Figura 2.3 - Sistema Microprocessado Genérico.
- Microprocessador: o microprocessador ocupa uma posição de destaque em qualquer sistema
microprocessado. É ele que gerencia todas as operação que se processam no sistema. Esta gerencia é
efetuado através da troca de sinais de controle com os demais dispositivos (memórias, e interfaces de I/O).
Para se comunicar com os demais blocos do sistema, a CPU se utiliza de um sistema de vias ou
barramentos, que são agrupamentos de sinais de mesma natureza. Estas vias poderão ser de três tipos: via
de dados, via de endereços e via de controle.
- Oscilador ou Circuito de Clock: o circuito oscilador ou circuito de clock, é o responsável pela geração
de um sinal de relógio que a CPU, assim como outros circuitos específicos, utilizam para o perfeito
sincronismo de todas as operações do sistema. A frequência deste sinal de relógio vai depender do tipo de
5
Microprocessadores Prof. Nelso G. Bonacorso 2001
CPU que se está usando, e pode variar 2 megahertz até 300 megahertz nos sistemas providos de
microprocessadores de última geração.
- Gerador de Reset: inicializa o sistema ao ligar e também inicializa o sistema sob comando externo.
- Seleção de Endereços: circuito lógico que escolhe qual memória ou perif érico a CPU vai utilizar. Este
circuito é responsável pela lógica de seleção necessária para que a via de dados, endereços, e controle sejam
compartilhados no tempo entre estas várias interfaces, e para que a CPU possa individualizar os vários
dispositivos de I/O através de endereços únicos.
- Portas de I/O: dispositivos de entrada e saída (Input/Output) para comunicação com o mundo externo
como teclados, display, impressoras, entre outros.
- Memória de Programa: memória onde a CPU vai procurar as instruções para executa-las.
- Memória de Dados: memória onde a CPU lê e escreve dados durante a operação normal.
controle de que quer exetuar a leitura rd da instrução deste endereço, em segundo lugar o circuito de
seleção de endereços fornece somente o sinal de habilitação cs0 para a memória de programa e por último a
instrução do endereço em questão ( exemplo: 3EH ) é fornecido ao microprocessador pela via de dados.
6
Microprocessadores Prof. Nelso G. Bonacorso 2001
2100 H) e o sinal de controle de que quer efetuar a escrita wr do dado neste endereço, em segundo lugar o
circuito de seleção de endereços fornece somente o sinal de habilitação cs1 para a memória de dados e por
último o microprocessador envia o dado ( exemplo: B6H ) para o endereço em questão pela via de dados
para a memória de dados.
Ao ligarmos o sistema, a primeira coisa que o microprocessador faz é buscar a primeira instrução do
programa principal no endereço 0000 H da memória de programa, e logo após executa esta instrução.
Depois o microprocessador automaticamente busca a segunda instrução no endereço 0001 H da memória de
programa para ser executada. Este procedimento é realizado até encontrar a instrução de “término do
programa”. De maneira simbólica, podemos ver o processo pelo fluxograma da figura 2.4.
7
Microprocessadores Prof. Nelso G. Bonacorso 2001
Início
Busca da
Instrução
Executa a Salva o
Instrução Contador de
Endereços
Incrementa o
Executa o
Contador de
Programa da
Endereços
Interrupção
s
Interrupção n
Fim ?
n
s
n
Fim ? Carrega o
Contador de
Endereços
s
Fim do Programa
O conjunto de instruções que a CPU entende, constitui o que se chama de linguagem assembly do
microprocessador, e para um mesmo microprocessador podem ser mais de 100 diferentes instruções cada
qual associada a uma operação. Estas instruções do microprocessador combinadas como previamente dito
irá formar um programa em linguagem assembly, este programa que é armazenado na memória de
programa é que provê inteligência ao sistema. Passaremos agora, a detalhar um pouco mais cada uma
dessas partes hardware e software que compõe o sistema.
2.4 – Memórias
A memória é o local onde é armazenado não somente o programa e os dados mas também os dados
processados (resultados finais e parcias). A figura 2.5 ilustra como visualizar uma memória de 65.536
8
Microprocessadores Prof. Nelso G. Bonacorso 2001
posições ou endereços. Em cada endereço é guardado uma informação de 1 byte. Esta informação poderá
ser um dado ou uma instrução de programa.
Endereço Informação
0000 H C8H
0001 H A4H
0002 H 3EH
FFFD H 00H
FFFE H 29H
FFFF H B6H
São as memórias tipo ROM (Read Only Memory), que só podem ser lidas e não perdem a
informação ao ser desligadas. Dividem-se em vários tipos, sendo:
- EPROM: é uma PROM apagável e regravável, quando exposta a luz ultravioleta perde as suas
informações e permite uma nova gravação.
São as memórias do tipo RAM (Random Acess Memory), permitem ler e escrever dependendo
sempre da tensão de alimentação. Ao desligar o sistema seus dados são perdidos. Dividem-se em:
9
Microprocessadores Prof. Nelso G. Bonacorso 2001
- Estáticas: mantém as informações durante todo o tempo em que estiver com alimentação.m da operação
de refresh, que é necessário de tempos em tempos repassar a memória, caso contrário, perdem seus dados
mesmo com a alimentação ligada.
- Dinâmicas: são memórias nas quais as informações vão gradativamente desaparecendo, necessitando de
uma regravação (circuito de refresh).
É um tipo especial de memória chamada EEPROM (Electric Erasable PROM), mais conhecida
com E2PROM, isto é, pode ser programada e apagada eletricamente, não necessitando mais da exposição à
luz ultravioleta.
Vimos que o microprocessador acessa diferentes periféricos usando a mesma via de endereços e a
mesma via de dados. Para isso, o microprocessador envia um sinal de habilitação através do circuito de
seleção de endereços que indica qual o periférico que ele deseja “conversar”, isto é, ler ou escrever.
Como são muitos os periféricos (chips) então o microprocessador usa a própria via de endereços
para gerar os sinais de habilitação através de um “decodificador de endereços”. O componente que realiza
a função de decodificação de endereços é o chip 74138 que é, na realidade, um multiplexador de 3x8, isto é,
3 entradas e 8 saídas. A tabela 2.2 ilustra o seu funcionamento deste componente.
10
Microprocessadores Prof. Nelso G. Bonacorso 2001
Via de Dados
D0 – D7 (8 bits)
8K 8K 8K 8K
wr wr wr wr wr
Via de Endereços
A0 – A15 (16 bits)
rd rd rd rd rd
A13 A0 Y0
A14 A1 Y1
A15 A2 Y2
Y3
Y4
Y5
Y6
Y7
74138
A via de dados (D0 – D7), a via de endereços (A0 – A12) e os sinais rd e wr são comum a todas
as memórias. Através do multiplexador 74138 seleciona-se qual das memórias será acionada. As demais
permanecem com seus pinos em alta impedância.
11
Microprocessadores Prof. Nelso G. Bonacorso 2001
Os bits A0 até A12 são destinados a enviar o endereço para a via de endereços podendo acessar
8.192 endereços. Já os bits A13, A14 e A15 são reservados para acionar até 8 periféricos diferentes. Assim,
mapeamos a memória como se fosse um endereço:
Para executar uma tarefa qualquer, um microprocessador precisa receber as instruções precisas
sobre o que fazer. Uma seqüência adequada de instruções para realizar uma tarefa se constitui num
programa de microprocessador. Uma linguagem de programação é um conjunto de ferramentas, regras de
sintaxe e símbolos ou códigos que nos permitem escrever programas.
A linguagem de máquina é aquela que mais se aproxima das características técnicas do hardware,
é a linguagem própria do microprocessador, definida pelo fabricante, confusa para o ser humano, é
caracterizada por um códigos pequeno e rápido (opco des), sua representação é feita por números binários
e/ou hexadecimais o que torna a programação na linguagem de máquina pouca prática.
É importante lembrar que um microprocessador é sempre monoglota, isto é, ele entende única e
exclusivamente a sua linguagem de máquina. Portanto, para escrever um programa em outra linguagem e ele
12
Microprocessadores Prof. Nelso G. Bonacorso 2001
ser entendido e executado pelo microprocessador, é preciso haver outro programa que leia o programa
escrito nessa linguagem alternativa e traduza para a linguagem de máquina.
- Permite atribuir nomes a localizações de memória, dispositivos de entrada e saída, e mesmo seqüências de
instruções, no exemplo anterior SALTO é um nome atribuído à localização de memória 01F1H.
- Converte dados e endereços de diversos sistemas de numeração (decimal, octal, hexadecimal) para binário,
e ainda caracteres para seus correspondentes códigos, exemplo: ASCII.
- Executa algumas operações aritméticas como parte do processo assembly, por exemplo, na instrução ADD
A, C+1, ao acumulador é somado o conteúdo do registro C mais 1.
- Não é portátil, ou seja, um programa escrito para um determinado microprocessador não pode ser
executado em outro microprocessador de outra família.
13
Microprocessadores Prof. Nelso G. Bonacorso 2001
- Deve-se conhecer profundamente o microprocessador, para que se possa ser escrito o programa.
- Existe uma distância grande entre as instruções do microprocessador e as tarefas que o sistema
microprocessado deve executar.
As linguagens de baixo nível são compostas por símbolos e números, ou seja, códigos próximos
aos interpretados pela máquina. Exemplo: linguagem de máquina e assembly. Suas vantagens são: código
pequeno e alta velocidade de processamento. Suas desvantagens são: difícil aprendizado, difícil manutenção
e depuração.
A mais importante linguagem de alto nível para aplicações dedicadas com microprocessadores e
microcontroladores é a linguagem C, disponível para a maioria dos microprocessadores ou
microcontroladores, as chamadas plataformas de desenvolvimento. A vantagem principal é o tempo de
desenvolvimento que pode ser superior em 10 vezes ao desenvolvimento em linguagem assembly. Além
disto o programa será melhor documentado, com maior clareza, e terá maior facilidade de depuração
(debug).
A listagem parcialde um programa em assembly, tabela 2.5, é organizado de acordo com uma
estrutura que inclui os seguintes campos de informações:
14
Microprocessadores Prof. Nelso G. Bonacorso 2001
- Campo de Label’s: neste campo deverão ser colocados os label’s que são referências à posições de
memória na forma de texto, que confere ao programa fonte uma maior clareza, e uma maior facilidade de
escrita. Estes label’s serão necessários para se proporcionar as referências para desvios e início de rotina.
- Campo de Mnemônicos: neste campo estarão os mnemônicos das instruções que compõem o programa.
Além disto, serve para se incluir pseudo operandos que serão discutidos mais adiante, e que servem para
indicar ações que o programa assembler deve executar, como por exemplo definir áreas reservadas para
dados, posição de memória para alocação do programa, etc.
- Campo dos Operandos: neste campo, terceira coluna da listagem acima, deverão ser colocados, quando
houverem, os operandos das instruções, por exemplo: DEC C, sendo C o operando, e DEC o mnemônico.
Neste caso este campo é utilizado por um operando que é o conteúdo do registro C. Quando as instruções
necessitarem de endereços como operandos, por exemplo: JP SALTO, onde SALTO é o endereço de
desvio, neste campo deve ser especificado o endereço em questão.
- Campo dos Comentários: é um campo não necessário, utilizado auxiliar na documentação do programa.
- Os endereços ou operandos são assumidos como decimais se não houver nenhuma indicação em contrário.
Exemplo: ADD A,100 ; Soma 100 decimal ao acumulador.
- Caso se queira um outro sistema de numeração, que não o decimal, deve-se usar a seguinte notação:
15
Microprocessadores Prof. Nelso G. Bonacorso 2001
- Pode-se usar nomes simbólicos para definir endereços ou operandos, como visto a seguir:
Exemplo: VALOR EQU 5 ; Define VALOR1 como sendo 5
ADD A, VALOR ; Soma 5 ao acumulador
♦ Pseudo Operandos
Alguns pseudo operandos mais importantes e suas respectivas funções são descritos a seguir:
ORG (Origem): é usado para definir o endereço a partir do qual o programa, ou trecho de programa,
ocupará na memória de programa. Exemplo: ORG 0100H, indica ao programa assembler que o programa
escrito após este pseudo operando, deverá ocupar a área de memória a partir do endereço 0100H da
memória.
DS (Define Segmento): serve para reservar uma área de memória. Exemplo: VAL: DS 10, esta reservado
10 bytes para a variável VAL.
DB (Define Byte): este pseudo operando pode ser usado quando se deseja definir um byte ou uma
seqüência de bytes na memória.
Exemplos: DB 10H ; um único byte definido
MENS: DB 1,5,7,123,70H, 15Q ; vários bytes definidos a partir do endereço MENS
DB “MENSAGEM” ; vários bytes formando uma mensagem em ASCII
DW ( Define Word): este pseudo operando pode ser usado quando se deseja definir dois byte na memória,
o que se chama de word.
Exemplo: DW 10FFH ; dois bytes definidos na memória
EQU (Define uma Constante Simbólica): pode ser usado para definir uma constante simbólica que substitui
um operando ou um endereço.
16
Microprocessadores Prof. Nelso G. Bonacorso 2001
END ( Término do Programa): indica ao programa assembler onde é o término do programa fonte.
♦ Fluxograma
O fluxograma é uma representação gráfica das tarefas de um programa, por meio de símbolos que
fornecem uma visualização imediata do significado da tarefa. O fluxograma ajuda a organizar o programa,
permitindo o seu delineamento e possibilitando seguir, um a um, todos os passos, que serão executados em
um programa.
Decisão: desvio para diversos outros pontos do programa, de acordo com uma
situação testada.
17
Microprocessadores Prof. Nelso G. Bonacorso 2001
18