Você está na página 1de 56

Objetivo da Disciplina

O aluno deve:
„ Adquirir os conhecimentos básicos a
Microprocessadores respeito da organização dos sistemas de
computação e sobre arquitetura interna de
Código: 104412 microprocessadores;
Créditos: 6 „ Reconhecer a diferença entre
microprocessadores e microcontroladores;
Carga Horária: 90 horas-aula
programação assembly
„ Conhecer as técnicas para utilização de

Prof. Dr. Eduardo Oliveira Freire microcontroladores na solução de


problemas de engenharia.

Conteúdo Programático Conteúdo Programático


UNIDADE I – Arquitetura de UNIDADE II – O Microcontrolador 68HC11
Computadores e Microprocessadores „ Microprocessador x Microcontrolador
„ Introdução à arquitetura de computadores „ Programação Assembly:
„ Processadores Š Modos de Endereçamento
„ Arquiteturas RISC x CISC Š Operações Lógicas, Aritméticas e de
„ Arquiteturas Paralelas e Paralelismo de Deslocamento
Instruções Š Estruturas de Laço, Estruturas de Decisão e
Varredura de Vetores
„ Memórias
„ Interrupções
„ Barramentos
„ Sistema de Temporização
„ Programação Assembly
„ Conversão A/D

Conteúdo Programático Bibliografia


TANENBAUM, Andrew S. Structured Computer
UNIDADE III – Projetos Organization. Upper Saddle River:Prentice-Hall,
„ Escolha de Temas 1999.
„ Elaboração de Ante-Projetos MALVINO, Albert Paul. Microcomputadores e
Microprocessadores. McGraw-Hill, [s.d.].
„ Apresentação de Ante-Projetos
„ Desenvolvimento dos Projetos TORRES, Gabriel. Hardware: Curso Completo. Rio
de Janeiro:Axcel Books, 1999.
„ Apresentação/Demonstração dos Projetos
Desenvolvidos MONTEIRO, MÁRIO A. Introdução à Organização
de Computadores. Rio de Janeiro:LTC, 1996.
Manual do M68HC11, Motorola.

1
Metodologia das aulas e
Forma de Avaliação Máquinas Multinível
Metodologia: Nível 5: Linguagens Orientadas para Problemas
„ Aulas expositivas Tradução (Compilador)
„ Seminários Nível 4: Linguagem de Montagem
„ Aulas práticas
Tradução (Montador)
Avaliação Nível 3: Sistema Operacional
„ Média aritmética de duas provas e um trabalho Interpretação Parcial (Sist. Op.)
„ Nota do Trabalho:
Nível 2: Máquina Convencional
Š 10% para o ante-projeto
Š 10% para apresentação do ante-projeto Interpretação (Microprograma)
Š 30% para o relatório final Nível 1: Microprogramação
Š 40% para a apresentação do relatório final Microprog. executado p/ hardware
Š 10% para a demonstração do projeto Nível 0: Lógica Digital

Hardware x Software Hardware x Software


O software consiste em algoritmos (uma
Os circuitos eletrônicos (nível 0) junto sequência de instruções detalhadas que dizem
com os dispositivos de entrada e saída como fazer algo), e suas representações para o
(E/S) constituem o hardware do computador, ou seja, o programa.
computador. Uma forma intermediária entre o software e o
hardware é o firmware.
O hardware é composto de objetos „ Este consiste no software embutido em dispositivos
concretos, como circuitos integrados, eletrônicos durante a sua fabricação.
placas de circuito impresso, cabos, „ O firmware é utilizado quando se espera que os
fontes de alimentação, memórias, programas não serão alterados, como em brinquedos,
instrumentos e eletrodomésticos.
impressoras, etc. „ Em muitos computadores o microprograma está em
firmware.

Arquitetura de Computadores:
Hardware x Software Histórico
A evolução dos computadores tem se
“Hardware e software são logicamente caracterizado pela velocidade e tamanho do
equivaletes” processador, aumento da capacidade de
„ Qualquer operação efetuada pelo software pode ser memória e aumento da velocidade de E/S.
implementada diretamente em hardware Um fator responsável pelo grande incremento na
„ E, qualquer operação executada pelo hardware pode velocidade do processador é o pequeno tamanho
também ser simulada pelo software dos componentes do microprocessador, isto
„ A decisão de se colocar certas funções em hardware e reduz a distância entre componentes e portanto
outras em software baseia-se em fatores tais como: incrementa a velocidade.
custo, velocidade, confiabilidade e frequência O verdadeiro ganho em velocidade tem vindo da
esperada de alterações organização do processador, devido às técnicas
de execução pipeline e paralela.

2
Geração 0: Geração 0:
Computadores Mecânicos Computadores Mecânicos
Primeiro computador criado por Blaise Pascal Babbage projetou outra máquina chamada de
aos 19 anos. “Analítica”, que possuía quatro componentes:
Armazenamento (memória),
Era inteiramente mecânico
„
„
„ Engenho (unidade de cálculo),
„ Funcionava com manivela „ Seção de entrada (leitora de cartões perfurados)
„ Só podia somar e subtrair „ Seção de saída (saída perfurada e impressa).
Barão Gottfried Wilhelm Von Leibniz, 30 anos O engenho aceitava operandos do armazenamento, os
depois que Pascal, construiu outra máquina de somava, subtraía, multiplicava ou dividia e retornava o
diferenças. resultado ao armazenamento.
„ Máquina projetada para executar um algoritmo, o Tal máquina era totalmente mecânica.
método das diferenças finitas utilizando polinômios Muitos computadores modernos têm uma estrutura
similar à máquina analítica, de modo que é justo dizer
„ A saída perfurava os resultados numa placa de cobre
que Babbage foi o pai do computador digital moderno.

