Você está na página 1de 34

UFF UNIVERSIDADE FEDERAL FLUMINENSE

Microprocessadores


ALINE DA CRUZ RODRIGUES SOUZA
10/10/2013





Trabalho da Disciplina de Microprocessadores
Prof.: LAURO EDUARDO KOZOVITS, D.SC.

1
Sumrio
Introduo ................................................................................................................................ 3
Sistemas Numricos .................................................................................................................. 3
Valores posicionais ................................................................................................................ 3
Sistema Binrio (base 2) ........................................................................................................ 3
Sistema Octal (base 8) ........................................................................................................... 4
Sistema Hexadecimal (base 16) ............................................................................................. 4
Converses de Base .............................................................................................................. 5
Converso de base B para base decimal ............................................................................ 5
Converso de base decimal para base b ............................................................................ 5
Representao de nmeros no computador .......................................................................... 5
Bits, Bytes e Palavras ......................................................................................................... 5
Representao binria no computador .............................................................................. 5
Lgica de Computadores ........................................................................................................... 6
Operaes lgicas com bits ................................................................................................... 6
AND .................................................................................................................................. 6
OR ..................................................................................................................................... 6
XOR ................................................................................................................................... 7
NOT................................................................................................................................... 7
Operaes Lgicas com nmeros .......................................................................................... 8
Tecnologia ................................................................................................................................ 8
Pipelining (Paralelismo) ......................................................................................................... 8
Tecnologia superescalar ........................................................................................................ 9
HyperThreading .................................................................................................................... 9
Multincleo ........................................................................................................................ 10
Memrias ............................................................................................................................... 10
Tipos de Memrias.............................................................................................................. 12
Registradores .................................................................................................................. 12
Memria Cache ............................................................................................................... 13
Memria Principal ........................................................................................................... 14
Memria Secundria ....................................................................................................... 15
Interpretao do contedo da memria .............................................................................. 16
A memria e os barramentos .............................................................................................. 16
Arquitetura de Microprocessadores ........................................................................................ 18

2
Unidade de Controle - UC .................................................................................................... 21
Unidade de Processamento - UP ......................................................................................... 21
Organizao e Funcionamento Interno da UCP .................................................................... 21
Assembler e linguagem Assembly........................................................................................ 24
Emprego da linguagem Assembly ........................................................................................ 24
Instrues do 8085 .............................................................................................................. 25
Formato .......................................................................................................................... 25
Classificao .................................................................................................................... 26
Formato de uma linha de cdigo Assembly ......................................................................... 26
Diretivas do assembler ........................................................................................................ 27
<nome> DB <valor inicial> ............................................................................................... 27
ORG <endereco> ............................................................................................................. 27
<sinonimo> EQU <valor> ................................................................................................. 28
END ................................................................................................................................. 28
Etapas do desenvolvimento em Assembly ........................................................................... 28
Interfaceamento ..................................................................................................................... 29
Dando comandos a dispositivos de E/S ................................................................................ 30
Comunicao com o processador ........................................................................................ 30
Transferindo os dados entre um dispositivo e a memria .................................................... 31
Concluso ............................................................................................................................... 33
Referncias Bibliogrficas ....................................................................................................... 33







3

Introduo
Este material procura valorizar, sobretudo, os conceitos fundamentais sobre o funcionamento
dos microprocessadores, conceitos estes independentes de inovao tecnolgica.
Este material no pretende cobrir de forma completa o vasto assunto de que trata e no
dispensa a bibliografia citada. um material didtico introdutrio, com conceitos bsicos para
permitir que o leitor iniciante tenha uma base para comear a acompanhar a evoluo
tecnolgica da rea.
Iniciamos o estudo falando sobre os sistemas numricos, j que os processadores usam o
sistema binrio e no o decimal para representar nmeros. O sistema binrio base para a
lgebra booleana que permite fazer operaes lgicas e aritmticas usando-se apenas dois
dgitos ou dois estados (sim e no, falso e verdadeiro, 1 ou 0). Toda a eletrnica digital e
computao esto baseadas nesse sistema binrio e na lgica de Boole, que permite representar
por circuitos eletrnicos digitais (portas lgicas) os nmeros, caracteres e realizar operaes
lgicas e aritmticas.
Sistemas Numricos
Sistemas numricos so sistemas de notao usados para representar quantidades abstratas
denominadas nmeros. Um sistema numrico definido pela base que utiliza.
A base o nmero de smbolos diferentes, ou algarismos, necessrios para representar um
nmero qualquer, dos infinitos possveis no sistema. Por exemplo, o sistema decimal, utilizado
hoje de forma universal, um sistema numrico na base 10, pois utiliza dez smbolos diferentes
ou dgitos para representar um nmero. [3]
Valores posicionais
Em um sistema de nmero posicional, um nmero representado por uma sequncia de dgitos
onde cada posio de dgito tem um peso associado. [3] Tomando como exemplo o sistema
decimal, ou base 10, o nmero 1962 temos o algarismo 1 na posio que indica milhares, o 9 na
posio indicativa de centenas, o 6 na de dezenas e o 2 na posio de unidades. Assim sabemos
que o n 1962 igual a 1x1000 + 9x100 + 6x10 + 2x1 = 1000 + 900 + 60 + 2 = 1962.
Podemos escrever ainda, usando outra forma de representar a mesma coisa, que 1962 igual
a:
1x10
3
+ 9x10
2
+ 6x10
1
+ 2x10
0
pois 1000 = 10
3
; 100 = 10
2
; 10 =10
1
e 1=10
0
. [4]
Sistema Binrio (base 2)
O sistema binrio apresenta unicamente dois dgitos: 0 e 1. Neste sistema a contagem
realizada como segue: 0, 1, 10, 11, 100, 101, 110, 111, 1000... [3]

4
Sistema Octal (base 8)
Nesse sistema, representamos nmeros com oito smbolos (0, 1, 2, 3, 4, 5, 6 e 7). A contagem
ser:
00, 01, 02, 03, 04, 05, 06, 07
10, 11, 12, 13, 14, 15, 16, 17,
20, 21 [1]
Sistema Hexadecimal (base 16)
No sistema hexadecimal, representamos nmeros com dezesseis smbolos (0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E e F). Como no possumos tantos dgitos numricos, convencionou-se
representar o smbolo depois do nove como A, depois B, e assim por diante.
A contagem ser:
00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F,
20, 21, 22... [1]

Tabela 1 Comparativo entre sistemas numricos


5
Converses de Base
Converso de base B para base decimal
Algoritmo de multiplicaes sucessivas
Um nmero N, representado na base B por An An-1 An-2 ... A2 A1 A0 pode ser reescrito na base 10
utilizando o algoritmo de multiplicaes sucessivas.
No passo inicial, o resultado ser zero. Para cada dgito Ai (comeando com An e terminando em
A0), multiplica-se o resultado pela base B e, em seguida, soma-se o valor do dgito Ai. [1]
Converso de base decimal para base b
Algoritmo de divises sucessivas
Um nmero N, representado na base decimal, aps ser convertido para a base b seria
representado como am am-1 ... a2 a1 a0. Para se obter os correspondentes smbolos na base b
podemos usar o algoritmo de divises sucessivas. [1]
Enquanto o nmero for no nulo, dividimo-lo pela base b. O resto da diviso ser o valor do
prximo dgito ai (de a0 at am), e o quociente passa a ser o novo valor a ser dividido na etapa
seguinte. [1]
Representao de nmeros no computador
Bits, Bytes e Palavras
Quando tratamos de nmeros, a unidade de informao denominada bit (binary digit) e
representa o valor 0 ou o valor 1. Uma sequncia de 8 bits forma um byte. Os computadores
modernos trabalham com palavras (words), que podem ser sequncias de 2, 4 ou 8 bytes (16,
32 ou 64 bits). [1]
Representao binria no computador
O computador uma mquina de manipulao de bits. Qualquer informao (principalmente
nmeros) processada, armazenada, recebida ou enviada como uma sequncia de bits. Por este
motivo, todo valor precisa ser convertido para o sistema binrio antes de ser manipulado pelo
computador. Nesta representao, cada dgito ser representado por um bit.
Em um byte, os bits so numerados da direita para a esquerda, comeando com 0 (bit menos
significativo) at 7 (bit mais significativo). muito comum encontrar as siglas LSB (least
significant bit) e MSB (most significant bit).
Um byte capaz de representar nmeros binrios de 000000002 at 111111112. Transformando
estes limites para base decimal, obtemos 0 e 255. Os bits b7b6b5b4b3b2b1b0 correspondem
respectivamente aos dgitos a7a6a5a4a3a2a1a0 de um nmero em base binria.
claro que com dois bytes (ou seja, uma palavra), ser possvel expressar um nmero binrio
ainda maior. A numerao dos bits continua da mesma forma: da direita para a esquerda, de 0
(bit menos significativo) at 15 (bit mais significativo).
O byte com o bit mais significativo chamado de byte mais significativo, o outro byte chamado
de byte menos significativo.

6
Resumindo, uma sequncia de n bits pode representar valores variando de 0 at 2
n
-1. [1]
Na prxima seo vamos tratar das operaes lgicas que se podem operar sobre os bits.
Lgica de Computadores
Existem quatro tipos de operaes lgicas que se podem operar sobre nmeros binrios:
AND, OR, XOR (ou exclusivo), e NOT. [3]
Operaes lgicas com bits
AND
A operao lgica AND uma operao que aceita dois operandos. Estes operando so binrios
simples (base 2). A operao AND
0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1
Uma maneira compacta de representar a operao lgica AND com a tabela verdade,
apresentada abaixo. As duas colunas esquerda representam os dois operandos da operao
AND Op1 Op2.

