Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
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
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
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)
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.
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.
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
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
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
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
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.
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
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”
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.
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.
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.
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”.
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.
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.
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.
constantemente reenergizado para não The Burst Extended Data Output RAM (BEDO RAM)
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.
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.
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.
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.
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.
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.
Esquema de como o
processador vê a memória: Analisando o Mapa de Memória
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.
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.
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).
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.
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…
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.
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.
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
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.
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.
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.
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.
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.
40
Registradores dos Registradores dos
Microprocessadores 8086-80286 Microprocessadores 8086-80286
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
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)
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
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>
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.
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).
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)
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.
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.
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].
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
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.
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
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
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.
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