Geração 0: Geração 0:
Computadores Mecânicos Computadores Mecânicos
Howard Aiken construiu um computador com
relês se baseando no trabalho de Babbage.
A máquina se chamou o MARK I, em Havard
(1944).
Quando Aiken acabou de construir o sucessor
do MARK I, o MARK II, computadores com (Source: http://www.paralogos.com/deadsuper)

relês já estavam obsoletos.


A era eletrônica tinha começado. COMPUTADOR MARK I

Geração 1: Válvulas Geração 1: Válvulas


ENIAC : Eletronic Numerical Integrator and Detalhes do ENIAC:
Computer „ Foi uma máquina decimal e não binária.
„ Foi projetado e construído por John Mauchly e „ Memória de 20 registradores cada um capaz de
John Presper Eckert na Universidade de manter um número decimal de 10 dígitos.
Pensilvania „ Programação manual feita com quase 6000
„ Ia ser utilizado para calcular tabelas de trajetória chaves multiposicionais e interconexão de um
para novas armas. grande número de soquetes.
„ Começou a ser construído no ano de 1943 e foi „ Foi construído com 18000 válvulas e 1500 relês.
concluído no ano de 1946, demasiado tarde para „ Pesava 30 toneladas, consumia 140kw de potência
ser utilizado na guerra. e estava numa superfície de 15000 pés
„ O ENIAC continuou a operar até o ano de 1955, quadrados.
quando foi desmontado. „ Realizava 5000 somas por segundo.

3
Geração 1: Válvulas Geração 2: Transistores
Enquanto todas as mudanças aconteciam a
IBM era uma companhia pequena engajada O transistor substituiu a válvula na década dos 50.
no ramo de fabricação de perfuradores de O transistor é menor, mais barato e dissipa menos
cartões e de máquinas mecânicas de calor que a válvula eletrônica.
classificação de cartões. É um dispositivo de estado sólido feito de silício.
A IBM financiou a construção do MARK I mas O transistor foi inventado nos laboratórios Bell em
1948 por John Bardeen, Walter Brattain e William
só no ano de 1953 começou a produzir o Shockley.
computador da série 701. No final da década dos 50 foi comercializado o
Em 1958 a IBM iniciou a produção de sua primeiro computador transistorizado pelas empresas
última máquina a válvulas, o 709. NCR e RCA que foram as primeiras.
Nesta geração surgiu o modelo de Von IBM depois lançou ao mercado o computador da
série 7000.
Neumann.

Geração 2: Transistores Geração 2: Transistores


Nesta geração se introduziram as ULA’s Nesta geração o software era quase
(unidade lógica e aritmética) assim como irrelevante, mas a Burroughs (B5000) tomou
unidades de controle muito mais complexas, uma direção diferente, e construiu uma
devido ao uso de linguagens de programação máquina específica para ser programada em
de alto nível. Algol 60.
Apareceu a empresa Digital Equipment A idéia era de que o software também era
Corporation – DEC, que construiu seu importante, mas foi esquecida rapidamente.
primeiro computador em 1957, o PDP-1, Grande inovação: o modelo de barramento
dando inicio à industria de minicomputadores. do sistema.

Geração 3: Circuitos Integrados Geração 3: Circuitos Integrados


A invenção do circuito integrado possibilitou A IBM lança no mercado o System/360,
que dezena de transistores fossem colocados baseado em circuitos integrados e projetado
em uma única pastilha de silício. tanto para computação científica como
Este encapsulamento tornou possível comercial.
construir computadores menores, mais Criou-se a idéia de família de máquinas, que
rápidos e mais baratos que seus foi aceita por todos os fabricantes de
predecessores transistorizados. computadores.
A era da microeletrônica define a terceira Com o System/360 aconteceu uma
geração de computadores. importante inovação, a multiprogramação.

4
Geração 4:
Geração 3: Circuitos Integrados Computadores Pessoais e VLSI
As características de uma família são como segue: Nos anos 80, a VLSI (Very Large Scale
„ Similar ou idêntico conjunto de instruções.
„ Similar ou idêntico sistema operacional. Integration) permitiu ter computadores
„ Incremento da velocidade. menores e mais rápidos.
„ Incremento de número de portas E/S.
„ Incremento do tamanho da memória. Aparecem os computadores pessoais,
„ Incremento no custo.
para fazer processamento de texto,
Foi construído o computador PDP-8 da DEC:
„ Pequeno suficiente para ser colocado em cima de algum planilhas e inúmeras aplicações
outro equipamento ou dentro dele. altamente interativas.
„ O custo foi de U$16.000, o custo do System/360 foi de umas
poucas centenas de milhares de dólares.

Geração 4: Evolução do número de


Computadores Pessoais e VLSI transistores em um chip
108
Atualmente os computadores podem ser
divididos grosseiramente em cinco categorias:
107 Pentium II
Pentium Pro
Transistores por chip

Pentium PPC G3
Tipo MIPS Típicos Megabytes Típicos Máquina exemplo Exemplo de uso
486 PPC 601
Computador
106
1 1 IBM/PS2 Processamento de texto
Pessoal 386
80286
Minicomputador 2 4 PDP-11/84 Controle de tempo real
105

Supermini 10 32 SUN-4
Servidora de arquivos em 8086
rede

Mainframe 30 128 IBM-3090/300 Bancos


104
Supercomputador 125 1024 CRAY-2 Previsão de tempo
4004
103
1970 1975 1980 1985 1990 1995 2000

O Modelo de Von Neumann O Modelo de Von Neumann


A tarefa de entrar e alterar os programas no Esta idéia é conhecida como “conceito
ENIAC eram extremamente tediosas.
de programa armazenado” e é atribuída
O processo de programação poderia ser
facilitado se o programa pudesse ser
ao matemático John Von Neumann
representado em uma forma capaz de ser consultor no projeto ENIAC.
armazenado em memória junto com os dados. A primeira publicação da idéia foi em
Então um computador poderia obter suas 1945 para um novo computador, o
instruções lendo estas da memória, e um
programa poderia ser configurado ou alterado EDVAC (Eletronic Discrete Variable
mudando os valores de uma porção de Computer).
memória.

5
O Modelo de Von Neumann O Modelo de Von Neumann
Em 1946 Von Neumann e outros cientistas Unidade
começaram o projeto de outro computador Lógica e
Aritmética
com armazenamento de programa, referido
como o computador IAS, no instituto de
Estudos Avançados em Princeton (Princeton Memória Dispositivo
Institute for Advanced Studies – IAS). Principal De
E/S
Este computador é o protótipo de todos os
computadores de propósito geral da
atualidade. Unidade
De
Controle

O Modelo de Von Neumann O Modelo de Von Neumann


O dispositivo de E/S provê instruções e dados O Programa armazenado é o
ao sistema que são armazenadas na Unidade
de Memória. aspecto mais importante da
Instruções e dados são processados pela máquina de Von Neumann e graças
Unidade Lógica e Aritmética (ULA) sob a a isto se fez possível a grande
direção da Unidade de Controle.
A ULA e a Unidade de Controle são referidas versatilidade dos computadores
como a Unidade Central de Processamento modernos.
(Central Processing Unit - CPU).
Os resultados são enviados à Unidade de
Saída (E/S).

Modelo de Barramento do Modelo de Barramento do


Sistema Sistema
Este modelo particiona um computador O mais importante é a comunicação dos
componentes pelo barramento do sistema
em três sub-unidades : formado por:
„ CPU „ Barramento de dados
„ Memória „ Barramento de endereço
„ E/S. „ Barramento de controle
Os resultados são enviados à Unidade de
Trata-se de um refinamento do modelo Saída (E/S).
de Von Neumann. Fisicamente, os barramentos são uma coleção
de fios que são agrupados por funções.

6
Modelo de Barramento do
Sistema Processadores
Processador
8085
CPU
(ULA, Registradores, Memória Entrada e Saída (E/S) Memória
e Controle) Principal

Barramento de Disco
Dados
Barramento do
Sistema

Barramento de
Endereços
Barramento de
Controle
Impressora

Execução de Instruções Tipos de Instruções


Seqüência de passos para execução de uma Registrador – Memória
instrução:
„ Busca próxima instrução na memória p/ o reg. de instrução Registrador – Registrador
Atualiza o PC para que ele aponte para a próxima instrução
„
Memória – Registrador
„ Determina o tipo de instrução
„ Se a instrução usa dados da memória, determina onde estão
„ Busca os dados (se houver) p/ registradores internos da CPU
„ Executa a instrução
„ Armazena os resultados em locais apropriados
„ Volta ao passo 1 para executar a próxima instrução

Taxonomia De Flynn Para Tipos De Arquiteturas


Computadores Paralelos (quanto ao paralelismo)
Fluxos de Fluxos de Todos
Nome Exemplos
Instruções Dados Computadores

1 1 SISD Máquinas Von Neumann

Computadores Vetoriais SISD SIMD MISD MIMD


1 Múltiplos SIMD
Array Processors

Múltiplos 1 MISD Nenhum Vetoriais Paralelos Memória Memória


Compartilhada Privada
Múltiplos Múltiplos MIMD Multiprocessadores Von ?
Neuman
Fortemente Acoplados Fracamente Acoplados

7
Arquiteturas Paralelas:
Máquina Pipeline CDC 6600 – 1964
P1 P2 P3 P4 P5
Análise e Analisador Unidade de Unidade Unidade de
busca de de Cálculo de de Busca Execução de
Instrução Instrução Endereço de Dados Instruções

P1 1 2 3 4 5 6 7 8 9
P2 1 2 3 4 5 6 7 8
P3 1 2 3 4 5 6 7 …
P4 1 2 3 4 5 6
P5 1 2 3 4 5
1 2 3 4 5 6 7 8 9

Tempo

Arquiteturas Paralelas: Arquiteturas Paralelas: Array


ALU vetorial (Computador SIMD) Processor (Computador SIMD)

Arquiteturas Paralelas Sistemas Arquiteturas Paralelas Sistemas


Multiprocessados (MIMD) Multiprocessados (MIMD)
Sistema multiprocessador básico Sistema multiprocessador com memórias
locais
CPU CPU CPU CPU Memória M. L. M. L. M. L. M. L. M. L. : Memória Local
Compartilhada

Barramento CPU CPU CPU CPU Memória


Compartilhada

Barramento

8
Arquiteturas RISC x CISC Máquinas RISC
RISC:Reduced Instruction Set Computer Uma máquina RISC pode ser definida como
aquela que executa uma instrução por ciclo
CISC:Complex Instruction Set Computer das vias de dados, diretamente no hardware,
Os que defendem a filosofia RISC dizem sem nenhuma interpretação por uma camada
que: abaixo do software (ou seja, sem nenhum
“… os computadores ficaram muito microcódigo).
complicados ao longo dos anos, e nós As máquinas RISC têm um alto desempenho,
deveriamos jogar tudo fora e recomeçar resultante da eliminação do microcódigo e da
de novo…” execução de instruções muito simples, muito
rapidamente.

Princípios de Projeto para uma


Máquinas RISC Máquina RISC
Primeira máquina RISC moderna: Cinco passos para projetar uma máquina
RISC:
minicomputador IBM 801 (1975)
„ Analisar as aplicações para encontrar as
RISC I (1981) operações-chave
Projetar uma via de dados que seja ótima para as
RISC II (1982)
„
operações-chave
MIPS (1983) – MIPS Computer Systems „ Projetar instruções que executem as operações-
chave utilizando a via de dados
SUN Microsystems (1987) : „ Adicionar novas instruções somente se elas não
Scalable Processor ARChitecture diminuirem a velocidade da máquina
„ Repetir este processo para outros recursos
SPARC

Operações-chave Via de Dados


A tabela seguinte apresenta os resulltados de estudos
de 5 tipos de linguagens de programação, dando a O coração de um computador é sua via
porcentagem de cada tipo de comando em uma
amostra de programas medida:
de dados
Comando SAL XPL Fortran C Pascal Média A via de dados é formada por:
Assinalamento 47 55 51 38 45 47 „ Registradores
If 17 17 10 43 29 23 „ ALU
Call 25 17 5 12 15 15 „ Barramentos que os conectam
Loop 6 5 9 3 5 6
Goto 0 1 9 3 0 3
Outros 5 5 16 1 6 7

9
Características de Máquinas
Tempo de Ciclo da Via de Dados RISC e CISC
RISC CISC
O tempo requerido para buscar os operandos Instruções complexas levando
Instruções simples levando 1 ciclo
a partir de seus registradores, executá-los múltiplos ciclos
através da ALU e armazenar o resultado de Apenas LOADs/STOREs referenciam Qualquer instrução pode
a memória referenciar a memória
volta em um registrador é denominado de:
Altamente pipelined Pouco ou nenhum pipeline
Tempo de Ciclo da Via de Dados
Instruções executadas pelo Instruções interpretadas pelo
A Regra de Ouro RISC número 1 diz: hardware (nenhum microprograma) microprograma
“Sacrifique tudo para reduzir o tempo Instruções com formato fixo Instruções de vários formatos
de ciclo da via de dados” Poucas instruções e modos Muitas instruções e modos
A complexidade está no
A complexidade está no compilador
microprograma
Múltiplos conjuntos de Registradores Conjunto único de registradores

Instruções Simples Levando


Apenas 1 Ciclo Arquitetura LOAD/STORE
O nome Reduced Instruction Set Computer
não é o nome mais adequado para descrever Como em uma arquietura RISC as instruções
as arquiteturas RISC. têm que ser completadas em um único ciclo
De fato, a maioria das máquinas RISC possui da via de dados, as instruções que
um conjunto de instruções menor do que a referenciam a memória são um problema.
maioria das máquinas CISC. No entanto, esta Instruções que buscam seus operandos e
não é a principal característica que distingue armazenam seus resultados em registradores
as máquinas RISC das máquinas CISC. podem ser manipuladas em um único ciclo,
A principal característica consiste no fato de porém instruções que acessam a memória
que as instruções de uma máquina RISC têm levam muito tempo, e inclui-las vai de
que ser completadas em um único ciclo da via encontro à regra de ouro RISC número 1.
de dados.

Arquitetura LOAD/STORE Pipelining


A solução consiste em que as instruções Uma vez que não é possível que as instruções
comuns devem ter apenas registradores de LOAD/STORE sejam concluídas em 1 ciclo
como operandos. da via de dados, então a alternativa é relaxar
Desse modo, somente é permitido o um pouco a exigência de que cada instrução
endereçamento de registrador, RISC tem que ser completada em 1 ciclo.
diferentemente das máquinas CISC que têm Em vez disso, exige-se que a cada ciclo uma
muitos modos de endereçamento distintos. nova instrução seja iniciada, sem levar em
No entanto, algum tipo de instrução tem que conta quando ela termina.
referenciar a memória. Para isso adiciona-se Para atingir este objetivo, toda máquina RISC
à arquitetura instruções LOAD/STORE. tem pipeline.

10
Nenhum Microcódigo Nenhum Microcódigo
As instruções geradas por um Os defensores das arquiteturas CISC
compilador para uma máquina RISC são dizem que é melhor implementar
executadas diretamente pelo hardware. instruções complexas em microcódigo,
Ou seja, elas não são interpretadas por em vez de código do usuário.
microcódigo. Esta afirmação conduz à regra de ouro
O segredo das máquinas RISC consiste RISC número 2:
em eliminar este nível de interpretação. “Microcódigo não é mágico”

Nenhum Microcódigo Instruções de Formato Fixo


Por exemplo, se uma instrução complexa levar
5 microinstruções de 100ns cada, será
necessário um tempo de 500ns para executar
em uma máquina CISC. Bits 7 1 5 5 1 13
Em uma máquina RISC, a mesma instrução OPCODE C Destino Fonte I OFFSET
gastaria 5 instruções RISC, em vez de 5
microinstruções. C = 0 => Não estabelece códigos de Condição
Se as instruções RISC também levarem 100ns, C = 1 => Estabelece códigos de condição
o tempo necessário continuará sendo de 500ns.
A única vantagem da implementação CISC é a I = 0 = > Não imediato
economia de um pouco de memória. I = 1 => Imediato

A Complexidade Deve Estar no


Conjunto de Instruções Reduzido Compilador
Apesar do significado da sigla RISC, não Nas máquinas RISC, um grande esforço
existe nenhuma objeção em relação a ter foi realizado no sentido de manter o
muitas instruções, desde que cada uma delas hardware tão simples quanto possível.
seja executada em um ciclo da via de dados.
O único problema é que a complexidade do
O preço disto é que os compiladores
bloco decodificador cresce exponencialmente que são utilisados em máquinas RISC
com a quantidade de instruções, e assim são consideravelmente mais complexos
consome crescentes quantidades da escassa do que aqueles que são utilisados em
área da pastilha. máquinas CISC.

11
A Complexidade Deve Estar no A Complexidade Deve Estar no
Compilador Compilador
Como a maioria das instruções RISC não O fato do conjunto de instruções das máquinas
podem fazer acesso à memória, elas utilizam RISC ser reduzido também traz complicações
registradores da CPU. para os compiladores RISC.
Desse modo, os compiladores RISC têm que Isto ocorre devido ao fato de que algumas
fazer de tudo para otimizar o uso dos instruções que os compiladores CISC assumem
registradores. como fato, como por exemplo – MULTIPLY,
A penalidade para o uso sub-ótimo dos têm que ser sintetizadas em uma série de
registradores em máquinas RISC é muito formas (dependendo dos operandos), pelos
maior do que no caso das máquinas CISC. compiladores RISC.

Múltiplos Conjunto de
Registradores Características em Aberto
Por não ter nenhum microcódigo, uma
quantidade substancial da área da pastilha é Apesar de todos os pontos em comum mencionados,
liberada nas pastilhas RISC para outros os projetistas das máquinas RISC têm muitas
propósitos. divergências entre si.
Algumas máquinas RISC utilizam esta área de Uma das principais razões para isso é o fato de que
pastilha para implementar um grande número as máquinas RISC não são obrigadas a conviver com
de registradores de CPU. erros e limitações do passado, como ocorre com a
maioria das máquinas CISC que se organizam em
Isto permite reduzir o número de LOADs e famílias (ex:80x86 da Intel e 680x0 da Motorola).
STORES, já que somente estes comandos
Desse modo, as máquinas RISC possuem
podem acessar a memória em máquinas RISC. arquiteturas mais livres, o que aliado ao fato de que
O modo como se organizam estes registradores existe muita pesquisa em ambiente acadêmico,
é fundamental nas arquiteturas RISC. resulta em uma grande diversidade de abordagens.

RISC x CISC RISC x CISC


Enquanto que as máquinas RISC têm um Alguns critérios são:
número crescente de adeptos, também não „ Facilidade de projeto do hardware
lhes faltam críticos.
„ Velocidade de execução de programas em
Isto é de se esperar, dada a premissa básica linguagens de alto nível
dos adeptos da linha RISC de que as
„ Para qual tipo de máquinas é mais fácil
complexas CPUs microprogramadas (CISC)
escrever compiladores
que dominaram o mercado ao longo de
muitos anos devem ser abandonadas.

12
RISC x CISC RISC x CISC
Simplificar o hardware é uma premissa da arquitetura Quanto à velocidade, comparações
RISC, desse modo é de se esperar que as máquinas
RISC sejam mais simples de construir.
realizadas no início dos anos 90 mostram
Uma vez que dois professores e uma classe de alunos
que a maioria das máquinas RISC eram
de graduação de Berkeley puderam projetar e mais velozes do que as CISC.
implementar uma pastilha RISC que tem melhor A respeito dos compiladores, a princípio,
desempenho do que uma série de microprocessadores
normalmente é mais simples escrever um
e minicomputadores projetados por engenheiros
profissionais praticantes, fica claro que as máquinas compilador para uma máquina CISC do
RISC podem ser eficientes ao passo que têm um que para uma máquina RISC.
hardware simplificado.

RISC x CISC Trabalho


Em uma comparação entre as arquiteturas RISC e Escrever um trabalho onde seja realizada uma
CISC, a balança parece ser favorável à primeira. comparação atualizada entre as arquiteturas
No entanto, é necessário ter em mente que as RISC e CISC.
máquinas CISC normalmente são projetadas com a Usar como referência básica o livro Organização
obrigação de compatibilidade com máquinas antigas Estruturada de Computadores de Tanenbaum.
pertencentes à mesma família (o que as obriga a Buscar novas publicações: livros, artigos e sites.
conviver com erros e limitações antigas), enquanto
que as máquinas RISC estão livres disto. Referenciar o trabalho e indicar todas as
Se fosse permitido aos projetistas CISC conceber
referências bibliográficas consultadas.
uma máquina CISC totalmente nova, os resultados da Atenção:
comparação RISC x CISC poderiam ser diferentes… Trabalhos sem referências não serão corrigidos!

Memórias Memórias
Nas décadas passadas, a velocidade de processamento Como a lacuna entre as velocidades do processador e
da CPU, medida como o número de instruções da memória cresce, soluções arquiteturais ajudam a
executadas por segundo, tem dobrado a cada 18 meses,
pelo mesmo preço. criar uma ponte para esta lacuna.
A memória do computador tem experimentado um Um computador típico contém vários tipos de
incremento similar com uma dimensão diferente, memória, desde a mais veloz, (registradores internos
quadruplicando em tamanho cada 36 meses, pelo mesmo caros), a lentos, (discos removíveis baratos).
preço. A ação entre estes diferentes tipos de memória é
A velocidade da memória tem-se incrementado a uma explorada de forma que o computador se comporte
razão de menos que 10% por ano. como se tivesse uma memória única, grande e veloz,
A velocidade de processamento aumenta na mesma quando de fato tem vários tipos de memória que
relação que o tamanho da memória. operam de um modo altamente coordenado.

13
Memórias Memórias
A memória muitas vezes se torna o principal fator A memória do computador consiste de uma coleção
determinante do desempenho da máquina, devido as sucessiva de registros numerados (endereçados),
suas limitações de velocidade e capacidade. cada um dos quais mantém um byte.
Por esta razão, tem se tornado também um Cada registrador tem um endereço, referido como
componente bastante estudado e que evolui numa uma locação de memória.
velocidade impressionante.
Como sabemos, as memórias são componentes
fundamentais de qualquer computador.
São nelas que residem todas as informações
necessárias para que o processador possa executar
tarefas.

Memórias Memórias
Numa máquina de byte endereçável, o menor Quando são usadas palavras multi-byte,
objeto a ser referenciado na memória é o byte.
há duas escolhas para ordenar qual dos
Existem porém, instruções que lêem e
escrevem palavras multi-byte.
bytes são armazenados na memória:
Palavras multi-bytes são armazenadas como „ Byte mais significativo no endereço menor,
uma seqüência de bytes, endereçados pelo referido como big-endian (Motorola)
byte da palavra que tem o menor endereço. „ Byte menos significativo, referido como
Muitas máquinas atualmente têm instruções little-endian (Intel)
que podem acessar bytes, meias palavras,
palavras, e palavras duplas.

Hierarquia das Memórias Hierarquia das Memórias


No topo da hierarquia estão os Tipo de Tempo de Custo / MB Quantidade Custo típico
registradores que estão dentro Memória Acesso típica usada
da CPU, estes consomem uma Registrador 1 ns High 1 KB -
quantidade significante de Cache 5 - 20 ns $100 1 MB $100
potência. Memória
Na parte baixa da hierarquia 60 – 80 ns $1.10 64 MB $70
principal
estão as memórias secundárias Memória de
e armazenamento off-line, tais Disco
10 ms $0.05 4G $200
como discos e fitas
magnéticas, no qual o custo
por bit armazenado é pequeno
em termos de dinheiro e
potência elétrica, mas o tempo
de acesso é muito longo
quando comparado com os
registradores.

14
Registradores Memória Cache
É uma memória volátil, mais rápida que a
Subsistema constituído basicamente por Flip-Flops. memória principal, localizada entre a memória
Localizam-se no processador e permitem armazenar principal e o processador.
pequena quantidade de bits. Normalmente não possui uma grande capacidade
Sua tecnologia permite um acesso bastante rápido. de armazenamento.
Sua capacidade depende do n° de Flip-Flops que Quando um programa é executado em um
possui. computador, muitas das referências de memória
São voláteis, isto é, necessitam estar sendo sempre são feitas em um pequeno número de locações.
alimentados com corrente elétrica. Tipicamente, 90% do tempo de execução de um
Caso não haja corrente, seu conteúdo é perdido. programa é gasto em 10% do código.
Esta propriedade é conhecida como “PRINCÍPIO
DA LOCALIDADE”.

Memória Cache Memória Cache


Quando um programa referencia uma Similarmente, há uma LOCALIDADE
locação de memória, é provável que ele ESPACIAL, na qual a locação de memória que
volte a referenciar esta mesma locação de está próxima a uma locação recentemente
memória em um curto intervalo de tempo, o referenciada é mais provável que seja
que é conhecido como “LOCALIDADE
referenciada novamente que uma locação de
TEMPORAL”.
memória que está mais afastada.
A localidade temporal acontece porque os
programas gastam muito do seu tempo em A localidade espacial acontece porque os
interação ou recursão, e assim a mesma dados tendem a ser armazenados em
seção de código é visitada um grande locações contíguas.
número de vezes.

Memória Cache Memória Cache


O acesso a memória é geralmente lento Uma pequena, porém veloz memória cache, no
quando comparado com a velocidade da qual o conteúdo das locações mais comumente
CPU, portanto a memória se converte em um acessadas são mantidas, pode ser colocada
fator significante no desempenho do entre a memória principal e a CPU.
computador.
Desde que muitas referências de memória
vêm de pequenos conjuntos de locações, o
principio de localidade pode ser explorado
para melhorar o desempenho.

15
Memória Cache Memória Cache
Quando um programa é executado, a memória cache é A memória cache é mais veloz que a memória
pesquisada primeiro, e a palavra referenciada é
acessada no cache, se ela estiver presente.
principal devido a que utiliza dispositivos
eletrônicos mais rápidos o que resulta em um
Se a palavra referenciada não está no cache, então
uma locação livre é criada no cache e a palavra grande gasto em termos de dinheiro,
referenciada é trazida para o cache desde a memória tamanho e requerimento de potência.
principal. O cache é colocado fisicamente e logicamente
A palavra é então acessada no cache. mais perto da CPU que da memória principal,
Ainda que este processo toma mais tempo que acessar isto evita os atrasos de comunicação sobre
diretamente à memória principal, o desempenho total um barramento compartilhado.
pode ser melhorado se uma alta proporção de
memória acessada é satisfeita pelo cache.

Memória Cache Memória Cache


Sistemas de memória modernos têm vários Devido ao incremento de densidade de
níveis de cache, referidos como Nível 1 (L1), componentes nos circuitos integrados (Chips)
Nível 2 (L2), em alguns casos, Nível 3 (L3). é que se pode incluir memória cache sobre a
Em muitos casos o cache L1 é implementado mesma pastilha do microprocessador.
dentro do chip CPU. Uma vez que a velocidade de processamento
Por exemplo os processadores Pentium e os dentro do chip é maior que a velocidade de
Power PC G3 têm 32 Kbytes de cache L1 comunicação entre os chips, um cache dentro
dentro da CPU. do chip pode ser mais rápido que um cache
fora do chip.

Memórias Cache Memória Cache


Com a tecnologia atual não é possível colocar um
cache inteiro dentro do mesmo chip do processador. 256
Por esta razão, os caches multinível têm sido L1
desenvolvidos, no qual o nível mais rápido do cache, Cache De
L1, está sobre o mesmo chip que o processador, e o Instruções
8KB
n Memória
cache restante é colocado fora do chip do Cache L2 n
processador. CPU Principal
(≤ 512KB)
Caches de dados e instruções são mantidos L1 (≤ 8GB)
Cache de
separadamente no cache L1. Dados
8KB
O cache L2 é unificado, o que significa que o mesmo
cache mantém os dados e as instruções.

16
Memória de Acesso Aleatório
RAM Memória RAM
Ram significa "Random Acess Memory" esta é A configuração ao lado
a memória usada pelo processador para é conhecida como RAM
executar programas e armazenar dados. estática (static RAM -
O termo “aleatório” significa que após acessar SRAM), porque o
uma posição de memória “A”, para acessar conteúdo (informação)
uma posição de memória “B” , não é em cada célula se
necessário passar pelas posições de memória mantém enquanto dure
intermediárias entre as posições “A” e “B”. a energia elétrica.

Memórias RAM Módulo DIP (Dual in Parallel)


Era a memória RAM usada na época do XT.
Os circuitos integrados RAM dinâmicos (Dynamic RAM - Consistiam em pequenos chips que eram encaixados
DRAM) utilizam capacitores, os quais armazenam por na placa mãe.
um momento uma quantidade de caga elétrica.
Esse tipo de memória foi também utilizada em alguns
O nível de carga representa um 1 ou um 0.
micros 286.
Os capacitores são menores que os Flip-Flops.
Eram módulos de memórias de 8 bits, fabricados em
Por esta razão é possível armazenar muito mais
informação na mesma área que uma SRAM. velocidades de acesso de 150 e 120 ns (bilionésimos
de segundo).
Uma vez que as cargas nos capacitores se dissipam
com o tempo, as cargas armazenadas nos capacitores
de uma DRAM devem ser restauradas, ou refrescadas
freqüentemente.

Módulo SIPP Single in Line Memory Module


(Single in Line Pin Package) (SIMM) de 30 vias
Foram os primeiros módulos de memória. Memória utilizada em alguns micros 286 mais
modernos, nos micros 386 e em muitos 486.
Foram usados em micros 286 e nos Pentes de memória com 30 terminais ou vias.
primeiros micros 386 Este modulo podia ser encontrado com várias
Eram também módulos de 8 bits. capacidades, os mais comuns eram os de
256k, 1MB e 4 MB, existindo também módulos
Esse tipo de memória foi fabricado com de 512 Kb, 8 MB e 16 MB.
velocidades de acesso entre 100 e 120ns. Por ser um módulo de 8 bits, era necessário
usar mais de um modulo em cada banco para
que fornecesse os mesmo números de bits
usados pelo processador.

17
Single in Line Memory Module
(SIMM) de 30 vias Módulo SIMM de 72 vias
Nos micros 286 e nos 386 SX que tinham Com o uso dos processadores de 32 bits, os
processadores que se comunicavam com a fabricantes criaram um novo tipo de pente de memória
memória em 16 bits, era necessário o uso dos de 32 bits que ao contrário dos módulos antigos
módulos em pares (8+8=16). possuía 72 vias.

Já nos micros 386 DX e nos micros 486, eram Esse tipo de memória foi usado nos micros 486 mais
modernos e largamente utilizados nos micros Pentium,
necessários 4 módulos em cada banco,
neste caso sendo necessário o uso em pares já que
totalizando 32 bits.
esses processadores trabalhavam em 64 bits.
Foram fabricados com velocidade de acesso Os módulos SIMM de 72 pinos são encontrados com
entre 100 e 70 ns. velocidades entre 80 e 50 ns.

Módulos SIMM de 30 e 70 vias Módulo DIMM de 168 vias


Ao contrário das memórias SIMM, esses
módulos possuem contatos em ambos
os lados do pente, sendo por isso
chamados de DIMM (Double in Line
Memory Module)
São módulos de 64 bits, sendo usados
em micros Pentium e posteriores.

Dynamic RAM (DRAM) Dynamic RAM (DRAM)


É a tecnologia usada na fabricação dos Se divide em:
pentes de memória de 30, 72 e 168 vias. „ Fast Page Mode RAM (FPM RAM)
Este tipo de memória precisa ser „ Extended Data Output RAM (EDO RAM)

constantemente reenergizado para não „ The Burst Extended Data Output RAM (BEDO RAM)

perder os dados gravados. „ The Synchronous Dynamic RAM (SDRAM)


„ Double Data Rate-Synchronous DRAM (DDR-SDRAM)
„ Speculative Leadoff
„ Interleaving

18
Fast Page Mode RAM Extended Data Output RAM
(FPM RAM) (EDO RAM)
É o mais antigo e menos sofisticado tipo de É o tipo de memória mais usado atualmente, é
encontrado em velocidades de 70, 60 e 50 ns.
RAM, usada em micros 486 e Pentiums mais
A diferença entre a memória FPM e a EDO, é que a
antigos. EDO consegue trabalhar com Wait States menores
Esse tipo de memória é encontrado em sendo cerca de 20% mais rápida do que a FPM.
velocidades de 80, 70 e 60 ns. Este tipo de memória foi usado em pentes de 72 vias
Os intervalos de espera (Wait States) desse e em alguns modelos de pentes de 168 vias.
tipo de memória eram lentos. As memórias EDO de 60 e 50 ns (desde que de boa
qualidade) suportam trabalhar com barramento de 75
Pode ser utilizada em velocidades de MHz.
barramento de até 66 MHz. Em muitos casos se consegue que esse tipo de
memória suporte um barramento de 83 MHz
aumentando os Wait States.

The Burst Extended Data The Synchronous Dynamic RAM


Output RAM (BEDO RAM) (SDRAM)
É um tipo melhorado de memória EDO, Encontrada em Pentes de memória DIMM,
utiliza Wait States pequenos, sendo por volta
suportando trabalhar com Wait States de 10% mais rápida do que as memórias EDO.
menores sendo levemente mais rápida do São encontradas com velocidade de 10 e 8 ns,
que as memórias EDO convencionais. funcionando facilmente com barramentos de
Este tipo de memória é suportado apenas 100 MHz (no caso das de 10 ns) e alcançando
barramentos de 125 MHz no caso das de 8 ns.
por alguns modelos de placa mãe.
Indicadas para o uso em Pentiums Xeon e K-6
de 300 MHz, que utilizam barramento de 100
MHz.

Double Data Rate-Synchronous


DRAM (DDR-SDRAM) Speculative Leadoff
Um tipo de SDRAM que suporta transferências Alguns chipsets oferecem esse recurso,
de dados duas vezes por ciclo de clock,
dobrando a velocidade de acesso.
que pode ser ativado ou desativado no
Este tipo de memória consegue suportar
Setup.
velocidades de barramento de cerca de 250 Quando ativado, ele aumenta a
MHz (!) velocidade do primeiro acesso à
A transferencia de dados entre o processador e memória de cada ciclo, conseguindo-se
esse tipo de memória é de cerca de 2.4
gigabytes por segundo. um pequeno aumento de performance.
Também chamada de SDRAM II.

19
Interleaving Memória Secundária
É uma técnica usada em alguns chipsets mais São os HDs, disquetes, fita magnética...
recentes para melhorar a performance das
Não volátil.
memórias.
Esta função pode ser ativada no Setup das Alta capacidade de armazenamento.
placas compatíveis. Menor custo.
Com esse recurso o processador pode Disco winchester: discos rígidos selados
transferir mais dados para a RAM no mesmo para evitar contaminação com poeira.
espaço de tempo, aumentando o
desempenho.

Discos Rígidos Discos Rígidos


Um HD é um dispositivo para armazenar informação
que suporta grandes densidades de armazenagem e Um único cabeçote é dedicado para cada superfície.
tem um tempo de acesso relativamente pequeno. Em discos multipratos algumas vezes não são usadas
as superfícies superiores e as inferiores, por que são
Um HD de cabeçote móvel é composto de uma pilha
mais susceptíveis de contaminação que as superfícies
de um ou mais pratos que são separados por vários internas.
milimetros e são ligados por um fuso (spindle).
Os cabeçotes são ligados a um braço comum
Cada prato tem duas superfícies feitas de alumínio ou (também chamado de pente) o qual move estes
vidro, os quais são cobertos com partículas entrando e saindo para alcançar porções diferentes
extremamente pequenas de um material magnético tal de superfície.
como óxido de ferro, o qual é a essência do ferrugem. Nos HD’s os pratos têm uma rotação de velocidade
Esta é a razão pela qual os pratos do disco, disquetes, constante de tipicamente 3600 a 10.000 revoluções
fitas de áudio e outro médio magnético são marrons. por minuto (RPM).

Discos Rígidos Discos Rígidos


Os 0’s e 1’s binários são armazenados magnetizando
pequenas áreas do material. Para escrever numa superfície do disco se magnetiza
este com o cabeçote de escritura.
Para ler são medidos os campos magnéticos sobre as
superfícies.
Somente um único cabeçote é utilizado para ler ou
escrever em algum instante, onde o dado é
armazenado em modo serial, ainda que os cabeçotes
podem teoricamente ser usados para ler ou escrever
vários bits em paralelo.
Uma razão pela qual o modo de operação paralelo
não é normalmente utilizado é que os cabeçotes
podem ficar desalinhados, o que corromperia a forma
como o dado é lido ou escrito.

20
Discos Rígidos Disco Rígido
Uma única superfície contém várias centenas de trilhas
(tracks) concêntricas, as quais são compostas de setores
(sectors) de tipicamente 512 bytes em tamanho,
armazenados serialmente.
Os setores são separados por “buracos inter-setor”(inter-
sector gaps), e as trilhas são separadas por “buracos
inter-trilhas” (inter-track gaps) o que simplifica o
posicionamento do cabeçote.
Um conjunto de trilhas sobre todas as superfícies formam
um cilindro.
Por exemplo, trilha 0 sobre cada uma das superfícies 0,
1, 2, 3, 4, e 5, em conjunto, formam o cilindro 0.
O número de bytes por setor é geralmente invariante no
prato inteiro.

Discos Rígidos Discos IDE versus SCSI


Em HD’s modernos o número de trilhas por
setor pode variar em zonas, onde uma zona é
um grupo de trilhas tendo o mesmo número
de setores por trilhas.
Zonas próximas ao centro do prato onde os
bits estão muito juntos têm muito poucos
setores, enquanto que zonas próximas à
parte periférica do prato, onde os bits estão
mais espaçados têm mais setores por trilhas.
Esta técnica para incrementar a capacidade
de um HD é conhecida como zona-bit de
gravação (zone-bit recording).

Disquete ou Floppy Disks ou Disquete ou Floppy Disks ou


Discos Flexíveis Discos Flexíveis
O disquete contém um prato de plástico flexível coberto Devido a esta pequena velocidade rotacional se diz
com um material magnético parecido ao óxido de ferro. que o disquete é 10 vezes mais lento que os HD’s.
Ainda que somente um único lado é usado, em muitos Recentemente têm aparecido disquetes de alta
sistemas ambos lados do disquete são cobertos com o capacidade, como o que utiliza o drive da Iomega Zip
mesmo material para prevenir deformação. que tem uma capacidade de 100 MB e tempos de
O tempo de acesso é geralmente maior que o de um HD acesso que são quase duas vezes o dos HD’s, além
do drive Iomega Jaz que tem uma capacidade de
porque o disquete não pode girar tão rápido.
2GB, com tempo de acesso similar.
A velocidade rotacional de um disquete é somente 300
Outro floppy drive recentemente introduzido pela
RPM, e poderia variar de acordo com o modo como os Imation Corp., o SuperDisk, tem discos parecidos
cabeçotes se movimentam de trilha para trilha para com os floppys, com uma capacidade de 120MB, e
otimizar a relação de transferência de dados. também pode ler disquetes de 1.44 MB.

21
Discos Óticos Disco Compacto (Compact Disc)

Várias novas tecnologias utilizam as Foi introduzido no ano 83 para gravar música.
Os Cd’s têm a capacidade de armazenar 74 minutos
vantagens da ótica para armazenar e de áudio, no formato estéreo digital (2 canais).
recuperar dados. O CD e o CD-ROM (Compact Disk Read - Only
Memory) utilizam uma tecnologia similar.
O Compact Disc (CD) e o mais novo A principal diferença é que os Drivers de CD-ROM são
Digital Versatile Disc (DVD) utilizam luz mais robustos e têm dispositivos corretores de erro
para ler dados codificados sobre uma para assegurar que os dados sejam apropriadamente
transferidos desde o disco ao computador.
superfície reflexiva. Os discos óticos são feitos de uma resina, tal como
policarbonato, e coberto com uma superfície
altamente reflexiva, usualmente alumínio.

Disco Compacto (Compact Disc) Discos Óticos


A informação digitalmente gravada
(música ou dados do computador) é
impressa como uma série de de pits
(covas, buracos) microscópicos sobre a
superfície reflexiva.
Diferente dos HD’s no qual todos os
setores estão sobre trilhas concêntricas
alinhados, os CD’s são arranjados em
um formato espiral.

Disco Compacto (Compact Disc) Disco Compacto (Compact Disc)


Os pits são colocados sobre a espiral com A tecnologia CDROM é apropriada para
espaçamento igual desde um extremo do distribuição de grandes quantidades de dados
disco ao outro. a baixo custo.
A velocidade de rotação é ajustada tal que o Há duas tecnologias, uma chamada de disco
disco se move mais devagar quando o ótico write once read many (WORM) onde só
cabeçote está na borda que quando está no se pode escrever uma vez e ler muitas vezes.
centro. A outra tecnologia é chamada Compact Disc
Os drives de CDROM estão disponíveis em Read-Write (CD-RW), esta é apagável ou seja
várias velocidades rotacionais como são 24X, pode ser escrita e apagada várias vezes como
52X, etc. se fosse um HD ou um disco flexível.

22
Disco Versátil Digital (Digital Disco Versátil Digital (Digital
Versatile Disc - DVD) Versatile Disc - DVD)
Uma nova versão de armazenagem com Quando um único lado do DVD é usado, sua
discos óticos é o Disco Versátil Digital, ou capacidade de armazenamento alcança 4,7 GB.
DVD. O DVD padrão também inclui a capacidade de
Na indústria existe os seguintes padrões para armazenar dados em ambos lados em duas
camadas sobre cada lado, armazenando um
armazenagem de dados:
total de 17 GB.
„ DVD-Áudio
A tecnologia DVD é uma evolução desde o CD,
„ DVD-Vídeo em vez de ser uma tecnologia nova, isto fica
„ DVD-ROM claro pelo fato de que o aparelho para o DVD é
„ DVD-RAM compatível com os CD’s e CD-ROM.

Organização Lógica da Memória Organização Lógica da Memória


Na memória principal
residem todos os Segmentação é a técnica de gerência
programas e dados de memória, onde os programas são
divididos logicamente em sub-rotinas e
que serão executados estruturas de dados, e colocados em
ou referenciados pelo blocos de informações de memória.
processador. Os blocos têm tamanhos diferentes e
A memória principal se são chamados de segmentos, cada um
encontra organizada com seu próprio espaço de
em segmentos. endereçamento.

Capacidade Capacidade
A maioria das vezes o usuário se contenta apenas em
saber quantos megabytes de memória o seu micro O hardware e o software do PC se
possui ou quantos megabytes de informação o disco- comunicam com a memória de diversas
rígido consegue armazenar.
maneiras, tratando-a como diferentes tipos
Mas, na verdade, se este usuário realmente precisar
de memória.
configurar o seu computador para aumentar o seu
desempenho, trocar rapidamente de programa, resolver O hardware e o software do PC determinam
problemas misteriosos de programas que não querem limites em sua comunicação com a memória.
rodar no micro ou mesmo preparar o micro para
Existem algumas memórias que ele pode
processar grandes quantidades de informações, torna-se
fundamental um conhecimento mais profundo sobre a chamar diretamente e outras que ele não
organização e funcionamento do sistema de memória do pode.
computador.

23
Divisões da Memória Divisões da Memória
Podemos dividir a memória em pelo Também existem algumas subdivisões
menos cinco tipos principais: menores para cada um desses tipos.
„ Convencional O hardware e o software estabelecem
„ Alta limites do quanto de cada tipo de
„ Expandida memória você pode ter e usar.
„ Estendida Cada tipo tem as suas próprias
„ Virtual vantagens e desvantagens.

Divisões da Memória Unidade de Medida de Memória


A memória do computador é dividida em dois A unidade de medida de memória é o byte,
tipos: capaz de armazenar um caracter de
„ Memória de Disco, para armazenar dados por informação.
longos períodos de tempo.
Um kilobyte (KB) representa 1024 bytes (ou 2
Memória de Acesso Aleatório (RAM), também
„
chamada de memória principal, usada para
elevado a potência 10, uma vez que os
armazenar dados enquanto o computador estiver computadores trabalham com o sistema de
ligado. numeração binário).
Em termos físicos, a memória RAM existe Um Megabyte representa 1.048.576 bytes (ou
dentro de pequenos circuitos integrados ou dois elevado à potência 20),
em pentes espetados, localizados sobre a Um Gigabyte representa 1.073.741.824 bytes
placa-mãe do computador. (ou dois elevado à potência 30).

Esquema de como o
processador vê a memória: Analisando o Mapa de Memória

Memória Convencional Memória Superior Memória Estendida


Começando da esquerda, a parte inicial
0K 640 K 1M
do mapa de memória (0K), nota-se que
esta primeira área é utilizada para
Código do hardware,
armazenamento de código do hardware
e de dados do sistema operacional
Vídeo
dados do sistema, Janela para Blocos de memória Memória
drivers dos memória superior utilizáveis estendida (XMS)

(incluindo o próprio DOS).


dispositivos, Expandida (EMS) ou área de onde os programas
programas residentes memória alta, os podem ser
em memória. primeiros 64 K de relocados

Em geral drivers dos dispositivos


memória estendida
Memória
convencional livre
para programas
também são armazenados ali.

24
Memória Convencional Memória Convencional
Movendo-se para a direita, encontra-se uma
área livre de memória denominada de Esse tipo de memória pode ser utilizado
memória convencional ou memória base. para a execução de programas.
É nesta área que os programas do usuário Os programas escritos para o DOS
irão ser armazenados (editores de texto,
utilitários, etc.) e, por isso, deve-se sempre somente poderão utilizar memórias
tentar não ocupá-la com programas que convencionais.
tenham outras funções. O hardware de um PC baseado em 486
Nos modelos de microcomputadores mais pode ter até 4096 MB de memória
antigos ela era apenas de 16K. convencional.
Atualmente, na maioria dos computadores
esse tipo de memória ocupa 640K.

Limites de Hardware para


Memória Convencional Memória Convencional
Existem dois limites de hardware para PC:
O software, tanto dos PCs antigos como „ Espaço
dos 486, por exemplo permitem „ Endereçamento
tipicamente um máximo de 640K. Esse espaço corresponde ao lugar físico para
Se você tiver 640K ou menos, então seu conectar placas ou chips de memória, e a
energia elétrica e conexões para alimentá-las.
PC estará limitado, somente por
Em alguns PCs, como os menores laptops, não
quantos chips de memória existirem no têm qualquer slot onde se possam conectar
sistema, ao passo que se você possuir placas de memória.
mais de 640K de memória Por endereçamento entende-se a capacidade
convencional, seus limites serão outros. do processador de encontrar posições de
memória para leitura e escrita de informações.

Limites de Hardware para Limites de Hardware para


Memória Convencional Memória Convencional
Diferentes gerações de PCs usam chips de O espaço de endereçamento de
processadores distintos.
memória e a memória no sistema são
Cada tipo de processador pode endereçar
certa quantidade de memória, o que depende
diferentes.
de com quantos bits de endereçamento ele Só porque o chip processador pode
trabalha por vez. atingir um determinado endereço, isto
Espaço de endereçamento direto é a faixa de não quer dizer que lá exista uma
endereços de memória que um processador
pode atingir de maneira direta, rápida e posição de memória esperando por ele.
eficiente.

25
Limites de Software para Limites de Software para
memória convencional memória convencional
Os limites de software correspondem ao fato do Isto ocorre devido a uma decisão de projeto
sistema operacional permitir que o computador utilize tomada quando o primeiro computador PC foi
somente até um determinado valor da memória
fabricado (baseado no processador 8088).
convencional, não importando quanto de memória o
computador possua. Infelizmente esse limite é intrínseco ao
O DOS, sistema operacional presente em quase todos sistema operacional e não pode ser
os computadores até alguns anos atrás, só reconhece simplesmente excluído.
640K de memória convencional para seus programas
Mas, felizmente, existe uma variedade de
e dados regulares.
métodos para se driblar esse limite e poder
Na verdade, menos de 640K, pois o próprio DOS usa
uma parte (40K a 100K) para ele próprio.
usar uma quantidade maior de memória.

Memória Alta ou Expandida Memória Alta ou Expandida


Os 384K de endereços de memória acima
Seus programas regulares não podem usar a
do limite de 640K do DOS são chamados memória alta da forma como utilizam a convencional.
de memória alta ou expandida como se Na verdade, em circunstâncias normais eles são
pode ver no mapa de memória abaixo. impedidos de utilizá-la.
O PC separa alguns endereços da memória alta para
sua BIOS e outras ROMs.
Alguma memória deve ser separada também para
funções do sistema tais como manter um registro da
configuração do PC.
Parte dessas informações de configuração costumam
ser mantidas em chips RAM CMOS, conectados a uma
bateria.

Memória Alta ou Expandida Memória Alta ou Expandida


Dentro do bloco que representa a parte de
As ROMs são algumas vezes, bem mais lentas memória compreendida entre os 640 KB e 1
que os chips RAM, e por isso alguns PCs MB, também é utilizada normalmente por
copiam o conteúdo de suas ROMs, como as dispositivos de hardware tais como o vídeo e
dos adaptadores gráficos, para os chips RAM a placa controladora de discos, as quais
nos mesmos endereços. necessitam de memória para executarem as
Então eles redirecionam o endereçamento suas tarefas.
para que, sempre que o sistema precise de Além disto, um pouco desta área de memória
instruções de programa do adaptador gráfico, também pode ser utilizada para outros fins.
os pedidos sejam enviados aos chips shadow Uma técnica de gerenciamento de memória
RAM que contém os programas, ao invés das chamada de memória expandida (EMS) é
ROMs originais. ainda utilizada para isto.

26
Memória Alta ou Expandida Memória Estendida
O primeiro grande esquema idealizado para Finalmente, acima de 1 MB temos a chamada
se superar o limite de 640K de memória no memória estendida (XMS).
DOS foi a memória expandida; e é ainda um A memória estendida, ao contrário da expandida
dos mais importantes. mantém sua própria informação ao invés de ficar
somente trocando informações com a memória
A memória expandida ainda força os convencional.
programas a lidar somente com a memória A memória estendida pode ser usada para diversas
convencional ou com partes emprestadas da funções, configurada pelo próprio usuário ou
memória alta, mas permuta informação de detectada automaticamente por aplicativos.
outra memória para dentro e para fora A memória estendida pode ser instalada em grandes
desses endereços convencionais. quantidades (ex: 4MB, 8MB,16MB, 32MB,64MB).

Memória Estendida Memória Estendida


Os primeiros 64 KB de memória estendida Embora existam vários programas gerenciadores de
chama-se área de memória alta (HMA), numa memória de terceiros (como o QEMM-386, QRAM ou
confusa similaridade com os 384K de 386MAX), o próprio DOS possui utilitários para a
memória alta entre os 640K e os 1024K. função.
A Microsoft descobriu um truque com o O programa HIMEM.SYS incluído no DOS é usado
endereçamento do chip 8088 (também para gerenciar a memória estendida de modo a evitar
funciona com os chips mais novos) que que dois programas tentem utilizar ao mesmo tempo
a mesma área de memória.
permite com que o computador utilize essa
área da memória como se fosse um O programa EMM386.EXE é usado para carregar
acréscimo à memória convencional. programas residentes em memória (TSRs) na área de
memória superior (embora só funcione em micros do
tipo 386 e 486).

Memória Virtual Memória Virtual


Quase sempre em um computador há muito Eles o fazem, dizendo aos programas que existe
mais memória de disco do que RAM. mais memória RAM do que realmente há e,
Afinal, discos são mais baratos. então, mantêm registro de quanta memória cada
programa e arquivo de informações necessitam e
Mas os programas que querem um certo
número de KB ou MB de memória não onde eles estão.
querem disco e sim RAM. A cada vez que um software requer um
Os softwares de memória virtual exploram a programa ou informação da memória, o software
presença de grandes quantidades de de memória virtual intercepta o pedido.
memória barata em disco induzindo estes Então o software de memória virtual faz uma
programas a pensar que parte do disco é checagem das coisas necessárias na RAM real.
memória RAM.

27
Memória Virtual Memória Virtual
Se estiverem lá, ótimo, serão usadas. Mas se Antigamente o programador gastava muito
não estiverem, o software de memória virtual tempo tentando espremer os programas na
as procurará no disco. minúscula memória.
Quando acha o programa ou arquivos Então para solucionar este problema se
necessários, ele o copia na RAM real que pensou em usar uma memória secundária, tal
estiver disponível, abrindo espaço, movendo como um disco.
alguma coisa para o disco. Assim o programador dividia o programa em
Então, distribui a informação requisitada na uma série de pedaços, chamados
RAM. “OVERLAYS”, cada um dos quais caberia na
Há virtualmente mais RAM do que existe de memória.
fato no computador.

Memória Virtual Memória Virtual


Para executar o programa, o primeiro overlay era
trazido para a memória e executado por algum Este método envolveu muito trabalho
tempo. de gerenciamento de overlays,
Quando acabava, o próximo overlay era trazido portanto, em 1961 um grupo de
para a memória e executado, e assim por diante. cientistas da computação em
O programador era responsável por quebrar o Manchester - Inglaterra propuseram um
programa em overlays, decidindo onde cada método para realizar o processo de
overlay seria mantido na memória secundária, overlays automaticamente de tal
providenciando o transporte de overlays entre a maneira que o programador não
memória principal e a memória secundária, e
geralmente gerenciando todo o processo de soubesse o que estava acontecendo.
overlay sem qualquer ajuda do computador.

Memória Virtual Paginação


Este método é chamado de “MEMÓRIA Paginação é uma forma de sobreposição
VIRTUAL”, que tem a vantagem óbvia de automática gerenciada pelo sistema
liberar o programador do trabalho de operacional.
gerenciamento de overlays.
O espaço de endereçamento é particionado
No início da década de 70, a memória virtual
em blocos de tamanho iguais conhecidos
se tornou disponível na maioria dos
computadores. como páginas.
Atualmente a maioria dos microcomputadores Páginas têm normalmente um tamanho que é
10
possuem sistemas de memória virtual uma potência de 2, tal como 2 = 1024
altamente sofisticados. bytes.

28
Paginação Paginação
End. Virtuais Mem. Virtual
A paginação faz com que a memória física 0 – 1023 Página 0
Endereços
pareça maior do que realmente é. Página 1
1024 – 2047 Mem. Física Físicos
Isto é feito mapeando o espaço de
2048 – 3071 Página 2 Frame 0 0 – 1023
endereçamento de memória física a um
espaço de endereçamento de memória 3072 – 4095 Página 3 Frame 1 1024 – 2047
virtual, que é normalmente armazenado em 4096 – 5119 Página 4 Frame 2 2048 – 3071
disco.
5120 – 6143 Página 5 Frame 3 3072 – 4095
As páginas físicas são denominadas de
quadros ou frames. 6144 – 7167 Página 6
7168 – 8191 Página 7

Paginação Paginação
Uma frame é identificada para ser
Uma implementação de memória virtual deve sobrescrita.
tratar de referências que são feitas fora da Caso modificado, seu conteúdo é escrito em
porção do espaço virtual que é mapeado no memória secundária para que as informações
espaço físico. não se percam.
A sequência de eventos a seguir é típica A página virtual que se deseja acessar é lida
quando é referenciada uma posição virtual da memória secundária e escrita em memória
física, na frame já mencionada.
que não está na memória física.
A tabela de páginas é atualizada para mapear
A isto denomina-se falha de página ou page a nova seção da memória virtual em memória
fault. física.
A execução continua…

Tabela de Páginas Paginação


No de Bit de Endereço No Página
Página Presença Disco Física
Para este exemplo de memória virtual,
0 1 01001011100 00
existe 213=8192 posições virtuais.
1 0 11101110010 XX O programa em execução deve gerar
2 1 10110010111 01 endereços de 13 bits, sendo:
3 0 00001001111 XX „ Um número de página de 3 bits.
4 1 01011100101 11 „ Um deslocamento de 10 bits dentro da
5 0 10100111001 XX página.
6 0 00110101100 XX
7 1 01010001011 10

29
Paginação Pág. Desloc.
100 1101000101
End. Virtual
Paginação
No de Bit de Endereço No Página Pode levar um tempo relativamente longo
Pág. Pres. Disco Física
para um programa ser carregado na
0 1 01001011100 00 memória.
1 0 11101110010 XX
O programa inteiro pode nunca ser
2 1 10110010111 01
executado.
3 0 00001001111 XX
Portanto, o tempo necessário para carregar o
4 1 01011100101 11
programa do disco para a memória pode ser
5 0 10100111001 XX
reduzido carregando-se somente a porção
6 0 00110101100 XX necessária para um dado intervalo de tempo.
11 1101000101
7 1 01010001011 10
End. Físico

Paginação Segmentação
A paginação sob demanda não carrega A segmentação consiste em dividir o espaço
uma página na memória até que ocorra um de endereçamento em segmentos, que
page fault. podem ter tamanho arbitrário.
Após o programa estar executando por um Cada segmento possui o seu próprio espaço
certo tempo, somente as páginas em uso de endereçamento.
estarão na memória física. Isto permite que tabelas, pilhas e outras
A este conjunto de páginas se denomina: estruturas de dados sejam mantidas como
conjunto de trabalho ou working set. entidades lógicas e possam crescer sem o
risco de sobreposição.

Segmentação Segmentação
Quando se utiliza segmentação com memória
A segmentação da memória permite virtual, o tamanho do espaço de endereçamento
proteção. de cada segmento pode ser muito grande, e
Por exemplo, um segmento pode ser portanto, a memória física dedicada a cada
marcado como “somente leitura” para impedir segmento não é reservada até que seja
necessária.
modificações ou “somente para execução”,
para prevenir cópias não autorizadas. Para especificar um endereço em uma memória
segmentada, o programa do usuário deve
Isto também protege o usuário de tentar especificar o número do segmento e um
escrever dados em áreas de instruções. endereço dentro do segmento.
O sistema operacional então, traduz o endereço
segmentado em um endereço físico.

30
Segmentação Segmentação e Paginação
Neste exemplo, verifica-se como uma memória
segmentada permite que dois usuários compartilhem Segmentação não é o mesmo que
o mesmo processador de texto. paginação.
Espaço para endereçamento
Segmento 0
Usado para segmento de código Em paginação o usuário não vê a
Somente execução
do processador de texto sobreposição automática.
Segmento 1 Usado Espaço de dados
leitura/escrita – usuário 0 para o usuário 0 Com segmentação, o usuário está
Livre
Espaço de dados
ciente de onde estão as fronteiras do
Segmento 2 Usado
leitura/escrita – usuário 1
Livre
para o usuário 1 segmento.
Não usado

Fragmentação Fragmentação
Uma área livre é uma seção da memória que Quando o sistema operacional necessita
está disponível para o sistema operacional encontrar uma área livre suficientemente
para carregar e executar programas. grande para armazenar um programa ele
Durante a operação, programas de vários raramente encontrará uma que tenha o
tamanhos serão carregados na memória e tamanho exato.
executados. A área livre normalmente será maior que o
Quando o programa termina sua execução, o programa.
espaço de memória atribuido a ele é liberado Isto tem como efeito subdividir as áreas
para o sistema operacional. livres em áreas cada vez menores.

Fragmentação Fragmentação
Sistema Sistema Sistema
Nenhuma delas porém, é grande o suficiente Operacional Operacional Operacional
para armazenar um programa que caberia se Programa A Programa A
algumas ou todas as áreas livres fossem Área Livre Área Livre
concatenadas.
Programa B Programa B
Este problema é conhecido como Área Livre Área Livre Área Livre
fragmentação, e ocorre quando se emprega
Programa C Programa C
segmentação porque segmentos têm que ser
mapeados em um espaço de endereçamento Área Livre
Área Livre
Área Livre
linear.
Zona Morta Zona Morta Zona Morta
Espaço de E/S Espaço de E/S Espaço de E/S

31
Fragmentação Fragmentação
Um método para atribuir programas Um outro método é conhecido como melhor
para áreas livres é chamado de primeira medida (best fit).
Neste método, escolhe-se para alocar o
medida (first fit). programa, a área livre que desperdiça a
Neste método, as áreas livres são menor quantidade de espaço.
pesquisadas até que uma área Muito embora o método da melhor medida
suficientemente grande para caber o faça um melhor uso da memória do que o
método da primeira medida, ele exige mais
programa seja encontrada. tempo, pois todas as áreas livres têm que ser
pesquisadas.

Entrada e Saída Entrada e Saída


Muitos dispositivos de E/S são mecânicos, e
A velocidade de transferência de dados de são em geral mais propensos a falha que a
dispositivos de E/S pode ser extremamente baixa, tal
como a leitura de dados entrando desde um teclado, CPU e a memória principal.
ou tão rápidos que a CPU poderia não ser capaz de Uma transferência de dados poderia ser
manter esses dados, como no caso da transferência interrompida devido a falhas mecânicas ou
de dados do HD para a memória. uma condição especial, tal como uma
As atividades de E/S são assíncronas, isto é, não são impressora com falta de papel.
sincronizadas com o relógio da CPU, como são as
transferências de dados para a memória. Módulos de software de E/S, chamados de
Sinais adicionais, chamados de sinais “handshaking”, “device drivers”( drivers de dispositivos),
necessitam ser incorporados em um barramento de devem ser escritos de tal forma que possam
E/S para coordenar quando o dispositivo está pronto compensar as propriedades mencionadas
para ler ou escrever nesse barramento. anteriormente.

Dispositivos de Entrada:
O Teclado O Teclado
Os teclados são usados para entrada manual Este padrão tem o layout “QWERTY” que está
de um computador. conforme o layout tradicional usado nas
máquinas de escrever.
O layout do teclado usando o Padrão ECMA-
23 (2a Edição) é mostrada na seguinte figura. Quando um caractere é digitado, um padrão
de bits é criado e é transmitido para o
computador.
Para caracteres ASCII de 7 bits somente 128
padrões podem ser utilizados.
Muitos teclados porém, expandem o padrão
básico ECMA-23 usando teclas modificadoras
(shift, escape, e control) e portanto um
padrão de 7 bits não é suficiente.

32
O Teclado Mesa Digitalizadora
Várias alternativas são possíveis, mas um Uma mesa digitalizadora, ou bit pad, é um
método que tem ganhado aceitação é dispositivo de entrada que consiste de uma
fornecer um padrão de bits para cada tecla superfície plana e um puck.
modificadora e um padrão de bits para o A mesa tem uma malha bi-dimensional
resto das teclas. embutida de fios que detectam uma corrente
induzida, criada pelo puck quando este é
Outras modificações ao teclado ECMA-23 movimentado sobre ela.
incluem a adição de teclas de função (na
As mesas digitalizadoras são comumente
fileira F, por exemplo) e a adição de teclas usadas para entrada de dados desde mapas,
especiais tais como tab, delete, e enter. fotografias, cartas, ou gráficos.

Mesa Digitalizadora Mesa Digitalizadora


Modos de operação das mesas
digitalizadoras:
„ Amostragem Temporal Fixa: a intervalos regulares
a posição corrente do cursor é lida e transmitida;
„ Amostragem Controlada pela Máquina: sempre
que solicitada pelo computador, a mesa informa a
posição corrente do cursor;
„ Amostragem Controlada pelo Operador: a mesa
transmite a posição corrente somente quando um
dos botões é acionado pelo operador;
„ Amostragem Posicional: a mesa transmite a
posição do cursor sempre que este for deslocado,
na horizontal ou vertical, além de certa extensão.

Mouse e Trackball Mouse e Trackball


Um trackball pode ser entendido como um
Um mouse é um dispositivo de entrada mouse invertido.
manual que consiste de uma bola rugosa na A unidade trackball é mantida estacionária
parte inferior e um ou mais botões na parte enquanto que a bola é rotada manualmente.
superior.
Um mouse ótico substitui a bola com um
Quando o mouse é movimentado, a bola rola diodo emissor de luz (LED) e usa um
proporcionalmente à distância movida. mousepad especial reflexivo que consiste de
Potenciômetros dentro do mouse detectam a listras horizontais e verticais reflexivas e de
direção do movimento e a distância absorção.
percorrida, a qual é reportada para o A movimentação é percebida através de
computador junto com o estado dos botões. transições entre as áreas reflexivas e de
absorção.

33
Mouse e Trackball Data Glove
Permite “pegar” um objeto 3D virtual;
Vários sensores permitem a detecção
dos movimentos dos dedos e das mãos;
Antenas receptoras e emissoras
permitem a localização em 3D;
Área de aplicação: Realidade Virtual.

Dispositivos de Digitalização
Data Glove de Imagens
Scanner:
„ Digitalização de informação visual para o formato
2D discreto;
Scanner 3D:
„ Determinação 3D de pontos na superfície de um
objeto;
„ Princípio de funcionamento: ultra-som ou
eletromagnétismo;
„ Aplicações: medicina (reconstrução) e artes.

Scanner 3D
Sensor de Posição 3D Polhemus Dispositivo de Vídeo

34
Monitor de Vídeo Varredura da Tela de um Monitor de
Varredura Aleatória e Regular Vídeo

Máscaras de Sombra CRT Display de Cristal Líquido


Um display de cristal líquido, muito
utilizado em notebooks e mais
recentemente em monitores de
tecnologia de ponta, compõe-se
basicamente de uma célula de vidro
preenchida com cristal líquido e dois
polarizadores.

Display de Cristal Líquido Display de Cristal Líquido


A luz é uma onda Um polarizador é um
eletromagnética, na qual os
campos elétrico e magnético tipo especial de
oscilam em direções plástico que só
perpendiculares à de
propagação.
permite a passagem
A direção destes campos é de luz em uma certa
chamada de direção de direção de
polarização.
polarização,
A luz normal (ou não-
polarizada) tem campos absorvendo toda a
eletromagnéticos em todas as luz em qualquer
direções; já a luz polarizada
tem campos em apenas uma
outras direções de
direção (chamada de direção polarização.
de polarização).

35
Display de Cristal Líquido Display de Cristal Líquido
Desse modo, a transmissão de luz por meio A transmissão da
de dois polarizadores depende da orientação
relativa entre os mesmos.
luz depende da
„ Se os dois polarizadores estiverem alinhados orientação relativa
(direções de polarização paralelas), a luz que entre os
atravessa o primeiro polarizador irá também
passar pelo segundo, resultando em transmissão polarizadores:
da luz.
„ Se o segundo polarizador for rotacionado em 90o,
ele irá bloquear a luz transmitida pelo primeiro em
razão de apresentarem direções de polarização
ortogonais.

Display de Cristal Líquido Display de Cristal Líquido


As moléculas de cristal líquido são longas e Em células de cristal líquido, as moléculas estão em
têm um formato cilíndrico. contato com uma superfície de orientação especial,
No estado líquido, as moléculas podem se depositada em cima da superfície do vidro.
mover de um lugar para outro, entretanto, as Esta camada de orientação é tratada de forma que
forças elásticas entre as moléculas mantêm a as moléculas de cristal líquido adjacentes fiquem
“presas” em uma direção fixa – paralela à orientação
orientação entre elas sempre paralelas. do polarizador.
Isto explica a terminologia “Cristal Líquido”: A Segunda placa de vidro também é tratada de
as posições das moléculas podem mudar forma similar. A orientação entre as duas placas de
(como em um líquido), mas a orientação é vidro difere de 90o, fazendo com que as moléculas
fixa em uma certa direção (como em um de cristal líquido sejam gradualmente torcidas em
cristal). 90o no espaço entre as duas placas de vidro.

Display de Cristal Líquido Display de Cristal Líquido


Dessa forma, uma célula de cristal líquido é A situação muda quando um campo elétrico é
colocada entre dois polarizadores aplicado na célula de LCD.
ortogonalmente orientados.
O polarizador traseiro converte luz não Neste caso, as moléculas de cristal líquido
polarizada em luz linearmente polarizada. respondem ao campo elétrico e perdem a
Quando a luz polarizada passa pelas orientação.
moléculas de cristal líquido, a direção de Como agora as moléculas de cristal líquido não
polarização segue a torção destas (90o). possibilitam mais a torção, a direção de
A nova direção de polarização da luz na polarização da luz não muda.
frente do display corresponde à direção do Conseqüentemente, o polarizador frontal
polarizador frontal. bloqueia a luz, e o display se torna preto.
Dessa forma, a luz é transmitida.

36
Display de Cristal Líquido Display de Cristal Líquido
Se a tensão for retirada (ou seja, se o campo
elétrico for removido), as moléculas de cristal
líquido retornam à sua orientação original.
Com isso, o display também retoma a sua
configuração original.
Este é o princípio básico de funcionamento
dos displays de cristal líquido.

Dispositivos de Saída Barramentos


„ Plotters (traçadores); É um caminho comum que liga um número
de dispositivos.
„ Impressoras
Um exemplo de um barramento pode ser
Š Matriciais; encontrado sobre a placa mãe de um
Š Jato de Tinta; computador pessoal.
Š Laser. Uma placa mãe típica contém circuitos
integrados tais como o chip CPU e memórias,
os fios que ligam os chips, e um número de
barramentos para chips ou dispositivos que
necessitam se comunicar com outros .

Comunicação entre o
Barramentos Processador e as Memórias
Um computador tem uma ampla gama de tarefas
de comunicação, a CPU deve se comunicar com
a memória, e com vários tipos de dispositivos de
E/S, alguns extremamente lentos, tais como
teclado, e outros de alta velocidade, tais como
drives de discos e interfaces de rede.
Os três métodos utilizados para gerenciar as
entradas e saídas são:
„ E/S programada
„ Interrupção E/S
„ Acesso direto a memória (direct memory access-DMA)

37
E/S Controlada por
E/S Programada Interrupção
Considerando a leitura de um bloco de
dados desde um disco, com a E/S
Com E/S controlada por
programada a CPU checa o estado de interrupção a CPU não
cada dispositivo para ver se estes acessa o dispositivo até
necessitam ser servidos (polling). que este necessite algum
As operações que acontecem para uma serviço.
E/S programada é mostrada no
seguinte diagrama de fluxo. A requisição de serviço
Esta técnica desperdiça tempo dos dispositivos nesta
checando os dispositivos, e também técnica é através de uma
não verifica a prioridade motivo pelo
qual muitas vezes executa tarefas de
linha de interrupção que
baixa prioridade. vai diretamente à CPU.

Acesso Direto a Memória Acesso Direto a Memória


(Direct Memory Access - DMA) (Direct Memory Access - DMA)
Ainda que a E/S controlada por interrupção Um dispositivo DMA pode transferir dados
libera a CPU dos requerimentos de serviço diretamente para e desde a memória, ao
dos dispositivos, a CPU ainda é responsável invés de usar a CPU como um intermediário,
por fazer a transferência de dados. e pode melhorar a velocidade de
Para transferir um bloco de dados entre a comunicação sobre o barramento.
memória e o disco usando E/S programada Os serviços DMA são usualmente fornecidos
ou E/S controlada por interrupção, toda por um controlador DMA, o qual é um
palavra viaja sobre o barramento duas vezes: processador especializado cuja especialidade
primeiro pela CPU, então de novo sobre o é transferir dados diretamente para ou desde
barramento para seu destino. dispositivos de E/S e memórias.

Acesso Direto a Memória Acesso Direto a Memória


(Direct Memory Access - DMA) (Direct Memory Access - DMA)
Muitos controladores DMA podem ser
programados para fazer movimentos de
blocos de dados memória-memória.
Desse modo, um dispositivo DMA assume o
trabalho da CPU durante a transferência.
Para configurar a transferência, a CPU
programa o dispositivo DMA com o endereço
inicial na memória principal, o endereço inicial
no dispositivo e o comprimento do bloco a ser
transferido.

38
Acesso Direto a Memória Acesso Direto a Memória
(Direct Memory Access - DMA) (Direct Memory Access - DMA)
A CPU programa o dispositivo Se o dispositivo DMA transfere um grande bloco de
DMA e sinaliza ao mesmo dados sem abandonar o barramento, a CPU poderia
para começar a transferência. tornar-se faminta de instruções ou dados, e seu
Enquanto a transferência está trabalho é parado até que a transferência pelo DMA
tenha sido completada.
sendo feita, a CPU continua a
executar um outro processo. Para aliviar este problema, os controladores de DMA
normalmente têm um modo de operação “roubo de
Quando a transferência pelo ciclos” (cycle-stealing).
DMA está completa, o Neste modo de operação o controlador toma posse
dispositivo informa a CPU do barramento, transfere um único byte ou palavra, e
através de uma interrupção. então abandona o barramento.
Um sistema que implementa Isto permite que outros dispositivos, e em particular
DMA assim, também tem que a CPU, comparta o barramento durante as
implementar interrupções. transferências de DMA.

Registradores dos Registradores dos


Microprocessadores 8086-80286 Microprocessadores 8086-80286
Nome 16 Bits Descrição

AX AH AL Acumulador Principal AX é utilizado principalmente para cálculos


BX
CX
BH
CH
BL
CL
Aritmética, apontadores
Loops
aritméticos.
DX DH DL Multiplicação e divisão
Por exemplo para calcular a soma de dois
SI
DI
Apontador fonte para operações com cadeias de caracteres
Apontador destino para operações com cadeias de caracteres
inteiros, o programa pode armazenar um
BP Apontador de Base deles em AX, então adicionar o segundo a AX
SP Apontador de pilha
e, finalmente, guardar AX na memória.
CS
Os outros registradores podem ser também
Segmento de Código
DS Segmento de Dados
SS
ES
Segmento de Pilha
Segmento Extra
utilizados, mas neste caso as instruções são
maiores e mais lentas do que aquelas que
utilizam AX.
IP Contador de Programa

FLAGS Palavra de status do programa

Registradores dos Registradores dos


Microprocessadores 8086-80286 Microprocessadores 8086-80286

BX é usado tipicamente para armazenar DX é utilizado como uma extensão de AX em


instruções de multiplicação e divisão.
apontadores para a memória. Nele é armazenada a metade superior de um produto
CX é usado para armazenar o contador de 32 bits ou a metade superior de um dividendo de
em instruções de loop. 32 bits.
Cada um destes registradores de 16 bits consiste em
Para se implementar um loop de n uma metade inferior e outra superior, que podem ser
vezes, CX é carregado com n. endereçados individualmente.
Quando utilizados desta maneira, eles constituem um
Em cada iteração, CX é decrementado. conjunto de oito registradores de 1 byte que podem
Quando ele atinge zero, o loop pára. ser usados com instruções que manipulam valores de
1 byte.

39
Registradores dos Registradores dos
Microprocessadores 8086-80286 Microprocessadores 8086-80286
Os registradores SI e DI são utilizados para Os registradores BP e SP são normalmente
operações sobre cadeias de caracteres. utilizados para endereçar a pilha.
Uma operação típica sobre cadeias de BP aponta para o fundo da estrutura corrente
caracteres requer um endereço fonte, de pilha e SP aponta para o topo.
especificado pelo registrador SI dentro do Uma variável local ao procedimento corrente
segmento de dados, e um endereço destino, é normalmente endereçada dando o
especificado pelo registrador DI dentro do deslocamento em relação a BP.
segmento extra. Não é possível especificar endereços relativos
A instrução poderia copiar um certo número a SP.
de bytes da fonte para o destino.

Registradores dos Registradores dos


Microprocessadores 8086-80286 Microprocessadores 8086-80286
Cada registrador de segmento aponta para algum lugar Todas as buscas de instruções são feitas
dentro de um espaço de endereçamento de 220 bytes. relativamente ao registrador de segmento de código.
CS Por exemplo, se esse registrador apontar para o
96000 Segmento de Código endereço 96000 e o contador de programa contém o
64K valor 1024, então a próxima instrução será buscada
do endereço 97024.
DS SS
262144 Segmento de Dados Segmento de Pilha Com este valor no registrador de segmento de
64K código, é possível acessar instruções localizadas em
endereços na faixa de 96000 a 161535.
ES
800000 Segmento de Extra Para acessar uma instrução fora desta faixa, deve-se
64K mudar o conteúdo do registrador de segmento de
220 código.

Registradores dos Registradores dos


Microprocessadores 8086-80286 Microprocessadores 8086-80286

Similarmente, o registrador de Teoricamente, os registradores de segmento devem


possuir 20 bits de largura a fim de apontar para um
segmentos de dados e o registrador de endereço qualquer de um espaço de endereçamento
segmento de pilha existem para acessar de 220 bytes, porém eles só possuem 16 bits.
Este problema foi resolvido fazendo com que todos
o segmento de dados e o segmento de os registradores de segmento apontassem apenas
pilha, respectivamente. para endereços múltiplos de 16 bits, de forma que os
4 bits menos significativos são iguais a zero e não
Finalmente há um registrador de precisam ser armazenados.
segmento extra, de reserva, para ser Assim, os registradores de segmento contém apenas
os 16 bits superiores dos endereços de 20 bits.
usado quando necessário.

40
Registradores dos Registradores dos
Microprocessadores 8086-80286 Microprocessadores 8086-80286

O IP Instruction Pointer, apontador de O registrador FLAG não é realmente um


registrador normal, mas uma coleção de bits
instrução ou contador de programa, que são ligados, apagados, e testados por
aponta para a próxima instrução a ser diversas instruções.
executada. Os bits têm os seguintes significados:
D: determina a direção das operações com
O registrador FLAGS também é „
cadeias de caracteres.
conhecido como PSW (Program Status „ I: habilita interrupções.
Word - palavra de status de programa). „ T: habilita traps para tracing, que é usada para
depuração.
Não usado O D I T S Z A P C
Bits 12-15 11 10 9 8 7 6 5 4 3 2 1 0

Registradores dos Registradores dos


Microprocessadores 8086-80286 Microprocessadores 8086-80286
Os bits restantes são muitas vezes denominados
códigos de condição, pois eles são ligados ou Os bits A e C representam respectivamente o
apagados através de diversas instruções carry (vai 1) da metade e o carry (vai 1) da
dependentes de diferentes condições que podem extremidade dos operandos.
surgir (resultado negativo, zero, etc).
Finalmente, o bit P dá a paridade (par ou
O bit O é ligado quando ocorre um overflow
impar) do resultado de uma instrução
(estouro) do resultado de uma operação
aritmética. aritmética.
Similarmente, o bit Z é ligado (feito igual a 1) Sete dos bits não são usados no 8088, mas
quando o resultado da operação é zero e alguns deles serão usados em seus
desligado (feito igual a zero) quando o resultado sucessores.
é diferente de zero.

Registradores dos
Processadores 8086/88 e 80286 Microprocessadores 80386-80486
O processador 8086/88 e o 80286 são muito similares. 16 bits 8 bits 8 bits

As diferenças principais do ponto de vista do usuário são: AH AL EAX


BH BL EBX
8088/8086 80286 CH CL ECX
DH DL EDX
Modo real Modo real e protegido
ESI
Espaço de endereçamento de 16384 segmentos de até 64KB EDI
EBP
1MB ESP
Registradores de Segmento Registradores de Segmento
CS
armazenam apontadores armazenam seletores DS
Nenhum mecanismo de proteção Proteção utilizando anéis SS
ES
FS
Nenhum suporte a Suporte a multiprogramação
GS
multiprogramação
EIP
Instruções básicas Instruções básicas, estendidas e
de controle EFLAGS

41
Conjunto de Instruções Conjunto de Instruções

Operações Aritméticas
ADD dst, fnt Adicione fnt a dst
Transferências SUB dst, fnt Subtraia fnt de dst
MOV dst, fnt Copie da fnt (fonte) para o dst (destino MUL fnt Multiplique fnt por AX (sem sinal)
PUSH fnt Armazene fnt no topo da pilha IMUL fnt Multiplique AX com fnt (com sinal)
POP dst Carregue dst com o conteúdo do topo da pilha DIV fnt Divida DX:AX por fnt (sem sinal)
XCHG dst1, dst2 Troque dst1 com dst2 IDIV fnt Divida DX:AX por fnt (com sinal)
LEA dst, fnt Carregue o endereço efetivo de fnt em dst ADC dst, fnt Adicione fnt a dst e depois adicione bit de carry
LDS dst, fnt Carregue o registrador segmento de dados e dst usando fnt SBB dst, fnt Subtraia fnt a dst então subtraia bit de carry
LES dst, fnt Carregue o registrador segmento extra e dst usando fnt INC dst Adicione 1 a dst
DEC dst Subtraia 1 de dst
NEG dst Negue dst (subtraia-o de 0)

Conjunto de Instruções Conjunto de Instruções


Operações Booleanas
AND dst, fnt AND de fnt em dst
BCD OR dst, fnt OR de fnt em dst
XOR dst, fnt OR exclusivo de fnt em dst
DAA Ajuste decimal para adição NOR dst Substitua dst por seu complemento de 1
DAS Ajuste decimal para subtração
AAA Ajuste ASCII para adição Cadeias de Caracteres
AAS Ajuste ASCII para subtração LODS Carregue cadeia de caracteres
AAM Ajuste ASCII para multiplicação STOS Armazene cadeia de caracteres
AAD Ajuste ASCII para divisão MOVS Copie cadeia de caracteres
SCAS Examine cadeia de caracteres
CMPS Compare duas cadeias de caracteres

Conjunto de Instruções Conjunto de Instruções


Outras Instruções Testes/Comparações
CWD Converta palavra em AX para palavra dupla em DX:AX TST fnt1, fnt2 Faça um AND dos operandos e ative FLAGS
CBW Converta byte em AL para palavra em AX
CMP fnt1, fnt2 Compare fnt1 com fnt2 e ative FLAGS
XLAT Traduza AL de acordo com uma tabela
NOP Nenhuma operação
HLT Pare
ESC Escape para (inicie) o co-processador de ponto flutuante Deslocamentos / Rotações
IN porta Coloque em AL ou AX o byte ou palavra proveniente da porta SAL/SAR dst, cont Desloque dst à esquerda/direita cont bits
OUT porta Envie à porta o byte ou palavra de AL ou AX SHL/SHR dst, cont Desloque logicamente à esquerda/direita cont bits
WAIT Espere por uma interrupção ROL/ROR dst, cont Rote dst à esuqerda/direita cont bits
RCL/RCR dst, cont Rote dst através dos bits de carry

42
Conjunto de Instruções Instruções de Salto
Códigos de Condição
STC Ative bit de carry no registrador FLAGS JMP Salto incondicional
CLC Desative bit de carry no registrador FLAGS
CMC Complemente o bit de carry no registrador FLAGS JA (JNBE) Salta se não é igual (CF=0 ou ZF=0)
STD Ative bit de direção no registrador FLAGS
CLD Desative bit de direção no registrador FLAGS JAE (JNBE) Salta se maior ou igual (CF=0)
STI
CLI
Ative bit de interrupção no registrador FLAGS
Desative bit de interrupção no registrador FLAGS
JB (JNAE) Salta se menor ou igual (CF=1)
PUSHF
POPF
Armazene o registrador FLAGS no topo da pilha
Carregue o registrador FLAGS com o conteúdo do topo da pilha
JBE (JNA) Salta se CF=1 ou ZF=1
LAHF
SAHF
Carregue AH com o conteúdo do registrador FLAGS
Carregue o registrador FLAGS com o conteúdo de AH
JE (JZ) Salta se é igual (ZF=1)
JNE (JNZ) Salta se não é zero (ZF=0)
JG (JNLE) Salta se ZF=0 ou OF=SF
JGE (JNL) Salta se SF=OF

Instruções de Salto Instruções para Loop


JL (JNGE) Salta se SF é diferente de OF LOOP Gera um laço no programa: Decrementa CX
de 1 e transfere a execução do programa
JLE (JNG) Salta se ZF=1 ou se SF é diferente de OF para o símbolo que é dado como operador,
JC Salta se CF=1 caso CX ainda não seja 1.
JNC Salta se CF=0 LOOPE Gera um laço no programa considerando o
JNO Salta se OF=0 (não há overflow) estado de ZF: decrementa CX de 1. Se CX é
diferente de zero e ZF=1, então a execução
JNP (JPO) Salta se não há paridade ou se paridade impar
do programa é transferida para o símbolo
JNS Salta se SF=0 indicado como Operador.
JO Salta se OF=1 (se há overflow)
LOOPNE Gera um laço no programa considerando o
JP (JPE) Salta se há paridade ou se paridade impar estado de ZF: decrementa CX de 1 e
JS Salta se SF=1 transfere a execução do programa apenas
se ZF é diferente de 0.

Formato da Linguagem de Formato da Linguagem de


Montagem Montagem
Os comandos de linguagem de
O Campo de Rótulo, atribui um nome
montagem possuem quatro partes: simbólico ao endereço inicial de memória de
„ Campo de rótulo (nome ou label) uma instrução assembly.
„ Campo de operação (mneumônico) Isso permite que se faça referência à
„ Campo de operandos instrução pelo nome e elimina a necessidade
de manter um acompanhamento dos
„ Campo de comentários endereços da instrução.
Campo Campo de Campo de Campo de Comentários Usando a referência simbólica permite-se que
de Rótulo Operação Operandos o linker selecione em que lugar da memória o
programa em linguagem assembly será
ATRASO MOV AX,Oh Carrege Oh em AX
carregado.

43
Formato da Linguagem de Formato da Linguagem de
Montagem Montagem
O Campo de Operandos, contém a localização
O Campo de Operação, contém o mneumônico para ou as localizações dos dados a serem
uma instrução do microprocessador. manipulados pela instrução de operação.
O mneumônico é uma palavra abreviada em língua
inglesa, com dois a seis caracteres.
Se a instrução requer um ou dois operandos,
O mneumônico torna mais fácil ler e entender a
os operandos são separados da instrução por
codificação do programa e, entre ele e a linguagem pelo menos um espaço em branco.
binária de máquina, há apenas uma tabela de Se houver dois operandos, os próprios
conversão. operandos são separados por uma vírgula.
Cada mnemônico não diz apenas ao assembler qual Quando uma operação requer dois
instrução deve executar, mas também quantos
operandos há e quais os tipos necessários. operandos, o primeiro operando é chamado
de operando-destino e o segundo é chamado
de operando-fonte.

Formato da Linguagem de
Montagem DEBUG
Para começar o estudo da linguagem
O Campo Comentário pode ser um dos assembly veremos o programa DEBUG,
mais úteis. presente em todos os computadores da
família Intel e compatíveis.
Ele é usado para documentar O DEBUG pode apenas criar arquivos com a
internamente o código fonte assembly. extensão .COM, e por causa das
Os comentários podem iniciar em características deste tipo de programa, eles
não podem exceder os 64 KB, e também
qualquer posição do campo e são devem iniciar no endereço de memória 0100H
inicializados com um ponto e vírgula. dentro do segmento específico.
É importante observar isso, pois deste modo
os programas .COM não são relocáveis.

DEBUG DEBUG
Os principais comandos do programa debug são: É possível visualizar os valores dos
„ A: Montar instruções simbólicas em código de máquina
„ D: Mostrar o conteúdo de uma área da memória registradores internos da CPU usando o
„ E: Entrar dados na memória, iniciando num endereço específico programa Debug.
„ G: Rodar um programa executável na memória
„ N: Dar nome a um programa Debug é um programa que faz parte do
„

„
P: Proceder, ou executar um conjunto de instruções relacionadas
Q: Sair do programa debug
pacote do DOS, e para iniciá-lo, basta
„ R: Mostrar o conteúdo de um ou mais registradores digitar Debug na linha de comando:
T: Executar passo a passo as instruções
C:/>Debug <ENTER>
„

„ U: Desmontar o código de máquina em instruções simbólicas


„ W: Gravar um programa em disco

44
DEBUG DEBUG
Um modo alternativo para visualizar um único registrador
é usar o comando "r" seguido do parâmetro que faz
Pode-se notar então a presença de um referência ao nome do registrador:
hífen no canto inferior esquerdo da tela. -rbx ; esta instrução mostrará o conteúdo do registrador
BX e mudará o indicador do Debug de "-" para ":"
Este é o prompt do programa.
BX 0000
Para visualizar o conteúdo dos :
registradores, experimente: Quando o prompt fica assim, significa que é possível,
embora não obrigatória, a mudança do valor conteúdo no
-r <ENTER> registrador, bastando digitar o novo valor e pressionar
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 <ENTER>.
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0100 NV UP EI PL NZ NA PO NC Se você simplesmente pressionar <ENTER> o valor
0E94:0100 D5E2 AAD E2 antigo se mantém.

Criando um Programa Simples Criando um Programa Simples


em Assembly em Assembly
Vamos iniciar o Debug, e então, criar um programa a 100
para ilustrar a soma de dois valores. mov ax,0002
Para montar um programa no Debug, é usado o mov bx,0004
comando "a" (assemble). add ax,bx
nop
Quando usamos este comando, podemos especificar
um endereço inicial para o nosso programa como o O que o programa faz?
parâmetro, mas é opcional. Move o valor 0002 para o registrador AX
No caso de omissão, o endereço inicial é o Move o valor 0004 para o registrador BX
especificado pelos registradores CS:IP, geralmente Adiciona o conteúdo dos registradores AX e BX,
0100h, o local em que programas com extensão guardando o resultado em AX
.COM devem iniciar. A instrução nop (nenhuma operação) finaliza o
programa.

Criando um Programa Simples


em Assembly Execução Passo-a-passo
No programa debug, a tela se parecerá com: Entramos com o comando "t" para executar passo a
passo as instruções:
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
C:\>debug DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0103 NV UP EI PL NZ NA PO NC
-a 100 0D62:0103 BB0400 MOV BX,0004

0D62:0100 mov ax,0002


0D62:0103 mov bx,0004 Vemos o valor 0002 no registrador AX.
0D62:0106 add ax,bx Teclamos "t" para executar a segunda instrução:
-t
0D62:0108 nop AX=0002 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
0D62:0109 DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0106 NV UP EI PL NZ NA PO NC
0D62:0106 01D8 ADD AX,BX

45
Armazenando e Carregando
Execução Passo-a-passo Programas
Teclando "t" novamente para ver o resultado Não seria prático ter que digitar o programa
da instrução add: cada vez que iniciássemos o Debug.
-t
AX=0006 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0108 NV UP EI PL NZ NA PE NC Ao invés disso, podemos armazená-lo no
0D62:0108 90 NOP
disco.
A possibilidade dos registradores conterem Só que o mais interessante nisso é que um
valores diferentes existe, mas AX e BX devem simples comando de salvar cria um arquivo
conter os mesmos valores acima descritos. com a extensão .COM, ou seja, executável.
Para sair do Debug usamos o comando "q"
(quit).

Armazenando e Carregando Armazenando e Carregando


Programas Programas
Eis os passos para salvar um programa que já Usando como exemplo o seguinte
esteja na memória: programa, vejamos como realizar os
„ Obter o tamanho do programa subtraindo o passos anteriormente descritos:
endereço final do endereço inicial, no sistema
hexadecimal. 0C1B:0100 mov ax,0002
„ Dar um nome ao programa. 0C1B:0103 mov bx,0004
„ Colocar o tamanho do programa no registrador CX. 0C1B:0106 add ax,bx
„ Mandar o debug gravar o programa em disco. 0C1B:0108 int 20
0C1B:010A

Armazenando e Carregando Armazenando e Carregando


Programas Programas
Para obter o tamanho de um programa, o comando O comando "n" permite-nos nomear o programa.
"h" é usado, já que ele nos mostra a adição e -n test.com
subtração de dois números em hexadecimal. O comando "rcx" permite-nos mudar o conteúdo do
Para obter o tamanho do programa em questão, registrador CX para o valor obtido como tamanho do
damos como parâmetro o valor do endereço final do arquivo com o comando "h", neste caso 000a.
nosso programa (10A), e o endereço inicial (100). -rcx
O primeiro resultado mostra-nos a soma dos CX 0000
endereços, o segundo, a subtração. :000a
Finalmente, o comando "w" grava nosso programa no
-h 10a 100 disco, indicando quantos bytes gravou.
020a 000a
-w
Writing 000A bytes

46
Armazenando e Carregando Armazenando e Carregando
Programas Programas
-n test.com
-l
Para já carregar um arquivo -u 100 109
previamente salvo, 2 passos são 0C3D:0100 B80200
0C3D:0103 BB0400
MOV AX,0002
MOV BX,0004
necessários: 0C3D:0106 01D8 ADD AX,BX
0C3D:0108 CD20 INT 20
„ Dar o nome do arquivo a ser carregado.
„ Carregá-lo usando o comando "l" (load). O último comando "u" é usado para verificar que o
programa foi carregado na memória.
Para obter o resultado correto destes O que ele faz é desmontar o código e mostrá-lo em
passos, é necessário que o programa assembly.
acima já esteja criado. Os parâmetros indicam ao Debug os endereços inicial
e final a serem desmontados.
O Debug sempre carrega os programas na memória
no endereço 100h, conforme já comentamos.

Interrupções de Hardware
Interrupções Interno
É possível classificar os diversos tipos Interrupções internas são geradas por certos
eventos que ocorrem durante a execução de
de interrupções da seguinte maneira: um programa.
„ Interrupções de hardware interno Este tipo de interrupções são gerenciadas, na
„ Interrupções de hardware externo sua totalidade, pelo hardware e não é
„ Interrupções de software possível modifica-las.
Um exemplo claro deste tipo de interrupções
é a que atualiza o contador do clock interno
do computador, o hardware chama esta
interrupção muitas vezes durante um
segundo.

Interrupções de Hardware
Externo Interrupções de Software
Interrupções de software podem ser ativadas
Interrupções externas são geradas através de diretamente por nossos programas assembly,
dispositivos periféricos, tais como teclados, impressoras, invocando o número da interrupção desejada
placas de comunicação, entre outros.
com a instrução INT.
São também geradas por co-processadores.
Não é possível desativar interrupções externas.
O uso das interrupções facilita muito a
criação dos programas, torna-os menores.
Estas interrupções não são enviadas diretamente para a
CPU. Além disso, é fácil compreende-las e geram
São enviadas para um circuito integrado cuja função boa performance.
exclusiva é tratar este tipo de interrupção. Este tipo de interrupções podem ser
O circuito, chamado PIC8259a, e controlado pela CPU separadas em duas categorias:
através de uma série de comunicação chamada paths. „ Interrupções do Sistema operacional DOS
„ interrupções da BIOS

47
Interrupções de Software Interrupções mais comuns
A diferença entre ambas é que as interrupções do
sistema operacional são mais fáceis de usar, mas
Int 21H (Interrupção do DOS): Múltiplas
também são mais lentas, uma vez que acessam os chamadas a funções DOS.
serviços da BIOS.
Int 10H (Interrupção da BIOS): Entrada
Por outro lado, interrupções da BIOS são muito mais
rápidas, mas possuem a desvantagem de serem parte do e Sa¡da de Vídeo.
hardware, o que significa serem específicas a arquitetura Int 16H (Interrupção da BIOS): Entrada
do computador em questão.
e Sa¡da do Teclado.
A escolha sobre qual o tipo de interrupção usar irá
depender somente das caracter¡sticas que você deseja Int 17H (Interrupção da BIOS): Entrada
dar ao seu programa: e Sa¡da da Impressora.
„ Velocidade (use BIOS)
„ Portabilidade (use DOS)

INT 21H INT 21H


Esta interrupção tem muitas funções. Funções para mostrar informações no v¡deo.
02H exibe um caracter
Para acessar cada uma delas é „

09H exibe uma cadeia de caracteres


necessário que o número correspondente
„

„ 40H escreve num dispositivo/arquivo


da função esteja no registrador AH no
Funções para ler informações do teclado.
momento da chamada da interrupção. „ 01H entrada do teclado
„ 0aH entrada do teclado usando buffer
„ 3FH Leitura de um dispositivo/arquivo

Função 02H Função 09H


Uso: mostra um caracter na tela. Uso: mostra uma cadeia de caracteres na tela.
Registradores de chamada: Registradores de chamada:
„ AH = 02H „ AH = 09H
„ DL = Valor de caracter a ser mostrado. „ DS:DX = endereço de início da cadeia de caracteres.
Registradores de retorno: nenhum. Registradores de retorno: nenhum.
Esta função mostra o caracter cujo código Esta função mostra os caracteres, um por um, a
hexadecimal corresponde ao valor partir do endereço indicado nos registradores
armazenado no registrador DL, e não DS:DX até encontrar um caracter ‘$’, que é
modifica nenhum registrador. interpretado como fim da cadeia.
O uso da função 40H é recomendado ao É recomendado usar a funcao 40H ao invés
invés desta função. desta.

48
Função 40H Função 01H
Uso: escrever num dispositivo ou num arquivo.
Registradores de chamada: Uso: ler um caracter do teclado e mostrá-lo.
AH = 40H
„
Registradores de chamada: AH = 01H
„ BX = Número do handle
„ CX = Quantidade de bytes a gravar Registradores de retorno: AL = Caracter lido
„ DS:DX = área onde está o dado É muito fácil ler um caracter do teclado com
Registradores de retorno: esta função, o código hexadecimal do
„ CF = 0 se não houve erro caracter lido é armazenado no registrador AL.
„ AX = Número de bytes escrito
„ CF = 1 se houve erro Nos caso de teclas especiais, como as de
„ AX = Código de erro função F1, F2, além de outras, o registrador
Para usar esta função para mostrar a informação na AL conterá o valor 1, sendo necessário
tela, faça o registrador BX ser igual a 1, que é o valor chamar a função novamente para obter o
default para o vídeo no DOS. código daquele caracter.

Função 0AH Função 0AH


Os caracteres são lidos e armazenados num
Uso: ler caracteres do teclado e armazená-los espaço de memória que foi definido.
num buffer. A estrutura deste espaço indica que o primeiro
Registradores de chamada: byte representa a quantidade máxima de
„ AH = 0AH caracteres que pode ser lida.
„ DS:DX = endereço inicial da área de O segundo, a quantidade de caracteres lidos e,
armazenamento no terceiro byte, o inicio onde eles são
„ BYTE 0 = Quantidade de bytes na área armazenados.
„ BYTE 1 = Quantidade de bytes lidos Quando se atinge a quantidade máxima
„ Do BYTE 2 até BYTE 0+2 = caracteres lidos permitida, ouve-se o som do speaker e
Registradores de retorno: nenhum. qualquer caracter adicional é ignorado.
Para finalizar a entrada, basta digitar [ENTER].

Função 3FH Interrupção 10H


uso: ler informação de um dispositivo ou de Propósito: chamar uma diversidade de
um arquivo. funções da BIOS
Registradores de chamada: Sintaxe: Int 10H
„ AH = 3FH
„ BX = Número do handle Esta interrupção tem várias funções,
„ CX = Número de bytes a ler todas para entrada e sa¡da de v¡deo.
„ DS:DX = Área para receber o dado Para acessar cada uma delas é
Registradores de retorno: necessário colocar o número da função
„ CF = 0 se não há erro e AX = numero de bytes correspondente no registrador AH.
lidos.
„ CF = 1 se há erro e AX conterá o código de erro.

49
Interrupção 10H Função 02H
Veremos apenas as funções mais Uso: move o cursor na tela do computador usando o
modo texto.
comuns da interrupção 10H. Registradores de chamada:
„ Função 02H: seleciona a posição do cursor „ AH = 02H
„ Função 09H, exibe um caracter e o atributo „ BH = Página de v¡deo onde o cursor está posicionado.
na posição do cursor „ DH = linha
„ DL = coluna
„ Função 0AH, exibe um caracter na posição Registradores de retorno: nenhum.
do cursor A posição do cursor é definida pelas suas coordenadas,
„ Função 0EH, modo alfanumérico de iniciando-se na posicao 0,0 até a posição 79,24.
exibição de caracteres Logo os valores possíveis para os registradores DH e DL
são: de 0 a 24 para linhas e de 0 a 79 para colunas.

Função 09H Função 0AH


Uso: mostra um determinado caracter várias vezes Uso: exibe um caracter na posição atual do
na tela do computador com um atributo definido, cursor.
iniciando pela posição atual do cursor.
Registradores de chamada:
Registradores de chamada:
„ AH = 09H „ AH = 0AH
„ AL = Caracter a exibir „ AL = Caracter a exibir
„ BH = Página de vídeo, onde o caracter será mostrado „ BH = Página de vídeo onde o caracter será exibido
„ BL = Atributo do caracter „ BL = Cor do caracter (apenas em modo gráfico)
„ CX = Número de repetições.
„ CX = Número de repetições
Registradores de retorno: nenhum
Esta função mostra um caracter na tela várias vezes,
Registradores de retorno: nenhum.
de acordo com o número especificado no registrador A principal diferença entre esta função e a
CX, mas sem mudar a posição do cursor na tela. anterior é permitir mudança nos atributos,
bem como mudar a posição do cursor.

Função 0EH Interrupção 16H


Uso: exibir um caracter na tela do Veremos duas funções da interrupção
computador atualizando a posição do cursor. 16H.
Registradores de chamada:
A exemplo das demais interrupções,
AH = 0EH
usa-se o registrador AH para chama-las.
„

„ AL = Caracter a exibir
„ BH = Página de vídeo onde o caracter será exibido Funções da interrupção 16h:
„ BL = Cor a usar (apenas em modo gráfico) „ Função 00H, lê um caracter do teclado.
Registradores de retorno: nenhum „ Função 01H, lê o estado atual do teclado.

50
Função 00H Função 01H
Uso: ler um caracter do teclado.
Registradores de chamada: AH = 00H Uso: ler o estado do teclado.
Registradores de retorno:
Registradores de chamada: AH = 01H
„ AL = Código da tecla pressionada
„ AH = Valor ASCII do caracter Registradores de retorno:
Quando se usa esta interrupção, os programas „ Se o registrador de flag é zero, significa que há
executam até que uma tecla seja pressionada. informação no buffer de teclado na memória.
Se é um valor ASCII, é armazenado no registrador AH. „ Caso contrário, o buffer está vazio.
Caso contrário, o código é armazenado no registrador
„ Portanto o valor do registrador AH será o valor da
AL e AH=0.
tecla armazenada no buffer.
Este valor de AL pode ser utilizado quando queremos
detectar teclas que não estão diretamente
representadas pelo seu valor ASCII, tais como
[ALT],[CONTROL].

Interrupção 17H Função 00H


Propósito: tratar a entrada e sa¡da da Uso: imprimir um caracter numa impressora.
impressora. Registradores de chamada:
Sintaxe: Int 17H „ AH = 00H
Esta interrupção é usada para enviar „ AL = Caracter a imprimir
caracteres, setar ou ler o estado de uma „ DX = Porta de conexão
impressora. Registradores de retorno: AH = estado da
Funções da interrupção 17h impressora.
„ Função 00H, imprime um valor ASCII Os valores da porta a colocar no registrador
„ Função 01H, seta a impressora DX são: LPT1 = 0, LPT2 = 1, LPT3 = 2 ...
„ Função 02H, lê o estado da impressora

Função 01H Função 02H


Uso: setar uma porta paralela. Uso: obter o status da impressora.
Registradores de chamada: Registradores de chamada:
„ AH = 01H „ AH = 01H
„ DX = Porta „ DX = Porta
Registradores de retorno: AH = Status Registradores de retorno AH = Status
da impressora. da impressora.
A porta definida no registrador DX pode A porta definida no registrador DX pode
ser: LPT1=0, LPT2=1, assim por diante. ser: LPT1=0, LPT2=1, assim por diante.

51
Exemplo #1 Exemplo #2
Este programa mostra a string de caracteres 15 vezes na Este programa muda o formato do cursor.
tela.
-a100
- a100 297D:0100 MOV AH,01 ;Função para mudar o cursor
0C1B:0100 jmp 125 ;Salta para o endereço 125h 297D:0102 MOV CX,0007 ;Formata o cursor
0C1B:0102 [Enter]
e 102 'Hello, How are you ?' 0d 0a '$‘ 297D:0105 INT 10 ;Chama interrupção do BIOS
Obs: 0a – salta linha e 0d – retorno de carro 297D:0107 INT 20 ;Finaliza o programa
- a125
0C1B:0125 MOV DX,0102 ;Copia a string para registrador DX
0C1B:0128 MOV CX,000F ;Quantas vezes a string será mostrada
0C1B:012B MOV AH,09 ;Copia o valor 09 para registrador AH
0C1B:012D INT 21 ;Mostra a string
0C1B:012F DEC CX ;Subtrai 1 de CX
0C1B:0130 JNE 012D ;Se CX não é igual a 0 salta para o end. 012D
0C1B:0132 INT 20 ;Finaliza o programa

Exemplo #3 Exemplo #3
Este programa usa a interrupção 21h do -a100
297D:0100 MOV AH,01 ;Função 1 (lê caractere do teclado)
DOS. 297D:0102 INT 21 ;Chama interrupção do DOS

Usa duas funções da mesma: 297D:0104


297D:0106
CMP AL,0D
JNZ 0100
;Compara se o caractere lido é um ENTER
;Se não é, lê um outro caractere
„ A primeira lê um caractere do teclado 297D:0108 MOV AH,02 ;Função 2 (escreve um caractere na tela)
297D:010A MOV DL,AL ;caracter para escrever em AL
(função 1) 297D:010C INT 21 ;Chama interrupção do DOS
„ A segunda escreve um caractere na tela. 297D:010E INT 20 ;Finaliza o programa

O programa lê caracteres do teclado até


encontrar um ENTER.

Exemplo #4 Exemplo #5
-a100 -a100
MOV CX, 0000 ; Linha, coluna esquina superior esquerda MOV AH, 2 ; move o valor 2H para o registrador AH.
MOV DX, 2479 ; Linha, coluna esquina inferior direita MOV DL, 2A ; move o valor 2AH para o registrador DL (é o valor
MOV BH, 07 ; Atributo normal ; ASCII do caractere * )
INT 21
MOV AH, 06 ; Rola página ativa para acima
MOV AH, 4C ; função 4CH, sai para o sistema operacional.
MOV AL, 00 ; número de linhas, 0 para tela inteira
INT 21 ; Interrupção 21 H (DOS)
INT 10 ; Chama interrupção da BIOS. INT 20 ; Finaliza o programa.
INT 20 ; Finaliza o programa

52
Programação Assembly Programação Assembly
Devemos criar os programas fonte com a
Para que possamos criar um programa, extensão .ASM para que o montador o
precisamos de algumas ferramentas:
reconheça e o transforme no programa objeto,
„ Primeiro de um editor para criar o programa fonte
no formato de um arquivo ASCII (com extensão um "formato intermediário" do programa, assim
.asm) chamado porque ainda não é um programa
„ Segundo de um montador, um programa que irá executável e tão pouco um programa fonte.
transformar nosso programa fonte num programa
objeto. O linker gera a partir de um programa .OBJ, ou
„ E, terceiro, de um linker (ligador) que irá gerar o da combinação de vários deles, um programa
programa executável (extensão .exe) a partir do executável, cuja extensão é normalmente .EXE,
programa objeto. embora possa ser .COM dependendo da forma
como for montado e ligado.

Programação Assembly Programação Assembly


Para construirmos os programas com o É importante incluir as seguintes
montador, devemos estruturar o fonte de forma
diferenciada ao que fazíamos com o programa diretivas assembly:
debug. „ DOSSEG ;usa ordenação de segmento
Os programas em linguagem montador, Intel
diferentemente dos programas compiladores de Š Instrui ao assembler a ordenar os segmentos
alto nível, requerem uma certa quantidade de de acordo com a convenção de segmento Intel
"detalhes". (CODE, DGROUP e STACK).
Estes detalhes dizem ao ASSEMBLER como Š Isso é muito importante porque, sob certas
montar seu código fonte. circunstâncias, a ordenação de segmento pode
Usamos diretivas para controlar o assembler e afetar o correto funcionamento de um
especificar exatamente como o código deve ser programa.
montado.

Programação Assembly Programação Assembly


„ .MODEL SMALL „ .CODE
Š Define o modelo de memória a usar no Š Define as instruções do programa, relacionado
programa. ao segmento de código.
Š Especifica realmente onde começam as
Š O modelo de memória pode ser pequeno,
instruções do programa.
médio, compacto, grande ou huge.
Š Uma especificação de modelo de memória
„ .STACK
comunica ao assembler alguma coisa sobre o Š Reserva espaço de memória para as instruções
tamanho do seu programa e os segmentos de de programa na pilha
dados necessários. „ END
Š Finaliza um programa assembly.

53
Exemplo Gerando o arquivo .EXE
dosseg
.model small Salvar o programa: prog.asm
.stack 0300h
.data Tasm prog.asm
var dw 0000 ; variáveis
.code
Tlink prog.obj
prog proc far
mov ax,bx; aqui entra o programa

Prog endp
subr proc
add ax,bx; sub-rotina

Subr endp
end

Gerando Arquivos .COM Gerando Arquivos .COM


.MODEL TINY
.CODE Depois de escrever um programa no
ORG 0100h
vetor: mov cx,0008h modelo mostrado anteriormente, devem
mov bx,0200h ser executados os seguintes passos:
volta: mov al,[bx]
„ TASM nome_arq.ASM
add al,[bx+100h]
mov [bx+200h],al „ TLINK nome_arq.OBJ /t
inc bx
dec cx
jne volta
int 20h
END vetor

Exemplo Exemplo
.MODEL TINY Este programa assembly muda o tamanho do cursor.
.DATA
texto db 'Oi, como vai?',0dh,0ah,'$' ; use ; para fazer comentários em programas assembly
; Obs: 0a – salta linha e 0d – retorno de carro
.MODEL SMALL ;modelo de memória
.CODE .STACK ;espaço de memória para instruções do
ORG 0100h ;programa na pilha
frase: lea dx,texto .CODE ;as linhas seguintes são instruções do
;programa
mov cx,000fh CURSOR PROC FAR ;declaração de procedimento principal
mov ah,09h
volta: int 21h mov ah,01h ;move o valor 01h para o registrador ah
mov cx,07h ;move o valor 07h para o registrador cx
dec cx int 10h ;interrupção 10h
jne volta mov ah,4ch ;move o valor 4ch para o registrador ah
int 21h ;interrupção 21h
int 20h
END frase CURSOR ENDP ; encerra o procedimento principal
END ;finaliza o código do programa

54
Exemplo Exemplo
DOSSEG
.MODEL small
Devem ser seguidos os seguintes passos: .STACK 300h
.DATA
„ Use qualquer editor para criar o programa fonte. Text db 'Linguagem Assembly é fácil !!', '$'
„ Salvar o arquivo no formato ASCII. .CODE
Turbo PROC FAR
„ Usar o programa montador (neste caso o TASM) mov ax,DGROUP
para construir o programa objeto. mov ds,ax
;**------------------------------------------------**
„ Usar o programa TLINK para criar o programa lea dx,Text
executável. mov ah,9h
int 21h
„ Rodar o programa executável criado. ;**------------------------------------------------**
mov ah,4ch
int 21h
Turbo ENDP
END

Enlace de Subrotinas e Pilhas Exemplo


DOSSEG
.model small
Quando um programa chama um procedimento, o .stack
.code
controle é passado do programa ao procedimento, o PRINT_A_J PROC
qual executa uma seqüência de instruções e então MOV DL,'A'
MOV CX,10
;move o caracter A para o registrador DL
;move o valor decimal 10 para o registrador CX
retorna à locação de onde foi chamado. ;este valor é usado para fazer laço com 10
interações
Os programas em linguagem assembly podem conter PRINT_LOOP:
muitos procedimentos. CALL WRITE_CHAR
INC DL
;Imprime o caracter em DL
;Incrementa o valor do registrador DL
Os procedimentos na linguagem assembly podem ser LOOP PRINT_LOOP
MOV AH,4Ch
;Laço para imprimir 10 caracteres
;Função 4Ch, para sair ao DOS
considerados como near (intra - segmento) ou far INT 21h ;Interrupção 21h
(inter - segmento). PRINT_A_J ENDP ;Finaliza o procedimento

Rotinas já depuradas, podem ser colocadas em WRITE_CHAR


MOV AH,2h
PROC
;Função 2h, imprime caracter
procedimentos dentro do programa. INT 21h ;Imprime o caracter que está em DL
RET ;Retorna o controle ao procedimento que chamou
Pode-se chamar estes procedimentos usando a WRITE_CHAR ENDP ;Finaliza o procedimento
instrução call. END PRINT_A_J ;Finaliza o programa

Macros Definição de Macro


Os programadores de diferentes linguagens É um método para dar nome a uma parte de
necessitam freqüentemente repetir as seqüências de
instruções várias vezes dentro de um programa. um texto.
A maneira mais óbvia de fazer isto é simplesmente Após uma macro ser definida, o programador
repetir as requeridas instruções onde for necessário. pode escrever o nome da macro em vez
Entretanto, se a seqüência for longa ou se for usada daquela parte do programa, ou seja, só
um grande número de vezes, escrevê-la
repetidamente pode tornar-se tedioso. necessita ser chamado o nome da macro
Portanto, as macros provêem uma solução fácil e desde o corpo do programa para utilizar o
eficiente para o problema de se precisar repetir as código.
mesmas ou quase as mesmas seqüências de
instruções.

55
Macros Macros
Cada vez que se chama uma macro em um Em uma biblioteca de macros existem
programa, o montador copia e coloca o código real
da macro no programa, no lugar do nome da macro. arquivos ASCII de macros, que podem
Portanto, as macros são executadas em linha, já que ser chamados pelo seu programa
o fluxo do programa não é interrompido.
durante a montagem.
Isto se consegue devido a que quando o montador
encontra uma definição de macro, ele a salva em O código em uma macro ou biblioteca
uma tabela de definições de macros para uso
subseqüente. macro não foi montado, ele permanece
A partir deste momento, sempre que o nome da na forma ASCII.
macro aparecer o montador o substituirá pelo corpo
da macro.

Estrutura de uma Macro Exemplo


Uma macro tem três partes essenciais:
„ Um cabeçalho killtime macro increment
local loop1,loop2 ;;loop1 e loop2 são
„ Um corpo ;;rotulos locais
„ Um fim (endm). push dx ;;armazena valores de dx e cx
push cx
O cabeçalho contém um nome de macro seguido por sua mov dx,increment ;;passa incr. de tempo a dx
diretiva e quaisquer argumento opcional que devam ser loop2: mov cx,0FF00h ;;carrega cx com 0ff00h
passados de e para a macro. loop1: dec cx ;;decrementa o tempo
jnz loop1 ;;se diferente de zero, loop1
As macros podem receber informações na forma de dec dx ;;se cx=0, decrementa dx
argumentos ou através de qualquer variável global ou jnz loop2 ;;se dx diferente de zero,
;;carrega cx novamente
sistema de registrador. pop cx ;;recupera valores de cx e dx
O corpo de uma macro contém a codificação do pop dx
endm
programa - a codificação que realmente é inserida no
programa quando a macro é chamada.
Todas as macros devem terminar com a instrução endm.

Bibliotecas de Macros
As macros podem ser introduzidas e usadas
por um único programa, ou podem ser
colocadas numa biblioteca-macro que se
pode incluir em quaisquer programas futuros
que se venha a escrever.
Muitos programadores desenvolvem um
grupo de macros que usam com freqüência e
colocam-nas numa biblioteca.
Eles podem então economizar tempo e evitar
dores de cabeça com a depuração chamando
a biblioteca - macro ao invés de digitar
novamente cada uma delas.

56