Tabela 2 - Tabela Verdade AND
Em portugus, a operao lgica AND : se o primeiro operando 1 e o segundo operando
1, o resultado 1, seno o resultado 0. [3]
OR
A operao lgica OR tambm uma operao com dois operandos. Ela definida como:
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1
A tabela verdade da operao OR tem a seguinte forma:

7

Tabela 3 - Tabela Verdade OR
A operao lgica OR significaria: Se o primeiro operando ou o segundo operando (ou os dois)
forem 1, o resultado 1, seno o resultado 0. Esta operao tambm conhecida como ou
inclusivo (inclusive-OR). [3]
XOR
A operao lgica XOR (ou exclusivo) tambm uma operao com dois operandos. Ela
definida como:
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
A tabela verdade da operao XOR tem a seguinte forma:

Tabela 4 - Tabela Verdade XOR
Em portugus a operao lgica XOR significaria: Se o primeiro operando ou o segundo
operando, mas no os dois, for 1, o resultado 1, seno o resultado 0.

[3]
NOT
A operao lgica NOT uma operao com um operando. Ela definida como:
not 0 = 1
not 1 = 0
A tabela verdade da operao NOT tem a seguinte forma:

Tabela 5 - Tabela Verdade NOT

8
Em portugus a operao lgica NOT significaria: Se o operando for 1, o resultado 0, seno o
resultado 1. [3]
Operaes Lgicas com nmeros
As operaes lgicas trabalham apenas com operandos com bit nico. Para realizar estas
operaes sobre um nmero, por exemplo de 8, 16, 32 bits, necessrio realizar a operao bit-
a-bit. Por exemplo se quisermos realizar a operao lgica AND com dois operandos de 8 bits
cada, teramos que executar a operao lgica AND sobre cada par de bits independentemente:

Como as operaes lgicas so definidas em termos de valores binrios, deve-se converter os
nmeros decimais, hexadecimais, etc., para nmeros binrios antes de realizar as operaes
lgicas. [3]
Tecnologia
Ao longo dos anos, os fabricantes de microprocessadores desenvolveram uma srie de
melhorias tecnolgicas para otimizar o funcionamento do processador.
Pipelining (Paralelismo)
Pipelining uma tcnica de implementao em que vrias instrues so sobrepostas na
execuo. [5]
Hoje, a tcnica de pipelining fundamental para tornar os processadores mais rpidos. [5]
As instrues normalmente exigem cinco etapas:
1. Buscar instruo da memria (LI).
2. Ler registradores enquanto a instruo decodificada (DI).
3. Executar a operao ou calcular um endereo (EX).
4. Acessar um operando na memria de dados (MEM).
5. Escrever o resultado em um registrador (ER). [5]
Logo, o pipeline que exploramos neste trabalho possui cinco estgios.

Figura 1 - Pipeline de cinco estgios

9
A tcnica de pipelining agiliza a execuo da instruo, umas vez que cada etapa executada
em paralelo com as etapas anteriores e posteriores, ou seja, poder buscar uma instruo (LI),
enquanto a anterior estiver em curso de decodificao (DI), que a anterior a esta estiver em
curso de execuo (EX), que a anterior anterior acesse memria (MEM) e, finalmente, que a
primeira da srie esteja em curso de gravao nos registradores (ER).
Vamos considerar uma analogia para esclarecer melhor o conceito de pipelining (paralelismo).
Imagine uma fbrica de bolos na qual a operao de produo dos bolos e a operao de
embalagem para expedio so separadas.
Suponha que o departamento de expedio tenha uma longa esteira transportadora ao longo
da qual trabalham cinco funcionrios (unidades de processamento).
A cada 10 segundos (o ciclo de relgio), o funcionrio 1 coloca uma embalagem de bolo vazia na
esteira. A caixa transportada at o funcionrio 2, que coloca um bolo dentro dela. Um pouco
mais tarde, a caixa chega na estao do funcionrio 3, onde fechada e selada. Em seguida, ela
prossegue at o funcionrio 4, que coloca uma etiqueta na embalagem. Por fim, o funcionrio 5
retira a caixa da esteira e a coloca em um grande continer que mais tarde ser despachado
para um supermercado. Em termos gerais, esse o modo como um pipeline de computador
tambm funciona: cada instruo (bolo) passa por diversos estgios de processamento antes de
aparecer j concluda na extremidade final. [6]
O pipelining permite um compromisso entre latncia o tempo que demora para executar uma
instruo e largura de banda de processador quantos MIPS (MIPS quer dizer Millions of
Instructions per Second milhes de instrues por segundo) o processador tem. Com um
tempo de ciclo de T ns e n estgios no pipeline, a latncia nT nano segundos porque cada
instruo passa por n estgios, cada um dos quais demora T ns. [6]
A tcnica de pipelining melhora o desempenho aumentando a vazo de instrues, em vez de
diminuir o tempo de execuo de uma instruo individual. [5]
Tecnologia superescalar
Uma tcnica de pipelining avanada que permite que o processador execute mais de uma
instruo por ciclo de clock. [5] A definio de superescalar evoluiu um pouco ao longo do
tempo. Agora ela usada para descrever processadores que executam mltiplas instrues
frequentemente quatro ou seis em um nico ciclo de relgio. Claro que uma CPU superescalar
deve ter vrias unidades funcionais para as quais passar todas essas instrues. [6]
HyperThreading
A tecnologia HyperThreading (ou Hiperprocessamento) consiste em definir dois processadores
lgicos dentro de um processador fsico. Assim, o sistema reconhece dois processadores fsicos
e se comporta como um sistema multitarefas, tornando-o mais rpido ao executar vrios
programas ao mesmo tempo. Essa tcnica foi criada para oferecer maior eficincia na utilizao
dos recursos de execuo do processador, aumentando o seu desempenho em at 30%,
segundo a Intel, desenvolvedora desta tecnologia. [7][8]

10
Multincleo
Um processador multincleo (ou multicore) um processador composto de duas ou mais
unidades de processamento, no interior de um nico chip. Estes dois ou mais ncleos so
responsveis por dividir as tarefas entre si, ou seja, permitem trabalhar em um ambiente
multitarefa. Em processadores multincleo o sistema operacional trata cada um dos ncleos
como um processador diferente. Na maioria dos casos, cada unidade possui seu prprio cache
e pode processar vrias instrues simultaneamente. Adicionar novos ncleos de
processamento a um processador (nico encapsulamento) possibilita que as instrues das
aplicaes sejam executadas em paralelo, como se fossem dois ou mais processadores distintos.
[7][9]
Memrias
A memria o componente de um sistema de computao cuja funo armazenar as
informaes que so (ou sero) manipuladas por esse sistema, para que elas (as informaes)
possam ser prontamente recuperadas, quando necessrio.
Conceitualmente, a memria um componente muito simples: um depsito onde so
guardados certos elementos (as informaes) para serem usados quando desejado
(recuperao da informao armazenada).
No entanto, na prtica, em um sistema de computao no possvel construir e utilizar apenas
um tipo de memria. Na verdade, a memria de um computador tambm em si um sistema,
ou melhor, um subsistema, tendo em vista que constituda de vrios componentes (vrios
tipos diferentes de memria) interligados e integrados.
A memria de um sistema de computao tem como elemento bsico de armazenamento fsico
o bit. Ou seja, fisicamente ela construda de modo a representar individualmente bit por bit
(seja com seu valor 0 zero, seja com seu valor 1 um).
Os sistemas de computao costumam agrupar uma determinada quantidade de bits,
identificando este grupo como uma unidade de armazenamento, denominada clula. [10]
Uma clula , ento, um grupo de bits tratado em conjunto pelo sistema, isto , esse grupo
movido em bloco como se fosse um nico elemento, sendo assim identificado para efeitos de
armazenamento e transferncia, como uma unidade. Mais adiante, conforme veremos, o termo
clula costuma ser utilizado apenas para identificar a unidade de armazenamento da memria
principal; nos demais tipos de memria, a unidade de armazenamento (grupo de bits que se
move junto) possui outras denominaes (bloco, setor, cluster, etc.).
Em um sistema de computao as clulas so identificadas, uma a uma, por um nmero,
denominado endereo.
A memria organizada, ento, em grupos de bits, sequencialmente dispostos, a partir do grupo
(clula, bloco, setor etc.) de endereo 0 (zero) at o ltimo grupo, de endereo (N - 1), sendo N
a quantidade total de grupos. O sistema de controle das memrias construdo de modo a
localizar um certo grupo de bits a partir do seu endereo. [10]

11
Em uma memria pode-se realizar duas aes (ou operaes), as quais so denominadas:
- escrita ou gravao ou armazenamento (write ou record); e
- leitura ou recuperao (read ou retrieve).
Ambas as operaes so possveis graas tcnica utilizada para identificar cada elemento (ou
grupo de bits) por um nmero, seu endereo, que permite identificar o local de armazenamento
(para escrita) ou de recuperao (para leitura).
As memrias no computador se interligam de forma bem estruturada, constituindo um sistema
em si, fazendo parte do sistema global de computao, que pode ser denominado subsistema
de memria. Esse subsistema projetado de modo que seus componentes sejam organizados
hierarquicamente, conforme mostrado na estrutura em forma de pirmide da Figura 2.

Figura 2 - Hierarquia de memria

A seguir sero definidos os principais parmetros para anlise das caractersticas de cada tipo
de memria componente da hierarquia apresentada na Figura 2.
Tempo de acesso indica quanto tempo a memria gasta para colocar uma informao na
barra de dados aps uma determinada posio ter sido endereada. um dos parmetros que
pode medir o desempenho da memria. Pode ser chamado de tempo de acesso para leitura ou
simplesmente tempo de leitura.
Outro parmetro (utilizado apenas em memrias eletrnicas) o chamado ciclo de tempo do
sistema de memria (memory systems cycle time) ou simplesmente ciclo de memria, que o
perodo de tempo decorrido entre duas operaes sucessivas de acesso memria, sejam de
escrita ou de leitura. [10]

12
Capacidade a quantidade de informao que pode ser armazenada em uma memria. A
unidade de medida mais comum o byte, embora tambm possam ser usadas outras unidades
como clulas (no caso de memria principal ou cache), setores (no caso de discos) e bits (no
caso de registradores). Dependendo do tamanho da memria, isto , de sua capacidade, indica-
se o valor numrico total de elementos de forma simplificada, atravs da incluso de K (quilo),
M (mega), G (giga), T (tera) ou P (peta).
Volatilidade memrias podem ser do tipo voltil ou no-voltil. Uma memria no-voltil a
que retm a informao armazenada quando a energia eltrica desligada. Memria voltil
aquela que perde a informao armazenada quando o equipamento desligado.
Tecnologia de fabricao ao longo do tempo, diversas tecnologias vm sendo desenvolvidas
para a fabricao de memrias. Atualmente, algumas dessas tecnologias j so obsoletas, como
as memrias de ncleo de ferrite (magnticos), e outras ainda no tm uma aplicao comercial
ampla, como as memrias de bolha.
Temporariedade trata-se de uma caracterstica que indica o conceito de tempo de
permanncia da informao em um dado tipo de memria.
Custo o custo de fabricao de uma memria bastante variado em funo de diversos
fatores, entre os quais se pode mencionar principalmente a tecnologia de fabricao, que
redunda em maior ou menor tempo de acesso, ciclo de memria, quantidade de bits em certo
espao fsico e outros. Uma boa unidade de medida de custo o preo por byte armazenado,
em vez do custo total da memria em si. [10]
Tipos de Memrias
Registradores
Em um sistema de computao, a destinao final do contedo de qualquer tipo de memria
o processador (a UCP). Isto , o objetivo final de cada uma das memrias (ou do subsistema de
memria) armazenar informaes destinadas a serem, em algum momento, utilizadas pelo
processador. Ele o responsvel pela execuo das instrues, pela manipulao dos dados e
pela produo dos resultados das operaes.
Antes que a instruo seja interpretada e os dispositivos da UCP sejam acionados, o processador
necessita buscar a instruo de onde ela estiver armazenada (memria cache ou principal) e
armazen-la em seu prprio interior, em um dispositivo de memria denominado registrador
de instruo.
Um registrador o elemento superior da pirmide de memria (ver Fig. 2), por possuir a maior
velocidade de transferncia dentro do sistema (menor tempo de acesso), menor capacidade de
armazenamento e maior custo.
Tempo de acesso 1 ciclo de memria por serem construdos com a mesma tecnologia da
UCP, estes dispositivos possuem o menor tempo de acesso/ciclo de memria do sistema (neste
caso, no aplicvel distinguir-se tempo de acesso e ciclo de memria, por serem sempre
iguais), algo em torno de 1 a 5 nanossegundos. [10]
Capacidade os registradores so fabricados com capacidade de armazenar um nico dado,
uma nica instruo ou at mesmo um nico endereo. Dessa forma, a quantidade de bits de

13
cada um de uns poucos bits (de 8 a 64), dependendo do tipo de processador e, dentro deste,
da aplicao dada ao registrador em si.
Volatilidade registradores so memrias de semicondutores e, portanto, necessitam de
energia eltrica para funcionar. Assim, registradores so memrias volteis.
Tecnologia registradores so memrias de semicondutores, sendo fabricados com tecnologia
igual dos demais circuitos da UCP, visto que eles se encontram inseridos em seu interior. No
entanto, h diversos modelos de tecnologia de fabricao de semicondutores, uns com tempo
de acesso maior que outros, custos e capacidade de armazenamento, no mesmo espao fsico,
diferentes. Tecnologia bipolar e MOS (Metal Oxide Semicondutor) so comuns na fabricao de
registradores.
Temporariedade os registradores so memrias auxiliares internas UCP e, portanto, tendem
a armazenar informao (dados ou instrues) por muito pouco tempo. Acumuladores ou
registradores de dados armazenam os dados apenas pelo tempo necessrio para sua utilizao.
Custo devido tecnologia mais avanada de sua fabricao, os registradores encontram-se
no topo da pirmide em termos de custos, sendo os dispositivos de maior custo entre os diversos
tipos de memria. [10]
Memria Cache
Desde h muito tempo a interface entre o processador e a memria principal vem sendo um
ponto frgil no que se refere performance do sistema.
Na tentativa de melhorar o desempenho dos sistemas de computao, os projetistas das UCP
vm constantemente obtendo velocidades cada vez maiores nas operaes dessas unidades, o
que no est acontecendo na mesma proporo com o aperfeioamento tecnolgico das
memrias utilizadas como memria principal. Assim, atualmente a diferena de velocidade
entre UCP e memria principal talvez maior do que j foi no passado.
Na busca de uma soluo para este problema (o gargalo de congestionamento na comunicao
UCP/MP que degrada o desempenho dos sistemas), foi desenvolvida uma tcnica que consiste
na incluso de um dispositivo de memria entre UCP e MP, denominado memria cache, cuja
funo acelerar a velocidade de transferncia das informaes entre UCP e MP e, com isso,
aumentar o desempenho dos sistemas de computao.
A memria cache apresenta as seguintes caractersticas para os j referidos parmetros:
Tempo de acesso ciclo de memria sendo as memrias de semicondutores, fabricadas com
tecnologia e recursos para prover menores ciclos de memria do que as memrias RAM comuns,
elas possuem velocidade de transferncia tal que lhes garante tempos de acesso menores que
3 a 7 ns (nanossegundos), sendo por esta razo situadas, na pirmide, logo abaixo dos
registradores. [10]
Capacidade tendo em vista que a UCP acessa primeiramente a memria cache, para buscar a
informao requerida (a prxima instruo ou dados requeridos pela instruo em execuo),
importante que a referida memria tenha capacidade adequada para armazenar uma aprecivel
quantidade de informaes, uma vez que, se essas informaes no foram encontradas na

14
cache, ento o sistema dever sofrer um atraso para que as mesmas sejam transferidas da
memria principal para a cache.
Por outro lado, uma grande capacidade implicar certamente elevao de seu custo, muitas
vezes inaceitvel para compor o preo total do sistema. Dessa forma, deve-se conciliar o
compromisso de uma aprecivel capacidade com a no-elevao demasiada de seu preo.
Volatilidade a exemplo dos registradores, memrias cache so dispositivos construdos com
circuitos eletrnicos, requerendo, por isso, energia eltrica para seu funcionamento. So, desse
modo, dispositivos volteis.
Tecnologia memrias cache so fabricadas com circuitos eletrnicos de alta velocidade para
atingirem sua finalidade. Em geral, so memrias estticas, denominadas SRAM.
Temporariedade o tempo de permanncia de uma instruo ou dado nas memrias cache
relativamente pequeno, menor que a durao da execuo do programa ao qual a referida
instruo ou dado pertence. Isto porque, devido a seu tamanho no ser grande e ser utilizada
por todos os programas em execuo, h necessidade de alterao peridica da informao
armazenada para permitir a entrada de novas informaes. Embora a transitoriedade das
informaes na cache seja uma realidade, o perodo efetivo de permanncia de um dado ou
instruo dependente do tipo de poltica de substituio de informao na cache.
Custo o custo de fabricao das memrias cache alto. O valor por byte est situado entre o
dos registradores, que so os mais caros, e o da memria principal, mais barata. Memrias cache
internas UCP ainda so mais caras do que as externas. [10]
Memria Principal
A memria principal a memria bsica de um sistema de computao. o dispositivo onde o
programa (e seus dados) que vai ser executado armazenado para que a UCP busque instruo
por instruo, para execut-las.
Seus parmetros possuem as seguintes caractersticas:
Tempo de acesso ciclo de memria a memria principal construda com elementos cuja
velocidade operacional se situa abaixo das memrias cache, embora sejam muito mais rpidas
que a memria secundria.
Capacidade em geral, a capacidade da memria principal bem maior que a da memria
cache. Valores tpicos de memria principal para microcomputadores esto na faixa de 2 a 32
Gbytes, pois raramente vai se adquirir, nos dias de hoje, um microcomputador que no possua
algo em torno de 2Gb de memria principal.
Volatilidade sendo atualmente construdo com semicondutores e circuitos eletrnicos
correlatos, este tipo de memria tambm voltil, tal como acontece com os registradores e a
memria cache. No entanto, h normalmente uma pequena quantidade de memria no-voltil
fazendo parte da memria principal, a qual serve para armazenar pequena quantidade de
instrues que so executadas sempre que o computador ligado. [10]
Tecnologia nos primeiros sistemas usavam-se ncleos de ferrite (processo magntico) para
armazenar os bits na memria principal, at que foram substitudos pela tecnologia de
semicondutores. Os circuitos que representam os bits nas memrias atuais possuem uma

15
tecnologia bem mais avanada que seus predecessores de ferrite e, portanto, tm velocidade
mais elevada de transferncia, garantindo baixos tempos de acesso em comparao com o
modelo anterior. So, porm, elementos mais lentos do que aqueles que constituem as
memrias cache.
Temporariedade as instrues e os dados permanecem temporariamente na MP, enquanto
durar a execuo do programa (ou at menos tempo). Esta temporariedade bastante varivel,
dependendo de diversas circunstncias, como, por exemplo, o tamanho do programa e sua
durao, a quantidade de programas que esto sendo processados juntos, e outras mais. No
entanto, a transitoriedade com que as informaes permanecem armazenadas na MP , em
geral, mais duradoura que na memria cache ou nos registradores, embora mais lenta que na
memria secundria.
Custo memrias dinmicas usadas como memria principal tm um custo mais baixo que o
custo das memrias cache, por isso podem ser vendidos computadores com uma quantidade
aprecivel de MP sem que seu preo seja inaceitvel. [10]
Memria Secundria
A memria secundria de um sistema de computao pode ser constituda por diferentes tipos
de dispositivos, alguns diretamente ligados ao sistema para acesso imediato (discos rgidos, por
exemplo) e outros que podem ser conectados quando desejado (como cartes de memria, CDs,
DVDs etc.), cuja informao armazenada se torna diretamente conectada e disponvel quando
o especfico disco ou carto estiver inserido no elemento de leitura/escrita (drive ou leitor).
Uma das principais caractersticas dos dispositivos que constituem a memria secundria sua
no-volatilidade.
A anlise de seus parmetros (considerando uma mdia entre os diversos equipamentos)
conduz s seguintes observaes:
Tempo de acesso ciclo de memria os dispositivos que podem se constituir em elemento
de armazenamento secundrio ou auxiliar em um sistema de computao so, em geral,
dispositivos eletromecnicos e no circuitos puramente eletrnicos, como o caso de
registradores, memria cache e memria principal. Por essa razo, aqueles dispositivos
possuem tempo de acesso maiores.
Por mais tecnologicamente avanado que seja, um mecanismo que movimenta fisicamente um
brao mecnico (no caso dos discos rgidos) requer tempos sempre muito maiores que o tempo
requerido para um sinal eltrico passar por um condutor, j que este no possui elementos
mecnicos e caminha com a velocidade da luz.
Capacidade uma das caractersticas que coloca a memria secundria na base da pirmide
justamente sua grande capacidade de armazenamento, a qual tambm varia consideravelmente
dependendo do tipo de dispositivo utilizado. [10]
Volatilidade como estes dispositivos armazenam as informaes de forma magntica ou
tica, elas no se perdem nem desaparecem quando no h alimentao de energia eltrica.
Trata-se, pois, de elementos teis para guardar os programas e dados de forma permanente.

16
Tecnologia este parmetro possui uma variedade imensa de tipos, visto que, para cada
dispositivo, h diferentes tecnologias de fabricao atualmente em uso, o que dificulta a sua
descrio neste item.
Temporariedade conforme j mencionado em Volatilidade, a memria secundria um
componente (vendo-se os diversos dispositivos como um todo) de armazenamento com carter
permanente ou, pelo menos, de longo perodo de armazenamento. Ela serve, ento, para
armazenar programas e dados que no esto sendo requeridos imediatamente e que exigem
tambm grande espao de armazenamento devido sua natural quantidade. [10]
Interpretao do contedo da memria
A execuo de um programa por um processador envolve constantemente o acesso memria,
seja para a leitura das instrues que devem ser executadas, seja para o acesso aos dados l
armazenados. Isto significa que a memria armazena instrues executveis e tambm nmeros
inteiros, reais e caracteres alfanumricos.
Todos esses contedos diferentes so representados por sequncias de um ou mais nmeros
binrios. A interpretao desses nmeros feita pelo processador e pelo programa, na medida
em que o valor em questo lido como uma instruo, como um nmero ou como um caracter
alfanumrico. Por exemplo, dado que uma posio de memria contm o valor 47H, isto pode
ser interpretado das seguintes formas:
se este valor aparecer em um programa para um microprocessador 8085, far com que
este execute a instruo MOV B,A;
como nmero inteiro, representar a quantidade 71 (47H);
como caracter alfanumrico, corresponder letra G, de acordo com a tabela ASCII.
O estudo dos microprocessadores envolve frequentemente situaes em que necessrio
analisar o contedo de uma certa regio de memria. E preciso ter em mente, portanto, que a
interpretao desse contedo no pode ser feita simplesmente olhando-se para os valores, mas
que necessrio tambm saber como programa em questo far uso deles. [11]
A memria e os barramentos
A memria armazena os programas em execuo e os dados processados por estes programas.
Consiste de um conjunto de clulas, denominadas palavras ou bytes, que so identificadas
univocamente por um endereo. Pode-se imaginar uma memria de m bytes como uma tabela
de m linhas, em que os endereos so usados para numerar as linhas e cada linha tem
capacidade para conter um byte.
Cada byte composto de um nmero fixo de dgitos binrios ou bits. Desta forma, um byte
composto de n bits pode assumir 2
n
valores diferentes, de 0 a 2
n
-1. Atualmente, conveno
estabelecida que n = 8, e por isso o valor que cada byte pode assumir varia de 0 a 255. Diz-se
que o valor assumido por um byte o dado armazenado no endereo correspondente. [11]
H situaes em que os 256 valores distintos que um byte pode assumir no so suficientes para
representar uma grandeza com que se trabalha. Nestes casos, agrupam-se dois ou mais bytes
para formar arranjos de mais bits, o que aumenta exponencialmente a capacidade de

17
representao. Diz-se que dois bytes (16 bits) formam um word, quatro bytes (32 bits) formam
um doubleword e oito bytes (64 bits) formam um quadword.
O nmero n de bits de um byte tem influncia sobre o nmero de linhas fsicas atravs das quais
acontece a transferncia de dados entre o processador e a memria. O conjunto dessas linhas
fsicas denominado barramento de dados, e o nmero de linhas que o constitui a sua largura.
A largura do barramento de dados de um processador , em geral, um mltiplo de n. So comuns
barramentos de dados com larguras de 32 e 64 bits.
Atravs do barramento de dados possvel tanto ler quanto modificar o contedo da memria,
e o processador precisa de um mecanismo que lhe permita indicar qual dessas operaes deve
ser efetuada. Para tanto, existe o barramento de controle. Os diversos barramentos que
interligam o processador memria aparecem na Figura 3. [11]

Figura 3 - Conexo de um microprocessador memria

O barramento de controle contm, tipicamente, os sinais RD (read) e WR (write), que distinguem
as duas formas de acesso, alm de um sinal que diz se este acesso se refere, de fato, memria
ou a outro dispositivo.
O processador precisa tambm de um mecanismo para especificar o endereo do byte que
pretende acessar. Este processo recebe o nome de endereamento de um byte e se d atravs
do barramento de endereos, que outro conjunto de linhas fsicas que conectam o processador
memria, independente do barramento de dados.
A fim de enderear um determinado byte, o processador coloca a combinao de bits que
corresponde ao seu endereo, expresso no sistema de numerao binrio, nas linhas desse
barramento. Desta forma, o nmero mximo de bytes que podem ser endereados por um
processador igual a 2
m
, em que m a largura do barramento de endereos. Os endereos
ocupam a faixa de 0 a 2
m
-1.
A utilizao de dgitos binrios tem um inconveniente: no prtico trabalhar com nmeros de
8, 16 ou 32 algarismos. Por isso, adota-se uma representao alternativa para esses nmeros,
utilizando o sistema hexadecimal em lugar do sistema binrio.
Os trs barramentos apresentados trabalham em conjunto para realizar cada acesso do
processador memria, seja para ler um byte de uma instruo de programa, seja para ler ou
modificar algum dado. [11]

18
Quando executa uma instruo que exige a leitura da memria, o processador coloca
primeiramente o endereo do byte a ser lido no barramento de endereos e indica, atravs do
barramento de controle, que se trata de uma operao de leitura. A memria reage, ento,
colocando no barramento de dados o valor do byte endereado, que o processador copia para
algum registrador.
Uma operao de escrita tambm inicia com a ativao do barramento de endereos, mas o
barramento de controle informa memria que se trata de uma operao de escrita. Esta reage,
ento, copiando o dado que o processador coloca no barramento de dados para a clula
endereada. [11]
Arquitetura de Microprocessadores
Sero apresentados os conceitos bsicos relacionados com a arquitetura de
microprocessadores. Para a apresentao dos principais conceitos associados arquitetura de
um processador convencional, interessante a exemplificao a partir de processadores
clssicos j lanados no mercado.
A organizao da grande maioria de sistemas baseados em microprocessadores derivada do
modelo clssico do computador digital proposto por Von Neumann. [1]

Figura 4 - Modelo de Von Neumann
Nela pode-se identificar os trs blocos fundamentais:
UCP Unidade Central de Processamento
Memria
Entradas e Sadas

19
Interligando esses elementos existem as vias ou barramentos (buses), por onde as instrues
e outros dados so transferidos, e sinais para o controle dos dispositivos. Na verdade, em uma
representao mais adequada tem-se a real forma de conexo dos componentes:

Figura 5 - Modelo de Von Neumann detalhado
Nela encontram-se detalhados os tipos de vias de dados, de endereos e de controle, nas quais
todos os elementos encontram-se conectados em paralelo, no havendo conflitos graas aos
circuitos de controle e as caractersticas 3-state dos circuitos de sada dos componentes.
Neste contexto, a UCP implementada por um microprocessador, e com a interligao a ela de
dispositivos de memria e de entrada e de sada, pode-se implementar microcomputadores de
uso geral ou equipamentos para aplicaes especficas.
A UCP a principal parte dessa estrutura, comandando todas as demais. Operando de forma
sincronizada com um oscilador, basicamente ela retira da memria as tarefas armazenadas e as
executa ao longo do tempo. Essas tarefas, chamadas de programas so compostos por uma srie

20
de comandos elementares denominados instrues, agrupadas em uma ordem adequada e com
parmetros convenientes.
Para possibilitar uma interao mais efetiva com os estmulos ou eventos externos,
normalmente associados a dispositivos de entrada e sada, temporizaes ou sinalizaes, e de
natureza assncrona em relao ao seu oscilador, so disponveis os sinais de Interrupo que
quando acionados, provocam a interrupo da tarefa em execuo, a execuo de uma outra
tarefa associada ao estmulo que gerou a interrupo, e o posterior retorno ao programa
interrompido. Assim, aplicaes em tempo real podem ser implementadas com maior facilidade.
Outro recurso comumente disponvel o Acesso Direto Memria (ADM), til em situaes em
que se deseja transferir grandes quantidades de informaes consecutivamente armazenadas,
de forma eficiente. Nessa situao, h a necessidade de um dispositivo externo que assume com
mais agilidade o controle da transferncia no lugar da UCP, que fica desativada durante o tempo
consumido para tal. Normalmente dois sinais so disponveis para sincronizar a UCP com o
controlador de ADM. Como exemplo de aplicao dessa tcnica pode-se citar a transferncia de
dados de um disco para a memria.
A UCP possui duas unidades bsicas: a Unidade de Processamento (UP), responsvel pelas
manipulaes dos dados atravs de operaes lgicas e aritmticas, e a Unidade de Controle
(UC), responsvel pela interpretao (chamada de decodificao) e execuo das instrues,
fornecendo os sinais de temporizao adequados para as diversas partes da UCP e do sistema.
A UC e UP so interligadas por vias internas, enquanto a UCP interligada memrias e aos
dispositivos de entrada e sada pelas vias externas. A seguir so descritas a UC e a UP.
Usaremos como exemplo das sees a seguir a UCP 8080/8085, muito popular no final dos anos
70 e at metade dos anos 80. Tratou-se de uma arquitetura de sucesso, e at hoje existem
componentes baseados nessa arquitetura, mas fabricados com outras tecnologias, e mais
velozes. A Figura 6 apresenta o diagrama simplificado da UCP 8080/8085.
Suas principais caractersticas so:
palavra de 8 bits;
capacidade de endereamento de 64 Kbytes;
instrues com 1, 2 ou 3 bytes, sendo o primeiro o cdigo da instruo;
5 linhas de interrupo;
capacidade de implementao de acesso direto memria.

21

Figura 6 - Diagrama simplificado da UCP 8080/8085
Unidade de Controle - UC
Todos as funes de um microprocessador so controladas pela UC. Ela retira da memria
(operao chamada de fetch), e faz a sua interpretao (ou decodificao), e a partir do
momento em que a instruo identificada, so fornecidos os sinais de controle dos demais
dispositivos requeridos sua execuo.
Unidade de Processamento - UP
Esta parte do processador realiza todas as operaes lgicas e aritmticas, possuindo para tal
um conjunto de circuitos conhecidos como Unidade Lgica e Aritmtica (ULA), e um conjunto
de registradores de propsito geral, o acumulador e registradores especiais.
Organizao e Funcionamento Interno da UCP
A organizao interna desta UCP apresenta como principais elementos:
UP:
Registradores de uso Geral: unidades de armazenamento local destinados a
dados, endereos e instrues.
Unidade Lgica-Aritmtica - ULA: circuito digital sequencial que permite a
execuo de uma srie de operaes com os seus dados de entrada (operaes
aritmticas e operaes lgicas);


22
UC:
Registradores de Controle: contador de programa, ponteiro da pilha,
registrador de instrues.
Decodificador de Instrues: mdulo com capacidade de interpretar o cdigo
binrio de cada instruo, gerando os sinais internos e externos necessrios
sua execuo;
Controle: circuito digital responsvel pela gerao e recepo dos sinais de
controle externos da UCP.
Controle de Interrupo: mdulo destinado ao tratamento dos sinais de
interrupo.
A interligao desses mdulos efetuada por vias internas, constituindo um estrutura conhecida
como Fluxo de Dados (data-flow), que um circuito que recebe dados de entrada externos,
armazena-os, processa-os e transmite-os para as sadas. Sendo projetado para repetir a mesma
operao (ou seja, executar comandos chamados de instrues) por um nmero indefinido de
vezes, os sinais de controle do sistema se tornam peridicos. A esse intervalo de repetio d-
se o nome de ciclo de mquina. Ao longo deste ciclo, os sinais de controle so gerados, por
exemplo, alguns no comeo e alguns no meio. Todos eles so atrelados cadncia de um sinal
de referncia de tempo chamado sinal de relgio (clock), gerado por um circuito oscilador.
Atreladas a este sinal so efetuadas as transferncias de dados entre registradores, posies de
entrada/sada, e gerao de sinais de controle.
Na UCP em questo, tem-se os seguintes registradores:
Registrador de Instrues: armazena o cdigo da instruo retirada da memria, e que
vai ser executada;
Acumulador (ou Registrador A): principal registrador de dados (8 bits), sendo sempre
fonte de um operando e destino dos resultados da maior parte das instrues lgicas e
aritmticas;
Registradores de Uso Geral: B, C, D, E, H, L; possuem 8 bits, e so usados tanto para a
manipulao de dados, como para endereamento de posies de memria (nesse caso,
so utilizados aos pares: B e C, D e E, H e L);
Registrador de Estado (ou Flags): indica as caractersticas da ltima operao lgica ou
aritmtica executada: se o resultado igual a zero, se houve vai-um ("carry"), se a
paridade par ou mpar, e se o sinal do nmero positivo ou negativo. Essas
informaes so utilizadas para a tomada de deciso nos programas (atravs de
instrues de desvio condicional).
Registradores de Uso Especfico:
Contador do Programa: (Program Counter) um registrador que armazena o
endereo do incio da prxima instruo na memria a ser executada. Aps a
retirada da primeira parte do cdigo de uma instruo (em geral, o primeiro
byte), o contador do programa incrementado, apontando para a parte
seguinte, e assim sucessivamente at que todas as partes da instruo sejam
retiradas (lidas) da memria, permitindo assim a sua execuo. Ao final desse
processo, ele estar armazenando o endereo da prxima instruo a ser
executada, repetindo-se posteriormente o processo descrito para ela. O valor

23
do contador do programa pode mudar de forma no sequencial quando alguma
instruo de desvio ou chamada de sub-rotina executada, sendo um novo
endereo carregado neste registrador.
Ponteiro da Pilha: (Stack Pointer) um registrador que armazena o endereo
da ltima posio ocupada da pilha. A pilha uma estrutura do tipo LIFO (Last
In First Out), sendo utilizada para armazenamento temporrio de dados de
alguns dos registradores da UCP (operao conhecida como salvamento). Como
exemplo mais comum pode-se citar o salvamento do endereo de retorno de
uma sub-rotina ao programa que a chamou. Para muitos microprocessadores,
quando um dado inserido na pilha, o Ponteiro da Pilha decrementado e
quando um dado retirado da pilha, ele incrementado.
Os principais circuitos da UC so:
Circuitos de Temporizao: os circuitos de temporizao permitem que a UCP opere em
modo sncrono do processador, indicando os instantes em que cada etapa da execuo
de uma instruo deve ocorrer. Em geral, o sinal de temporizao (chamado de clock)
fornecido por um circuito oscilador a cristal associado a um circuito quadrador do
sinal.
Memria de Microprogramas: um tipo especial de memria de apenas leitura
existente dentro do microprocessador que o auxilia a decodificar as instrues lidas,
especificando uma srie de operaes controlam as unidades da UCP que devem
ocorrer ao longo do tempo para a execuo de cada instruo.
Linguagem Assembly
A operao de todo este complexo sistema est vinculada ao desenvolvimento por parte dos
projetistas de alguma aplicao, da sequncia de instrues (chamada de programa), que
permitam a execuo de tarefas por parte do sistema. O agrupamento instrues denominado
conjunto de instrues. As instrues permitem que os elementos da UCP sejam utilizados, como
por exemplo, os registradores, ou unidades de armazenamento local (tambm conhecido como
memria local), cada um destinado a uma finalidade especfica. [12]
Cada instruo tem para ela especificada uma atividade a realizar. O tempo requerido para a
sua execuo denominado ciclo de instruo, constitudo pelas seguintes atividades:
Busca (Fetch): leitura do cdigo da instruo da memria;
Decodificao: interpretao desse cdigo;
Execuo: realizao das atividades previstas para a instruo.
O tempo associado ao ciclo de instruo depende das atividades previstas para cada uma delas.
O ciclo de instruo constitudo por um ou mais ciclos de mquina, que correspondem a
atividades elementares necessrias execuo de instrues, como por exemplo:
busca do cdigo de uma instruo (ou seja, leitura de uma posio de memria) e sua
interpretao;
leitura de uma posio de memria;
escrita em uma posio de memria;
leitura de uma posio de entrada;

24
escrita em uma posio de sada.
Em diversos processadores procura-se caracterizar o estado intervalo de tempo
correspondente a um perodo de clock , onde so desempenhadas algumas funes
necessrias execuo de cada ciclo de mquina (por exemplo, a ativao ou a desativao de
algum sinal externo, como o de leitura de memria, ou a amostragem de sinais de entrada, como
o READY). [12]
Assembler e linguagem Assembly
Um assembler uma ferramenta de software um programa que simplifica a tarefa de criar
programas. Recebe como entrada um arquivo-texto com as instrues do programa,
denominado de arquivo-fonte, e gera um arquivo-objeto, que contm os cdigos binrios
correspondentes.
A fim de que o assembler possa localizar e seguir as instrues do arquivo-fonte, o programador
deve seguir certas regras. O conjunto dessas regras determina a sintaxe a ser empregada na
escrita do arquivo e define, assim, uma linguagem de programao. Uma linguagem destinada
a trabalhar com as instrues de um processador denominada linguagem Assembly.
Em Assembly, as palavras-chave que representam as instrues so mnemnicos que
correspondem diretamente aos cdigos hexadecimais do processador. Uma vez que cada
processador tem um conjunto de mnemnicos prprio, existe uma linguagem Assembly para
cada processador.
Os mnemnicos so abreviaturas que lembram a funo da instruo que representam, tais
como MOV (do ingls move, para as instrues de movimentao de dados) ou JMP (do ingls
jump, para os desvios).
A linguagem Assembly, no entanto, no pode se limitar aos mnemnicos, porque, alm de dizer
quais so as instrues que devero compor o programa, preciso dizer tambm onde elas
devem ficar, estabelecer sinnimos para constantes e criar e utilizar variveis. Por causa disso,
existem, alm dos mnemnicos, as diretivas de montagem, ou simplesmente diretivas, ou ainda
pseudo-instrues. Estas so palavras-chave permitidas dentro da linguagem, mas que no
geram cdigo executvel, porque no correspondem a qualquer instruo do processador
apenas ajudam a determinar a tarefa do assembler. [11]
Emprego da linguagem Assembly
Do ponto de vista do programador que j escreveu programas utilizando diretamente cdigos
hexadecimais ou binrios, o uso da linguagem Assembly muito vantajoso, por facilitar e agilizar
a produo de programas.
Do ponto de vista de quem utiliza linguagens de alto nvel, o emprego do Assembly tem
vantagens e desvantagens. Por um lado, constitui uma forma de explorar os recursos do
processador que no so acessveis de outra forma e d ao programador controle total sobre
suas operaes. Por outro lado, em geral preciso escrever vrias instrues Assembly para
conseguir o mesmo resultado de uma instruo de linguagem de alto nvel e tambm cuidar de
tarefas que, de outro modo, seriam automatizadas pelo compilador. mais fcil cometer erros
e estes so, com frequncia, difceis de localizar. Isto aumenta os custos e o tempo de

25
desenvolvimento, e por isso bastante raro encontrar programas escritos totalmente em
Assembly. Em geral, os programas so escritos quase que exclusivamente em linguagens de alto
nvel, e o Assembly empregado apenas em partes especficas, por razes de otimizao de
espao de memria ou de velocidade de execuo, ou ainda para fazer acesso a hardware
externo.
Apesar desse uso relativamente restrito, o estudo da programao em baixo nvel
extremamente valioso para programar em outras linguagens, porque certos elementos destas
s podem ser compreendidos com clareza quando se consegue interpretar seu significado em
termos de nvel mais baixo. [11]
Instrues do 8085
Esta seo apresenta algumas caractersticas das instrues do 8085 que facilitam sua
compreenso e memorizao.
Formato
As instrues consistem de dois campos: o campo de cdigo (opcode) e o campo dos operandos.
O opcode diz o que a instruo faz, e por isso est sempre presente e o primeiro byte de todas
as instrues. Os operandos podem ocupar at dois bytes, de modo que o comprimento total
de uma instruo do 8085 varia de um a trs bytes. Por exemplo, a instruo RLC no necessita
de maiores informaes para saber que deve rotacionar o contedo do acumulador; uma
instruo de 1 byte. J a instruo CPI precisa de mais um byte para comparar com o
acumulador, e a instruo LXI B, <dado16> precisa de dois bytes para formar o dado de 16 bits.
Quase todas as instrues fazem referncia a um ou mais registradores do processador,
identificados pelas letras A, B, C, D, E, H e L. Algumas instrues referenciam esses registradores
aos pares, agrupando-os da seguinte forma: B com C, D com E, H com L e A com os flags. Esses
pares so identificados, respectivamente, por: B, D, H e PSW.
A letra M utilizada para referenciar indiretamente o contedo de uma posio de memria. O
endereo utilizado pelas instrues que usam esse mecanismo o contedo do par HL no
instante da sua execuo. Este mecanismo til na varredura de tabelas ou vetores.
Os dados podem ser de 8 ou de 16 bits, dependendo do envolvimento de um nico registrador
ou de um par de registradores. Os endereos tm 16 bits quando se referem a uma posio de
memria e 8 bits quando se referem a um endereo de E/S.
Mnemnicos com a letra X referem-se a operaes realizadas sobre um par de registradores ou
um registrador de 16 bits. A instruo DCX B, por exemplo, decrementa o par BC e a instruo
INX SP incrementa o stack pointer. [11]
Valores numricos contidos nas instrues so denominados dados imediatos. Estes podem ser
expressos em diferentes sistemas de numerao, indicados por uma letra, adicionada direita
do dado: H (hexadecimal), D ou T (decimal), Q (octal) ou B (binrio). Nmeros sem indicador so
considerados decimais. Os dados expressos em hexadecimal devem iniciar sempre com um
dgito numrico (por exemplo, FACAH deve ser escrito 0FACAH). Caso contrrio, no so
interpretados como smbolos numricos, mas como labels ou sinnimos definido pelo usurio.

26
Constantes em cdigo ASCII podem ser representadas entre apstrofos (por exemplo, von
Neumann). [11]
Classificao
As instrues do 8085 classificam-se em quatro tipos:
instrues lgicas e aritmticas, que permitem efetuar operaes como adio,
subtrao, deslocamento de bits, complemento, incremento e ajuste decimal (AND, OR,
XOR, ADI, ADD, SUB, ANI, RAL, DAA, etc.);
instrues de transferncia de dados, que permitem transferir dados entre
registradores, memria e perifricos (MOV, IN, LDA, PUSH, etc.);
instrues de desvio, que permitem alterar a seqncia normal de execuo do
programa, atravs de chamadas e retornos de sub-rotinas ou saltos (JMP, CALL, RET,
JNZ, RNZ, CC, RST, etc.);
instrues de controle do processador, que permitem controlar seu estado de execuo,
tais como a reteno (HLT) ou a habilitao de interrupes. [11]
Formato de uma linha de cdigo Assembly
Cada linha de um programa em Assembly pode apresentar os seguintes campos: label (rtulo),
mnemnico, operandos e comentrio. E importante salientar que os labels devem ser escritos
sempre a partir da primeira coluna de cada linha, e que instrues e diretivas no podem
comear na primeira coluna.
Os campos so delimitados atravs de alguns smbolos prprios: um ou mais espaos em branco
permitem separar dois campos; dois pontos (:) permitem especificar o final do campo de um
label; o ponto e vrgula (;) marca o incio do campo de comentrios e a vrgula (,) permite separar
dois operandos. Os comentrios encerram-se automaticamente no final da linha. Um exemplo
de linha com todos esses elementos :

Neste exemplo, START um label e MVI o mnemnico da instruo. Os operandos so A e
00H. [11]
O uso dos labels aumenta a clareza e a facilidade de manuteno dos programas e livra o
programador do clculo de endereos para colocar nas instrues. Por exemplo, para fazer um
desvio para uma determinada linha, basta etiquet-la com um label e depois usar este label
como operando da instruo de desvio:

O assembler se encarrega de calcular o endereo da linha de destino, etiquetada com LOOP. Por
exemplo, se essa linha cair no endereo 2010H, o assembler gerar na ltima linha do trecho a
instruo JMP 2 010H e corrigir este endereo sempre que o trecho mudar de lugar. Se o
programador optasse por no utilizar o label, teria que fazer essa correo manualmente. [11]

27
Diretivas do assembler
As diretivas de montagem permitem definir smbolos, estabelecer endereos especficos para
determinados trechos do programa (como por exemplo o endereo inicial) ou ainda reservar
reas de memria para variveis globais. importante lembrar sempre que as diretivas no
fazem parte do conjunto de instrues do processador e que no geram cdigo binrio.
As principais diretivas utilizadas em programas para o 8085 so descritas a seguir,
acompanhadas de exemplos. [11]
<nome> DB <valor inicial>
A diretiva DB (define byte) permite reservar reas de memria e identificar essas reas com um
nome. O nome utilizado na diretiva torna-se um sinnimo para o endereo do primeiro byte
reservado. Uma vez que possvel referenciar esse nome a partir de qualquer ponto do
programa, o espao reservado conhecido como uma varivel global. As diretivas citadas
permitem ainda atribuir valores iniciais a essas variveis, conforme ilustram os exemplos a
seguir.

cria uma varivel global de 1 byte, cujo valor inicial 200. O smbolo V1 passa a ser um sinnimo
para o endereo da varivel. A escolha deste endereo pode ser feita pelo programador atravs
da diretiva ORG (v. adiante), ou ento deixada a cargo do assembler. Neste caso, a varivel ser
simplesmente colocada na seqncia de tudo que o assembler vinha criando at ali.
A linha a seguir cria uma varivel global de 3 bytes, inicializados conforme a seqncia dada;
pode ser interpretada como uma tabela, cujo primeiro elemento reside no endereo V2:

A linha seguinte define uma cadeia de caracteres, ou string ocupando 3 bytes:

Os valores iniciais dos bytes criados pela linha acima correspondem ao cdigo ASCII de cada
caracter, respectivamente 4DH, 49H e 43H. [11]
ORG <endereco>
O smbolo ORG vem da palavra inglesa origin. Esta diretiva estabelece o endereo em que o
assembler colocar a prxima instruo ou varivel global.
utilizada para determinar o endereo inicial do programa e a posio de outros trechos de
cdigo, quando se deseja que estes residam num endereo bem determinado, como no caso
dos tratadores de interrupo. Quando seguida por uma das diretivas de reserva de rea de
memria vistas acima, serve para determinar a posio de uma rea de dados. Um programa
pode conter vrias diretivas ORG.
O endereo pode ser fornecido na forma absoluta (um valor, geralmente em hexadecimal) ou
relativa posio da linha atual, cujo endereo representado pelo smbolo $. Por exemplo,


28
refere-se posio de memria cujo endereo 2000H e

transfere o ponto de continuao da montagem 100 bytes adiante. [11]
<sinonimo> EQU <valor>
Permite associar um nome a um valor. Por exemplo,

permite utilizar o smbolo LIMIT como sinnimo para o valor 0FFH em qualquer parte do
programa.
O uso de sinnimos altamente recomendvel por duas razes principais:
aumentam a qualidade do programa por facilitarem seu entendimento;
facilitam a manuteno se o valor precisar ser modificado. Neste caso, basta alterar a
diretiva para redefinir o valor; se no se utilizasse o sinnimo, o valor utilizado teria que
ser modificado em todos os pontos do programa onde tivesse sido colocado. [11]
END
Indica o fim do programa fonte ao assembler, que ignora qualquer linha escrita aps esta
diretiva. Sua presena obrigatria no final do programa, sob pena de o assembler se perder. E
importante lembrar de colocar espaos no incio da linha, pois trata-se de uma diretiva, e no
de um label. [11]
A tabela 6 resume as diretivas apresentadas.


Tabela 6 - Diretivas da linguagem Assembly do 8085
Etapas do desenvolvimento em Assembly
Um programa em desenvolvimento sofre diversas transformaes, desde o momento em que
editado at chegar sua forma executvel. Normalmente, estas transformaes so realizadas
com o auxlio de ferramentas dedicadas. As etapas que compem o processo de
desenvolvimento so, tipicamente:
gerao do cdigo-fonte, em que se escreve, utilizando um editor de texto, o programa
em linguagem Assembly; este pode compreender um ou mais arquivos-fonte;

29
traduo do cdigo-fonte, em que o assembler gera um arquivo-objeto para cada
arquivo-fonte;
edio de ligaes ou linkagem, em que uma ferramenta chamada linker une os
diversos arquivos-objeto num arquivo utilizvel para execuo ou simulao;
criao ou manuteno de bibliotecas de cdigo-objeto, onde se armazenam sub-rotinas
passveis de reaproveitamento em outros programas. [11]
Interfaceamento
Nesta seo veremos o interfaceamento dos dispositivos de E/S com processador, memria e
sistema operacional.
O sistema operacional desempenha um papel importante no tratamento da E/S, atuando como
interface entre o hardware e o programa que solicita a E/S.
As responsabilidades do sistema operacional surgem de trs caractersticas dos sistemas de E/S:
1. Diversos programas usando o processador compartilham o sistema de E/S;
2. Os sistemas de E/S normalmente usam interrupes (excees geradas externamente)
para comunicar informaes sobre operaes de E/S;
3. O controle de baixo nvel de um dispositivo de E/S complexo, pois exige o
gerenciamento de um conjunto de eventos simultneos e porque os requisitos para o
controle correto do dispositivo normalmente so muito detalhados. [5]
As trs caractersticas dos sistemas de E/S anteriores levam a diversas funes diferentes que o
SO precisa oferecer:
O sistema operacional garante que o programa de um usurio acesse apenas as partes
de um dispositivo de E/S para as quais o usurio possui direitos.
O sistema operacional oferece abstraes para acessar dispositivos fornecendo rotinas
que tratam as operaes de baixo nvel dos dispositivos.
O sistema operacional trata as interrupes geradas pelos dispositivos de E/S, assim
como trata as excees geradas por um programa.
O sistema operacional tenta oferecer acesso equilibrado aos recursos de E/S, alm de
escalonar acessos a fim de melhorar a vazo do sistema. [5]
Para realizar essas funes em favor dos programas de usurio, o sistema operacional precisa
ser capaz de se comunicar com os dispositivos de E/S e impedir que o programa do usurio se
comunique com os dispositivos de E/S diretamente. Trs tipos de comunicao so necessrios:
1. O sistema operacional precisa ser capaz de dar comandos aos dispositivos de E/S. Esses
comandos incluem no apenas operaes como ler e escrever, mas tambm outras
operaes a serem feitas no dispositivo, como uma busca em um disco.
2. O dispositivo precisa ser capaz de notificar o sistema operacional quando o dispositivo
de E/S tiver completado uma operao ou tiver encontrado um erro. Por exemplo,
quando um disco completar uma busca, ele notificar o sistema operacional.

30
3. Os dados precisam ser transferidos entre a memria e um dispositivo de E/S. Por
exemplo, o bloco sendo lido em uma leitura de disco precisa ser movido do disco para
a memria.
Nas prximas subsees, veremos como essas comunicaes so realizadas. [5]
Dando comandos a dispositivos de E/S
Para dar um comando a um dispositivo de E/S, o processador precisa ser capaz de enderear o
dispositivo e fornecer uma ou mais palavras de comando. Dois mtodos so usados para
enderear o dispositivo: E/S mapeada em memria e instrues de E/S especiais.
Na E/S mapeada em memria, partes do espao de endereamento so atribudas a dispositivos
de E/S. Leituras e escritas para esses endereos so interpretadas como comandos aos
dispositivos de E/S. [5]
Por exemplo, uma operao de escrita pode ser usada para enviar dados a um dispositivo de
E/S, onde os dados sero interpretados como um comando. Quando o processador coloca o
endereo e os dados no barramento da memria, o sistema de memria ignora a operao,
porque o endereo indica uma parte do espao de memria usado para E/S. O controlador de
dispositivos, porm, v a operao, registra os dados e os transmite ao dispositivo como um
comando. Os programas de usurio so impedidos de realizar operaes de E/S diretamente,
pois o sistema operacional no oferece acesso ao espao de endereamento atribudo aos
dispositivos de E/S e, assim, os endereos so protegidos pela traduo de endereos. A E/S
mapeada em memria tambm pode ser usada para transmitir dados, escrevendo ou lendo para
selecionar endereos. O dispositivo utiliza o endereo para determinar o tipo de comando, e os
dados podem ser fornecidos por uma escrita ou obtidos por uma leitura. De qualquer forma, o
endereo codifica a identidade do dispositivo e o tipo de transmisso entre o processador e o
dispositivo. [5]
Na realidade, realizar uma leitura ou escrita de dados para cumprir uma solicitao do programa
normalmente exige vrias operaes de E/S separadas. Alm do mais, o processador pode ter
de interrogar o status do dispositivo entre comandos individuais para determinar se o comando
foi concludo com sucesso. Por exemplo, uma simples impressora possui dois registradores de
dispositivo de E/S - um para informaes de status e um para dados a serem impressos. O
registrador de status contm um bit de pronto, ligado pela impressora quando ela tiver impresso
um caracter, e um bit de erro, indicando que a impressora est com papel preso ou sem papel.
Cada byte de dados a ser impresso colocado no registrador de dados. O processador precisa,
ento, esperar at que a impressora ligue o bit pronto antes que possa colocar outro caracter
no buffer. O processador tambm precisa verificar o bit de erro para determinar se houve um
problema. Cada uma dessas operaes exige um acesso separado ao dispositivo de E/S. [5]
Comunicao com o processador
O processo de verificar periodicamente os bits de status para ver se hora da prxima operao
de E/S, como no exemplo anterior, chamado de polling. O polling a forma mais simples para
um dispositivo de E/S se comunicar com o processador. O dispositivo de E/S simplesmente
coloca a informao no registrador de status, e o processador deve vir e apanhar a informao.
O processador est totalmente no controle e realiza todo o trabalho.

31
O polling pode ser usado de vrias maneiras diferentes. A desvantagem do polling que ele
pode desperdiar muito tempo de processador, pois os processadores so muito mais rpidos
do que os dispositivos de E/S. O processador pode ler o registrador de status muitas vezes, para
descobrir que o dispositivo no completou uma operao de E/S comparativamente lenta, ou
que o mouse no saiu do lugar desde a ltima vez em que foi sondado. Quando o dispositivo
completar uma operao, ainda teremos de ler o status para determinar se ele teve sucesso.
O overhead em uma interface de polling foi reconhecido h muito tempo, levando inveno
de interrupes para notificar o processador quando um dispositivo de E/S exigir ateno do
processador. A E/S controlada por interrupo, usada por quase todos os sistemas pelo menos
para alguns dispositivos, emprega interrupes de E/S para indicar ao processador que um
dispositivo de E/S precisa de ateno. Quando um dispositivo deseja notificar o processador de
que completou alguma operao ou que precisa de ateno, isso faz com que o processador seja
interrompido.
Para comunicar informaes ao processador, como a identidade do dispositivo que gera a
interrupo, um sistema pode usar interrupes vetorizadas ou um registrador de causa da
exceo. Quando o processador reconhece a interrupo, o dispositivo pode enviar o endereo
do vetor ou um campo de status para colocar no registrador de causa. Como resultado, quando
o sistema operacional adquire o controle, ele sabe a identidade do dispositivo que causou a
interrupo e pode interrogar imediatamente o dispositivo. Um mecanismo de interrupo
elimina a necessidade de o processador sondar o dispositivo e, em vez disso, permite que o
processador seja focalizado nos programas em execuo. [5]
Transferindo os dados entre um dispositivo e a memria
Vimos dois mtodos diferentes que permitem que um dispositivo se comunique com o
processador. Essas duas tcnicas - polling e interrupes de E/S - formam a base para dois
mtodos de implementao da transferncia de dados entre o dispositivo de E/S e a memria.
Essas duas tcnicas funcionam melhor com dispositivos de menor largura de banda, nos quais
estamos mais interessados em reduzir o custo do controlador de dispositivo e interface do que
oferecer uma transferncia com largura de banda alta. Tanto o polling quanto as transferncias
controladas por interrupo colocam o trabalho de mover dados e gerenciar a transferncia
sobre os ombros do processador. Depois de examinar esses dois esquemas, veremos um
esquema mais adequado para dispositivos de maior desempenho ou colees de dispositivos.
Podemos usar o processador para transferir dados entre um dispositivo e a memria com base
no polling. Em aplicaes de tempo real, o processador carrega dados dos registradores do
dispositivo de E/S e os armazena na memria. [5]
Um mecanismo alternativo fazer a transferncia de dados controlada por interrupo. Nesse
caso, o sistema operacional ainda transferiria dados em pequenos nmeros de bytes de ou para
o dispositivo. Entretanto, como a operao de E/S controlada por interrupo, o sistema
operacional simplesmente atua sobre outras tarefas enquanto os dados esto sendo lidos ou
escritos no dispositivo. Quando o sistema operacional reconhece uma interrupo a partir do
dispositivo, ele l o status para verificar a ocorrncia de erros. Se no houver, o sistema
operacional poder fornecer a prxima parte dos dados, por exemplo, por uma sequncia de
escritas mapeadas em memria. Quando o ltimo byte de uma solicitao de E/S tiver sido

32
transmitido e a operao de E/S for concluda, o sistema operacional poder informar ao
programa. O processador e o sistema operacional realizam todo o trabalho nesse processo,
acessando o dispositivo e a memria para cada item de dados transferido. [5]
A E/S controlada por interrupo libera o processador de ter de esperar por cada evento de E/S,
embora, se usssemos esse mtodo para transferir dados de ou para um disco rgido, o overhead
ainda poderia ser intolervel, pois isso poderia consumir uma grande frao do processador
quando o disco estivesse transferindo. Para dispositivos com alta largura de banda, como discos
rgidos, as transferncias consistem principalmente em blocos de dados relativamente grandes
(centenas a milhares de bytes). Assim, os projetistas de computadores inventaram um
mecanismo para desafogar o processador e fazer com que o controlador de dispositivo transfira
dados diretamente de ou para a memria sem envolver o processador. Esse mecanismo
chamado de acesso direto memria (DMA - Direct Memory Access). O mecanismo de
interrupo ainda usado pelo dispositivo para a comunicao com o processador, mas
somente no trmino da transferncia de E/S ou quando ocorre um erro.
O DMA implementado com um controlador especializado, que transfere dados entre um
dispositivo de E/S e a memria, independente do processador. O controlador de DMA toma-se
o bus master e direciona as leituras e escritas entre si mesmo e a memria. [5]
Pode haver vrios dispositivos de DMA em um sistema de computador. Ao contrrio do polling
ou da E/S controlada por interrupo, o DMA pode ser usado para realizar interface de um disco
rgido sem consumir todos os ciclos de processador para uma nica E/S. Naturalmente, se o
processador tambm estiver brigando pela memria, ele ser atrasado quando a memria
estiver ocupada realizando uma transferncia de DMA. Usando caches, o processador pode
evitar ter de acessar a memria na maior parte do tempo, deixando assim a maior parte da
largura de banda da memria livre para uso por dispositivos de E/S.
Com DMA, existe outro caminho para o sistema de memria - que no passa pelo mecanismo
de traduo de endereos ou pela hierarquia de cache. Essa diferena gera alguns problemas
nos sistemas de memria virtual e em sistemas com caches. Esses problemas normalmente so
solucionados com uma combinao de tcnicas de hardware e suporte do software. [5]
Vimos trs mtodos diferentes para transferir dados entre um dispositivo de E/S e a memria.
Ao passar do polling para uma E/S controlada por interrupo e para uma interface de DMA,
mudamos o peso do gerenciamento de uma operao de E/S do processador para um
controlador de E/S progressivamente mais inteligente. Esses mtodos tm a vantagem de liberar
os ciclos do processador. Sua desvantagem que eles aumentam o custo do sistema de E/S. Por
causa disso, determinado sistema computacional pode escolher qual ponto nesse espectro
apropriado para os dispositivos de E/S se conectarem a ele. [5]

33

Concluso
Como forma de atingir o objetivo proposto, realizou-se diversos estudos sobre os conceitos
fundamentais que permeiam os microprocessadores, bem como ampliou-se o campo de viso
em relao s diversas tecnologias relacionadas.
Como foi dito, o intuito principal deste material foi apresentar conceitos bsicos, portanto serve,
assim, de base para um estudo mais aprofundado.
Referncias Bibliogrficas
1. IC UNICAMP - Instituto de Computao da Unicamp. Pgina da disciplina MC102 -
Algoritmos e Programao de Computadores. Disponvel em: <http://goo.gl/F3kxYJ>.
Acesso em: 20 out. 2013.
2. UNESP - Universidade Estadual Paulista. Faculdade de Cincias. Pgina do Prof. Mauri
Cunha do Nascimento. Disponvel em: <http://goo.gl/hyRv0E>. Acesso em: 20 out. 2013.
3. UFSC Universidade Federal de Santa Catarina. INE - Departamento de Informtica e
Estatstica. Pgina do Prof. Roberto Willrich. Disponvel em: <http://goo.gl/s7shm1>.
Acesso em: 19 out. 2013.
4. UTFPR Universidade Tecnolgica Federal do Paran. Pgina do Prof. Bertoldo
Schneider Jnior. Disponvel em: <http://goo.gl/ReBRvZ>. Acesso em: 18 out. 2013.
5. PATTERSON, David A.; HENNESSY, John L. Organizao e projeto de computadores: a
interface hardware/software. Rio de Janeiro : Elsevier, 2005.
6. TANENBAUM, A. S. Organizao Estruturada de Computadores. So Paulo: Pearson
Prentice Hall, 2007.
7. KIOSKEA. Comunidade de assistncia e de conselho. Artigo sobre melhorias
tecnolgicas nos microprocessadores. Disponvel em: <http://goo.gl/EfgWih>. Acesso
em: 17 nov. 2013.
8. WIKIPEDIA HYPER-THREADING. Wikipdia, a enciclopdia livre. Artigo sobre Hyper-
threading. Disponvel em: <http://pt.wikipedia.org/wiki/Hyper-threading>. Acesso em:
17 nov. 2013.
9. WIKIPEDIA MULTINCLEO. Wikipdia, a enciclopdia livre. Artigo sobre Multincleo.
Disponvel em: < http://pt.wikipedia.org/wiki/Multin%C3%BAcleo>. Acesso em: 17 nov.
2013.
10. MONTEIRO, M. A. Introduo Organizao de Computadores. 4 edio. Rio de
Janeiro: LTC, 1996.
11. ZILLER, Roberto M. Microprocessadores Conceitos Importantes. 2 edio.
Florianpolis: Edio do autor, 2000.
12. CUGNASCA, C. E. et al. Microprocessadores e Microcontroladores: notas de aula 1 e
2. PCS - Escola Politcnica da Universidade de So Paulo. So Paulo: Edio dos
autores, 2006.