You are on page 1of 88

Centro Federal de Educao Tecnolgica do Rio Grande do Norte

Unidade de Ensino de Natal


Gerncia de Tecnologia da Informao e Educacional de Telemtica
A
A
p
p
o
o
s
s
t
t
i
i
l
l
a
a
d
d
e
e
C
C
u
u
r
r
s
s
o
o
V erso 01.2000
Professora:
Anna Catharina
Fevereiro/ 2000
Sumrio
Anna Catharina/ CEFET-RN/ 2000
i
Sumrio
1 Introduo a Microprocessadores 1
1.1 Arquitetura de Computadores 1
1.2 Arquitetura Bsica de Microprocessadores 3
1.3 Evoluo dos Microprocessadores 5
2 Anlise de um Microprocessador Genrico 7
2.1 Arquitetura Interna 7
2.1.1 Unidades Funcionais 7
2.1.2 Estrutura Pipelined 8
2.2 Funo dos Pinos 10
2.3 Sistema de Clock e Ciclos de Barramento 12
3 Sistema de Memria de Computadores 14
3.1 Estrutura de Memria 14
3.1.1 Terminologia 14
3.1.2 Armazenamento de Informaes na Memria 17
3.2 Organizao da Memria Principal 19
3.2.1 Organizao Modular da Memria 19
3.2.2 Organizao Lgica 20
3.2.3 Organizao Fsica 21
3.2.4 Acesso Memria 22
3.3 Memria Cache 23
3.3.1 Arquitetura de um Sistema Cache 23
3.3.2 Taxa de Acerto 24
4 Arquitetura de Software de um Microprocessador 25
4.1 Modelo de Software 25
4.2 Registradores 26
4.2.1 Registradores de Dados (Registradores de Uso Geral) 26
4.2.2 Registradores de Segmento 27
4.2.3 Registradores Ponteiros e de ndice (Registradores de Deslocamento) 29
4.2.4 Registrador de Flags 29
4.3 Pilha 31
4.4 Modos de Endereamento de Memria 32
4.4.1 Modo de Endereamento por Registro 33
4.4.2 Modo de Endereamento Imediato 34
4.4.3 Modo de Endereamento Direto 35
4.4.4 Modo de Endereamento Indireto por Registro 36
4.4.5 Modo de Endereamento por Base 37
4.4.6 Modo de Endereamento Direto Indexado 38
4.4.7 Modo de Endereamento por Base Indexada 39
Sumrio
Anna Catharina/ CEFET-RN/ 2000
ii
5 Programao em Linguagem Assembly 41
5.1 Segmentao e Estrutura de Programao (Programa Bsico) 41
5.1.1 Sintaxe dos Comentrios 41
5.1.2 Sintaxe das Instrues e Diretivas do Assembly 42
5.1.3 Modelo de Programa Assembler Simplificado (.EXE) 42
5.1.4 Diretivas Simplificadas de Definio de Segmentos 43
5.1.5 Operadores de Referncia a Segmentos no Modo Simplificado 44
5.2 Ferramentas para Montagem, Ligao e Depurao de Programas 44
5.2.1 Montador Assembler (TASM) 44
5.2.2 Ligador (TLINK) 44
5.2.3 Depurador Turbo Debugger (TD) 45
5.3 Diretivas do Assembler 46
5.3.1 Diretivas de Equivalncia para o Programa (Definio de Constantes) 46
5.3.2 Diretiva de Definio de Base Numrica 46
5.3.3 Diretivas de Definio de rea de Armazenamento de Dados (Variveis) 46
5.3.4 Diretivas de Definio de Procedimentos 48
5.3.5 Diretivas de Controle do Assembly 48
5.4 Operadores do Assembler 48
5.4.1 Operadores para Dados 48
5.4.2 Operadores de Especificao de Tamanho 49
5.5 Conjunto de Instrues Assembly 50
5.5.1 Instrues para Transferncia 50
5.5.2 Instrues Aritmticas 51
5.5.3 Instrues Lgicas 53
5.5.4 Instrues que Modificam Flags 54
5.5.5 Instrues de Chamada e Retorno de Subrotinas 54
5.5.6 Instrues para Manipulao de Pilha 55
5.5.7 Instruo NOP 55
5.5.8 Instrues de Entrada e Sada 55
5.5.9 Instruo de Comparao 56
5.5.10 Instrues de Desvio 56
5.5.11 Instrues de Repetio 58
5.6 Programao Estruturada em Assembly 59
5.6.1 Ferramentas Utilizadas em Controle de Fluxo 59
5.6.2 Estrutura Se-Ento-Seno 59
5.6.3 Estrutura Repita-At que 60
5.6.4 Estrutura Repita-Enquanto 60
5.6.5 Estrutura Enquanto-Repita 60
5.6.6 Estrutura For (Para) 61
5.6.7 Estrutura Case 61
6 Interrupes e Excees 62
6.1 Vetores e Descritores de Interrupo 63
6.2 Interrupo por Software: Comandos INT e IRET 65
6.3 Interrupo por Hardware: Controlador de Interrupes 8259 67
6.4 Habilitao, Desativao ou Mascaramento de Interrupes 68
6.5 Interrupes Internas e Excees 69
Sumrio
Anna Catharina/ CEFET-RN/ 2000
iii
Anexo A Tabela ASCII 70
Anexo B Cdigo Estendido do Teclado 72
Anexo C Interrupes BIOS e DOS 73
Interrupes do BIOS 73
Interrupes do DOS 77
Introduo a Microprocessadores
Anna Catharina/ CEFET-RN/ 2000
1
1 Introduo a Microprocessadores
1.1 Arquitetura de Computadores
Embora tenham ocorrido revolucionrias transformaes na rea de Eletrnica, os
microcomputadores de hoje ainda mantm a mesma concepo funcional dos primeiros
computadores eletrnicos. Tal concepo, conhecida como Arquitetura de Von Neumann,
definida da seguinte forma:
Uma unidade central de processamento recebe informaes atravs de uma unidade de entrada de dados,
processa estas informaes segundo as especificaes de um programa armaz enado em uma unidade de
memria, e devolve os resultados atravs de uma unidade de sada de dados.
A Figura 1 mostra, por diagrama de blocos, a organizao de um sistema com estas
caractersticas. O sistema de computador envolve, como pode ser visto, o computador e os
elementos geradores e receptores de informaes.
Elemento Gerador
das Informaes
Unidade de
Memria
Elemento Receptor
das Informaes
Computador
Sistema de Computador
Unidade Central
de Processamento
Unidade de Sada
de Dados
Unidade de
Entrada de Dados
Figura 1 Organiz ao de um sistema de computador
Unidade Central de Processamento (CPU) a unidade gestora do computador capaz de
administrar todas as operaes de leitura/ escrita da memria ou de uma unidade de entrada/ sada
de dados, de executar operaes aritmticas ou lgicas e de interpretar todas as instrues
recebidas de um programa que est em execuo.
Microprocessador dispositivo LSI (large scale integration alto grau de integrao) que
condensa em um nico chip a maioria das funes associadas a uma unidade central de
processamento.
Microcomputador ou sistema a microprocessador computador que se caracteriza por
apresentar blocos lgicos de CPU, memria e E/ S bem definidos e onde todas as funes de
processamento da unidade central so desempenhadas por um processador (Figura 2).
Introduo a Microprocessadores
Anna Catharina/ CEFET-RN/ 2000
2
Unidade de
Memria
Unidade de E/ S
de Dados
Elementos
Receptores/ Transmissores
das Informaes
Microcomputador ou
Sistema de Microprocessador
Sistema de Microcomputador
CPU
Microprocessador
S istema interno de vias
S istema ex terno de vias
Figura 2 Sistema de microcomputador
Perifrico qualquer elemento gerador ou receptor de informao em sistemas de
computadores (Figura 3).
Microcomputador
Perifricos para
Entrada de Dados
Perifricos para
Sada de Dados
Perifricos para
Entrada/ Sada de Dados
T eclado
Joystick
Scanner
Sensores
Mouse
Scanner
Unidade de disco rgido
Unidade de disco flex vel
Unidade de CD -R OM
Unidade de fita magntica
Impressora
Monitor de vdeo
A lto falante
Displays
Plotter
Figura 3 Perifricos de um microcomputador
Unidades de Entrada/ Sada blocos internos responsveis pelas transferncias de dados
entre o microcomputador e qualquer dispositivo perifrico. atravs de uma unidade de entrada
de dados que as informaes de perifrico de entrada so levadas CPU ou memria. De forma
similar, atravs de uma porta de sada de dados que as informaes so levadas da CPU ou da
memria para um perifrico de sada.
Hardware e Software
H ardware o conjunto de dispositivos eltricos/ eletrnicos que englobam a CPU, a
memria e os dispositivos de entrada/ sada de um sistema de computador. O hardware
composto de objetos tangveis (circuitos integrados, placas de circuito impresso, cabos, fontes de
alimentao, memrias, impressoras, terminais de vdeo e teclados).
O software, ao contrrio, consiste em algoritmos (instrues detalhadas que dizem como
fazer algo) e suas representaes para o computador ou seja, os programas.
Qualquer instruo efetuada pelo software pode ser implementada diretamente em hardware e qualquer
operao ex ecutada pelo hardware pode tambm ser simulada pelo software.
A deciso de se colocar certas funes em hardware e outras em software se baseia em
fatores, tais como: custo, velocidade, confiabilidade e possibilidade/ facilidade de modificao.
Introduo a Microprocessadores
Anna Catharina/ CEFET-RN/ 2000
3
1.2 Arquitetura Bsica de Microprocessadores
Para se compreender bem a arquitetura bsica de um microprocessador (Figura 4) basta
associar as operaes que caracterizam uma unidade central de processamento com os elementos
funcionais que permitem a sua realizao.
Unidade de
Controle
Microprocessador
Bus interno
Registrador
de Instruo
Registros de
Uso Geral
ALU
Decodificador
de Instruo
Bus de dados
Bus de endereo
Bus de controle
FPU
Cache
Interna (L1)
Figura 4 A rquitetura bsica de um microprocessador com FPU e cache interna
1 Para administrar operaes de leitura/ escrita da memria ou de uma E/ S de dados so
necessrias:
w uma unidade de controle, que oriente a busca ou o envio das informaes;
w uma pequena capacidade de memria onde estas informaes possam ficar
temporariamente armazenadas (registrador de uso geral); e
w alguns barramentos (ou vias) onde possam ser manipulados os dados, os endereos e
os sinais de controle.
2 Para executar operaes aritmticas e lgicas necessria a presena de uma ALU (arithmetic
and logic unit unidade lgica/ aritmtica) e, nos processsadores mais avanados, uma FPU (float
point unit unidade de ponto flutuante) para operaes com nmeros reais. A incluso da FPU
veio permitir a execuo de operaes antes s possveis com o auxlio de um coprocessador
aritmtico (operaes em ponto flutuante).
3 Para interpretar as instrues estabelecidas por um programa devem existir:
w um decodificador de instruo (microcdigo) e;
w um registrador de instruo, no qual a instruo recebida fica temporariamente
armazenada.
Introduo a Microprocessadores
Anna Catharina/ CEFET-RN/ 2000
4
Barramentos
Um barramento ou via ou bus um conjunto de pinos do microprocessador por onde
trafegam um ou mais sinais de hardware. Um microprocessador possui trs tipos de barramentos
utilizados para transporte: bus de dados, bus de endereos e bus de controle.
Barramento de dados: Barramento bidirecional, utilizado para realizar o intercmbio de dados e
instrues com o exterior. Uma das principais caractersticas de um microprocessador o
nmero de bits que o barramento de dados pode transferir, que determina se o processador de
8, 16, 32 ou 64 bits. Determina o nmero de bits da palavra de dados que pode ser transferida
de/ para o microprocessador e, tambm (quase sempre) o tamanho da palavra de dados que pode
ser operada pela ALU.
Barramento de endereos: Barramento unidirecional, constitudo de um conjunto de linhas de
endereo que indicam a posio de memria onde se encontra o dado requisitado. Uma vez dada
a posio, a informao armazenada na memria passar CPU atravs do barramento de dados.
Define a quantidade de posies de memria e/ ou de portas de entrada/ sada que podem ser
acessadas pelo microprocessador (para n bits do barramento de endereos, 2
n
bytes de memria
podem ser endereados, ou seja, 2
n
endereos fsicos podem ser acessados capacidade de
endereamento).
Barramento de controle: Barramento bidirecional, formado por um nmero varivel de linhas,
atravs das quais se controlam as unidades complementares (habilitao e desabilitao das
memrias para leitura e escrita, permisso para perifricos ou coprocessadores acessarem as vias
de dados e endereos). Transfere, para as diversas partes do sistema, sinais que definem e
orientam toda a sua operao.
Introduo a Microprocessadores
Anna Catharina/ CEFET-RN/ 2000
5
1.3 Evoluo dos Microprocessadores
Microprocessador
Bits
Internos
Bits do bus
de dados
Bits do bus
de endereos
Cache
L1
Observaes
1
a
Gerao
Intel 4004 4 4 4 Primeiro microprocessador (1971)
Intel 8008 8 8 8 Calculadoras ou sistemas de controle dedicados
Intel 8080/ 8085 8 8 16 Arquitetura escalar com estrutura seqencial; Outros fabricantes: Motorola (6800) e Zilog (Z80)
2
a
Gerao
Intel 8086/ 8088 16/ 8 16/ 8 20 IBM PC/ XT; Arquitetura escalar e estrutura pipelined; Outros fabricantes: Zilog (Z8000) e Motorola (68000)
Intel 80286 16 16 24 IBM PC/ AT 286; Arquitetura escalar e estrutura pipelined; Outro fabricante: Motorola (68010)
3
a
Gerao
Intel 386DX 32 32 32 Primeira CPU de 32 bits a incluir gerenciamento de memria; Ambiente multi-usurio; Arquitetura escalar e
estrutura pipelined melhorada; Possibilidade de cache L2; Outro fabricante: Motorola (68020/ 68030)
Intel 386SX 32 16 24 Idntico ao 386DX, exceto pelos barramentos
4
a
Gerao
Intel 486DX 32 32 32 8KB Arquitetura escalar e estrutura pipelined otimizada; Possui FPU
Intel 486DX2 32 32 32 8KB Possui FPU; Utiliza duplicao do clock
Intel 486DX4 32 32 32 16KB Possui FPU; Utiliza triplicao do clock
Intel 486SX 32 32 32 8KB No possui FPU (coprocessador interno)
Cyrix 486DLC 32 32 32 1KB Semelhante ao Cyrix 486SLC, com 32 bits
AMD 5x86 32 32 32 16KB Semelhante a um 486 de 133MHz, com desempenho de um Pentium-75
Cyrix 5x86 (M I) 32 32 32 16KB Possui FPU; Caractersticas do Pentium e pinagem do 486DX4
5
a
Gerao
Intel Pentium 32 64 32 16KB Cache L1 = 8KB instrues + 8KB dados; Projeto hbrido CISC/ RISC
AMD K5 32 64 32 24KB Semelhante ao Pentium; Projeto hbrido CISC/ RISC; Cache L1 = 16KB instrues + 8KB dados
Cyrix 6x86 (M II) 32 64 32 64KB Caractersticas do Pentium Pro e pinagem do Pentium; FPU (64 bits); Tecnologia MMX; Arquitetura
superescalar; Execuo dinmica
6
a
Gerao
Intel Pentium Pro 32 64 32 16KB Execuo dinmica; Tecnologia DIB; Cache L2 de 256 e 512KB
Intel Pentium MMX 32 64 32 16KB Pentium com tecnologia MMX; Esquema duplo de tenso nos circuitos interno (core) e externo
AMD K6 32 64 32 64KB Tecnologia MMX; Arquitetura superescalar; FPU (64 bits); Cache L1 = 32KB instrues + 32KB dados
AMD K6-2 (K6 3D) 32 64 32 64KB Semelhante ao K6. Mais velocidade (barramento externo de 100MHz)
AMD K6-3 (K6+ ) 32 64 32 64KB Semelhante ao K6-2. Cache L2 (256KB) integrado ao processador. Cache L3 na placa-me.
Intel Pentium Celeron 32 64 32 32KB Cache L1 = 16KB instrues + 16KB dados; Cache L2 de 128KB integrada; Tecnologia MMX;
FPU (32 e 64 bits); Execuo dinmica; Arquitetura superescalar
Intel Pentium II 32 64 32 32KB Cache L1 = 16KB instrues + 16KB dados; Tecnologia DIB; Tecnologia MMX; Execuo dinmica; Cache
L2 de 512KB; Suporte memria expandida de 36 bits (endereamento de memria > 4GB)
Intel Pentium II Xeon 32 64 32 32KB Cache L2 de 1MB ou 2MB; Pentium II projetado para servidores e estaes de trabalho
Intel Pentium III 32 64 32 32KB Cache L2 de 512KB; FPU (32, 64 e 80 bits); Tecnologia MMX; Tecnologia DIB; Execuo dinmica; Suporte
memria expandida de 36 bits; Internet Streaming SIMD E x tensions; Intel Processor Serial N umber
Intel Pentium III Xeon 32 64 32 32KB Cache L2 de 512KB, 1MB ou 2MB; Pentium III projetado para servidores e estaes de trabalho
Introduo a Microprocessadores
Anna Catharina/ CEFET-RN/ 2000
6
Durante muito tempo uma disputa desleal vinha sendo travada entre empresas dedicadas
produo e comercializao de microprocessadores: de um lado a poderosa Intel, lder de
mercado, dominadora de avanadas tecnologias e manipuladora de tcnicas e estratgias que no
deixavam folga para concorrncia; de outro lado, todas as outras empresas que sempre tiveram de
se contentar em receber migalhas da fatia do mercado restante, sempre com produtos de
tecnologia licenciada e atrasados em relao aos produtos da Intel. Entretanto, esta situao
comea a mudar. Competidores como AMD, Cyrix, NexGen, Sun Microsystems e algumas
outras empresas associadas comeam a introduzir no mercado novos processadores com
significativas diferenas dos integrados Intel. Estes projetos originais e altamente otimizados
prometem melhor desempenho do que os Pentiums da Intel, ao mesmo tempo mantendo total
compatibilidade com os softwares DOS e Windows. O Pentium marca uma bifurcao entre a era
exclusiva da Intel e uma nova era, quando diferentes tecnologias esto surgindo, com o
desenvolvimento de novas microarquiteturas, capazes, dizem os fabricantes, de superar o
desempenho do Pentium.
Percebe-se, com a evoluo tecnolgica e a reduo nos custos de desenvolvimento dos
componentes eletrnicos, que:
1. as mquinas CISC (complex instruction set computer) aos poucos absorvem caractersticas
tpicas de RISC (reduced instruction set computer), como estrutura superescalar e cache
otimizados de memria interna; e
2. as mquinas RISC, em contrapartida, aos poucos vo barateando seus custos,
mantendo excelente rapidez na execuo de programas, e passando a competir de
igual para igual com as mquinas CISC de ltima gerao.
Dentre as novas tecnologias adotadas, podemos comentar:
w
MMX (multimedia ex tensions): Tecnologia projetada para acelerar aplicaes de
multimdia e comunicao, adicionando novos conjuntos de instrues e diferentes
tipos de dados, alm de explorar o paralelismo (SIMD single instruction multiple data).
w
DIB (dual independent bus): Arquitetura composta pelo barramento de cache L 2 e o
barramento de sistema (entre o processador e a memria principal), ambos podendo ser
usados simultaneamente.
w
Cache L2 acoplada (integrada) ao processador dentro de um nico encapsulamento.
w
Execuo dinmica (Microarquitetura P6): Previso de mltiplos desvios nos
programas em execuo, acelerando o fluxo de trabalho do processador; Anlise de
fluxo de dados, reordenando o escalonamento das instrues; e Execuo
especulativa, antecipando as instrues do programa e executando as que
provavelmente sero necessrias.
w
Internet Streaming SIMD E x tensions: Conjunto de novas instrues, incluindo SIMD
para ponto flutuante e instrues SIMD adicionais e de controle de cache.
w
Intel Processor Serial N umber: nmero de srie eletrnico do processador que permite
sua identificao por redes e aplicaes.
w
Tenso dupla de operao Intel: 2,0 ou 2,8V para os circuitos internos (core) e 3,3V
para os circuitos que fazem ligao externa.
w
Encapsulamento S.E.C. (single edge contact): integra todas as tecnologias de alto
desempenho do processador.
A nlise de um Microprocessador Genrico
Anna Catharina/ CEFET-RN/ 2000
7
2 Anlise de um Microprocessador Genrico
Por questes didticas, ser feita, nesse captulo, a anlise de um processador genrico
com muitas caractersticas comuns aos microprocessadores da famlia 80x86 da Intel.
Para trabalhar com um novo microprocessador, o programador ou projetista deve
conhecer detalhes sobre: a arquitetura interna; a funo dos pinos e o timing (temporizao)
durante os ciclos de barramento; e a estrutura de software.
Pela anlise da arquitetura interna ser possvel saber quais so e como esto organizados
os seus registradores, qual o nmero de bits nos barramentos de dados, de controle e de
endereos, quais as caractersticas da ALU, e quais as suas lgicas de decodificao e de controle.
Conhecendo as funes dos pinos e o timing durante os ciclos de barramento, ser
possvel ao usurio definir, com exatido, dentre outras coisas, qual a relao pino/ tarefa, como e
quando uma dada ao do processador se realizar ou, at mesmo, se determinado pedido de
servio ser (e quando) ou no atendido pelo processador.
Conhecendo a estrutura de software de ser possvel desenvolver programas sem ter que
entrar em detalhes de implementao do chip.
Caractersticas do processador genrico proposto para anlise:
w
alimentao por fonte nica, baixa potncia de dissipao, sadas bufferiz adas;
w
vias independentes para dados, endereo e controle;
w
capacidade de endereamento de 1 Mbyte de memria e 64 kbytes de portas de E/ S;
w
grupo de aproximadamente 150 instrues;
w
instrues diferenciadas para acesso a memria ou a E/ S;
w
lgica interna para controle de pedidos de interrupo de programa e de DMA;
w
lgica de controle para operao com coprocessador aritmtico; e
w
arquitetura escalar pipelined implementada por 4 unidades funcionais bsicas: unidades
de barramentos, decodificao, execuo e gerao de endereos (UB, UI, UE e UA).
2.1 Arquitetura Interna
2.1.1 Unidades Funcionais
A arquitetura interna do microprocessador caracterizada pela existncia de quatro
unidades funcionais bsicas: UB, UI, UE e UA.
A unidade de interfaceamento de barramentos (UB), atravs das interfaces de controle de
vias, da interface do bus de endereos e da interface do bus de dados, manipula todos os sinais de
controle, endereos e dados necessrios para que ocorram os acessos memria e E/ S
requeridos pela CPU. Ela tambm responsvel pelo tratamento dos sinais necessrios
interface de unidades coprocessadoras e outros barramentos mestres. Alm disso, incorpora uma
pequena memria de 8 bytes: a fila de pr-busca (prefetch), onde so armazenados os ltimos dados
buscados da memria ou de uma E/ S. A UB opera tipicamente por looking ahead, buscando instrues
na memria e colocando-as na fila de pr-busca.
A nlise de um Microprocessador Genrico
Anna Catharina/ CEFET-RN/ 2000
8
A unidade de decodificao de instrues (UI) recebe possveis instrues da fila de pr-
busca, decodifica-as (atravs do decodificador de instrues), e gera uma nova fila de instrues
pr-decodificadas para a unidade de execuo.
A unidade de execuo (UE) executa as instrues pr-decodificadas pela UI. Caso a
instruo exija acessos a memria ou a alguma E/ S, as pr-buscas so suspensas e a instruo em
curso na UE ter acesso aos barramentos, atravs da UB. UE esto relacionados todos os
registradores de uso geral e de controle da ALU.
A unidade de gerao de endereos (UA) responsvel pela gerao dos endereos fsicos
necessrios operao da CPU.
Controle
da UE
Registrador
de Base
Registrador
de Segmento
Interface do
Bus de Endereo
Interface de
Controle de Vias
Interface do
Bus de Dados
Fila de
Pr-busca
Decodificador
de Instruo
Fila de Instrues
Decodificadas
ALU
Registradores de
Uso Geral
Bus de E ndereo
Bus de Controle
Bus de D ados
UE
UA
UI
UB
Figura 5 A rquitetura interna do processador
2.1.2 Estrutura Pipelined
Os processadores da 1
a
gerao possuiam uma arquitetura escalar com estrutura seqencial.
Dessa forma, a quantidade de ciclos necessrios para executar um conjunto de instrues era
sempre igual quantidade total de ciclos alocados para as unidades, uma vez que apenas uma das
unidades poderia estar sendo utilizada a cada ciclo.
A partir da 2
a
gerao, uma estrutura pipelined comeou a ser adotada pelos processadores.
Nesse caso, em um determinado ciclo, pode haver mais de uma unidade sendo utilizada,
dependendo da alocao de recursos (unidades) das instrues a serem executadas.
A execuo de uma instruo pode ser distribuda nas seguintes fases lgicas para um
pipeline de instrues (Figura 6):
1. Determinao do endereo da instruo e busca na memria [IF = instruction fetch]
2. Decodificao da instruo a ser executada [ID = instruction decode]
3. Gerao dos endereos e busca dos operandos [OF = operand fetch]
4. Execuo da instruo [EX = ex ecution]
5. Armazenamento do resultado [WB = write back ]
A nlise de um Microprocessador Genrico
Anna Catharina/ CEFET-RN/ 2000
9
IF
UB
Bus de Endereo
Bus de Dados
Fila de pr-busca
ID
UI
Fila de ID
OF
UA UB
Bus de Endereo
Bus de Dados
EX
UE
WB
UA UB
Bus de Endereo
Bus de Dados
Figura 6 Fases lgicas e recursos fsicos necessrios ex ecuo de instrues em um pipeline
Aps a execuo das instrues possvel determinar a quantidade total de ciclos gastos e
calcular a taxa mdia de ciclos por instruo (CPI), dada por:
es de Instru N
iclos T otal de C
CPI

. O CPI
significa a quantidade mdia de ciclos necessrios para executar uma instruo.
Uma outra medida que pode ser determinada o ganho da estrutura pipelined sobre a
estrutura seqencial. O ganho, tambm conhecido como Speedup, dado por:
pipelined ciclos ou CPI
seqencial ciclos ou CPI
Speedup
ou
T (n)
T (1)
) n ( S
. S(n) 1, significa que o desempenho da estrutura
pipelined melhor que ou igual ao da seqencial; caso contrrio, teremos 0 < S(n) < 1.
Exemplo: D ado o seguinte conjunto de instrues e os recursos necessrios para sua ex ecuo, calcule o CPI,
considerando que as filas presentes nas unidades comportam apenas uma instruo.
I
1
= { UB, UI, UE , UA , UB}
I
2
= { UB, UI, UE , UE }
I
3
= { UB, UI, UE }
I
4
= { UB, UI, UA , UB, UE , UA , UB}
I
5
= { UB, UI, UE , UA , UB}
I
6
= { UB, UI, UE }
A Figura 7 ilustra como instrues so executadas na arquitetura escalar com estrutura pipelined do
processador. Observe que, no exemplo, as execues das instrues 1, 4 e 5 exigem acesso aos
barramentos externos, enquanto as execues das demais instrues so feitas internamente. Um
dado importante para a execuo no pipeline a capacidade das filas presentes na UI e na UB (de
instrues decodificadas e de pr-busca), que determina a quantidade mxima de instrues que
podero estar presentes nessas unidades. Uma observao deve ser feita quanto UB: a fila de pr-
busca armaz ena instrues a serem decodificadas, no impedindo que outra instruo esteja acessando barramentos
para leitura ou escrita de dados na memria. Portanto, a ex igncia na UB que apenas uma instruo pode
acessar os barramentos em um determinado ciclo. A existncia de uma unidade ociosa configura uma
bolha () no pipeline.
UB I
1
I
2
I
3
I
4
I
1
I
4
I
5
I
6
I
4

I
5
I
4
UI
I
1
I
2
I
3
I
3
I
4
I
5
I
6
I
6

UE
I
1
I
2
I
2
I
3

I
5
I
4
I
6

UA
I
1

I
4

I
5
I
4

Ciclos 1 2 3 4 5 6 7 8 9 10 11
Figura 7 E x ecuo das instrues do ex emplo numa estrutura pipeline
A nlise de um Microprocessador Genrico
Anna Catharina/ CEFET-RN/ 2000
10
Clculos para o Exemplo:
Estrutura pipelined:
T otal de Ciclos = 11
N de Instrues = 6
CPI =
6
11
= 1,83 ciclos/ instruo
Estrutura seqencial:
T otal de Ciclos = 5+4+3+7+5+3 = 27
N de Instrues = 6
CPI =
6
27
= 4,5 ciclos/ instruo
Ganho da estrutura pipelined sobre a seqencial: S(n) =
1,83
4,5
ou
11
27
= 2,45
2.2 Funo dos Pinos
Pela Figura 8, o processador apresenta: um barramento de dados de 16 bits; um
barramento de endereos de 20 bits; e um barramento de controle. O barramento de controle, por
sua vez, encontra-se dividido nos grupos de:
w
controle de memria e I/ O;
w
controle de interrupo;
w
controle de DMA (direct memory access acesso direto memria); e
w
controle de operao com coprocessador (somente em alguns processadores).
Bus de E ndereos
Bus de D ados
CLK
HOLD
HLDA
INTR
NMI
RESET
PEREQ
BUSY
ERROR
A
0
A
19
D
0
D
15
BLE
BHE
W/ R
ADS
READY
LOCK
Processador
80x86
Sinais de Controle
de Memria e E / S
Sinais de
Controle
de DMA
Sinais de
Controle de
Interrupo
Sinais de
Controle do
Coprocessador
D/ C
M/ IO
INTA
Figura 8 Funo dos pinos do processador genrico
A Tabela 1 lista cada um destes sinais, especificando o nome do pino, sua funo, tipo e
nvel ativo.
A nlise de um Microprocessador Genrico
Anna Catharina/ CEFET-RN/ 2000
11
Tabela 1 T abela descritiva dos pinos do processador genrico
Nome Funo Tipo
Nvel
Lgico
CLK Clock do sistema E
A0-A19 Bus de endereo (20 bits) S 1
D0-D15 Bus de dados (16 bits) E/ S 1
BHE, BLE Byte enables Selecionam parte alta (BHE) e baixa (BLE) do bus de dados S 0
HOLD Pedido de uso do bus de dados (pedido de DMA) E 1
HLDA Reconhecimento HOLD (reconhecimento de DMA) S 1
INTR Pedido de interrupo mascarvel E 1
NMI Pedido de interrupo no-mascarvel E 1
RESET Reinicializao do sistema E 1
PEREQ Requisio de dados pelo coprocessador E 1
BUSY Coprocessador ocupado E 0
ERROR Erro no coprocessador E 0
W/ R Referente a escrita (W) ou leitura (R) S 1/ 0
D/ C Referente a dados (D) ou controle/ cdigo (C) S 1/ 0
M/ IO Referente a memria (M) ou E/ S (IO) S 1/ 0
ADS Status de endereo (indicador de ciclo de barramento vlido) S 0
READY Pedido de espera (por um perifrico) E 0
LOCK Indicador de barramento ocupado S 0
Atravs do barramento de dados de 16 bits do processador , possvel se transferir
informaes da largura de um byte (8 bits) ou de uma word (16 bits). Os sinais BHE e BLE so
usados para indicar se a transferncia de um byte est ocorrendo pela parte menos significativa do
barramento de dados (parte baixa: BHE= 1 e BLE= 0), pela parte mais significativa (parte alta:
BHE= 0 e BLE= 1), ou se est ocorrendo a transferncia de uma word (parte alta + parte baixa:
BHE= 0 e BLE= 0). Enquanto todos os 20 bits do bus de endereos podem ser usados para
acessar uma posio de memria, apenas os 16 menos significativos podem ser usados para
acessar uma E/ S. Desta forma, embora o espao enderevel de memria seja de 1 Mbyte (2
20
), o
de E/ S de apenas 64 kbytes (2
16
).
Dos trs sinais disponveis para controle de interrupo, o INTR pode ser mascarado
por software, o NMI sempre atendido, independentemente da programao, e o de RESET
reinicializa o sistema.
Para controle de DMA so disponveis os sinais HOLD e HLDA, os quais permitem
que o processador tome conhecimento e sinalize o atendimento de um pedido de uso de vias
feito por um outro dispositivo mestre (controlador de DMA). Enquanto durar a concesso do
uso de vias (sinal HOLD permanece ativo aps o HLDA), o processador mantm seus pinos de
sada em estado de alta impedncia (estado indefinido entre 0 e 1). Durante o DMA,
transferncias diretas de dados podem ser feitas entre a memria e o dispoditivo de E/ S.
Seguindo o padro das mquinas anteriores ao 486DX, o processador s executa
operaes aritmticas com nmeros inteiros. Operaes com nmeros reais s so possveis
atravs de bibliotecas matemticas em ponto flutuante ou atravs do uso de um coprocessador
aritmtico, o qual partilha com o processador a execuo do programa, tomando para si a
execuo das tarefas com nmeros reais. Para viabilizar o uso de um coprocessador aritmtico,
so disponibilizados os sinais PEREQ, BUSY e ERROR, os quais permitem que o processador
tome conhecimento de um pedido de dados pelo coprocessador, do seu tempo de ocupao e da
ocorrncia de erros no tratamento matemtico.
A nlise de um Microprocessador Genrico
Anna Catharina/ CEFET-RN/ 2000
12
2.3 Sistema de Clock e Ciclos de Barramento
Toda sincronizao de barramento feita a partir do sinal de clock denominado de clock do
processador (PCLK). Este sinal, gerado internamente, tem como base de tempo o sinal
fornecido na entrada CLK (clock do sistema/ externo). Para o processador 8086, o PCLK
compreende um perodo igual a duas vezes o do CLK (freqncia de PCL K = freqncia de
CL K), com ciclo de trabalho (duty cycle) de 50% (Figura 9).
T
CLK
PCLK
Figura 9 T emporiz ao genrica
Qualquer operao externa de leitura ou escrita feita pelo processador ocorrer em um
ciclo de barramento e ter uma durao mnima de dois perodos de PCLK (T
1
e T
2
). Os ciclos de
barramento possveis so mostrados na Tabela 3 e o seu reconhecimento feito atravs da
decodificao dos sinais de sada M/ IO (memria/ IO), D/ C(dados/ cdigo) e W/ R (escrita/ leitura).
Tabela 2 Sinais M/ IO, D / C, W / R
M/ IO D/ C W/ R
Tipo de ciclo de barramento
0 0 0 R econhecimento de interrupo
0 0 1 Processador ocioso (nenhum ciclo de barramento est sendo processado)
0 1 0 Leitura de dados numa interface de E/ S
0 1 1 Escrita de dados numa interface de E/ S
1 0 0 Leitura de cdigo na memria
1 0 1 Parado (halt/ shutdown)
1 1 0 Leitura de dados na memria
1 1 1 Escrita de dados na memria
A sada ADS indica que o os sinais de definio de ciclo de barramento (M/ IO, R/ W,
D/ C), cdigo de byte enable (BHE, BLE) e os sinais de endereo (A
0
a A
15
) esto estveis. Esse
sinal geralmente aplicado a um circuito de lgica de controle de barramento externo para
indicar que uma definio de ciclo de barramento vlido e um endereo esto disponveis.
Atravs da entrada READY, possvel estender o ciclo de barramento corrente pela incluso de
estados de espera, permitindo que uma memria ou um dispositivo de E/ S lento possa ser
atendido pelo processador.
Em sistemas multiprocessados, comum o partilhamento de vias de dados, endereos e
controle. Para suprir o uso exclusivo de vias durante a execuo de tarefas prioritrias, o
processador dispe do sinal de sada LOCK (ativado por software), durante o qual qualquer outro
sistema ou dispositivo ficar devidamente informado que nenhuma concesso de vias poder
ocorrer naquele momento.
A nlise de um Microprocessador Genrico
Anna Catharina/ CEFET-RN/ 2000
13
A Figura 10 mostra um timing genrico no qual os seguintes ciclos de barramento
possveis esto representados:
w
C1: leitura de cdigo na memria (W/ R = 0, D/ C = 0 e M/ IO = 1);
w
C2: leitura de dados na memria (W/ R = 0, D/ C = 1 e M/ IO = 1);
w
C3: ocioso (W/ R = 1, D/ C = 0 e M/ IO = 0); e
w
C4: escrita de dados numa interface de E/ S (W/ R = 1, D/ C = 1 e M/ IO = 0) com
pedido de espera (feito atravs da linha READY).
n+2
Bus de
Endereo
W/ R
M/ IO
D/ C
Bus de
Dados
READY
n n+1 n+2
n n+1 n+2
ta: tempo de endereamento
taw: tempo de endereamento com pedido de espera
tw: tempo de espera
C1 C2 C4 C3
ta ta taw
T1 T2 T1 tw T2 T1 T2
PCLK
Figura 10 T emporiz ao genrica
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
14
3 Sistema de Memria de Computadores
3.1 Estrutura de Memria
Segundo a Arquitetura de Von Newmann, uma unidade central recebe dados dos
dispositivos de entrada, processa-os segundo as especificaes de um programa, e devolve-os
atravs de um dispositivo de sada. As instrues do programa e os dados processados residem na
memria do computador. Esta memria dividida em uma srie de locaes, cada qual com um
endereo associado. Cada locao denominada de byte, o qual formado por 8 bits (unidade
binria).
3.1.1 Terminologia
Endereo e locao de memria: O endereo um nmero que identifica a posio (locao)
de uma palavra na memria. Cada palavra armazenada em qualquer dispositivo ou sistema de
memria possui um nico endereo, expresso como nmeros binrios ou, por convenincia,
hexadecimais. Cada locao de memria possui um endereo associado, onde esto presentes os
dados a serem acessados.
Operao de leitura: Ao ler o contedo de um endereo, o computador faz uma cpia do
contedo. Dessa forma, a operao de leitura chamada de no destrutiva (operao de busca).
Operao de escrita: Quando o computador acessa uma posio de memria e escreve um
dado, o contedo anterior completamente perdido. Assim, toda operao de escrita pode ser
chamada de destrutiva (operao de armazenamento).
Tempo de acesso: Medida da velocidade do dispositivo de memria. Quantidade de tempo
necessria efetivao de uma operao de leitura (tempo decorrido entre o momento da
recepo pela memria de um novo endereo e o instante em que a informao daquele endereo
fica disponvel).
Memria voltil: Memria que necessita de energia eltrica para reter a informao armazenada.
Se a energia for retirada, toda a informao armazenada ser perdida.
Memria no-voltil: Memria que no necessita de energia eltrica para reter a informao
armazenada.
ROM (read only memory) memria apenas para leitura: So memrias a semicondutor usadas
para armazenar dados e instrues permanentes, que o computador deve executar
freqentemente ou durante a inicializao do sistema. Normalmente o contedo de uma ROM
gravado no circuito integrado, no podendo ser alterado (no volteis). Aplicaes: firmware,
memria de partida fria (bootstrap), tabelas de dados, conversores de dados, geradores de
caracteres e de funes.
A principal caracterstica da memria ROM o fato de que suas informaes vm
geralmente gravadas de fbrica e so, portanto utilizadas durante toda sua vida til para as
mesmas atividades.
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
15
Os diversos tipos de ROMs existentes no mercado diferem no modo de programao e
na possibilidade de apagamento e de reprogramao. Algumas variaes da ROM so:
w
EPROM (erasable programmable read-only memory) ROM apagvel programvel:
Basicamente uma memria ROM na qual informaes podem ser apagadas atravs
de exposio a luz ultravioleta de alta intensidade e reprogramadas eletricamente.
w
EEPROM (electrically erasable programmable read-only memory) ROM apagvel
programvel eletricamente: verso mais barata e prtica da EPROM, a qual utiliza
sinais eltricos tanto para sua microprogramao quanto para que suas informaes
sejam apagadas. As chamadas memrias flash ou EEPROM flash possibilitam a
atualizao do BIOS, por exemplo, sem a necessidade de substituio do chip. Uma
vantagem das EEPROMs sobre as EPROMs a possibilidade de apagamento e
reprogramao de palavras individuais, em vez da memria inteira.
RAM (random access memory) memria de acesso aleatrio: So memrias de leitura e escrita,
usadas para o armazenamento temporrio de dados. As memrias RAM so volteis. Nas
memrias RAM, a localizao fsica real de uma palavra no tem efeito sobre o tempo de leitura
ou escrita (o tempo de acesso constante para qualquer endereo). Aplicao: memria principal
e caches.
Entre os principais tipos de RAM temos:
w
DRAM (dinamic random access memory) RAM dinmica: Memrias RAM a
semicondutor nas quais a informao armazenada no permanecer armazenada,
mesmo em presena de alimentao do circuito, a no ser que a informao seja
reescrita na memria com determinada freqncia (operao de recarga ou refresh da
memria). Caractersticas: alta capacidade de armazenamento, baixo consumo de
potncia, velocidade de operao moderada e custo/ byte relativamente baixo.
Principal tecnologia de implementao de memrias RAM, constituindo-se na
representao de nmeros binrios 0 e 1 a partir do carregamento de milhares ou
milhes de microcapacitores reenergizados pela passagem de correntes pelas clulas a
cada dezena de milissegundos.
w
SRAM (static random access memory) RAM esttica: Memrias RAM nas quais a
informao permanecer armazenada enquanto houver energia eltrica aplicada
memria, sem que haja necessidade da informao ser permanentemente reescrita na
memria. Caractersticas: baixa capacidade de armazenamento, alta velocidade de
operao (baixo tempo de acesso) e alto custo/ byte. A principal limitao da DRAM,
a velocidade, a principal vantagem da SRAM. Estima-se que o tempo de acesso aos
dados na SRAM sejam cerca 25% do tempo de acesso a DRAMs. Uma outra
vantagem diz respeito a desnecessidade de reenergizao. No entanto, uma grande
limitao decorrente de seu alto custo, o que faz com que esta tecnologia seja usada
mais comumente em estruturas cache. Utilizam flip-flops (bipolares ou MOS) como
clulas de armazenamento.
Memrias de acesso seqencial (SAM): Utilizam registradores de deslocamento para
armazenar os dados que podem ser acessados de forma seqencial, no podendo ser utilizadas na
memria principal (baixa velocidade de acesso). Aplicaes: armazenamento e transmisso
seqencial de dados codificados em ASCII, osciloscpios digitais e analisadores lgicos,
memrias FIFO.
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
16
Memrias FIFO (first in first out) primeiro a entrar, primeiro a sair: Memria seqencial que
utiliza registradores de deslocamento, na qual as palavras so descarregadas na sada de dados na
mesma ordem em que entraram pela entrada de dados. Aplicao: operao de transferncia de
dados entre sistemas operando em velocidades muito diferentes (buffers de impressora ou teclado).
Hierarquia de memria: a hierarquia de memria de um computador caracterizada por cinco
parmetros: tempo de acesso, tamanho da memria, custo por byte, largura de banda (bandwidth)
da transferncia e unidade de transferncia (bytes). A hierarquia de memria em
microcomputadores, representada na Figura 11, possui quatro nveis, compostos de: memria
secundria, memria principal, caches e registradores.
Memria Principal
Cache Interna (L1)
Memria Secundria
Cache Externa (L2)
Registradores
Custo por bit
Capacidade de
Armazenamento
Tempo de acesso
Capacidade de
Armazenamento
Figura 11 H ierarquia de memria
Memria secundria ou de massa ou auxiliar: Armazena uma grande quantidade de
informao, sendo bem mais lenta que a memria principal, e sempre no-voltil. As
informaes armazenadas nos dispositivos de memria de massa so transferidas para a memria
principal quando forem necessrias ao computador. Exemplos deste tipo de elemento so as fitas
magnticas, os disquetes e os HDs (hard disk s).
Memria principal ou primria: Serve para armazenar as instrues e os dados que esto
sendo usados pelo processador. Implementada por chips de memrias DRAM. Controlada por
uma MMU (memory manegement unit unidade de gerncia de memria) em cooperao com o
sistema operacional.
Memria cache: Formada por uma pequena quantidade de memria SRAM, com alta
velocidade de acesso. Armazena dados com grande probabilidade de reutilizao, evitando outros
acessos memria principal, diminuindo o tempo de acesso ao dado. Existem dois tipos de
memria cache, dependendo da localizao em relao ao microprocessador: cache interna ou
primria ou L1 (com pequena capacidade, geralmente de 32 kbytes), e cache "externa" (integrada)
ou secundria ou L2 (com capacidade mdia de 256 a 512 kbytes).
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
17
3.1.2 Armazenamento de Informaes na Memria
A menor quantidade de informao disponvel em qualquer computador o bit. A
principal unidade de informao um grupo de bits, denominado palavra. O nmero de bits que
formam uma palavra denominado tamanho da palavra do computador. Muitas vezes os
computadores so descritos em termos do tamanho da sua palavra, que tambm indica a largura
do barramento de dados.
Uma palavra armazenada numa posio de memria pode conter dois tipos de
informao: instrues ou dados. Para as instrues, armazenadas em cdigo binrio, o
contedo armazenado na memria so comandos que levam execuo de alguma tarefa. Os
dados podem ser informaes numricas ou alfanumricas, que podem estar em vrios formatos:
nmeros binrios com e sem sinal, nmeros em BCD compactado, nmeros em ponto flutuante,
caracteres em BCD ou ASCII.
Apesar de existirem diversos formatos lgicos de armazenamento para dados, no se deve
esquecer que, fisicamente, informaes so armaz enadas como seqncias de 0 e 1 e que, mais importante
ainda, o computador no tem como saber a diferena entre dois contedos. responsabilidade do programador
conhecer os tipos de dados que esto sendo armaz enados, para assegurar que o programa possa interpret-los e
process-los corretamente.
O processador armazena dados na memria de forma linear, em grupos de 8 bits.
Primeiro armazenado o byte menos significativo (LSB least significative byte) de uma word e em
seguida o byte mais significativo (MSB most significative byte). Por exemplo, o nmero A3C1h
armazenado na forma indicada na Figura 12.
Endereo Contedo
Segmento de D ados

C1 Parte baix a
+1
A3 Parte alta
Figura 12 A rmaz enamento de dados na memria
Nmeros binrios no sinalizados e nmeros hexadecimais: Uma forma mais clara de
representao dos valores o sistema hexadecimal, que utiliza um conjunto de 16 smbolos: os
algarismos de 0 a 9 e as letras de A a F. A cada conjunto de 4 bits em um byte atribui-se um dgito
hexadecimal. A teno! N meros em hex adecimal so apenas uma representao de nmeros binrios!!!
Caracteres: A cada uma das 256 combinaes possveis em um byte, pode-se atribuir um
caractere do alfabeto, minsculos e maisculos, algarismos e smbolos especiais do teclado,
caracteres de controle, caracteres semigrficos, smbolos matemticos e letras do alfabeto grego
(cdigo ASCII american standard code for information interchange). No se pode esquecer que a cada
cdigo ASCII (ou a cada caractere), est associado um nmero de um byte, e portanto, podemos
dizer que, por exemplo, A = 65d = 41h = 01000001b.
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
18
Valores em BCD compactado: O cdigo BCD (binary decimal code cdigo binrio decimal)
utilizado para armazenar dois dgitos decimais em um byte na memria, especialmente para
realizar clculos aritmticos. Para isto, pode-se usar a tabela dos nmeros hexadecimais com as
combinaes para os algarismos de 0 a 9.
E x emplo: 153
10
= 0001 0101 0011
BCD
= 1001 1001
2
= 99
16
Para cada dgito decimal ex iste um nibble (quarteto) correspondente em BCD .
Operaes BCD so realizadas como operaes com nmeros binrios. Entretanto,
necessrio fazer um ajuste no resultado para que o valor seja um BCD vlido. Portanto, uma
soma BCD nada mais que uma soma binria com um ajuste. O ajuste feito adicionando-se
6
10
= 0110
2
ao nibble cuja representao binria seja superior a 9
10
.
E x emplo: 49
10
+ 21
10
= 0100 1001
BCD
+ 0010 0001
BCD
= 0110 1010
A juste:
+
0110 1010
2
0000 0110
2
0111 0000
BCD
A ps o ajuste, o resultado da soma :
0111 0000
BCD
= 70
10

Tabela 3 E quivalncia entre os sistemas numricos


Valor
Binrio
Dgito
Hexadecimal
Valor
Decimal
Dgito
BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9

Valores sinalizados: Um byte pode armazenar 256 valores diferentes (00h a FFh), atribuindo a
cada combinao um valor decimal positivo (0
10
a + 255
10
). Para armazenar na memria valores
positivos e negativos (-128
10
a + 127
10
), o bit mais significativo de um byte utilizado para indicar o
sinal: 0 para positivo e 1 para negativo em complemento de 2 (ou seja, -B = Complemento de 2(B)).
O complemento de 2 consiste em duas operaes: realizao do complemento de 1 (negao bit a
bit) e adio com 1.
E x emplo: A = 12
10
= 0000 1100
2
-A = C
2
(A ) = C
1
(A ) +1 = 1111 0100
2
Internamente, os computadores no realizam operaes de subtrao. A subtrao (AB)
feita atravs da soma (A+ (-B) = A+ Complemento de 2(B)).
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
19
E x emplo: A = 7
10
e B = 8
10
. Calcular, por complemento de 2, o valor C = A B.
A = 0000 0111
2
e B = 0000 1000
2
Operao 1 C
1
(B): 1111 0111
2
Operao 2 adio com 1 (1+0=1, 1+1=0 vai 1):
+
1111 0111
0000 0001
1111 1000
= C
2
(B)
A dio (A + C
2
(B)):
+
0000 0111
1111 1000
1111 1111
L ogo, A B = 1111 1111
2
.
N ote que o dado sinaliz ado armaz enado na memria da mesma forma que um no sinaliz ado. Para saber
quanto vale o nmero, s refaz er o complemento de dois, uma vez que [-(-B)=B]. D essa forma, teramos:
+
0000 0000
0000 0001
0000 0001
Portanto, 1111 1111
2
= -1.
3.2 Organizao da Memria Principal
3.2.1 Organizao Modular da Memria
A memria freqentemente separada em mdulos com funcionalidade independente
como forma de aumentar a velocidade e a confiabilidade, e flexibilizar possveis mudanas de
tamanho. Existem duas formas de organizao modular: high-order interleave e low-order interleave.
High-order interleave: sucessivos endereos de memria presentes no mesmo mdulo (Figura
13). O aumento do desempenho resulta da probabilidade de instrues, tabelas de referncias e
dados residirem em mdulos diferentes. Esta separao pode ser forada pelo sistema
operacional. Caso isto venha a ocorrer, existe pouca probalidade de uma referncia memria
por uma instruo ter de esperar pelo trmino de uma referncia uma tabela ou a um dado.
0
2
n
-1
2
n
2
2n
-1
2
2n
2
3n
-1
2
3n
2
4n
-1
M
0
M
1
M
2
M
3
Figura 13 Organiz ao high-order interleave
Low-order interleave: endereos sucessivos alocados em mdulos diferentes (Figura 14).
Oferece vantagem quanto localidade de programas e dados. Neste mtodo, um dado ou uma
instruo tende a estar na localidade de memria mais prxima do ltimo item de dado ou
instruo buscado. Existe tambm a possibilidade de um fluxo de palavra poder ser transferido
ao processador a uma velocidade maior que aquela organizada em endereos sucessivos.
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
20
0
2
4n
-4
1
2
4n
-3
2
2
4n
-2
3
2
4n
-1
M
0
M
1
M
2
M
3
Figura 14 Organiz ao low-order interleave
difcil fazer um julgamento sobre qual forma de organizaes melhor. A organizao
high-order interleave certamente produz alta confiabilidade ao sistema, uma vez que o
processamento pode continuar quando um mdulo no est operando, principalmente nos casos
em que um contedo pode ser recuperado da memria secundria e realocado em outro mdulo.
Considerando as duas formas, mais importante que se incorpore uma organizao de
memria compatvel com a estrutura do restante do sistema do computador e com a organizao
do processador. Com isso, a memria passa a acomodar as caractersticas do resto do sistema.
Uma unidade de gerncia de memria (MMU) utilizada para fazer o endereamento ou
acesso memria. A MMU um processador especial usado particularmente para coordenar
transferncias de bytes, words e doublewords. Isto tambm facilita o projeto de diferentes
computadores usando microprocessador e memrias padres. Funes tpicas de uma MMU
incluem: controle de endereamento por segmento e pgina, separao do espao do usurio e do
sistema e suporte de hardware para proteo de memria.
3.2.2 Organizao Lgica
Vamos considerar um processador com barramento de endereo de 32 bits, o que
possibilita o acesso a 4 Gbytes (2
32
) posies de memria. Essa capacidade de endereamento,
entretanto, s possvel quando o microprocessador est trabalhando no modo protegido. No
modo real, apenas 20 bits de endereamento so utilizados e, consequentemente, a capacidade de
endereamento diminui para 1 Mbyte (2
20
), semelhante ao processador proposto para anlise.
Memria Convencional: at 640 kbytes.
Memria Superior: regio de memria entre 640 kbytes e 1 Mbyte, que abriga a memria de
vdeo, a UMB e a E MS Page Frame.
Blocos de Memria Superior (UMB): armazenamento de programas residentes e drivers que
estariam na memria convencional. L ocaliz ao: de 800 a 896 kbytes da memria superior.
EMS Page Frame: bloco de 64 kbytes da memria superior, atravs do qual feito o
chaveamento de bancos da memria EMS. Configurao: 4 pginas de 16 kbytes = 64 kbytes.
L ocaliz ao: 896 a 960 kbytes da memria superior.
Memria Alta (HMA): utilizada para armazenar partes do ncleo do sistema operacional DOS,
que poderiam ocupar espao na memria convencional ou na memria superior.
Memria Estendida (XMS): memria acessvel apenas em modo protegido, localizada a partir
de 1 Mbyte, abrigando a memria HMA e a memria expandida.
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
21
Memria Expandida (EMS): fornece acesso superior a 1 Mbyte de memria em modo real,
independente da capacidade de endereamento do processador. L ocaliz ao: placas de expanso
EMS (XT e 286), ou final da memria estendida (386 ou superior). Utilizao de recursos (drivers)
de gerncia de memria que permitem a funo de chaveamento de bancos sem necessidade de
hardware adicional (EMM386.EXE e HIMEM.SYS). T otal de memria: 64 blocos (frames) de
16 kbytes = 1 Mbyte. Apenas 4 blocos de 16 kbytes podem ser acessados a cada instante. Apesar
de no poder armazenar programas a serem executados, possibilita o armazenamento dos dados
utilizados pelos programas.
Convencional Estendida (XMS)
0 640k 1M ????
UMB
Expandida (EMS)
EMS Page Frame
Superior
HMA
Figura 15 Organiz ao da memria principal
3.2.3 Organizao Fsica
O espao de endereamento de memria visto como um conjunto de quatro bancos
independentes onde cada banco apresenta 1Gbyte de memria (modo protegido) ou de
256 kbytes (modo real).
Os bancos esto relacionados diretamente com os 4 sinais byte enables (BE
0
, BE
1
, BE
2
e
BE
3
) do processador. A ativao de cada byte enable coloca o banco de memria correspondente
em operao.
Caractersticas da organizao fsica:
a memria est organizada em seqncias de doublewords;
os bits de endereo (A
2
a A
31
) so aplicados aos quatro bancos em paralelo;
os byte enables selecionam quais bytes da doubleword sero manipulados;
cada doubleword alinhada possui endereo inicial mltiplo de 4; e
cada banco de memria utiliza 8 das 32 linhas do barramento de dados.
M3 M2 M1 M0
D31-D24 D23-D16 D15-D8 D7-D0
BH3 BH2 BH1 BH0
A31-A0
Figura 16 Organiz ao fsica da memria principal
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
22
3.2.4 Acesso Memria
As Figuras a seguir mostram a forma de acesso a dados de 1, 2 e 4 bytes, respectivamente,
a partir do endereo inicial X. importante notar que apenas os bancos selecionados atravs dos
byte enables podero realizar operao de escrita ou leitura e a transferncia dos dados feita
atravs das linhas correspondentes do barramento de dados.
M3 M2 M1 M0
X
D31-D24 D23-D16 D15-D8 D7-D0
BH3 = 1 BH2 = 1 BH1 = 1 BH0 = 0
A31-A0
Figura 17 A cesso a um dado de 1 byte
M
3
M
2
M
1
M
0
X
D
31
-D
24
D
23
-D
16
D
15
-D
8
D
7
-D
0
BH3
= 1 BH2 = 1 BH1 = 0 BH0 = 0
A
31
-A
0
X+1
Figura 18 A cesso a um dado de 2 bytes
M3 M2 M1 M0
X
D31-D24 D23-D16 D15-D8 D7-D0
BH3 = 0 BH2 = 0 BH1 = 0 BH0 = 0
A31-A0
X+1 X+2 X+3
Figura 19 A cesso a um dado de 4 bytes
Nem sempre possvel, entretanto, ter todas as words e doublewords alinhadas. Nesse caso, a
transferncia ser feita em dois ciclos de barramento. No primeiro, a parte alta do dado ser
acessada; no segundo, a parte baixa.
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
23
3.3 Memria Cache
Quando um sistema de computador explora um subsistema de memria principal muito
grande, esta memria normalmente implementada com DRAMs e EPROMs de alta capacidade
de armazenamento, mas de muito baixa velocidade. As DRAMs disponveis apresentam tempos
de acesso elevado em relao velocidade do processador, inviabilizando a operao sncrona de
um sistema a microprocessador com estes dispositivos de memria. Como no existe
disponibilidade de dispositivos com tempo de resposta compatvel, estados de espera so
introduzidos em todos os ciclos de acesso a memria de programa ou de dados. Estes estados de
espera degradam a performance global do sistema a microprocessador.
Para suprir esta deficincia, um pequeno subsistema de memria, conhecido por memria
cache, inserido entre o processador e a memria principal. O sistema de memria cache armazena
os dados e cdigos mais recentemente utilizados, permitindo que, ao invs de realizar novos
acessos memria principal, estes dados e cdigos sejam acessados diretamente da cache, com a
possibilidade de zero estados de espera. Um outro dispositivo, o controlador de memria cache
determina, de acordo com as necessidades, quais os blocos de memria a serem movimentados
de/ para o bloco cache, ou de/ para a memria principal.
A observao de que referncias memria feitas em qualquer intervalo de tempo curto
de tempo tendem a usar apenas uma pequena frao da memria total chamada princpio da
localidade e forma a base de todos os sistemas cache.
Para aumentar ainda a mais o desempenho, os processadores de ltima gerao
incorporam caches de dados e de cdigo internamente ao chip (cache L1).
3.3.1 Arquitetura de um Sistema Cache
A Figura 20 apresenta a arquitetura de um sistema cache. interessante notar que um dos
lados da memria cache esta ligado ao barramento local do microprocessador e o outro lado est
ligado ao barramento da memria principal.
Controle da cache
Memria
Principal
Subsistema de
Memria Cache
Externa (L2)
Processador
Bus de endereos
Bus de dados
Controle Controle
Figura 20 Microcomputador com memria cache L 2
A primeira vez que um microprocessador executa um segmento de programa, uma
instruo aps a outra lida da memria principal e executada. O grupo de instrues mais
recentemente lido ento copiado na memria cache. Como normalmente os softwares
implementam seqncias de instrues que so executadas repetidas vezes, o acesso a essas
informaes poder ser feito diretamente da cache.
Sistema de Memria de Computadores
Anna Catharina/ CEFET-RN/ 2000
24
Considere, por exemplo, uma seqncia de instrues em loop. Durante a primeira
iterao, o cdigo lido da memria principal pelo microprocessador e automaticamente copiado
para a memria cache (Figura 21). As demais iteraes do loop no mais requisitaro acessos
memria principal. Durante a execuo do loop, tanto os dados como o cdigo podem ser
copiados para a memria cache. Quanto mais acessos memria cache e menos memria
principal, melhor ser o desempenho do sistema.
Controle da cache
Memria
Principal
Subsistema de
Memria Cache
Externa (L2)
Processador
Bus de endereos
Bus de dados
Controle Controle
L oop
L oop
Figura 21 E x emplo de funcionamento da memria cache
3.3.2 Taxa de Acerto
A cache pode reduzir significativamente o tempo de acesso se organizada de forma a
conter os dados e o cdigo requeridos pelo processador. Obviamente, quanto maior a cache,
maior a chance de que ele contenha as informaes desejadas. Quando o processador necessita
de uma informao, o subsistema de memria cache verifica seu contedo. Se a informao
estiver presente na cache, o ciclo de memria denominado cache hit (acerto de cache) e a cpia da
informao acessada. Caso contrrio, diz-se que ocorreu um cache miss e a informao deve ser
buscada na memria principal.
A taxa de acerto (hit rate) a razo entre o nmero de acessos cache e o nmero total de
acessos memria.
miss cache de T otal
hits ache c de T otal
principal memria A cessos
cache A cessos
R ate H it
ou
k
k
h
1

Se o tempo de acesso de um dado na cache c e da memria principal m, o tempo


mdio de acesso de um dado, considerando o sistema de memria cache + memria principal,
pode ser calculado por: t
med
= c + (1 h) m. medida que h 1, todas as referncias podem ser
satisfeitas pela cache, e t
med
c. Por outro lado, medida que h 0, uma referncia memria
necessria toda vez, de forma que t
med
(c + m), tempo para verificar o cache (sem sucesso) e para
fazer a referncia memria.
Quanto maior a taxa de acerto, maior a eficincia do subsistema de memria cache. A taxa
de acerto no uma valor fixo e depende da dimenso e da organizao da cache, do algoritmo de
controle usado pela cache e do cdigo em execuo, de tal forma que pode ser completamente
distinta para cdigos diferentes.
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
25
4 Arquitetura de Software de um Microprocessador
O conhecimento da arquitetura de software de um microprocessador permite o
desenvolvimento de programas sem a necessidade de detalhes de implementao do chip. A
arquitetura de software de um processador compreende:
w
a forma de organizao da memria e da E/ S;
w
que tipos de registradores esto disponveis internamente e quais as suas funes;
w
que tipos de dados servem de operando;
w
quais os modos de endereamento existentes para se acessar um operando na
memria, numa E/ S ou num dos registradores internos; e
w
quais os comandos que constituem o seu conjunto de instrues.
4.1 Modelo de Software
O modelo de software inclui (Figura 22):
w
um espao contnuo e enderevel de 1 Mbyte de memria (20 bits do barramento de
endereos);
w
um espao para endereamento de portas de E/ S de 64 kbytes (16 bits do barramento
de endereos); e
w
uma estrutura com 14 registradores internos disponveis.
15 0
IP
CS
DS
SS
ES
15 8 7 0
AX AH AL
BX BH BL
CX CH CL
DX DH DL
15 0
SP
BP
SI
DI
F
Estrutura
de Registros
Mapeamento
de Memria
0000h
.
.
.
FFFFh 64KBytes
Mapeamento
de E/ S
00000h
V etor de Interrupo
.
.
.
003FFh
00400h
1KBytes
D ados do
R OM BIOS
Programas
residentes do
D OS
Programas do
Usurio
.
.
.
9FFFFh
A0000h
640KBytes
Memria
de V deo
R eservado
.
.
.
EFFFFh
F0000h
Programas
residentes do
R OM BIOS
.
.
.
FFFFFh 1MBytes
Figura 22 Modelo de software de um processador
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
26
4.2 Registradores
4.2.1 Registradores de Dados (Registradores de Uso Geral)
Os registradores de dados podem ser usados como:
w
4 registradores de 16 bits (AX, BX, CX e DX), para manipulao de words (16 bits); ou
w
8 registradores de 8 bits (AL, AH, BL, BH, CL, CH, DL e DH), para manipulao
de bytes (8 bits).
A terminao L (low) ou H (high) define onde ser armazenado o byte de mais baixa ordem
ou o de mais alta ordem de uma palavra de 16 bits.
Embora considerados de uso igualitrio pela maioria das instrues aritmticas, lgicas ou
de transferncia de informao, os registradores de dados apresentam algumas caractersticas
prprias que os diferenciam:
w
as instrues de multiplicao, diviso ou de transferncia de dados de uma E/ S
exigem o registrador AX como acumulador e, o registrador DX como registrador de
dados auxiliar;
w
as instrues que usam forma de endereamento de memria mais complexa, exigem
o registrador BX como registrador de base; e
w
as instrues que manipulam strings ou loops de contagem exigem o registrador CX
como registrador de contagem.
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
27
4.2.2 Registradores de Segmento
Um programa executvel deve ser constitudo por mdulos de cdigo e de dados. Para
suportar esta estrutura de programa modular, o processador aloca cada unidade lgica de um
programa em regies especficas da memria denominadas de segmentos. Por raz es de
implementao fsica, cada um destes segmentos no poder ex ceder o limite de 64 k bytes.
Como apenas um pequeno nmero de mdulos de programa e dados so necessrios em
um dado instante, este mecanismo, chamado de segmentao de memria, permite que os
programas sejam executados rapidamente e tomem pouco espao na memria principal, alm de
facilitar o desenvolvimento de programas e a sua manuteno.
Em qualquer instante, um programa em execuo s poder ter acesso a 4 segmentos:
w
um segmento de cdigo, onde ser alocado o mdulo executvel (instrues);
w
um segmento de dados, onde sero alocadas tabelas, mensagens, variveis ou
constantes (dados) necessrias execuo do programa;
w
um segmento de pilha, onde sero manipulados principalmente os endereos de
retorno de subrotinas e as variveis locais de mdulos de programa em execuo; e
w
um segmento extra de dados, onde sero alocadas tabelas, mensagens, variveis ou
constantes no suportadas pelo segmento de dados.
Para identificar e apontar cada um destes segmentos na memria, o processador utiliza 4
registradores de 16 bits:
w
CS como registrador de segmento de cdigo;
w
DS como registrador de segmento de dados;
w
SS como registrador de segmento de pilha; e
w
ES como registrador de segmento extra de dados.
A alocao fsica de um segmento pode se apresentar totalmente dissociada, parcialmente
sobreposta ou totalmente sobreposta. Na Figura 23, por exemplo, o segmento de pilha est
parcialmente sobreposto ao segmento de cdigo, o segmento de cdigo est totalmente
dissociado do segmento de dados e o segmento extra de dados est totalmente sobreposto ao
segmento de dados.
(CS)*16
(SS)*16
(DS)*16
(ES)*16
CS
SS
DS ES
Figura 23 Segmentos parcialmente sobrepostos, totalmente dissociados e totalmente sobrepostos
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
28
Gerao de Endereo Fsico em Segmentos
Para poder gerar o endereo fsico de memria correspondente ao incio de um segmento
de cdigo, de dados, de pilha ou de dados extra, o processador busca o contedo do registrador
de segmento CS, DS, SS ou ES (de 16 bits), e multiplica-o por 16 (quatro deslocamentos com
zeros esquerda). Como resultado, tem-se uma quantidade da largura do barramento de
endereos, ou seja, 20 bits. Isso significa que um segmento poder se localizar, no espao de
1 Mbyte, a partir de qualquer endereo mltiplo de 16.
Como o contedo de um registrador de segmento permite a definio apenas do
endereo da base do segmento, a manipulao de um dado dentro do espao fsico ocupado por
todo o segmento s ser completamente determinada (Figura 24) se for fornecido um
deslocamento, que caracterize a distncia relativa do dado a esta base. A fonte para este
deslocamento (offset) depende do tipo de referncia feita memria: poder ser o contedo do
registrador de instruo (busca do cdigo de uma operao), ou do registrador de ndice (acesso a
uma rea de memria de dados), ou de um registrador de base de pilha (acesso a uma rea de
memria de pilha), ou ainda uma associao de um ndice e uma base. Esta definio possvel
atravs da anlise dos modos de endereamento de memria do processador.
Registrador de Segmento 0000
Posio desejada
Endereo de base
de segmento
Endereo Fsico
Deslocamento
0000h
D eslocamento
Figura 24 E ndereo fsico
Formalmente, o endereo fsico (EF) de um determinado dado presente na memria
estar perfeitamente definido se referenciado pelo contedo de um registrador de segmento e um
deslocamento dentro do segmento, ou seja:
EF = registrador de segmento : deslocamento (representao do endereo fsico)
EF = registrador de segmento 16 + deslocamento (valor do endereo fsico)
E x emplo:
S e o contedo em CS 0200h e o contedo em IP 0450h, a prx ima instruo a ser buscada estar no endereo
EF = CS 16 + IP = 0200 16 + 0450 = 02000 + 0450 = 02450h
+
02000
0450
Base
D eslocamento
02450 E ndereo Fsico
representado por 0200h : 0450h (CS : IP).
L ogo, 0200h : 0450h a representao para o endereo fsico 02450h, dentro do segmento de cdigo.
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
29
4.2.3 Registradores Ponteiros e de ndice (Registradores de Deslocamento)
Os registradores ponteiros e de ndice so usados para armazenar valores de
deslocamento no acesso a instrues (IP) ou no acesso a certas posies da memria pilha (SP e
BP), ou ainda, na manipulao de dados ou de blocos de dados tipo matrizes ou tabelas nos
segmentos de dados (SI e DI). Especificamente tm-se:
w
IP como apontador de instruo no segmento de cdigo CS.
w
SP como ponteiro do topo do segmento de pilha corrente (SS);
w
BP como ponteiro de base do segmento de pilha (deslocamento);
w
SI como ndice fonte de estruturas de dados presentes em DS ou ES;
w
DI como ndice destino de estruturas de dados presentes em DS ou ES; e
No tratamento de transferncias de dados controladas pelos ponteiros de ndice, o SI
normalmente especifica um ndice fonte no segmento DS, enquanto DI especifica um ndice
destino no segmento ES.
4.2.4 Registrador de Flags
O registrador de flags (Figura 25) composto de 16 bits independentes, sendo que apenas
9 bits so utilizados como flags:
w
6 flags de estado (status flags): descrevem os resultados gerados por uma instruo;
w
3 flags de controle: controlam a operao do processador; e
OF DF IF TF SF ZF

AF PF CF
4 5 6 7 8 9 1 2 3 10 11 12 13 14 15 0
flags de estado
flags de controle

bits no usados em modo real
bits usados em modo protegido
Figura 25 R egistrador de flags
Flags de Estado:
Os flags de estado, usados normalmente pelo programador como auxiliares na hora de
uma tomada de deciso, so setados (1) ou resetados (0) aps a execuo de instrues
aritmticas e lgicas, refletindo propriedades caractersticas do resultado.
T odos os flags de estado vo para o nvel lgico 1 para indicar uma ao correspondente ao seu nome.
Os flags de estado presentes no processador so:
w
ZF z ero flag (flag zero): indica que o resultado de uma operao zero.
w
SF sign flag (flag de sinal): indica que o resultado de uma operao negativo.
w
OF overflow flag (flag de estouro): indica que o resultado de uma operao com nmeros
sinaliz ados excede o limite de possvel de representao do operando destino.
w
CF carry flag (flag de carregamento): indica, em operaes com nmeros no sinaliz ados,
que o resultado de uma operao no cabe no operando destino (transporte ou
emprstimo em operaes aritmticas, ou bit expulso em deslocamento ou rotao);
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
30
w
AF aux iliar carry flag (flag de carregamento auxiliar): indica que um ajuste, aps uma
operao com nmeros BCD , necessrio.
w
PF parity flag (flag de paridade): usado para indicar se o resultado de uma operao
possui um nmero par de bits 1 (comunicaes de dados).
Flags de Controle:
O flags de controle controlam operaes do processador, modificando o comportamento
de instrues que sero executadas.
Os flags de controle presentes no processador so:
w
DF direction flag (flag de direo): controla, nas instrues com string, se os
registradores SI e DI tero seus contedos automaticamente incrementados (DF= 0)
ou decrementados (DF= 1) acesso direto ou inverso a strings.
w
IF interrupt flag (flag de interrupo): mascara, com IF= 0, pedidos de interrupo
feitos atravs da entrada INTR do microprocessador.
w
TF trap flag: coloca, com TF= 1, o processador no modo de operao passo a
passo.
N o modo de operao passo a passo, aps a ex ecuo de cada instruo do programa, ocorre uma
interrupo de passo nico a qual, aciona uma rotina de depurao. Quando o microprocessador ex ecuta a
interrupo de passo nico, o T F=1 salvo na pilha e resetado para permitir a ex ecuo normal da rotina de
depurao. N o retorno desta rotina, a condio T F=1 ser novamente reativada (Figura 26).
Programa
2
5
R otina de D epurao
6
3
1
4

1 4
2 3 6
5
Programa
R otina de
D epurao
Figura 26 Modo de operao passo a passo
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
31
4.3 Pilha
A pilha de um processador uma rea de memria usada para guardar dados,
normalmente valores presentes nos registradores, que, devido complexidade do programa,
precisam ser alterados, mas que devem depois recuperar seu antigo valor. As instrues que
fazem isso so, basicamente PUSH e POP.
Os usos mais comuns da pilha so:
w
para salvar endereos de retorno para instrues na chamada e nos retornos de
subrotinas e ocorrncias de interrupes;
w
para salvar o contedo de registradores quando ocorre uma chamada a subrotina;
w
para passar informaes de uma rotina para outra; e
w
para armazenar, temporariamente, resultados durante operaes complexas.
No processador temos o registrador SS que contm o valor do segmento reservado para a
pilha e o ponteiro SP que indica, dentro desse segmento, qual o offset do topo da pilha.
Aps a execuo de instrues que acessam dados na pilha, o registrador SP
automaticamente alterado (decrementado na insero e incrementado na retirada), indicando o
novo topo da pilha. SP assume, inicialmente o valor 0000h, quando nenhum dado est presente
na pilha
O registrador BP indica um deslocamento qualquer dentro da pilha, entre os endereos da
base e do topo da pilha. BP assume, inicialmente, o valor 0000h (offset 0000), apontando para a
base do segmento, podendo receber atribuies durante a execuo do programa.
Todo acesso pilha feito em words, isto , no se pode acess-la para guardar apenas o
contedo dos registradores AL ou CL, sendo necessrio guardar todo o AX ou o CX.
Uma caracterstica interessante e que deve ser notada que a pilha do processador tem
sua base num endereo de memria alto dentro do segmento de pilha, crescendo em direo
memria de endereo baixo (Figura 27).
offset
0000
0001
.
.
.
ltimo dado
. . .
FFFA
FFFB
3
o
dado
FFFC
FFFD
2
o
dado
FFFE
FFFF
1
o
dado
Segmento
de Pilha
Base (Incio) do segmento = Fim da Pilha
SP
Indica a posio (deslocamento) onde
foi colocada a ltima palavra na pilha
(Topo da Pilha)
Fim do segmento = Incio da Pilha
BP
Indica um deslocamento dentro da pilha
(inicialmente aponta para a base)
SS
A ponta para o offset 0000
(base do segmento de pilha)
Figura 27 Segmento de pilha
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
32
4.4 Modos de Endereamento de Memria
Quando um processador executa uma instruo, ele realiza uma determinada funo
sobre um ou dois dados. Estes dados, chamados de operandos, podem ser parte da instruo,
podem residir em um registrador interno do processador, podem estar armazenados em um
endereo de memria, ou podem estar presente em uma porta de E/ S. Para acessar estas
diferentes localizaes dos operandos, o processador apresenta sete modos de endereamento de
dados: endereamento por registro, endereamento imediato, endereamento direto,
endereamento indireto por registro, endereamento por base, endereamento indexado, e
endereamento por base indexada. Em geral, as instrues Assembly utilizam dois operandos: um
operando deve ser um registrador e o outro operando (dado imediato, offset ou registrador) identifica o modo
de endereamento utilizado.
Devemos entender os modos de endereamento como as formas possveis de se
manipular dados de/ para a memria. Portanto, os casos no includos nos endereamentos
apresentados devem ser entendidos como no possveis, uma vez que provocam erros de
compilao.
Para entender as figuras que explicam os modos de endereamento, deve-se imaginar o
comportamento adotado pelo processador para executar uma instruo. Os seguintes passos
devem ser seguidos:
w
Busca da instruo na memria (segmento de cdigo): Gerao do endereo fsico
correspondente instruo que ser executada (composio CS : IP).
w
D ecodificao da instruo: Transformao de Assembly para linguagem de mquina.
w
Busca dos operandos para ex ecuo da instruo: Quando o operando estiver localizado na
memria (dado por um deslocamento), gerao do endereo fsico correspondente
ao deslocamento do dado no segmento correspondente (DS, ES ou SS), atravs da
composio registrador de segmento : deslocamento.
w
E x ecuo da instruo: Verificao das modificaes em registradores e segmentos de
memria.
Algumas observaes quanto modificao em registradores devem ser feitas:
w
Os registradores de segmento (CS, DS, ES, SS) no modificam seu valor durante a
execuo de um programa a menos que seja feito algum redirecionamento.
w
O ponteiro de instruo (IP), aponta sempre para a instruo corrente, sendo
incrementado automaticamente aps a execuo de uma instruo. O IP, portanto,
no deve receber atribuies num programa.
w
O registrador SP aponta sempre para o topo da pilha e seu valor alterado
(incrementado ou decrementado) automaticamente aps a execuo de instrues
para manipulao de pilha.
w
Os registradores AX, BX, CX, DX, SI, DI e BP podem receber atribuies e, dessa
forma, ter seus valores alterados.
w
O registrador de flags (F) pode ser alterado a partir de atribuies (atravs das
instrues para manipulao de flags) ou depois da execuo de alguma instruo (flags
de estado).
Uma observao importante deve ser feita quanto utilizao de var iveis. As variveis,
largamente utilizadas por linguagens de alto nvel, nada mais so que simples representao de um
deslocamento de memria. Dessa forma, todas as observaes feitas para os modos de
endereamento que manipulam deslocamentos so vlidas para utilizao com variveis.
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
33
4.4.1 Modo de Endereamento por Registro
No modo de endereamento por registro, os dois operandos so registradores.
Outro operando: registrador.
E x emplo (Figura 28): MOV AX, BX
AX BX
Endereo Opcode
(linguagem
de mquina)
Mneumnico
(linguagem assembly)
S egmento de Cdigo
01010h XX Instruo anterior
01011h 8B MOV AX, BX
01012h C3
01013h XX Prxima instruo
Situao anterior
ex ecuo da instruo
0 0 1 3 IP
0 1 0 0 CS
1 2 3 4 AX
1 2 3 4 BX
Situao aps a
ex ecuo da instruo
CS : IP
0 0 1 1 IP
0 1 0 0 CS
x x x x AX
1 2 3 4 BX
CS : IP
010016+ 0011
Figura 28 Modo de E ndereamento por R egistro
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
34
4.4.2 Modo de Endereamento Imediato
No modo de endereamento imediato, um dos operandos est presente no byte seguinte
ao cdigo da instruo (opcode). Se bytes de endereamento seguem o opcode, ento o dado a ser
transferido de maneira imediata vir logo aps os bytes de endereamento.
Outro operando: nmero (dado imediato).
E x emplo (Figura 29): MOV AL, 17h
AL 17h
Endereo Opcode
(linguagem
de mquina)
Mneumnico
(linguagem assembly)
S egmento de Cdigo
01012h XX Instruo anterior
01013h B0 MOV AL, 17h
01014h 17
01015h XX Prxima instruo
0 0 1 3 IP
0 1 0 0 CS
1 2 3 4 AX
S ituao anterior
ex ecuo da instruo
0 0 1 5 IP
0 1 0 0 CS
1 2 1 7 AX
S ituao aps a
ex ecuo da instruo
CS : IP
CS : IP
Figura 29 Modo de E ndereamento Imediato
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
35
4.4.3 Modo de Endereamento Direto
O modo de endereamento direto feito somando-se os dois bytes seguintes ao opcode ao
DS, para compor um novo endereo absoluto.
Outro operando: deslocamento dado por um nmero.
O deslocamento pode ser o nome de uma varivel, uma vez que uma varivel um rtulo
de uma posio de memria de dados.
E x emplo (Figura 30): MOV BX, [1102h]
BX (DS : 1102h)
[ ] indica um deslocamento no segmento de dados (D S).
Para faz er o endereamento atravs de E S ou SS, o segmento deve ser especificado ex plicitamente. Por ex emplo,
MOV BX , (E S:1102h)
Endereo Opcode
(linguagem
de mquina)
Mneumnico
(linguagem assembly)
S egmento de Cdigo
01014h XX Instruo anterior
01015h 8B MOV BX, [1102h]
01016h 1E
01017h 02
01018h 11
01019h XX Prxima instruo
S egmento de D ados
14102h 20h LSB
14103h 51h MSB
0 0 1 5 IP
0 1 0 0 CS
1 3 0 0 DS
1 2 3 4 BX
S ituao anterior
ex ecuo da instruo
0 0 1 9 IP
0 1 0 0 CS
1 3 0 0 DS
5 1 2 0 BX
S ituao aps a
ex ecuo da instruo
CS : IP
CS : IP
DS : 1102
Figura 30 Modo de E ndereamento D ireto
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
36
4.4.4 Modo de Endereamento Indireto por Registro
Nesse modo de endereamento, qualquer registrador pode ser utilizado.
Outro operando: deslocamento dado por um registrador.
E x emplo (Figura 31): MOV AX, [BX]
AX (DS : BX)
BX aponta (ponteiro) para um dado no segmento de dados (D S).
[BX] contedo do endereo apontado por BX no segmento de dados.
Endereo Opcode
(linguagem
de mquina)
Mneumnico
(linguagem assembly)
S egmento de Cdigo
01018h XX Instruo anterior
01019h 8B MOV AX, [BX]
0101Ah 07
0101Bh XX Prxima instruo
S egmento de D ados
18120h 31h LSB
18121h 00h MSB
0 0 1 B IP
0 1 0 0 CS
1 3 0 0 DS
5 1 2 0 BX
S ituao aps a
ex ecuo da instruo
0 0 3 1 AX
CS : IP
DS : BX
0 0 1 9 IP
0 1 0 0 CS
1 3 0 0 DS
1 2 1 7 AX
S ituao anterior
ex ecuo da instruo
CS : IP
5 1 2 0 BX
Figura 31 Modo de E ndereamento Indireto por R egistro
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
37
4.4.5 Modo de Endereamento por Base
Utilizado no tratamento de vetores. Apenas os registradores BX ou BP (quando estiver
usando a pilha) podem ser utilizados como base.
Os vetores so armazenados no segmento de dados de forma linear, de acordo com a
ordem imposta pelos ndices correspondentes. Para referenciar um elemento v
i
v[i] de um vetor
v formado por n elementos
v = {v
0
, v
1
, v
2
, ... , v
n-1
} {v[0], v[1], v[2], ... , v[n-1]}
o processador utiliza a noo de deslocamento, que depende no somente do ndice, mas
tambm da quantidade de bytes de cada elemento. Dessa forma, cada elemento do vetor
representado a partir do elemento inicial v[0] v+0 = v, adicionado de um deslocamento. A
Figura 32 ilustra a o armazenamento e a representao de vetores com elementos de 1 byte na
memria. De forma geral, para um vetor cujos elementos so de b bytes, o elemento i ser dado
por: v[i] = v + i b.
Segmento de D ados
v[0] v+0
v[1] v+ 1
v[2] v+ 2
. . .
v[n-1] v+ n-1
Figura 32 Forma de armaz enamento e representao de vetores na memria
Outro operando: deslocamento dado por um registrador (base) + nmero (deslocamento).
E x emplo (Figura 33): MOV CX, [BX+0102h] CX (DS : (BX+ 0102h))
[BX+ 0102h] = base (v) + deslocamento adicional deslocamento adicional = ndice quantidade de bytes
Endereo Opcode
(linguagem
de mquina)
Mneumnico
(linguagem assembly)
S egmento de Cdigo
0101Ah XX Instruo anterior
0101Bh 8B MOV CX, [BX+0102h]
0101Ch 8F
0101Dh 02
0101Eh 01
0101Fh XX Prxima instruo
S egmento de D ados
18222h FFh LSB
18223h 01h MSB
0 0 1 B IP
0 1 0 0 CS
1 3 0 0 DS
x x x x CX
Situao anterior
ex ecuo da instruo
0 0 1 F IP
0 1 0 0 CS
1 3 0 0 DS
5 1 2 0 BX
Situao aps a
ex ecuo da instruo
CS : IP
CS : IP
5 1 2 0 BX
0 1 F F CX
DS : (BX+0102)
Figura 33 Modo de E ndereamento por Base
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
38
Regras para Especificao de ndices:
As seguintes regras devem ser observadas para endereamento de dados:
w
os ndices podem estar em qualquer ordem;
w
nomes de registradores devem estar sempre entre colchetes [ ];
w
podem ser combinados nomes de registradores e nmeros (endereos constantes) em
um nico par de colchetes [ ], desde que separados pelo sinal + ; e
w
se o nmero vier antes do registrador, no necessrio usar o sinal + .
N otao mais recomendada: varivel [registrador de base] [registrador de ndice] + constante
E x emplos: A[BX][SI]+ 8 A[BX][SI+ 8] A[8+ SI+ BX] [A+ SI+ BX+ 8]
Matriz : A[BX][SI] [A+ BX+ SI]
V etor: A[BX] ou A[SI] [BX+ A] ou [A+ SI] [BX+ SI] (BX contm o endereo de A )
4.4.6 Modo de Endereamento Direto Indexado
Esse modo de endereamento tambm usado para manipulao de vetores e feito
utilizando-se os registradores SI ou DI como indexadores. Um deslocamento somado a um
desses registradores.
Outro operando: deslocamento dado por um nmero (base) + um registrador de ponteiro
de ndice (deslocamento adicional).
E x emplo (Figura 34): MOV DX, [0100h+SI]
DX (DS : 0100h+ SI)
[0100h+ SI] = base (v) + deslocamento adicional (ndice do elemento nmero de bytes)
Endereo Opcode
(linguagem
de mquina)
Mneumnico
(linguagem assembly)
S egmento de Cdigo
0101Eh XX Instruo anterior
0101Fh 8B MOV DX, [0100h+SI]
01020h 94
01021h 00
01022h 01
01023h XX Prxima instruo
S egmento de D ados
13120h 45h LSB
13121h 1Fh MSB
0 0 1 F IP
0 1 0 0 CS
1 3 0 0 DS
x x x x DX
S ituao anterior
ex ecuo da instruo
0 0 2 3 IP
0 1 0 0 CS
1 3 0 0 DS
0 0 2 0 SI
S ituao aps a
ex ecuo da instruo
CS : IP
CS : IP
0 0 2 0 SI
1 F 4 5 DX
DS : (0100+SI)
Figura 34 Modo de E ndereamento Index ado
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
39
4.4.7 Modo de Endereamento por Base Indexada
Utilizado para a manipulao de matrizes na forma A
mx n
. Usa BX ou BP (quando estiver
usando a pilha) para indicar o nmero da linha, e SI ou DI para o nmero da coluna.
Outro operando: deslocamento dado por um nmero (base) + um registrador (nmero da
linha) + um registador de ponteiro de ndice (nmero da coluna), ou, alternativamente, um
registrador (base) + um nmero (nmero da linha) + um registador de ponteiro de ndice
(nmero da coluna).
As matrizes, apesar de serem entendidas como dados bidimensionais, so armazenadas no
segmento de dados de forma linear, linha a linha. Uma matriz A formada por mn elementos,
possui representao matemtica dada por
A =
n m
mn m m m
n
a a a a
a a a a

1
1
1
]
1




3 2 1
1 13 12 11
L
L L L L
L

n m
] n ][ m [ a ] 3 ][ m [ a ] 2 ][ m [ a ] 1 ][ m [ a

] n ][ 1 [ a ] 3 ][ 1 [ a ] 2 ][ 1 [ a ] 1 ][ 1 [ a

1
1
1
]
1

L
L L L L
L
e representao computacional equivalente dada por
A =
n m
n m m m m
n
a a a a
a a a a

1
1
1
]
1

) 1 ( ), 1 ( 2 ), 1 ( 1 ), 1 ( 0 ), 1 (
) 1 ( 0, 0,2 0,1 0,0



L
L L L L
L
ou, alternativamente,
A =
n m
n m a m a m a m a
n a a a a

1
1
1
]
1

] 1 ][ 1 [ ] 2 ][ 1 [ ] 1 ][ 1 [ ] 0 ][ 1 [

] 1 ][ 0 [ ] 2 ][ 0 [ ] 1 ][ 0 [ ] 0 ][ 0 [
L
L L L L
L
podendo ser representada por um vetor correspondente, composto por m sub-vetores na forma
A =
1
1
1
1
]
1

] 1 [

] 1 [
] 0 [
m A
A
A
L
no qual cada sub-vetor A [i] possui n elementos.
Para referenciar um elemento A
ij
A [i][j] de uma matriz A formada por mn elementos o
processador utiliza, da mesma forma que para vetores, a noo de deslocamento. No caso de
vetores, apenas um deslocamento adicional suficiente para caracterizar um elemento. Para
matrizes, no entanto, dois deslocamento so necessrios: um para indicar o nmero da linha e
outro para o nmero da coluna s quais o elemento pertence. Dessa forma, cada elemento da
matriz representado a partir do elemento inicial a[0][0] A + 0+ 0 = A , adicionado de dois
deslocamentos (linha+ coluna). A Figura 35 ilustra o armazenamento e a representao de
matrizes com elementos de 1 byte na memria, bem como o vetor linear correspondente a esta
representao.
A rquitetura de Software de um Microprocessador
Anna Catharina/ CEFET-RN/ 2000
40
De forma geral, para uma matriz cujos elementos so de b bytes, o elemento (i, j) ser dado
por: a[i][j] = A + i n b + j b.
Segmento de D ados
m linhas R epresentao V etor Correspondente
A[0]
a[0][0]
A +0n+0 = Base
v[0]
a[0][1]
A +0n+1
v[1]
. . . . . . . . .
a[0][n-1]
A +0n + (n-1)
v[n-1]
A[1]
a[1][0]
A +1n+0
v[(n-1)+ 1] = v[n]
a[1][1]
A +1n + 1
v[(n-1)+ 2] = v[n+ 1]
. . . . . . . . .
a[1][n-1]
A +1n + (n-1)
v[n+ (n-1)] = v[2n+ 1]
. . . . . . . . . . . .
A[m]
a[m-1][0]
A + (m-1)n+0 v[(m-1)n]
a[m-1][1]
A + (m-1)n+1 v[(m-1)n+ 1]
. . . . . . . . .
a[m-1][n-1]
A + (m-1)n+ (n-1) v[(m-1)n+ (n-1)] = v[mn-1]
n colunas
n colunas
n colunas
Figura 35 Forma de armaz enamento e representao de matriz es na memria
E x emplo (Figura 36): MOV AH, [BX+0100h+SI]
AH (DS : (BX+ 0100h+ SI))
[BX+ 0100h+ SI] = linha bytes + base (A ) + coluna bytes base (A ) + linha bytes + coluna bytes
0 1 0 0 CS
1 3 0 0 DS
5 1 2 0 BX
S ituao anterior
ex ecuo da instruo
0 0 2 7 IP
0 1 0 0 CS
1 3 0 0 DS
0 0 2 0 SI
Situao aps a
ex ecuo da instruo
CS : IP
CS : IP
0 0 3 1 AX
5 1 2 0 BX
DS : (0100+BX+SI)
Endereo Opcode
(linguagem
de mquina)
Mneumnico
(linguagem assembly)
S egmento de Cdigo
01022h XX Instruo anterior
01023h 8B MOV AH, [BX+0100h+SI]
01024h 80
01025h 00
01026h 01
01027h XX Prxima instruo
S egmento de D ados
18240h 11h
18241h A3h
0 0 2 3 IP
1 1 3 1 AX
0 0 2 0 SI
Figura 36 Modo de E ndereamento por Base Index ada
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
41
5 Programao em Linguagem Assembly
5.1 Segmentao e Estrutura de Programao (Programa Bsico)
As declaraes de um programa fonte escrito em assembly (o que corresponde a cada
linha de entrada) podem ser:
w
Comentrios;
w
Instrues assembly (linguagem); ou
w
Diretivas do assembler (montador).
Os comentrios permitem que explicaes sobre determinadas linhas de programa sejam
realizadas sem ocasionar erro de compilao. As instrues assembly indicam as ordens que
devem ser executadas pela CPU e so transcries (ou notaes) simplificadas, que
correspondem aos cdigos binrios das instrues de mquina. As diretivas do assembler
(pseudo-operaes) so comandos especiais com o objetivo de facilitar a escrita de um programa
sob forma simblica. No so incorporadas ao programa objeto (extenso .obj) e servem
simplesmente como orientao para o montador. Tanto as instrues assembly quanto as
diretivas do assembler podem incluir operadores. Os operadores do ao assembler informaes
adicionais acerca dos operandos, nos locais onde possam existir ambigidades.
Apesar das declaraes poderem ser escritas comeando em qualquer posio na linha, a
Figura 37 ilustra a conveno de alinhamento mais utilizada.
Nome
(Coluna 1)
Soma DW 5 DUP (?) ; vetor soma
Opcode
(Coluna 9)
Operando
(Coluna 17)
Comentrio
(Coluna 41)
Figura 37 Conveno para alinhamento de declaraes
As instrues e diretivas de um programa Assembly podem ser escritas em maisculas ou
minsculas (Assembly uma linguagem no case-sensitive); entretanto, as seguintes sugestes so
dadas de forma a tornar o programa mais legvel:
w
palavras reservadas (instrues e diretivas) devem ser escritas em letras maisculas; e
w
nomes em geral (comentrios e variveis) podem ser utilizadas letras minsculas ou
maisculas, dando-se preferncia s minsculas.
5.1.1 Sintaxe dos Comentrios
Os comentrios podem ser utilizados de trs formas diferentes:
w
como uma linha em branco;
w
como uma linha iniciada com o caractere ponto e vrgula (;) e seguida de texto; ou
w
depois de uma instruo, bastando adicionar o caractere (;) para delimitar o incio do
comentrio.
E x emplos de comentrios:
; comentario como uma linha iniciada com ponto e virgula
MOV AX, 1234H ; comentario depois de uma instrucao
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
42
5.1.2 Sintaxe das Instrues e Diretivas do Assembly
Para os montadores MASM (Macro ASseMbler) e TASM (Turbo ASseMbler), as
instrues devem ser escrita, obrigatoriamente, uma por linha, podendo ter at quatro campos,
delimitados de acordo com a seguinte ordem:
[label:] mneumnico [operando(s)] [; comentrio]
onde label o rtulo dado ao endereo da instruo (no segmento de cdigo), mneumnico
representa a instruo, operandos so os dados operados pela instruo e comentrio qualquer texto
escrito para elucidar ao leitor do programa o procedimento ou objetivo da instruo. Destes,
apenas o campo mneumnico sempre obrigatrio. O campo operandos depende da instruo
includa na linha e os campos label e comentrio so sempre opcionais. Todos os valores numricos
esto, por default, em base decimal, a menos que outra base seja especificada.
5.1.3 Modelo de Programa Assembler Simplificado (.EXE)
; definio do modelo desejado
; ****************************************************************************
DOSSEG
.MODEL modelo
; definio da base numrica desejada
; ****************************************************************************
[.RADIX base]
; definio do segmento de pilha
; ****************************************************************************
.STACK [tamanho]
; rea de definio de equivalncias
; ****************************************************************************
; equivalncias
; criao do segmento de dados
; ****************************************************************************
.DATA
; variveis
; incio do segmento de cdigo
; ****************************************************************************
.CODE
; procedimento principal
; ****************************************************************************
Principal PROC NEAR ; incio do procedimento principal
MOV AX, @DATA ; instrues para que DS e ES
MOV DS, AX ; apontem para a rea de
MOV ES, AX ; dados criada
; corpo do programa principal
MOV AH, 4Ch ; funo para trmino de programa
INT 21h ; atravs da INT 21h
Principal ENDP ; final do procedimento principal
END Principal ; final do programa
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
43
Observao: Quando um programa carregado, os registradores de dados DS e ES no vm
apontando para os segmentos de dados, devendo ser implementado atravs das instrues
(primeira linha do cdigo do programa principal):
MOV AX, @DATA ; copia para AX o endereo da rea de dados
MOV DS, AX ; faz DS apontar para a rea de dados
MOV ES, AX ; faz ES apontar para a rea de dados
5.1.4 Diretivas Simplificadas de Definio de Segmentos
O compilador implementa uma forma simplificada de definio de segmentos, a qual
pode ser usada na maioria dos programas .ex e. Muitos defaults assumidos so os mesmos usados
pelos compiladores das linguagens de alto nvel, facilitando a criao de mdulos que sero
ligados a programas criados em outras linguagens. Para que o montador assuma uma dada
estrutura, suficiente a definio de um modelo. As principais diretivas utilizadas no modelo
simplificado so: DOSSEG, .MODEL, .STACK, .DATA, .CODE.
DOSSEG, .MODEL:
A diretiva .MODEL usada em conjunto com a diretiva DOSSEG para definir um
modelo e ao mesmo tempo especificar ao ligador (ou linkador, ou linkeditor) que os segmentos
devem ser agrupados na ordem convencional adotada pelo sistema operacional para programas
escritos em linguagens de alto nvel.
Sintax e:
DOSSEG
.MODEL [modelo]
Os modelos possveis so:
w
TINY, no qual um nico segmento de 64 kbytes ser definido para acomodar o
cdigo, a pilha e os dados do programa. Programas com caractersticas de .com;
w
SMALL, modelo default, no qual todo o cdigo ser agrupado num mesmo segmento
de 64KB, enquanto os dados e a pilha estaro num outro segmento de 64KB;
w
MEDIUM, no qual o cdigo poder ser maior que 64KB, mas os dados e a pilha
estaro num mesmo segmento;
w
COMPACT, no qual o cdigo menor que 64KB e dados e pilha podem ser
maiores que 64KB;
w
LARGE, no qual tanto o cdigo quanto os dados podem ser maiores que 64KB.
w
HUGE, semelhante ao LARGE, porm permite a criao de tabelas (matrizes) de
dados maiores que 64KB; e
w
FLAT, onde todos os dados e o cdigo esto num nico segmento de 4 Gbytes
(disponvel apenas para operaes em modo protegido).
Tabela 4 A tribuies default para os modelos de programa
Modelo de
Memria
Atributo para
o Cdigo
Atributo
para Dados
Sistema Operacional
Segmento
nico
TINY NEAR NEAR DOS Sim
SMALL NEAR NEAR DOS e Windows No
MEDIUM FAR NEAR DOS e Windows No
COMPACT NEAR FAR DOS e Windows No
LARGE FAR FAR DOS e Windows No
HUGE FAR FAR DOS e Windows No
FLAT NEAR NEAR Windows NT Sim
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
44
.STACK: Permite a criao de um segmento de pilha. O tamanho default 1 kbyte, podendo ser
alterado na prpria diretiva.
Sintax e: .STACK [tamanho_da_pilha]
.DATA: Marca o incio do segmento de dados, no qual todas as variveis, tabelas e mensagens
devem ser colocadas.
Sintax e: .DATA
.CODE: Marca o incio do segmento de cdigo do programa. No caso de um programa possuir
mais de um segmento de cdigo, um nome deve ser especificado para cada segmento.
Sintax e: .CODE [segmento]
Observao: A abertura de um novo segmento implica o fechamento do anterior.
5.1.5 Operadores de Referncia a Segmentos no Modo Simplificado
Os principais operadores de referncia a segmentos utilizados no modelo simplificado
so: @DATA, @CODE e @CURSEG.
O operador @DATA usado para referenciar o grupo compartilhado por todos os
segmentos de dados, o operador @CODE usado para referenciar o segmento de cdigo e
operador @CURSEG permite referenciar o segmento corrente.
5.2 Ferramentas para Montagem, Ligao e Depurao de Programas
5.2.1 Montador Assembler (TASM)
TASM.EXE Montador para a linguagem Assembly.
T erminao dos arquivos fonte: .ASM
Sintax e: TASM [opes] fonte [,objeto] [,listagem] [,referncia_cruzada] [;]
L inha de Comando mais Comumente Utiliz ada: TASM /z/zi programa
Opo Significado
/z Display source line with error message
/zi Debug info: zi= full
5.2.2 Ligador (TLINK)
TLINK.EXE Ligador cria um programa executvel a partir de um objeto.
Sintax e: TLINK [opes] objetos [, executvel] [, mapa] [, bibliotecas] [;]
L inha de Comando mais Comumente Utiliz ada: TLINK /x/v programa
Opo Significado
/x No map file at all
/v Full symbolic debug information
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
45
5.2.3 Depurador Turbo Debugger (TD)
TD.EXE Depurador permite a depurao de programas.
Sintax e: TD [opes] [programa [argumentos]] x (desabilita a opo x )
L inha de Comando mais Comumente Utiliz ada: TD programa
Flags
Registradores
Segmento de Pilha
Segmento de Cdigo
Segmento de Dados
Figura 38 T ela de depurao do Turbo Debugger
Funes:
F2: brkpt (insere um break point)
F4: here (executa at a posio do cursor)
F7: trace (executa linha por linha, sem entrar nos desvios e subotinas)
F8: step (executa linha por linha, entrando nos desvios e subotinas)
F9: run (executa at o final do programa ou at um break point)
CTRL-F2: reset (reinicia o programa, sem precisar sair do depurador)
T ela com os Segmentos e R egistradores: View, CPU.
V er o Segmento de dados: Clica com o boto esquerdo do mouse em cima da janela do segmento de
dados (para selecionar a janela), clica com o boto direito (aparece uma janela) e seleciona
Goto.... O incio do segmento de dados em DS:0000.
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
46
5.3 Diretivas do Assembler
5.3.1 Diretivas de Equivalncia para o Programa (Definio de Constantes)
So diretivas que ajudam a documentar melhor o programa, tornando-o claro para quem
o estudar.
EQU: Usada para atribuir uma expresso (numrica ou no) a um smbolo. Sempre que este
smbolo aparecer no programa, o montador o substituir pela expresso qual ele est
associado. Um valor fix ado por EQU no poder ser redefinido. A expresso pode ser um
nmero, um caractere, uma string.
Sintax e: nome EQU expresso
5.3.2 Diretiva de Definio de Base Numrica
.RADIX:
A base default a decimal, podendo ser modificada atravs da diretiva .RADIX.
Quando a base fixada como atual for hexadecimal, deve-se ter o cuidado com valores
terminados por D ou B. Nestes casos, deve-se necessariamente usar o H aps o valor pois a
ausncia levaria o montador a reconhecer o valor como na base decimal ou binria, o que
fatalmente implicaria um erro de sintaxe ou mesmo de lgica.)
Sintax e: .RADIX base
O operando base pode assumir os valores 2 (binria), 8 (octal), 10 (decimal) ou 16 (hex adecimal).
A forma de representar nmeros nas bases possveis colocando as letras B (binria),
Q (octal), H (hexadecimal) e D (decimal) depois do nmero. E x emplo: 0A 2h, 34d, 1101b.
5.3.3 Diretivas de Definio de rea de Armazenamento de Dados (Variveis)
O acesso a uma varivel sempre deve ser feito por um registrador de tipo compatvel com
a definio da varivel. As variveis podem ou no ser inicializadas na definio (utilizao do
operador ?). Para reservar memria para dados do tipo variveis, tabelas (matrizes) e mensagens
(strings), podem ser utilizadas as diretivas DB, DW, DD, DQ, DT.
DB: Para definio de variveis, tabelas e mensagens, alocando espao de 1 byte (8 bits) para cada
um dos elementos. Os valores podem variar de 128 a 127 (-2
7
a 2
7
-1) ou de 0 a 255 (0 a 2
8
-1).
Principal uso: nmeros pequenos ou caracteres.
DW: Para definio de variveis, tabelas e vetores, alocando 2 bytes (16 bits) para cada elemento.
Principal uso: nmeros maiores e endereos (offset). V ariao: -2
15
a 2
15
-1 ou de 0 a 2
16
-1)
DD: Para definio de variveis ou palavras duplas de 4 bytes (32 bits), ou real curto (1 bit mais
significativo para o sinal, 8 bits para o expoente e 23 bits para mantissa). Os valores inteiros
podem variar de -2
31
a 2
31
-1 ou de 0 a 2
32
-1. Principal uso: endereos completos (segmento : offset).
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
47
DQ: Para definio de palavras qudruplas de 8 bytes (64 bits), ou real longo (1 bit mais
significativo para o sinal, 11 bits para o expoente e 52 bits para mantissa). Os valores inteiros
podem variar de 2
63
a 2
63
-1 ou de 0 a 2
64
-1. N o ex iste uma forma para acessar os elementos diretamente,
sendo necessrio um mtodo com uso de endereamento indireto com registrador. Principal uso: pelo
coprocessador matemtico.
DT: Para definio de BCD compactado de 10 bytes (9 bytes para valor + 1 byte para sinal). Uso
principal: pelo coprocessador matemtico.
Sintax e: [varivel] diretiva [tipo PTR] expresso1 [,expresso 2, expresso 3, ...]
O tipo pode ser: BY T E , W OR D , D W OR D , QW OR D , T W OR D ou o nome de uma estrutura.
Regras para Especificao de Nomes:
w
Nomes podem conter letras, nmeros (dgitos de 0 a 9) e os caracteres ? _ $ @
w
O primeiro caractere no pode ser um nmero. Portanto, nmeros devem,
obrigatoriamente, comear com um dgito. E x emplo: A A h (nome) 0A A h (nmero).
w
Nomes podem possuir qualquer quantidade de caracteres; entretanto, apenas os 31
primeiros sero utilizados pelo compilador. Logo, nomes devem ser pequenos e significativos.
A teno! N meros comeam sempre com dgitos e variveis comeam sempre com letras!
Declarao de Vetores:
Como todas as variveis, os vetores so declarados atravs da forma geral. A diretiva
define o tipo dos elementos do vetor e pode ser DB, DW, DD ou DQ, de acordo com a
quantidade de bytes desejados. A expresso representa a inicializao dos elementos. A
inicializao de vetores pode ser feita de duas formas: a partir da enumerao dos valores, ou de
forma genrica, atravs do operador DUP.
E x emplos:
X db A, 0Ah, 3d, 0110b
Inicializa 5 elementos do vetor X, cada elemento do tipo byte, com valores iniciais A
(ASCII), A (hexadecimal), 3 (decimal) e 0110 (binrio).
Y dw NMAX dup (?)
Inicializa NMAX elementos do vetor Y, todos do tipo word e com valor inicial qualquer.
NMAX deve ser uma constante.
Declarao de Strings:
As strings so vetores especiais formados por caracteres. Como os caracteres so
elementos de 1 byte, as a diretiva de declarao de strings deve ser obrigatoriamente DB.
E x emplos:
X db V,I,N,I,C,I,U,S
Y DB VINICIUS
As duas strings so inicializados com a mesma seqncia de caracteres Vinicius.
Declarao de Matrizes:
As matrizes, como j foi visto, so conjuntos de vetores, associados em 2 ou mais
dimenses. A forma de declarar matrizes semelhante a de vetores, apenas com uma
modificao lgica.
X DB 1,5,2,8,3,5
Inicializa tanto um vetor de 6 elementos como uma matriz 23 ou 32 ou 16 ou 61.
Y DW M DUP (N DUP (?))
Inicializa MN elementos de uma matriz mn, todos do tipo word e valor inicial qualquer.
Lembrando que N e M devem ser constantes!
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
48
5.3.4 Diretivas de Definio de Procedimentos
No programa assembly, todo o cdigo deve estar dentro de um ou mais procedimentos.
Basicamente, um procedimento uma subrotina, com a particularidade que o prprio mdulo
principal tratado como um procedimento pelo sistema operacional.
PROC, ENDP:
O par de diretivas PROC, ENDP usado para limitar um procedimento e determinar o
seu atributo NEAR ou FAR.
Sintax e:
nome_do_procedimento PROC [NEAR ou FAR]
;
; corpo do procedimento
;
nome_do_procedimento ENDP
Se um procedimento tem atributo FAR, significa que ser chamado com uma instruo
CALL inter-segmento; se for NEAR, por um CALL intra-segmento, afetando apenas o IP.
5.3.5 Diretivas de Controle do Assembly
END: Marca o fim de um programa fonte.
Sintax e: END [nome_de_entrada_do_programa]
ORG: Define um novo valor para o contador de locao ou para o apontador de instruo
dentro do segmento corrente. Instrui o compilador a comear de um offset maior que zero.
Principal Uso: Em programas de extenso .com, que no possuem reas de dados, para
forar a primeira instruo a ficar no endereo 100h (256 bytes livres).
Sintax e: ORG endereo
5.4 Operadores do Assembler
5.4.1 Operadores para Dados
Operadores para Criao de D ados:
? (sinal de interrogao): Usado em conjunto com as diretivas de reserva de rea de
armazenamento BD, DW, DD e DT, para indicar que, naquela posio, no ser definido
um valor inicial. Inicializao de variveis com valores arbitrrios (lixo).
DUP: Possibilita a alocao de um dados tantas vezes quanto for o seu prefixo n. Usado
na inicializao coletiva de vetore, matrizes e strings. A expresso deve aparecer entre
parnteses.
Sintax e: n DUP (expresso1, expresso2, ...)
+ * / MOD: Operadores aritmticos que realizam, respectivamente, soma, subtrao,
multiplicao, diviso inteira e resto da diviso inteira.
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
49
Operadores para R eferncia a D ados: utilizados, geralmente, como operandos de instrues.
TYPE: Retorna um nmero indicando o tamanho (bytes) de um dado ou do tipo de um
smbolo. O nmero pode ser: 0 (constante), 1 (BYTE), 2 (WORD), 4 (DWORD),
8 (QWORD), 10 (TBYTE), 0FFFFh (NEAR), 0FFFEh (FAR) ou o nmero de bytes de
uma estrutura.
LENGTH: Retorna o nmero de elementos alocados com uma das diretivas de dados
(nmero de elementos do dado).
Sintax e: LENGTH varivel
SIZE: Devolve o tamanho do dado alocado com uma das diretivas de dados (nmero
total de bytes alocados = type lenght).
Sintax e: SIZE varivel
SEG: Devolve o endereo do segmento onde o dado est alocado (16 bits).
Sintax e: SEG varivel
OFFSET: Devolve o deslocamento de uma varivel (ou rtulo) dentro do segmento
onde ela est definida (distncia desde o primeiro byte dentro do segmento). Fornece o
deslocamento do dado na memria (offset). E ndereo fsico do dado = SEG : OFFSET.
interessante notar que a instruo
MOV BX, OFFSET tabela
semelhante instruo
LEA BX, tabela
$ (dlar): Contador de locao. Representa o endereo de uma instruo ou de um dado.
Contm o offset da prxima locao disponvel. Utilizado para calcular o comprimento de
um dado ou de instrues.
E x emplo: msg DB Vinicius ; define uma string msg
tammsg EQU $-msg ; define o tamanho da string msg (tammsg= 8)
5.4.2 Operadores de Especificao de Tamanho
E specificao de tamanho para D ados:
BYTE PTR: Fora o montador a assumir o dado referenciado como do tamanho de um
byte. A expresso precisa ser um endereo.
WORD PTR: Fora o montador a assumir o dado referenciado como do tamanho de
uma palavra. A expresso precisa ser um endereo.
DWORD PTR: Fora o montador a assumir o dado referenciado como do tamanho de
uma dupla palavra, respectivamente. A expresso precisa ser um endereo ou nome no
programa.
E specificao de tamanho para Cdigo:
FAR PTR: Fora uma expresso a gerar um cdigo do tipo inter-segmento. Usado para
chamar uma sub-rotina ou provocar um desvio para uma sub-rotina em outros segmento
de memria.
NEAR PTR: Usado com instrues JMP e CALL para especificar que a instruo deve
gerar um cdigo do tipo intra-segmento.
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
50
5.5 Conjunto de Instrues Assembly
5.5.1 Instrues para Transferncia
MOV: Transfere um byte ou uma palavra (word) de dados de um operando fonte (opf) para um
operando destino (opd).
Mneumnico Formato Operao
MOV MOV opd, opf
(opd) (opf)
V ariaes possveis de operandos:
Operando destino Operando fonte
Memria Registrador
Registrador Memria
Registrador Registrador
Registrador Dado imediato
Memria Dado Imediato
Registrador de segmento Registrador
Registrador Registrador de segmento
XCHG: Permite a troca de um dado presente num operando fonte por um presente num
operando destino.
Mneumnico Formato Operao
XCHG XCHG opd, opf
(opd) (opf)
V ariaes possveis de operandos:
Operando destino Operando fonte
Memria Registrador
Registrador Registrador
XLAT, XLATB: A execuo de uma instruo XLATB permite que o contedo na posio de
memria endereada por DS : (BX + AL) seja trazido para AL. Na instruo XLAT, pode
ser referenciado um outro segmento de dados associado a BX.
Mneumnico Formato Operao
XLATB XLATB
(AL) ((AL) + (BX) + (DS)0)
XLAT XLAT fonte_da_tabela
(AL) ((AL) + (BX) + (segmento)0)
LEA: Usada para carregar um registrador especfico (reg16) com um offset de 16 bits.
Mneumnico Formato Operao
LEA LEA reg16, offset
(reg16) (offset)
LDS, LES ou LSS: Usadas para carregar, respectivamente, DS, ES ou SS, e um registrador
especfico com um endereo completo de memria (segmento : offset).
Mneumnico Formato Operao
Lx S Lx S reg16, offset
(reg16) (offset)
(x S) (segmento)
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
51
5.5.2 Instrues Aritmticas
ADD: Permite adicionar operandos de 8 ou de 16 bits.
ADC: Permite adicionar operandos de 8 ou de 16 bits e mais o bit CARRY.
SUB: Permite subtrair operandos de 8 ou de 16 bits.
SBB: Permite subtrair operandos de 8 ou de 16 bits, com emprstimo (bit CARRY).
Mneumnico Formato Operao
ADD ADD opd, opf
(opd) (opf) + (opd)
(CF) transporte
ADC ADC opd, opf
(opd) (opf) + (opd) + (CF)
(CF) transporte
SUB SUB opd, opf
(opd) (opd) (opf)
(CF) emprstimo
SBB SBB opd, opf
(opd) (opd) (opf) (CF)
(CF) emprstimo
V ariaes possveis de operandos:
Operando destino Operando fonte
Memria Registrador
Registrador Memria
Registrador Registrador
Registrador Dado imediato
Memria Dado Imediato
INC: Permite incrementar operandos de 8 ou de 16 bits.
DEC: Permite decrementar operandos de 8 ou de 16 bits.
NEG: Faz o complemento de 2 do operando destino.
Mneumnico Formato Operao
INC INC opd
(opd) (opd) + 1
DEC DEC opd
(opd) (opd) 1
NEG NEG opd
(opd) (opd)
V ariaes possveis de operando destino: memria, registrador de 8 bits ou de 16 bits.
AAA: Faz um ajuste no acumulador AL aps uma operao de soma ou de incremento com
nmeros BCD no compactados (ASCII).
DAA: Faz um ajuste no acumulador AL aps uma operao de soma ou de incremento com
nmeros BCD compactados.
AAS: Faz um ajuste no acumulador AL aps uma operao de subtrao ou de decremento
com nmeros BCD no compactados (ASCII).
DAS: Faz um ajuste no acumulador AL aps uma operao de subtrao ou de decremento
com nmeros BCD compactados.
A s instrues AAA, DAA, AAS e DAS devem ser includas imediatamente aps a operaes de
adio, subtrao, incremento ou decremento de nmeros A SCII ou BCD .
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
52
Mneumnico Formato Operao
AAA AAA
(AL)BCD (AL)2
(AH) 0, se (AL)BCD 9
(AH) 1, se (AL)BCD > 9
DAA DAA
(AL)BCD (AL)2
AAS AAS
(AL)BCD (AL)2
(AH) 0, se (CF) = 0
(AH) FFh, se (CF) = 1
DAS DAS
(AL)BCD (AL)2
MUL, DIV, IMUL, IDIV:
O processador suporta instrues de multiplicao e diviso de nmeros binrios
(sinalizados ou no) e nmeros BCD. Para operaes com nmeros no sinaliz ados, existem as
instrues MUL e DIV, e para nmeros sinaliz ados, as instrues IMUL e IDIV. O modo de
operao das instrues, para nmeros sinalizados ou no, o mesmo.
R esultado da Multiplicao:
Operando de 8 bits: (AX) (AL) (operando de 8 bits)
Operando de 16 bits: (DX, AX) (AX) (operando de 16 bits)
Observao: importante notar que a multiplicao sempre feita entre operadores de mesmo
tamanho (8 ou 16 bits).
R esultado da D iviso:
N uma operao de diviso, apenas o operando fonte especificado. O outro operando o contedo de AX,
para operaes com operandos de 8 bits, ou o contedo de (DX, AX), para operaes com operandos de 16 bits.
Se, na diviso, o dividendo for zero ou o quociente no couber no registrador de resultado,
gerada uma interrupo INT 0.
Operando de 8 bits:
(AL) Quociente

,
_

bits 8 de operando
AX
(AH) Resto

,
_

bits 8 de operando
AX
Operando de 16 bits:
(AX) Quociente

,
_

bits 16 de operando
AX DX,
(DX) Resto

,
_

bits 16 de operando
AX DX,
Observao: As instrues CBW e CWD ajustam valores de AL (byte) para AX (word) e de AX
(word) para DX : AX (dword), respectivamente.
AAM: Ajusta o resultado do acumulador AL aps uma operao de multiplicao com nmeros
BCD no compactados, devolvendo-o a AX (AH contm as dezenas e AL as unidades).
Formato de implementao: AAM
AAD: Ajusta o dividendo contido em AX antes da operao de diviso de nmeros BCD no
compactados.
Formato de implementao: AAD
Observao: No existe multiplicao ou diviso para nmeros BCD compactados. Portanto,
necessrio descompact-los antes de realizar essas operaes.
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
53
5.5.3 Instrues Lgicas
AND, OR, XOR, NOT: Permitem implementar as operao lgicas AND (e), OR (ou), XOR
(ou ex clusivo) e NOT (negao). Todas as operaes so executadas bit a bit entre os
operandos fonte e destino.
Mneumnico Formato Operao
AND AND opd, opf
(opd) (opf) .e. (opd)
OR OR opd, opf
(opd) (opf) .ou. (opd)
XOR XOR opd, opf
(opd) (opf) .x or. (opd)
NOT NOT opd
(opd) ( opd )
V ariaes possveis para o operando destino na instruo NOT: memria e registrador.
V ariaes possveis de operandos para as instrues AND, OR e XOR:
Operando destino Operando fonte
Memria Registrador
Registrador Memria
Registrador Registrador
Registrador Dado imediato
Memria Dado Imediato
TEST: Testa o primeiro operando para verificar se um ou mais bits so 1. Utiliza uma mscara
para o teste: bits 1 indicam necessidade de teste, ao contrrio de bits 0. A instruo no
modifica o operando destino. O resultado atribudo ao flag ZF: se pelo menos um dos
bits testados for 1, ZF= 1; caso contrrio, se todos os bits testados forem zero, ZF= 0.
Formato de implementao: TEST destino, mscara
E x emplos:
TEST 10001110b, 10000011b Sero testados os bits 0, 1 e 7 do operando destino. O
resultado da operao ser Z F = 1.
TEST 10001110b, 00110001b Sero testados os bits 1, 4 e 5 do operando destino. O
resultado da operao ser Z F = 0.
SHL: Retorna o valor da expresso deslocada n bits para a esquerda. Um bit 0 inserido na
posio do bit menos significativo e o bit mais significativo perdido.
Formato de implementao: SHL destino, n
SHR: Retorna o valor da expresso deslocada n bits para a direita. Um bit 0 inserido na posio
do bit mais significativo e o bit menos significativo perdido.
Formato de implementao: SHR destino, n
Observao: Deslocamentos representam multiplicaes por potncias de 2:
SHL AX, n AX AX 2
n
SHR AX, n AX AX 2
-n
ROL, ROR: Retorna o valor da expresso rotacionada n bits para a esquerda ou direita.
Formato de implementao: ROR destino, n ROL destino, n
RCL, RCR: Retorna o valor da expresso, acoplado do carry flag direita ou esquerda,
rotacionada n bits para a esquerda ou direita, respectivamente.
Formato de implementao: RCR destino, n RCL destino, n
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
54
5.5.4 Instrues que Modificam Flags
STC, CLC, CMC: Modificam os flags de estado.
STC: set carry flag, CLC: clear carry flag, CMC: complement carry flag.
Mneumnico Formato Operao
STC STC
CF 1
CLC CLC
CF 0
CMC CMC
CF CF
STD, CLD, STI, CLI: Modificam os flags de controle.
STD: set direction flag, CLD: clear direction flag, STI: set interrupt flag, CLI: clear interrupt flag.
Mneumnico Formato Operao
STD STD
DF 1
CLD CLD
DF 0
STI STI
IF 1
CLI CLI
IF 0
Modificando Flags sem Instrues Especficas:
Modificao de flags atravs da pilha e de um registrador:
w
Coloque todo o registrador de flags na pilha, atravs do comando PUSHF.
w
Salve a pilha para um registrador (16 bits), atravs do comando POP x x , onde x x
representa o nome do registrador.
w
Faa modificaes atravs de instrues que utilizem mscaras: AND, OR ou XOR.
w
Retorne o contedo do registrador para pilha, atravs do comando PUSH x x .
w
Restaure o registrador de flags, utilizando a instruo POPF.
Modificao de flags atravs da pilha (modo 386 avanado):
w
Coloque todo o registrador de flags na pilha, atravs do comando PUSHF.
w
Faa alteraes nos flags utilizando comandos BTR (bit test reset), para lev-lo ao
estado lgico 0, e BTS (bit test set), para leva-lo ao estado lgico 1.
w
Feitas as modificaes, restaure o registrador de flags, utilizando a instruo POPF.
5.5.5 Instrues de Chamada e Retorno de Subrotinas
CALL: Realiza a chamada subrotina, salvando IP na pilha e redirecionando para a subrotina.
Formato de implementao: CALL rotina
V ariaes possveis de operandos: subrotina prxima (NEAR) ou distante (FAR), registrador
(16 bits) ou memria (16 ou 32 bits).
RET: Retorna da subrotina rotina original. Quando um operando imediato for utilizado, este
valor adicionado ao contedo do SP e permite o descarte de empilhamentos feitos no
programa principal, antes da chamada subrotina.
Formato de implementao: RET
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
55
5.5.6 Instrues para Manipulao de Pilha
PUSH: Coloca, na rea de memria usada como pilha, o contedo de um registrador ou posio
de memria. Esta rea endereada por SS e SP.
Formato de implementao: PUSH fonte
POP: Retira a palavra armazenada no topo da pilha, colocando-a no registrador ou posio de
memria especificada (16 bits). O registrador CS no pode ser usado como operando.
Formato de implementao: POP destino
PUSHA: Coloca os valores de todos os registradores, seguindo a ordem AX, CX, DX, BX, SP,
BP, SI e DI.
Formato de implementao: PUSHA
POPA: restaura os valores dos registradores salvos com PUSHA, seguindo a ordem DI, SI, BP,
SP, BX, DX, CX e AX (ordem contrria salva por PUSHA).
Formato de implementao: POPA
PUSHF: Coloca, na rea de memria usada como pilha, o contedo do registrador de flags. Esta
instruo usada para salvar na pilha os estados dos flags, alter-los e depois recuper-los.
Formato de implementao: PUSHF
POPF: Retira a palavra no topo da pilha e move-a para o registrador de flags.
Formato de implementao: POPF
5.5.7 Instruo NOP
NOP: Nenhuma operao executada. Normalmente, usa-se NOP para preencher um bloco de
memria com cdigo nulo, isto , com algo que no afetar os estados do processador.
Formato de implementao: NOP
5.5.8 Instrues de Entrada e Sada
O endereo da porta de entrada ou sada pode ser especificado por um byte da prpria
instruo, permitindo acesso a 256 portas diferentes, ou atravs de DX, que permite o acesso a
64K endereos diferentes. Para executar as instrues de E/ S necessrio certificar-se dos
endereos de hardware, consultando uma tabela de endereos de E/ S. A vantagem no uso de DX,
alm do acesso a um nmero maior de portas, que, incrementando-o, pode-se acessar
sucessivas portas dentro de um lao de repetio.
IN: Transfere o byte de dados presente no endereo de porta especificado em DX para Al.
Formato de implementao: IN AL, DX
OUT: Transfere o byte presente em AL para um endereo de porta especificado em DX.
Formato de implementao: OUT DX, AL
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
56
5.5.9 Instruo de Comparao
CMP: Compara dois valores
Mneumnico Formato Operao
CMP CMP op1, op2 op1 op2
A instruo CMP trabalha subtraindo o segundo operando do primeiro, alterando os flags
de estado envolvidos, e sem modificar qualquer um dos operandos. A instruo CMP seguida,
normalmente, de instrues de jumps condicionais para testar os resultados da comparao.
Modo de Operao:
CMP op1, op2 op1 op2 SUB op1, op2
V ariaes possveis dos operandos:
op1 op2
Memria Registrador
Registrador Memria
Registrador Registrador
Registrador Dado imediato
Memria Dado Imediato
R estries ao uso de CMP:
w
A comparao deve ser feita sempre entre dois nmeros sinalizados ou entre dois
nmeros no sinalizados; nunca misture-os.
w
Ambos os operandos devem ter o mesmo comprimento, BYTE ou WORD.
w
Lembre-se que comparaes entre duas memrias no podem ser feitas. Caso isso
seja necessrio, deve-se primeiro copiar um dos operandos para um registrador, e s
ento executar a comparao entre o contedo do registrador e o outro operando.
5.5.10 Instrues de Desvio
Existem dois tipos de instrues de desvio: incondicional e condicional. No desvio
incondicional, o programa automaticamente desviado para a nova posio de execuo do
programa. No desvio condicional, o desvio s ocorrer se uma dada condio testada nos flags
internos for verdadeira. Se a condio testada no for verdadeira, o programa executar a
instruo localizada na posio seguinte da memria.
Um jump (desvio) uma instruo que diz ao processador para continuar a execuo do
programa em um endereo dado por um label. Os labels podem conter um endereo que est num
mesmo segmento de cdigo ou em outro segmento de cdigo. Em programas estruturados, o uso
de jumps deve se restringir a um mesmo segmento de cdigo, para tornar o programa mais legvel
e menos susceptvel a erros.
Existem duas situaes importantes em que os jumps devem ser usados:
w
para implementar laos ou loops; ou
w
em caso de ocorrerem condies excepcionais na execuo do programa.
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
57
JMP Instruo de Desvio Incondicional:
Um jump incondicional um jump que sempre executado, independente de uma
condio especfica ser verdadeira ou falsa. A instruo JMP deve ser usada em dois casos:
w
para pular instrues que no sero executadas; e
w
para auxiliar a execuo de loops.
Formato de implementao: JMP destino
V ariaes possveis para o operando destino: label curto (prximo ou distante), registrador
(16 bits) ou memria (32 bits).
Instrues de Desvio Condicional:
Um desvio condicional um jump executado somente se uma condio especfica
verdadeira. Existem dois tipos bsicos de jumps:
w
jumps que testam flags e registradores; e
w
jumps usados aps comparaes (para nmeros sinalizados e no sinalizados).
Formato de implementao para jumps que testam flags e registradores:
Jx x x label_ destino
onde x x x uma abreviao para uma condio particular. Se a condio verdadeira, o
processador continua a execuo a partir da primeira linha de comando aps o label; caso
contrrio, a execuo continua na prxima instruo da seqncia. Observao: o label destino deve
estar a, no mximo, 128 bytes acima ou abaixo do local do jump.
O processador tem dois conjuntos de jumps condicionais que podem ser usados aps uma
comparao. Os conjuntos so similares; a nica diferena que um usado com nmeros
sinalizados e o outro com nmeros no sinalizados.
Formato de implementao do conjunto comparao/ instruo de jumps condicionais:
CMP op1, op2
Jx x x label_destino
. . . ; instrues da seqncia
label_destino:
Mneumnico Formato Operao
Jumps condicionais utiliz ados aps comparao (CMP) para nmeros no sinaliz ados
JA/ JNBE JA destino Jump para destino se acima (CF= 0, ZF= 0)
JAE/ JNB JAE destino Jump para destino se acima ou igual (CF= 0)
JB/ JNAE JB destino Jump para destino se abaixo (CF= 1)
JBE/ JNA JBE destino Jump para destino se abaixo ou igual (CF= 1 ou ZF= 1)
JE JE destino Jump para destino se igual (ZF= 1)
JNE JNE destino Jump para destino se diferente (ZF= 0)
Jumps condicionais utiliz ados aps comparao (CMP) para nmeros sinaliz ados
JG/ JNLE JG destino Jump para destino se maior (ZF= 0 e SF= OF)
JGE/ JNL JGE destino Jump para destino se maior ou igual (SF= OF)
JL/ JNGE JL destino
Jump para destino se menor (SFOF)
JLE/ JNG JLE destino
Jump para destino se menor ou igual (ZF= 1 ou SFOF)
JE JE destino Jump para destino se igual (ZF= 1)
JNE JNE destino Jump para destino se diferente (ZF= 0)
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
58
Mneumnico Formato Operao
Jumps condicionais que testam flags e registradores
JZ JZ destino Jump para destino se ZF= 1
JNZ JNZ destino Jump para destino se ZF= 0
JS JS destino Jump para destino se SF= 1
JNS JNS destino Jump para destino se SF= 0
JO JO destino Jump para destino se OF= 1
JNO JNO destino Jump para destino se OF= 0
JC JC destino Jump para destino se CF= 1
JNC JNC destino Jump para destino se CF= 0
JP/ JPE JP destino Jump para destino se paridade par (PF= 1)
JNP/ JPO JNP destino Jump para destino se paridade mpar (PF= 0)
JCXZ JCXZ destino Jump para destino se (CX)= 0
V ariaes possveis para o operando destino: label curto (prximo ou distante).
5.5.11 Instrues de Repetio
LOOP: Cria um lao que executado um nmero especfico de vezes, usando o registrador CX
como contador. A primeira instruo a ser executada para a obteno de um loop o
carregamento de CX com o nmero de execues do loop.
Formato de implementao do conjunto inicializ ao de CX/ instruo de loops:
MOV CX, nmero_de_vezes
nome_do_label:
. . . ; instrues a serem executadas
LOOP nome_do_label
O valor de CX decrementado a cada passo e o loop ser executado enquanto o contedo
de CX for no nulo.
LOOPE (LOOPZ) e LOOPNE (LOOPNZ):
O princpio de utilizao o mesmo da instruo LOOP. A diferena principal que a
condio para que o lao seja executado inclui no somente o valor do contedo de CX, mas o
resultado de uma comparao, executada pela instruo imediatamente anterior.
Formato de loops gerados a partir de LOOPE (LOOPZ) e LOOPNE (LOOPNZ):
MOV CX, nmero_de_vezes
nome_do_label:
. . . ; instrues a serem executadas
CMP op1, op2
LOOPx x nome_do_label
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
59
5.6 Programao Estruturada em Assembly
A programao estruturada em assembly pode ser feita a partir da utilizao de estruturas
de controle de fluxo.
5.6.1 Ferramentas Utilizadas em Controle de Fluxo
Para a utilizao de controle de fluxo, as seguintes ferramentas de software so necessrias:
w
registrador flags: flags de estado e de controle e as instrues associadas;
w
labels (rtulos);
w
jumps (saltos): instrues de desvios condicionais (Jx x x ) e incondicionais (JMP);
w
instruo de comparao: CMP; e
w
instrues de repetio: LOOP, LOOPE (LOOPZ), LOOPNE (LOOPNZ).
Sintaxe para Definio de Labels:
Para implementar controle de fluxo, geralmente utilizamos labels, que so marcadores de
endereo dentro de um segmento de cdigo. possvel controlar a execuo de um programa,
apenas promovendo jumps entre labels. As regras para especificao dos nomes dos labels so as
mesmas das variveis.
O assembly reconhece intrinsecamente definies de labels do tipo NEAR, apenas atravs
da seguinte linha de comando, dentro do cdigo do programa:
nome_do_label:
5.6.2 Estrutura Se-Ento-Seno
A estrutura se-ento-seno testa uma condio. Se esta condio for satisfeita, a seqncia de
instrues referentes ao ento executada; caso contrario, o corpo do seno executado. O
comando seno no essencial, podendo ser suprimido. A diferena que se nenhuma condio
for satisfeita, nenhuma seqncia de instrues ser executada.
Formato de Implementao:
Se (cond), ento
Seno
Fim se
L inguagem de A lto N vel
CMP cond
Jcond entao
JMP senao
entao:
JMP fim_se
senao:
fim_se:
L inguagem A ssembly
CMP cond
JNcond senao
entao:
JMP fim_se
senao:
fim_se:
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
60
5.6.3 Estrutura Repita-At que
A estrutura repita-at que executa a mesma seqncia de instrues at que uma condio
se torne verdadeira.
Formato de Implementao:
Repita
At que (cond)
L inguagem de A lto N vel
repita:
CMP cond
Jcond fim_repita
JMP repita
fim_repita:
L inguagem A ssembly
repita:
CMP cond
JNcond repita
fim_repita:
5.6.4 Estrutura Repita-Enquanto
A estrutura repita-enquanto semelhante ao repita-at que. Entretanto, uma seqncia de
instrues realizada enquanto uma condio for satisfeita.
Formato de Implementao:
Repita
Enquanto (cond)
L inguagem de A lto N vel
repita:
CMP cond
JNcond fim_repita
JMP repita
fim_repita:
L inguagem A ssembly
repita:
CMP cond
Jcond repita
fim_repita:
5.6.5 Estrutura Enquanto-Repita
A estrutura enquanto-repita semelhante estrutura repita-enquanto, diferindo apenas no
teste da condio e na quantidade de vezes que ser executado. A condio testada antes que
qualquer seqncia de instrues seja executada. Isto significa dizer que um enquanto-repita pode
nunca ser executado, enquanto um repita-enquanto ser executado pelo menos uma vez.
Formato de Implementao:
Enquanto (cond), repita
Fim enquanto
L inguagem de A lto N vel
enquanto:
CMP cond
Jcond repita
JMP fim_enquanto
repita:
JMP enquanto
fim_enquanto:
L inguagem A ssembly
enquanto:
CMP cond
JNcond fim_enquanto
repita:
JMP enquanto
fim_enquanto:
Programao em L inguagem A ssembly
Anna Catharina/ CEFET-RN/ 2000
61
5.6.6 Estrutura For (Para)
A estrutura para executa a mesma seqncia de instrues um nmero de vezes
predefinido.
Formato de Implementao:
para contador de 1 a n, faa
Fim para
L inguagem de A lto N vel
MOV CX,n
para:
LOOP para
fim_para:
L inguagem A ssembly
MOV contador, 1
para:
CMP contador, n
JE fim_para
JMP para
fim_para:
para contador de n a 1, faa
Fim para
MOV contador, 1
para:
CMP contador, n
JNE para
fim_para:
L inguagem de A lto N vel L inguagem A ssembly
5.6.7 Estrutura Case
A estrutura de seleo mltipla case testa valores sucessivos de condies, at que uma
delas seja verdadeira. Caso nenhuma condio seja satisfeita, a seqncia de comandos
equivalente ao seno ser executada. O comando seno no essencial, podendo ser suprimido. A
diferena que se nenhuma condio for satisfeita, nenhuma instruo ser executada.
Formato de Implementao:
Case
cond_ 1:
. . .
cond_ n:
Seno:
Fim case
L inguagem de A lto N vel
case:
CMP (cond_ 1)
Jcond_ 1 caso_1
. . .
CMP (cond_ n)
Jcond_ n caso_n
JMP senao
caso_1:
JMP fim_case
. . .
caso_n:
JMP fim_case
seno:
fim_case:
L inguagem A ssembly
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
62
6 Interrupes e Excees
As interrupes so sinais enviados ao microprocessador, atravs dos quais tarefas sendo
executadas so suspensas temporariamente e atendida um outra tarefa que necessita de uma
ateno imediata. Muitas interrupes so destinadas a tarefas comuns que praticamente todos os
softwares necessitam, como por exemplo a obteno de digitaes feitas no teclado ou a abertura
de arquivos.
Os tipos de interrupes possveis no processador so:
w
as interrupes por hardware: a INTR (interrupo mascarvel) e a NMI (interrupo
no mascarvel);
w
a TRAP, quando ocorre um pedido de execuo de programa em passo nico (trap
flag ativado: TF = 1);
w
a INTO, quando verificado um erro de transbordamento (overflow);
w
a de erro de diviso por zero; e
w
as interrupes por software do tipo INT n.
A interrupo por hardware iniciada pelos circuitos existentes na placa do sistema, por
uma placa expanso ou atravs de uma porta conectada a um dispositivo externo. As
interrupes por hardware podem ser iniciadas por eventos to diversos como um pulso do chip do
timer do computador, um sinal vindo de um modem ou o pressionar de um boto do mouse. A
interrupo do teclado um exemplo tpico de interrupo por hardware. Existe um circuito
controlador do teclado na placa de sistema do computador que monitora o teclado para receber
entrada de dados. O controlador do teclado gera a interrupo 09H todas as vezes que receber
um byte de dados (cdigo correspondente a tecla pressionada). O BIOS possui uma rotina de
tratamento para a interrupo 09H, cuja finalidade ler o byte de dados a partir do controlador de
teclado, processando-o em seguida. Se a interrupo do teclado no processar o cdigo de tecla
recebido no momento da chegada, o cdigo pode ser perdido quando outra tecla for pressionada.
Por outro lado, as interrupes por software sero iniciadas atravs de programas do
usurio, e no pelo hardware do computador. Um programa chama as interrupes por software
para poder realizar suas tarefas, como por exemplo apresentar um caracter na tela.
Algumas interrupes executam mais de uma tarefa, e, ao serem chamadas, deve ser
especificado um nmero de funo. Por exemplo, a funo 00h da interrupo 01h retorna a
contagem da hora do dia existente no BIOS do computador, e a funo 01h da mesma
interrupo ajusta esta contagem. Os nmeros das funes so quase sempre colocados no
registrador AH do processador antes da chamada da interrupo. Na Linguagem Assembly pode-
se chamar a funo 0Ah (apresentar caractere) da interrupo 10h do BIOS, escrevendo:
MOV AH,0Ah
INT 10h ;chama a funo 0Ah
Para organizar ainda mais as interrupes, podem existir nmeros de sub-funes para
especificar tarefas no interior de uma funo. Estes nmeros so colocados no registrador AL do
processador. Podemos dizer que as interrupes esto organizadas obedecendo seguinte
hierarquia:
w
nmero da interrupo;
w
funes (ou servios), geralmente especificados em AH; e
w
sub-funes, geralmente especificados em AL.
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
63
6.1 Vetores e Descritores de Interrupo
As interrupes so numeradas e relacionadas em uma tabela, onde, a cada interrupo
est associado um nico endereo segmentado de 4 bytes, chamado de vetor de interrupo, que
aponta para uma rotina de tratamento da interrupo (Figura 39). O programa principal, ao se
deparar com uma interrupo, suspende temporariamente a sua execuo, para processar a rotina
de tratamento da interrupo em foco e, logo aps, retornar o processamento para o programa
de origem da interrupo.
Dessa forma, quando chega um pedido de interrupo a seguinte seqncia de operaes
executada:
w
a instruo que est sendo executada terminada;
w
os registradores de flags (F), segmento de cdigo (CS) e de offset (endereo) da
prxima instruo (IP) so colocados na pilha;
w
outros registradores alterados pela rotina manipuladora de interrupo so colocados
na pilha (operao realizada pela rotina manipuladora, quando necessrio);
w
o endereo da rotina de manipulao determinado; e
w
a rotina de manipulao executada.
As informaes de CS:IP e o registrador de flags so automaticamente inseridos na pilha
ao ocorrer uma interrupo. Os outros registradores so salvos pela rotina da interrupo, que
comumente chamada de rotina manipuladora da interrupo (interrupt handler) ou de rotina de
servio da interrupo (interrupt service routine ISR). Somente sero salvos os registradores que
forem alterados pelas rotinas manipuladoras de interrupo. Quando uma rotina manipuladora de
interrupo terminar o seu servio, a mesma restaurar os registradores que tiver alterado,
executando no final da rotina a instruo IRET (interrupt return) que possui a funo de retirar o
registrador de flags e o CS:IP da pilha, retornando-os aos seus lugares no processador. Com o
CS:IP restaurado, o programa principal volta a funcionar.
00000
. . .
n 4
IP
IP
CS
CS
. . .
003FFh
. . .
CS :IP
R otina de
Servio de
Interrupo
Memria
Principal
CS :IP
Figura 39 E ndereamento da R otina de Servio de Interrupo
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
64
Uma tabela de ponteiros usada para ligar o nmero-tipo de uma interrupo com as
localidades na memria das suas rotinas de servio. Em um sistema baseado no modo real, esta
tabela chamada de tabela de vetores de interrupo. Em sistemas no modo protegido, esta
tabela chamada de tabela de descritores de interrupo.
No modo real, a tabela de vetores est localizada no limite inferior dos endereos de
memria. Ela comea no endereo 00000
16
e termina no endereo 003FF
16
.

Isto representa o
primeiro kbyte de memria. Na realidade, a tabela de vetores de interrupo pode estar localizada
em qualquer lugar na memria. Sua localizao inicial e tamanho so definidos pelo contedo do
registrador da tabela de descritores de interrupo, o IDTR. Quando o processador inicializado
ele entra no modo real com os bits do endereo de base no IDTR todos iguais a zero e o limite
fixado em 03FF
16
. Na tabela de vetores de interrupo, cada um dos 256 vetores requer duas
palavras. A palavra de endereo mais alto representa o endereo de base de segmento e identifica
na memria, o inicio do segmento de programa no qual a rotina de servio reside. Este valor ser
armazenado no registrador de segmento de cdigo CS no momento do atendimento de uma
interrupo. A palavra de endereo mais baixo do vetor representa o deslocamento da primeira
instruo da rotina de servio a partir do incio do seu segmento de cdigo e, ser armazenado no
registrador apontador de instruo IP.
Tabela 5 V etores de interrupo
Endereo fsico Ponteiro de interrupo presente
0000h 0003h INT 0 erro de interrupo
0004h 0007h INT 01h passo nico
0008h 000Bh INT 02h NMI
000Ch 000Fh INT 03h break point
0010h 0013h INT 04h overflow
0014h 0017h INT 05h print screen (imprime tela)
0018h 001Bh INT 06h reservada
001Ch 001Fh INT 07h reservada
0020h 0023h INT 08h IRQ0
0024h 0027h INT 09h IRQ1
0028h 002Bh INT 0Ah IRQ2
002Ch 002Fh INT 0Bh IRQ3
0030h 0033h INT 0Ch IRQ4
0034h 0037h INT 0Dh IRQ5
0038h 003Bh INT 0Eh IRQ6
003Ch 003Fh INT 0Fh IRQ7
0040h 0043h INT 10h funes da BIOS (interrupes por software)
. . .
0084h 0087h INT 21h funes do DOS (interrupes por software)
. . .
01BCh 01BFh INT 6Fh disponvel ao usurio (interrupes por software)
01C0h 01C3h INT 70h IRQ8
01C4h 01C7h INT 71h IRQ9
01C8h 01CBh INT 72h IRQ10
01CCh 01CFh INT 73h IRQ11
01D0h 01D3h INT 74h IRQ12
01D4h 01D7h INT 75h IRQ13
01D8h 01DBh INT 76h IRQ14
01DCh 01DFh INT 77h IRQ15
01E0h 01E3h INT 78h disponvel ao usurio (interrupes por software)
. . .
00FCh 03FFh INT FFh disponvel ao usurio (interrupes por software)
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
65
A tabela de descritores do modo protegido pode residir em qualquer localizao do
endereo fsico do processador . A localizao e o tamanho desta tabela so novamente definidos
pelo contedo do IDTR. O endereo de base no IDTR identifica o ponto inicial da tabela na
memria e o limite determina o nmero de bytes da tabela. A tabela de descritores de interrupo
contm descritores de porta (gates), no vetores. So possveis 256 descritores de interrupo
identificados do gate 0 ao gate 255. Cada descritor de gate pode ser do tipo: gate de trap, gate de
interrupo, ou gate de tarefa. Os dois primeiros tipos permitem que o controle seja transferido
para uma rotina de servio que est localizada dentro da tarefa atual. Por outro lado, o gate de
tarefa permite que o controle de programa seja passado para uma outra tarefa. Como nos vetores
de modo real, um gate no modo protegido age como um ponteiro que usado para redirecionar a
execuo do programa para o ponto inicial da rotina de servio. Entretanto, um descritor de
porta ocupa 8 bytes de memria. Se todas as 256 portas no forem necessrias a uma aplicao o
limite pode ser fixado em um valor menor que 07FF
16
.
A Tabela 5 que contm os vetores de interrupo, aloca os vetores de 0 a 256. Cada vetor
composto de uma quantidade de 4 bytes e indica uma posio de memria (CS:IP), onde se inicia
a rotina de tratamento.
6.2 Interrupo por Software: Comandos INT e IRET
As interrupes do software fazem parte dos programas que compem o ROM BIOS e o
sistema operacional. Os servios do BIOS e do DOS podem ser chamados pelos programas
atravs de uma srie de interrupes, cujos vetores so colocados na tabela de vetores de
interrupes. As funes do DOS possibilitam um controle mais sofisticado sobre as operaes
de I/ O do que seria possvel com as rotinas do BIOS, em especial quando se tratar de operaes
de arquivos em discos. Convm relembrar que os nmeros mais baixos da tabela de vetores so
reservados para as excees.
A utilizao de uma interrupo dentro de um programa no oferece grandes
dificuldades, desde que sejam fornecidos todos os dados de entrada nos respectivos registradores;
aps o processamento da interrupo, obtm-se os resultados desejados atravs dos registradores
de sada ou atravs da execuo de uma tarefa desejada.
Por outro lado, pode-se desejar a criao de uma rotina de servio de interrupo para
tratar uma necessidade especfica do programa. Muitos motivos justificam a criao de uma rotina
de servio de interrupo. Determinados vetores de interrupes so planejados para que sejam
redirecionados para rotinas de nossa criao. Pode tambm ser interessante criar uma interrupo
para substituir uma rotina manipuladora j existente, ou podemos at mesmo acrescentar novos
recursos a um manipulador.
Uma rotina manipuladora de interrupes uma subrotina comum que realiza sua tarefa e
encerra a operao com a instruo IRET, alm de salvar os registradores alterados por ela, que
no sejam aqueles que foram salvos automaticamente. Uma vez criada uma rotina, seu endereo
deve ser colocado no local apropriado de vetor; se no local escolhido houver um valor diferente
de zero, o valor encontrado deve ser salvo, para possibilitar a sua restaurao aps o trmino do
programa.
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
66
INT: Altera o fluxo normal de execuo do programa, desviando-se para uma rotina de
interrupo, cujo vetor (endereo formado por CS:IP) est presente numa tabela nos primeiros
1 kbyte da memria. A tabela de vetores de interrupo tem 256 entradas, cada qual com 4bytes
(os dois primeiros contendo o valor de IP e os dois seguintes, o valor de CS) que indicam o
endereo de uma rotina na memria.
Formato de implementao: INT tipo
Uma interrupo de software implementada atravs da instruo INT n (n variando de 0
a 255, em decimal; ou de 0 a FF, em hexadecimal). Atravs deste mecanismo possvel ao
usurio fazer chamadas de funes tpicas do sistema operacional (DOS) ou do sistema de
entrada/ sada (BIOS).
Sempre que um pedido de interrupo vlido ocorre (por hardware ou por software), o
processador aponta para um vetor presente no espao de memria que vai de 0000h a 03FFh
(primeiro 1 kbyte da memria principal).
As interrupes e excees do sistema genrico so servidas com um sistema de
prioridade conseguida de duas maneiras:
w
a seqncia de processamento da interrupo implementada no processador testa a
ocorrncia dos vrios grupos baseados na hierarquia de apresentao (reset sendo a de
maior prioridade e as interrupes de hardware sendo as de menor prioridade);
w
s vrias interrupes dentro de um grupo, so dados diferentes nveis de prioridade,
de acordo com seu nmero-tipo onde, a interrupo de nmero-tipo 0 (zero)
identifica a de maior prioridade, e a de nmero-tipo 255 a de menor prioridade.
A importncia dos nveis de prioridade reside no fato de que, se uma rotina de servio de
interrupo foi iniciada, somente um dispositivo com nvel de prioridade mais alto ter poder de
interromper sua execuo. Para as interrupes de hardware, as decises de prioridade so
complementadas atravs do circuito responsvel pelas requisies. Ao teclado deve ser tambm
associada uma interrupo de alta prioridade. Isto ir assegurar que seu buffer de entrada no
ficar cheio, bloqueando entradas adicionais. Por outro lado, dispositivos como unidades de
disquete e HD so tipicamente associados com nveis de prioridade mais baixos.
IRET: Retorna de uma rotina de tratamento de interrupo, recuperando, da pilha, o contedo
dos registradores que foram automaticamente salvos na ocorrncia da interrupo. A o final de uma
rotina de tratamento de interrupes, deve ser inserida a instruo IRET.
Formato de implementao: IRET
INT
IRET
Programa
R otina de Servio de
Interrupo (ISR )
Figura 40 Interrupo por Software (IN T e IR E T )
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
67
6.3 Interrupo por Hardware: Controlador de Interrupes 8259
Nos sistemas 8086 e 8088, os nmeros das interrupes entre 08h e 0Fh so utilizadas
para as interrupes do hardware; nos sistemas 80286 e superiores, os nmeros das interrupes
entre 08h e 0Fh (8 e 15 em decimal) e tambm 70h (112 em decimal) e 77h (119 em decimal)
esto reservados para as interrupes de hardware.
Os chips INTEL 8259, que atuam como controladores programveis de interrupes
(programable interrupt controller PIC), so utilizados em todos os equipamentos da linha IBM PC
na gerncia das interrupes por hardware. Um chip possui 8 canais de interrupes. Os
equipamentos da linha PC/ XT suportam apenas um chip 8259, isto , apenas 8 canais de
interrupes, enquanto que os demais equipamentos utilizam 2 chips em cascata, ou o equivalente
a 2 combinados num nico chip. No caso mais simples, cada canal estar conectado a um nico
dispositivo. Quando um canal for ativado, ser emitida uma solicitao de interrupo (interrupt
request IRQ). Estas solicitaes so numeradas de IRQ0 at IRQ15.
Durante a execuo de uma interrupo, podem chegar novas solicitaes de para outras
interrupes. Um chip controlador de interrupes mantm um controle sobre as solicitaes de
interrupes, e decide qual ser executada em seguida, com base num esquema de prioridade. Os
canais de numerao mais baixa tero as prioridades mais altas. Assim, a IRQ0 ter precedncia
sobre a IRQ1. No caso de 2 chips em cascata (Figura 41), um atuar como mestre e o outro como
escravo, sendo que os 8 canais do chip escravo operaro atravs do canal 2 do chip mestre,
portanto os 8 canais do escravo tero maiores prioridades aps o IRQ0 e IRQ1. Veja a Tabela 6
que indica as interrupes listadas de acordo com a prioridade decrescente.
Tabela 6 T abela de IR Qs e prioridades
Chip IRQ Funo
Mestre IRQ0 Atualizao da hora do dia no BIOS (timer do sistema)
IRQ1 Teclado
IR Q2 Conex o com o PIC escravo
Escravo IRQ8 Relgio de tempo real
IRQ9 Conex o com o PIC mestre (IRQ2 redirecionada)
IRQ10 Uso geral (reservada)
IRQ11 Uso geral (reservada)
IRQ12 Mouse do PS/ 2
IRQ13 Coprocessador matemtico
IRQ14 Controlador do disco rgido
IRQ15 Uso geral (reservada)
Mestre IRQ3 COM2 (porta serial)
IRQ4 COM1 (porta serial)
IRQ5 LPT2 (porta paralela)
IRQ6 Controlador de discos flexveis
IRQ7 LPT1 (porta paralela)
Um chip 8259 possui basicamente 3 registradores de 1 byte cada, que controlam e
monitoram as 8 linhas de interrupes por hardware. O registrador de solicitao de interrupo
(interrupt request register IRR), que passa um de seus bits para 1 para sinalizar que est ocorrendo
uma solicitao de interrupo de hardware; em seguida o chip ir consultar o registrador em
servio (in service register ISR) para verificar se uma outra interrupo se encontra em execuo.
Circuitos adicionais garantem que o critrio de prioridades seja obedecido. Finalmente, antes de
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
68
chamar a interrupo, o registrador de mscara da interrupo (interrupt mask register IMR) ser
verificado para ver se uma interrupo deste nvel permitida nesse momento.
PIC Mestre
IR0
IR1
INT IR2
IR3
IR4
INTA IR5
IR6
IR7
CAS0 CAS1 CAS2
CAS0 CAS1 CAS2
IR0
IR1
INT IR2
IR3
IR4
INTA
IR5
IR6
IR7
PIC E scravo
INTA
INT
IR Q0
IR Q1
IR Q3
IR Q4
IR Q5
IR Q6
IR Q7
IR Q2
IR Q8
IR Q11
IR Q12
IR Q13
IR Q14
IR Q15
IR Q10
Figura 41 Cascateamento de PICs 8259
Normalmente, os programadores acessam apenas os registradores de mscara de
interrupo, que podem ser lidos e gravados. O registrador IMR para o PIC mestre ser acessado
atravs do endereo de porta 21h, e atravs do endereo de porta 1Ah para o PIC escravo. Os
registradores do PIC so acessados atravs das instrues IN e OUT na L inguagem A ssembly.
Existe um outro registrador que deve ser acessado pelos programadores que estejam
criando rotinas manipuladoras de interrupes por hardware. Trata-se do registrador de
interrupo de comandos, que utilizado para informar ao PIC que uma interrupo por hardware
terminou sua tarefa e est chegando ao final. Esse registrador acessado atravs das portas 20h
para o PIC mestre e A0h no caso do PIC escravo.
6.4 Habilitao, Desativao ou Mascaramento de Interrupes
Um flag de habilitao de interrupo est disponvel no processador identificado por IF.
A possibilidade de iniciar uma interrupo de hardware na entrada INTR habilitada com IF= 1
ou mascarada com IF= 0. Quando IF= 1, o processador cumprir qualquer solicitao de
interrupo que o registrador de mscara de interrupes permitir; quando IF= 0, nenhuma
interrupo por hardware poder ocorrer. Por software, isto pode ser feito atravs da instruo STI
(set IF) ou CLI (clear IF), respectivamente. IF afeta somente a interface de interrupo de hardware
no tendo qualquer influncia sobre os outros grupos de interrupes. A instruo CLI sempre
dever ser seguida por uma instruo STI, sob risco de travar o equipamento.
Durante a seqncia de inicializao de uma rotina de servio para uma interrupo de
hardware, o processador automaticamente coloca nvel lgico 0 em IF (IF 0). Isto mascara a
ocorrncia de qualquer interrupo de hardware adicional. Em algumas aplicaes pode ser
Interrupes e E x cees
Anna Catharina/ CEFET-RN/ 2000
69
necessrio permitir que outras interrupes de hardware com prioridade mais alta interrompam a
rotina de servio ativa. Se este o caso, o bit IF pode ser colocado em nvel lgico 1 (IF 1)
com uma instruo STI localizada no incio da rotina de servio.
Os programas podem desativar uma ou todas as interrupes por hardware. Essa ao
normalmente necessria apenas quando for redigido um cdigo de baixo nvel que acesse o
hardware diretamente. Por exemplo, ser for criada uma rotina que insira dados no buffer do teclado,
a interrupo do teclado deve ser desativada durante a execuo da rotina para que no exista o
risco do teclado interferir no processo. As interrupes por hardware so tambm mascaradas de
modo a impedir os atrasos durante a execuo de operaes sensveis ao relgio. Uma rotina de
I/ O precisamente sincronizada no poderia permitir ser prejudicada por uma operao demorada
no disco. Em ltima instncia, a execuo de todas as interrupes depende do ajuste existente
no bit IF do registrador de flags.
Para mascarar interrupes de hardware em particular, basta enviar o padro apropriado de
bits para o IMR. Este registrador de 8 bits est localizado no endereo de porta 21h do PIC
mestre, e em 1Ah para o PIC escravo. Para isso, necessrio definir os bits que correspondem
aos nmeros das interrupes que se pretendem mascarar.
6.5 Interrupes Internas e Excees
Interrupes internas e excees diferem das interrupes de hardware externo porque elas
ocorrem devido ao resultado da execuo de uma instruo, no de um evento que ocorre no
hardware externo. Uma interrupo interna ou exceo iniciada porque uma condio interna de
erro foi detectada antes, durante ou depois da execuo de uma instruo. Neste caso, uma rotina
deve ser iniciada para atender a condio interna antes de prosseguir na execuo da mesma ou
da prxima instruo do programa. As localizaes de maior prioridade foram reservadas para
tratamento deste tipo de interrupo ou exceo.
As interrupes internas e excees so categorizadas como sendo de falha, trap ou
aborto. No caso de uma falha, os valores de CS e IP salvos na pilha apontam para a instruo que
resultou na interrupo. Desta forma, depois de servir exceo, pode ser re-executada. No caso
de um trap, os valores de CS e IP que foram levados para a pilha apontam para a instruo
seguinte que causou a interrupo. Desta forma, depois da concluso da rotina de servio, a
execuo do programa prossegue normalmente. No caso de um aborto, nenhuma informao
reservada e, o sistema pode precisar ser reinicializado. Algumas interrupes internas e excees
no sistema genrico so:
w
exceo por erro de diviso;
w
exceo de depurao;
w
interrupo de break point;
w
exceo de estouro de capacidade (overflow);
w
exceo de limite (bound) excedido;
w
exceo de cdigo de operao invlido;
w
exceo de falta de pilha (stack );
w
exceo de overrun de segmento;
w
exceo de erro do coprocessador; e
w
exceo de coprocessador no disponvel.
A nex o A T abela A SCII
Anna Catharina/ CEFET-RN/ 2000
70
Anexo A Tabela ASCII
Smbolo Tecla Decimal Hexa
NULL Ctrl @ 0 00
SOH Ctrl A 1 01
STX Ctrl B 2 02
ETX Ctrl C 3 03
EOT Ctrl D 4 04
ENQ Ctrl E 5 05
ACK Ctrl F 6 06
BEL Ctrl G 7 07
BS Ctrl H 8 08
HT Ctrl I 9 09
LF Ctrl J 10 0A
VT Ctrl K 11 0B
FF Ctrl L 12 0C
CR Ctrl M 13 0D
SO Ctrl N 14 0E
SI Ctrl O 15 0F
DLE Ctrl P 16 10
XON Ctrl Q 17 11
DC2 Ctrl R 18 12
XOFF Ctrl S 19 13
DC4 Ctrl T 20 14
NAK Ctrl U 21 15
SYN Ctrl V 22 16
ETB Ctrl W 23 17
CAN Ctrl X 24 18
EM Ctrl Y 25 19
SUB Ctrl Z 26 1A
ESC Ctrl [ 27 1B
FS Ctrl \ 28 1C
GS Ctrl ] 29 1D
RS Ctrl ^ 30 1E
US Ctrl _ 31 1F
Smbolo Tecla Decimal Hexa
SP Space Bar 32 20
! ! 33 21
34 22
# # 35 23
$ $ 36 24
% % 37 25
& & 38 26
39 27
( ( 40 28
) ) 41 29
* * 42 2A
+ + 43 2B
, , 44 2C
- - 45 2D
. . 46 2E
/ / 47 2F
0 0 48 30
1 1 49 31
2 2 50 32
3 3 51 33
4 4 52 34
5 5 53 35
6 6 54 36
7 7 55 37
8 8 56 38
9 9 57 39
: : 58 3A
; ; 59 3B
< < 60 3C
= = 61 3D
> > 62 3E
? ? 63 3F
Smbolo Tecla Decimal Hexa
@ @ 64 40
A A 65 41
B B 66 42
C C 67 43
D D 68 44
E E 69 45
F F 70 46
G G 71 47
H H 72 48
I I 73 49
J J 74 4A
K K 75 4B
L L 76 4C
M M 77 4D
N N 78 4E
O O 79 4F
P P 80 50
Q Q 81 51
R R 82 52
S S 83 53
T T 84 54
U U 85 55
V V 86 56
W W 87 57
X X 88 58
Y Y 89 59
Z Z 90 5A
[ [ 91 5B
\ \ 92 5C
] ] 93 5D
^ ^ 94 5E
_ _ 95 5F
Smbolo Tecla Decimal Hexa
` ` 96 60
a a 97 61
b b 98 62
c c 99 63
d d 100 64
e e 101 65
f f 102 66
g g 103 67
h h 104 68
i i 105 69
j j 106 6A
k k 107 6B
l l 108 6C
m m 109 6D
n n 110 6E
o o 111 6F
p p 112 70
q q 113 71
r r 114 72
s s 115 73
t t 116 74
u u 117 75
v v 118 76
w w 119 77
x x 120 78
y y 121 79
z z 122 7A
{ { 123 7B
| | 124 7C
} } 125 7D
~ ~ 126 7E
Ctrl < - 127 7F
A nex o A T abela A SCII
Anna Catharina/ CEFET-RN/ 2000
71
Smbolo Tecla Decimal Hexa
Alt 128 128 80
Alt 129 129 81
Alt 130 130 82
Alt 131 131 83
Alt 132 132 84
Alt 133 133 85
Alt 134 134 86
Alt 135 135 87
Alt 136 136 88
Alt 137 137 89
Alt 138 138 8A
Alt 139 139 8B
Alt 140 140 8C
Alt 141 141 8D
Alt 142 142 8E
Alt 143 143 8F
Alt 144 144 90
Alt 145 145 91
Alt 146 146 92
Alt 147 147 93
Alt 148 148 94
Alt 149 149 95
Alt 150 150 96
Alt 151 151 97
Alt 152 152 98
Alt 153 153 99
Alt 154 154 9A
Alt 155 155 9B
Alt 156 156 9C
Alt 157 157 9D
Alt 158 158 9E
Alt 159 159 9F
Smbolo Tecla Decimal Hexa
Alt 160 160 A0
Alt 161 161 A1
Alt 162 162 A2
Alt 163 163 A3
Alt 164 164 A4
Alt 165 165 A5
Alt 166 166 A6
Alt 167 167 A7
Alt 168 168 A8
Alt 169 169 A9
Alt 170 170 AA
Alt 171 171 AB
Alt 172 172 AC
Alt 173 173 AD
Alt 174 174 AE
Alt 175 175 AF
Alt 176 176 B0
Alt 177 177 B1
Alt 178 178 B2
Alt 179 179 B3
Alt 180 180 B4
Alt 181 181 B5
Alt 182 182 B6
Alt 183 183 B7
Alt 184 184 B8
Alt 185 185 B9
Alt 186 186 BA
Alt 187 187 BB
Alt 188 188 BC
Alt 189 189 BD
Alt 190 190 BE
Alt 191 191 BF
Smbolo Tecla Decimal Hexa
Alt 192 192 C0
Alt 193 193 C1
Alt 194 194 C2
Alt 195 195 C3
Alt 196 196 C4
Alt 197 197 C5
Alt 198 198 C6
Alt 199 199 C7
Alt 200 200 C8
Alt 201 201 C9
Alt 202 202 CA
Alt 203 203 CB
Alt 204 204 CC
Alt 205 205 CD
Alt 206 206 CE
Alt 207 207 CF
Alt 208 208 D0
Alt 209 209 D1
Alt 210 210 D2
Alt 211 211 D3
Alt 212 212 D4
Alt 213 213 D5
Alt 214 214 D6
Alt 215 215 D7
Alt 216 216 D8
Alt 217 217 D9
Alt 218 218 DA
Alt 219 219 DB
Alt 220 220 DC
Alt 221 221 DD
Alt 223 222 DE
Alt 223 223 DF
Smbolo Tecla Decimal Hexa
Alt 224 224 E0
Alt 225 225 E1
Alt 226 226 E2

Alt 227 227 E3


Alt 228 228 E4
Alt 229 229 E5
Alt 230 230 E6
Alt 231 231 E7
Alt 232 232 E8
Alt 233 233 E9
Alt 234 234 EA
Alt 235 235 EB
Alt 236 236 EC
Alt 237 237 ED

Alt 238 238 EE


Alt 239 239 EF
Alt 240 240 F0
Alt 241 241 F1
Alt 242 242 F2
Alt 243 243 F3
Alt 244 244 F4
Alt 245 245 F5
Alt 246 246 F6
Alt 247 247 F7
Alt 248 248 F8
Alt 249 249 F9
Alt 250 250 FA
Alt 251 251 FB

Alt 252 252 FC


Alt 253 253 FD
Alt 254 254 FE
Alt 255 255 FF
A nex o B Cdigo E stendido do T eclado
Anna Catharina/ CEFET-RN/ 2000
72
Anexo B Cdigo Estendido do Teclado
Tecla Decimal Hexa
Alt + A 30 1E
Alt + B 48 30
Alt + C 46 2E
Alt + D 32 20
Alt + E 18 12
Alt + F 33 21
Alt + G 34 22
Alt + H 35 23
Alt + I 23 17
Alt + J 36 24
Alt + K 37 25
Alt + L 38 26
Alt + M 50 32
Alt + N 49 31
Alt + O 24 18
Alt + P 25 19
Alt + Q 16 10
Alt + R 19 13
Alt + S 31 1F
Alt + T 20 14
Alt + U 22 16
Alt + V 47 2F
Alt + W 17 11
Alt + X 45 2D
Alt + Y 21 15
Alt + Z 44 2C
Alt + 0 129 81
Alt + 1 120 78
Alt + 2 121 79
Alt + 3 121 7A
Alt + 4 123 7B
Alt + 5 124 7C
Alt + 6 125 7D
Alt + 7 126 7E
Alt + 8 127 7F
Alt + 9 128 80
Tecla Decimal Hexa
F1 59 3B
F2 60 3C
F3 61 3D
F4 62 3E
F5 63 3F
F6 64 40
F7 65 41
F8 66 42
F9 67 43
F10 68 44
F11 133 85
F12 134 86
Alt + F1 104 68
Alt + F2 105 69
Alt + F3 106 6A
Alt + F4 107 6B
Alt + F5 108 6C
Alt + F6 109 6D
Alt + F7 110 6E
Alt + F8 111 6F
Alt + F9 112 70
Alt + F10 113 71
Alt + F11 139 8B
Alt + F12 140 8C
Ctrl + F1 94 5E
Ctrl + F2 95 5F
Ctrl + F3 96 60
Ctrl + F4 97 61
Ctrl + F5 98 62
Ctrl + F6 99 63
Ctrl + F7 100 64
Ctrl + F8 101 65
Ctrl + F9 102 66
Ctrl + F10 103 67
Ctrl + F11 137 89
Ctrl + F12 138 8A
Shift + F1 84 54
Shift + F2 85 55
Shift + F3 86 56
Shift + F4 87 57
Shift + F5 88 58
Shift + F6 89 59
Shift + F7 90 5A
Shift + F8 91 5B
Shift + F9 92 5C
Shift + F10 93 5D
Shift + F11 135 87
Shift + F12 136 88
Tecla Decimal Hexa
Alt + - 130 82
Alt + = 131 83
Del 83 53
End 79 4F
Home 71 47
Ins 82 52
PgDn 81 51
PgUp 73 49

72 48

75 4B

77 4D

80 50
Crtl +
115 73
Crtl +
116 74
Crtl + End 117 75
Crtl +
Home
119 77
Crtl + PgDn 118 76
Crtl + PgUp 132 84
Ctrl + PrtSc 114 72
Shift+ Tab 15 0F
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
73
Anexo C Interrupes BIOS e DOS
Interrupes do BIOS
INT 10h Funes de Vdeo
Funo 00h Seleciona Modo de Tela
E ntrada:
AL = Modo
AH = 0
Modos de T ela
Modo Resoluo
Mximo
Pginas
Cores Tipo Adaptadores Caractere Buffer
00h 4025 8 16 Texto CGA, EGA, VGA 916 B800
01h 4025 8 16 Texto CGA, EGA, VGA 916 B800
02h 8025 4/ 8 16 Texto CGA, EGA, VGA 916 B800
03h 80 25 4/ 8 16 Texto CGA, EGA, VGA 916 B800
04h
320200
1 4 Grfico CGA, EGA, VGA
88
B800
05h 320200 1 4 Grfico CGA, EGA, VGA 88 B800
06h 640200 1 2 Grfico CGA, EGA, VGA 88 B800
07h 8025 1/ 8 2 Texto MDA, EGA, VGA 916 B800
0Dh 320200 16 Grfico EGA, VGA 88 A000
0Eh
640200
16 Grfico EGA, VGA
814
A000
0Fh 640350 2 2 Grfico EGA, VGA 814 A000
10h
640350
2 4/ 16 Grfico EGA, VGA
814
A000
11h 640480 1 2 Grfico VGA 816 A000
12h 640480 1 16 Grfico VGA 816 A000
13h 320200 1 256 Grfico VGA 88 A000
Funo 01h Seleciona Tipo de Cursor
E ntrada:
CH = Linha inicial do cursor
CL = Linha final do cursor
AH = 1
Funo 02h Posiciona cursor
E ntrada:
DH, DL = Linha, coluna
BH = Nmero da pgina
AH = 2
Observao:
D H =0 e D L =0 indica o canto superior esquerdo.
Funo 03h Encontra posio do cursor
E ntrada:
BH = Nmero da pgina
AH = 3
S ada:
DH, DL = Linha, coluna do cursor
CH, CL = Modo do cursor ajustado atualmente
Funo 05h Seleciona pgina de exibio ativa
E ntrada:
AL = 0 7 (modos 0 e 1) ou 0 3 (modos 2 e 3)
AH = 5
Funo 06h Rola pgina ativa para cima
E ntrada:
AL = Nmero de linhas em branco na parte inferior (zero limpa toda a rea)
CH, CL = Linha, coluna superior esquerda da rea a ser rolada
DH, DL = Linha, coluna inferior direita da rea a ser rolada
BH = Atributo usado na linha em branco
AH = 6
Funo 07h Rola pgina ativa para baixo
E ntrada:
AL = Nmero de linhas em branco na parte inferior (zero limpa toda a rea)
CH, CL = Linha, coluna superior esquerda da rea a ser rolada
DH, DL = Linha, coluna inferior direita da rea a ser rolada
BH = Atributo usado na linha em branco
AH = 7
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
74
Funo 08h L caractere e atributo na posio do cursor
E ntrada:
BH = Nmero da pgina
AH = 8
S ada:
AL = Caractere lido (ASCII)
AH = Atributo do caractere (somente texto)
Funo 09h Escreve atributo e caractere na posio do cursor
E ntrada:
BH = Nmero da pgina
BL = Atributo (modo texto) ou Cor (modo grfico)
CX = Nmero de caracteres a serem escritos
AL = Cdigo ASCII do caractere
AH = 9
Funo 0Ah Escreve caractere sem atributo na posio do cursor
E ntrada:
BH = Nmero da pgina
CX = Nmero de caracteres a serem escritos
AL = Cdigo ASCII do caractere
AH = 10d ou 0Ah
INT 13h Funes de Disco
Funo 00h Reinicializa disco
E ntrada:
AH = 0
DL = 81h (disco rgido) ou 80h (disco flexvel)
S ada:
CF = 0 (sucesso; AH = 0) ou 1 (erro; AH = cdigo de erro)
Funo 01h L status da operao anterior no disco
E ntrada:
AH = 1
S ada:
AL = Cdigo de erro
Cdigos de E rro de D isco
Valor Erro
00h Nenhum erro
01h Comando ruim passado ao controlador
02h Marca de endereo no encontrada
03h Disco protegido
04h Setor no encontrado
05h Falha na reinicializao
07h Parmetros para o disco errados
09h DMA ultrapassou fim do segmento
0Bh Flag de trilha ruim no encontrada
10h Verificao de setor ruim encontrada
11h Dado erro corrigido
20h Falha no controlador
40h Falha em operao de busca
80h Nenhuma resposta do disco
BBh Erro indefinido
FFh Falha no sentido da operao
Funo 02h L setores de disco
E ntrada:
AH = 2
DL = Nmero da unidade de disco (discos rgidos, 80h 87h)
DH = Nmero do cabeote
CH = Nmero do cilindro ou da trilha (discos flexveis)
CL = Bits 7 e 6 (bits mais altos dos 10 bits para o cilindro); bits 0 a 5 (nmero do setor)
AL = Nmero de setores (discos flexveis, 1 8; discos rgidos, 1 80h)
ES : BX = Endereo do buffer para leitura/ escrita
S ada:
CF = 0 (sucesso; AL = N mero de setores lidos) ou 1 (erro; AH = cdigo de erro)
Funo 03h Escreve em setores de disco
E ntrada:
AH = 3
DL = Nmero da unidade de disco (discos rgidos, 80h 87h)
DH = Nmero do cabeote
CH = Nmero do cilindro ou da trilha (discos flexveis)
CL = Bits 7 e 6 (bits mais altos dos 10 bits para o cilindro); bits 0 a 5 (nmero do setor)
AL = Nmero de setores (discos flexveis, 1 8; discos rgidos, 1 80h)
ES : BX = Endereo do buffer para leitura/ escrita
S ada:
CF = 0 (sucesso; AL = N mero de setores escritos) ou 1 (erro; AH = cdigo de erro)
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
75
Funo 04h Verifica setores
E ntrada:
AH = 4
DL = Nmero da unidade de disco (discos rgidos, 80h 87h)
DH = Nmero do cabeote
CH = Nmero do cilindro ou da trilha (discos flexveis)
CL = Bits 7 e 6 (bits mais altos dos 10 bits para o cilindro); bits 0 a 5 (nmero do setor)
AL = Nmero de setores (discos flexveis, 1 8; discos rgidos, 1 80h)
ES : BX = Endereo do buffer para leitura/ escrita
S ada:
CF = 0 (sucesso; AH = 0) ou 1 (erro; AH = cdigo de erro)
INT 14h Funes da Porta Serial
Funo 00h Inicializa porta RS232
E ntrada:
AH = 0
Bits de AL:
0, 1 = Comprimento da palavra (01 = 7 bits, 11 = 8 bits)
2 = Bits de parada (0 = 1 stop bits, 1= 2 stop bits)
3, 4 = Paridade (00 = nenhuma, 01 = mpar, 11 = par)
5, 6, 7 = Taxa de transmisso (100 = 1200, 101 = 2400, 111 = 9600)
Funo 01h Envia caractere pela porta serial
E ntrada:
AH = 1
AL = Caractere a enviar
DX = Nmero da porta (0 = COM1, 1= COM2)
S ada:
Bit 7 de AH = 1 (erro) ou 0 (bits 0 a 6 contm o status da porta serial)
Funo 02h Recebe caractere pela porta serial
E ntrada:
AH = 2
S ada:
AL = Caractere recebido
AH = 0 (sucesso) ou Cdigo de erro (status da porta serial)
Funo 03h Retorna status da porta serial
E ntrada:
AH = 3
S ada:
Status da porta serial em AH e AL
Status da Porta Serial
Bit de
AH ativo
Status
Bit de
AL ativo
Status
7 Intervalo 7 Detecta sinal de linha recebido
6 Registrador shift vazio 6 Indicador de anel
5 Registrador holding vazio 5 Conjunto de dados pronto
4 Break detectado 4 Limpar para enviar
3 Erro de estrutura 3 Delta detecta Sinal de linha recebido
2 Erro de paridade 2 Sada do detector de anel
1 Erro de excesso 1 Delta conjunto de dados pronto
0 Dados preparados 0 Delta limpar para enviar
INT 16h Funes de Teclado
Funo 00h L tecla (cdigo estendido para teclados de 83 e 84 teclas)
E ntrada:
AH = 0
S ada:
AH = Cdigo de varredura da tecla lida
AL = Cdigo ASCII da tecla lida
Observao:
A guarda a entrada de um caractere e o retorna em A L . Caso A L =0, o cdigo estendido
ser encontrado em A H . A condio Ctrl-Break no detectada.
Funo 01h Verifica se a tecla est pronta para ser lida
E ntrada:
AH = 1
S ada:
ZF = 1 (buffer vaz io) ou 0 (AH = cdigo de varredura; AL = cdigo A SCII)
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
76
Funo 02h Encontra status do teclado (teclas de 2 estados)
E ntrada:
AH = 2
S ada:
AL = Byte de status do teclado
Observao:
Os equipamentos que utiliz am teclados com 101 teclas podem utiliz ar tambm a funo 12h
da IN T 16h, na qual o byte de status retornado em A L , e um segundo byte reportado em A H ,
informando o status das teclas individuais <A L T > e <CT R L >.
Funo 05h Insere cdigos no buffer do teclado
E ntrada:
AH = 5
Caracteres ASCII:
CL = cdigo ASCII de caractere
CH = cdigo de varredura da tecla associada ao caractere
Teclas de cdigo estendido:
CL = 0
CH = cdigo estendido
S ada:
AL = 0 (sucesso) ou 1 (buffer do teclado cheio)
Observao:
Funo utiliz ada nos equipamentos que suportam um teclado estendido de 101 teclas. til
quando programas residentes precisam enviar cdigos de controle ou dados ao software de aplicao.
Funo 10h Cdigo estendido para teclados de 101 teclas
E ntrada:
AH = 10h
S ada:
AL = cdigo ASCII ou 0 (AH = cdigo estendido)
Observao:
A guarda a entrada de um caractere. Os cdigos estendidos necessitam de apenas uma chamada
interrupo. A condio Ctrl-Break no ser detectada.
Funo 11h Verifica o status de entrada para o teclado de 101 teclas
E ntrada:
AH = 11h
S ada:
AL = FFh (buffer no vaz io) ou 0 (buffer vaz io)
INT 17h Funes de Impressora
Funo 00h Imprime caractere
E ntrada:
AH = 0
AL = Caractere a ser impresso
DX = Nmero da impressora (0, 1 ou 2)
S ada:
AH = 1 suspende a impresso
Funo 01h Inicializa porta de impressora
E ntrada:
AH = 1
DX = Nmero da impressora (0, 1 ou 2)
S ada:
AH = Status da impressora
Status da Impressora
Bit de
AH ativo
Status
7 Impressora no ativa
6 Acusa recepo
5 Fim do papel
4 Selecionada
3 Erro de I/ O
2 No usado
1 No usado
0 Tempo esgotado
Funo 02h L status de impressora
E ntrada:
AH = 2
DX = Nmero da impressora (0, 1 ou 2)
S ada:
AH = Status da impressora
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
77
Interrupes do DOS
INT 21h Funes de Teclado, Vdeo, Disco, Relgio e Memria
Funo 00h Trmino de programa
E ntrada:
AH = 0
Funo 01h Entrada de caractere do teclado com eco
E ntrada:
AH = 1
S ada:
AL = Cdigo ASCII da tecla ou 0
Observao:
A guarda que um caractere seja digitado, caso nenhum seja encontrado. Gera um eco do
caractere na tela, na posio atual do cursor. A L =0 quando um cdigo estendido for interceptado. A
interrupo deve ser repetida para que seja retornado o segundo byte do cdigo em A L . D etecta a
condio de Ctrl-Break . Ignora a tecla <E sc>, e interpreta normalmente uma digitao de <T ab>.
<Back space> faz com que o cursor retroceda um espao, mas o caractere ex istente nessa posio no
apagado, sendo coberto pelo caractere recebido a seguir. <E nter> move o cursor para o incio (CR ), sem
avano de linha (L F).
Funo 02h Sada de caractere na tela
E ntrada:
AH = 2
DL = Cdigo ASCII do caractere
Funo 05h Sada de caractere na impressora
E ntrada:
AH = 5
DL = Cdigo ASCII do caractere
Funo 06h I/ O na console sem eco
E ntrada:
AH = 6
DL = FFh: ZF = 1 (nenhum caractere digitado) ou AL = cdigo ASCII do caractere
DL < FFh: cdigo ASCII presente em DL enviado para a tela
Observao:
R etorna digitaes sem espera (caso nenhuma disponvel). N o verifica Ctrl-C ou Ctrl-Break .
Funo 07h Entrada no filtrada de caractere sem eco
Funo 08h Entrada de caractere sem eco
E ntrada:
AH = 7 ou 8, respectivamente
S ada:
AL = Cdigo ASCII da tecla
Observao:
Quando A L = 0, um cdigo estendido ter sido recebido e ser necessrio repetir a
interrupo para que o segundo byte seja retornado em A L . A funo 08h detecta a condio de
Ctrl-Break . N o ecoa na tela.
Funo 09h Escreve string na tela
E ntrada:
DS:DX aponta para uma string terminada com o caractere $
AH = 9
Funo 0Ah Entrada de string pelo teclado
E ntrada:
DS:DX aponta para o local onde a string ser armazenada (mx imo 254 caracteres)
[DS:DX] = quantidade de bytes alocados para a string
AH = 0Ah
S ada:
DS:DX = string digitada
[DS:(DX+ 1)] = nmero de caracteres lidos
Observao:
Faz eco da entrada na tela. Primeiro byte da string deve ser inicializ ado com o tamanho.
Segundo byte da string receber o nmero de caracteres efetivamente lidos. ltimo caractere da string =
<E N T E R >. A string comear a partir do terceiro byte. Para ler uma string de n caracteres, deve-se
alocar (n+3) bytes de memria e colocar o valor (n+1) no primeiro byte. V erifica Crtl-C e Crtl-Break .
Funo 0Bh Verifica o status de entrada do teclado
E ntrada: AH = 0Bh
S ada: AL = FFh (buffer no vazio) ou 0 (buffer vazio)
Funo 0Ch Esvazia o buffer de entrada do teclado e executa uma funo
E ntrada: AH = 0Ch
AL = Nmero da funo de teclado
S ada: Sada padro da funo selecionada
Observao:
E x ecuta qualquer funo de teclado do D OS, limpando primeiramente o buffer. V erifica
Crtl-Break .
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
78
Funo 0Dh Reinicializa disco
E ntrada: AH = 0Dh
Funo 0Eh Seleciona disco
E ntrada:
AH = 0Eh
DL = Nmero da unidade de disco (0 = A; 1 = B; ...)
Funo 0Fh Abre arquivo preexistente
E ntrada:
DS:DX aponta para um FCB
AH = 0Fh
S ada: AL = 0 (sucesso) ou FFh (falha)
Funo 10h Fecha arquivo
E ntrada:
DS:DX aponta para um FCB
AH = 10h
S ada: AL = 0 (sucesso) ou FFh (falha)
Funo 11h Procura primeiro arquivo coincidente
E ntrada:
DS:DX aponta para um FCB no aberto
AH = 11h
S ada:
AL = 0 (sucesso; DTA contm FCB para comparao) ou FFh (falha)
Funo 12h Procura prximo arquivo coincidente
E ntrada:
DS:DX aponta para um FCB no aberto
AH = 12h
S ada:
AL = 0 (sucesso; DTA contm FCB para comparao) ou FFh (falha)
Observao:
A funo 12h deve ser usada aps a funo 11h.
Funo 13h Elimina arquivo
E ntrada:
DS:DX aponta para um FCB no aberto
AH = 13h
S ada:
AL = 0 (sucesso) ou FFh (falha)
Funo 14h Leitura seqencial
E ntrada:
DS:DX aponta para um FCB aberto
AH = 14h
Bloco atual e registro ativo em FCB
S ada:
Registro requerido colocado no DTA
Endereo do registro incrementado
AL = 0 (sucesso), 1 (fim de arquivo; nenhum dado no registro), 2 (segmento do D T A muito
pequeno para registro) ou 3 (fim de arquivo; registro completado com 0)
Funo 15h Escrita seqencial
E ntrada:
DS:DX aponta para um FCB aberto
AH = 15h
Bloco atual e registro ativo em FCB
S ada:
Registro lido no DTA e escrito
Endereo do registro incrementado
AL = 0 (sucesso), 1 (disco cheio), 2 (segmento do D T A muito pequeno para registro)
Funo 16h Cria arquivo
E ntrada:
DS:DX aponta para um FCB no aberto
AH = 16h
S ada:
AL = 0 (sucesso) ou FFh (falha; diretrio cheio)
Funo 17h Renomeia arquivo
E ntrada:
DS:DX aponta para um FCB modificado
AH = 17h
S ada:
AL = 0 (sucesso) ou FFh (falha)
Funo 19h Encontra unidade de disco ativa
E ntrada:
AH = 19h
S ada:
AL = unidade de disco ativa (0 = A; 1 = B; ...)
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
79
Funo 1Ah Determina a posio do DTA (endereo de transferncia de disco)
E ntrada:
DS:DX aponta para o novo endereo do DTA
AH = 1Ah
Observao:
O D T A padro tem 128 bytes e comea em CS:0080 no PSP.
Funo 1Bh Informao da FAT para a unidade de disco padro
E ntrada:
AH = 1Bh
S ada:
DS:BX aponta para o byte da FAT
DX = nmero de clusters
AL = Nmero de setores/ cluster
CX = Tamanho de um setor (512 bytes)
Funo 1Ch Informao da FAT para a unidade de disco especificada
E ntrada:
AH = 1Ch
DL = Nmero da unidade (0 = padro, 1 = A, 2 = B, ...)
S ada:
DS:BX aponta para o byte da FAT
DX = nmero de clusters
AL = Nmero de setores/ cluster
CX = Tamanho de um setor (512 bytes)
Funo 21h Leitura direta
E ntrada:
DS:BX aponta para um FCB aberto
Campo de registro direto do FCB = DS:(DX+ 33) e DS:(DX+ 35)
AH = 21h
S ada:
AL = 0 (sucesso), 1 (fim de arquivo; nenhum dado no registro), 2 (segmento do D T A muito
pequeno para registro) ou 3 (fim de arquivo; registro completado com 0)
Funo 22h Escrita direta
E ntrada:
DS:BX aponta para um FCB aberto
Campo de registro direto do FCB = DS:(DX+ 33) e DS:(DX+ 35)
AH = 22h
S ada:
AL = 0 (sucesso), 1 (disco cheio), 2 (segmento do D T A muito pequeno para registro)
Funo 23h Tamanho de arquivo
E ntrada:
DS:BX aponta para um FCB no aberto
AH = 23h
S ada:
AL = 0 (sucesso) ou FFh (nenhum arquivo encontrado no FCB correspondente)
Campo de registro direto = comprimento do arquivo em registro (arredondado para mais)
Funo 24h Determina campo de registro direto
E ntrada:
DS:BX aponta para um FCB aberto
AH = 24h
S ada:
Campo de registro direto = registro atual e bloco ativo
Funo 27h L bloco de arquivo direto
E ntrada:
DS:BX aponta para um FCB aberto
Campo de registro direto do FCB = DS:(DX+ 33) e DS:(DX+ 35)
AH = 27h
S ada:
AL = 0 (sucesso), 1 (fim de arquivo; nenhum dado no registro), 2 (segmento do D T A muito
pequeno para registro) ou 3 (fim de arquivo; registro completado com 0)
CX = Nmero de registros lidos
Arquivos de registro direto fixados para acesso ao prximo registro
Observao:
O buffer de dados usado nos servios do FCB o D T A ou a rea de trasnferncia do disco.
Funo 28h Escreve em bloco de arquivo direto
E ntrada:
DS:BX aponta para um FCB aberto
Campo de registro direto do FCB = DS:(DX+ 33) e DS:(DX+ 35)
AH = 27h
S ada:
AL = 0 (sucesso), 1 (disco cheio), 2 (segmento do D T A muito pequeno para registro)
CX = 0 (fix a o arquivo no tamanho indicado pelo campo de registro direto)
Arquivos de registro direto fixados para acesso ao prximo registro
Observao:
O buffer de dados usado nos servios do FCB o D T A .
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
80
Funo 2Ah Obtm data
E ntrada: AH = 2Ah
S ada:
CX = (Ano - 1980)
DH = Ms (1 = janeiro, ...)
DL = Dia do ms
Funo 2Bh Ajusta data
E ntrada:
CX = (Ano - 1980)
DH = Ms (1 = janeiro, ...)
DL = Dia do ms
AH = 2Bh
S ada:
AL = 0 (sucesso) ou FFh (falha; data no vlida)
Funo 2Ch Obtm hora
E ntrada:
AH = 2Ch
S ada:
CH = Horas (0 23)
CL = Minutos (0 59)
DH = Segundos (0 59)
DL = Centsimos de segundo (0 99)
Funo 2Dh Ajusta hora
E ntrada:
AH = 2Dh
CH = Horas (0 23)
CL = Minutos (0 59)
DH = Segundos (0 59)
DL = Centsimos de segundo (0 99)
S ada:
AL = 0 (sucesso) ou FFh (falha; hora invlida)
Funo 2Fh Obtm DTA corrente
E ntrada:
AH = 2Fh
S ada:
ES:BX = Endereo do DTA corrente
Observao:
O buffer de dados usado nos servios do FCB o D T A ou a rea de transferncia de disco.
Funo 31h Termina processo e permanece residente
E ntrada:
AH = 31h
AL = Cdigo de sada binrio
DX = Tamanho da memria requerida em pargrafos
Observao:
O cdigo de sada pode ser lido por um programa principal com a funo 4D h.
Funo 36h Obtm espao de disco livre
E ntrada:
AH = 36h
DL = Nmero da unidade de disco (0 = padro, 1 = A, 2 = B, ...)
S ada:
AX = FFFFh (nmero de unidade invlido) ou Nmero de setores/ cluster
BX = Nmero de clusters disponveis
CX = Tamanho de um setor (512 bytes)
DX = Nmero de clusters
Funo 39h Cria um subdiretrio em disco
E ntrada:
AH = 39h
DS:DX aponta para string ASCIIZ (terminada com z ero) com o nome do diretrio
S ada:
CF = 0 (sucesso) ou 1 (erro; AH = 3 caminho no encontrado, 5 acesso negado)
Funo 3Ah Apaga um subdiretrio em disco
E ntrada:
AH = 3Ah
DS:DX aponta para uma string ASCIIZ com o nome do diretrio
S ada:
CF = 0 (sucesso) ou 1 (erro; AH = 3 caminho no encontrado, 5 acesso negado ou
subdiretrio no vaz io)
Funo 3Bh Muda o diretrio corrente
E ntrada:
AH = 3Bh
DS:DX aponta para uma string ASCIIZ com o nome do diretrio
S ada:
CF = 0 (sucesso) ou 1 (erro; AH = 3 caminho no encontrado)
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
81
Funo 3Ch Cria um arquivo no disco ou abre um existente
E ntrada:
AH = 3Ch
DS:DX aponta para uma string ASCIIZ com o nome do diretrio
CX = Atributos de arquivo (bits podem ser combinados)
S ada:
CF = 0 (sucesso; AX = descritor de arquivo) ou 1 (erro; AL = 3 caminho no
encontrado, 4 muitos arquivos abertos, 5 diretrio cheio ou ex iste arquivo
anterior somente para leitura)
Observao:
A o tentar criar um arquivo j ex istente, o contedo anterior do arquivo perdido.
A tributos de A rquivo
Bit
ativado
Significado
0 Somente para leitura
1 Oculto
2 Sistema
3 Rtulo de volume
4 Reservado (0)
5 Arquivo
6 15 Reservados (0)
Funo 3Dh Abre um arquivo
E ntrada:
AH = 3Dh
DS:DX aponta para uma string ASCIIZ com o nome do diretrio
AL define modo de operao = 0 (somente leitura), 1 (somente escrita), 2 (leitura e escrita)
S ada:
CF = 0 (sucesso; AX = handler) ou 1 (erro; AL = cdigo do erro)
Observao:
Funo mais adequada para abrir arquivos j ex istentes. O contedo anterior no perdido.
Funo 3Eh Fecha um arquivo
E ntrada:
AH = 3Eh
BX = Nmero do descritor do arquivo (handler)
S ada:
CF = 0 (sucesso) ou 1 (erro; AL = 6 descritor invlido)
Funo 3Fh L de arquivo ou dispositivo
E ntrada:
AH = 3Fh
BX = Nmero do handler associado (descritor de arquivo)
CX = Quantidade de bytes a ler
DS:DX = Endereo do buffer que vai receber o dado
S ada:
CF = 0 (sucesso; AX= n
o
bytes lidos), 1 (erro; AX= 5acesso negado, 6descritor invlido)
Funo 40h Escreve em arquivo ou dispositivo
E ntrada:
AH = 40h
BX = Nmero do handler associado (descritor de arquivo)
CX = Quantidade de bytes a escrever
DS:DX = Endereo do buffer de dados
S ada:
CF = 0 (sucesso; AX = nmero de bytes lidos), 1 (erro; AX = 5 ou 6)
Observao:
D isco cheio no considerado erro. D eve-se comparar o nmero de bytes a serem escritos (CX )
com o nmero de bytes realmente escritos (A X ).
Funo 41h Apaga um arquivo em disco
E ntrada:
AH = 41h
DS:DX aponta para uma string ASCIIZ com o nome do diretrio
S ada:
CF = 0 (sucesso) ou 1 (erro; AX = 2 arquivo no encontrado, 5 acesso negado)
Observao:
O arquivo a ser apagado no poder estar em uso ou dever estar fechado. Curingas (* ou ?)
no so permitidos no nome do arquivo.
Funo 42h Move ponteiro de leitura/ escrita
E ntrada:
AH = 42h
BX = Nmero do handler (descritor) associado ao arquivo
CX:DX = Deslocamento desejado
AL define o cdigo de referncia = 0 (a partir do incio do arquivo), 1 (a partir da
posio atual), 2 (a partir do fim do arquivo).
S ada:
CF = 0 (sucesso; DX, AX = nova posio do ponteiro) ou 1 (erro; AL = 1 nmero
de funo invlido, 6 descritor invlido)
Observao: A ltera a posio lgica de escrita e leitura, permitindo o acesso aleatrio dentro do arquivo.
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
82
Funo 43h Obtm ou altera os atributos de um arquivo
E ntrada:
AH = 43h
DS:DX aponta para uma string ASCIIZ com o nome do diretrio
AL = 0 (l os atributos e coloca em CX ) ou 1 (redefine os atributos especificados em CX )
CX = Atributos de arquivo (se AL = 1)
S ada:
CF = 0 (sucesso) ou 1 (erro; AL = 2 arquivo no encontrado, 3 caminho no
encontrado, 5 acesso negado)
CX = Atributos de arquivo (se AL= 0)
Funo 45h Duplica um descritor de arquivo
E ntrada:
AH = 45h
BX = Descritor a duplicar
S ada:
CF = 0 (sucesso; AX = novo descritor, duplicado) ou 1 (erro; AL = 4 muitos
arquivos abertos, 6 descritor invlido)
Funo 46h Fora duplicao de um descritor de arquivo
E ntrada:
AH = 46h
BX = Descritor de arquivo a duplicar
CX = Segundo descritor de arquivo
S ada:
CF = 0 (sucesso; descritores referem-se ao mesmo flux o), 1 (erro; AL=6 descritor invlido)
Funo 47h (get current directory):
E ntrada:
AH = 47h
DS:SI aponta para a rea de 64 bytes (buffer).
DL = Nmero da unidade (0 = padro, 1 = A, 2 = B, ...)
S ada:
CF = 0 (sucesso; A SCIIZ em DS:SI), 1 (erro; AH = 15 unidade especificada invlida)
Observao:
D evolve uma string A SCIIZ de, no mx imo, 64 caracteres, contendo o nome do diretrio
corrente, desde a raiz . N o so includos a letra que identifica a unidade, os pontos (:) e a barra (\ ).
Funo 48h Alocao de memria
Funo 49h Desalocao de memria
Funo 4Ah Realocao de memria
E ntrada:
AH = 48h, 49h ou 4Ah, respectivamente
BX = Nmero de sees de 16 bytes de memria (pargrafos) que devem ser
alocados, liberados ou realocados
S ada:
CF = 0 (sucesso; A X :0000 = endereo de bloco de memria) ou
1 (erro; AL = 7 blocos de controle da memria destrudos, 8 memria
insuficiente com BX = solicitao mx ima permissvel, 9 endereo invlido;)
Observao:
A s trs funes utiliz am um endereo inicial de 16 bits para o bloco de memria sobre o qual
iro atuar. E sse endereo representa o segmento onde o bloco comea (o bloco sempre iniciar com
deslocamento 0 no segmento).
Funo 4Bh Carrega ou executa um programa
E ntrada:
AH = 4Bh
DS:DX = String ASCIIZ com unidade, nome de caminho e nome de arquivo
ES:BX = Endereo do bloco de parmetros
AL = 0 (carrega e ex ecuta o programa) ou 3 (carrega mas cria PSP, sem ex ecutar)
Bloco de parmetros para AL = 0: E ndereo de segmento do ambiente (word); E ndereo
do comando a colocar em PSP+80h (dword); E ndereo do FCB padro a colocar em
PSP+5Ch (dword); E ndereo do 2 FCB padro a colocar em PSP+6Ch (dword)
Bloco de parmetros para AL = 3: E ndereo de segmento para carregar arquivo (word);
Fator de reposio para imagem (word)
S ada:
CF = 0 (sucesso) ou 1 (erro; AL = 1 nmero de funo invlido, 2 arquivo no
encontrado no disco, 5 acesso negado, 8 memria insuficiente para operao
solicitada, 10 ambiente invlido, 11 formato invlido)
Funo 4Ch Sada
E ntrada:
AH = 4Ch
AL = cdigo de retorno binrio
Observao:
Funo utiliz ada para encerrar programas.
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
83
Funo 4Dh Obtm cdigo de retorno de subprocessos
E ntrada:
AH = 4Dh
S ada:
AL = Cdigo de retorno binrio do subprocesso
AH = 0 (terminou normalmente), 1 (terminou com Ctrl-Break ), 2 (terminou com erro crtico
de dispositivo), 3 (terminou com funo 31h)
Funo 56h Renomeia arquivo
E ntrada:
AH = 56h
DS:DX aponta para uma string ASCIIZ contendo o nome antigo
ES:DI aponta para uma string ASCIIZ contendo o nome novo
S ada:
CF = 0 (sucesso) ou 1 (erro; AL = 3 caminho no encontrado, 5 acesso negado,
17 no o mesmo dispositivo)
Observao:
O arquivo a ser renomeado no pode estar em uso ou deve estar fechado.
Funo 57h Obtm ou determina data e hora de um arquivo
E ntrada:
AH = 57h
BX = Descritor de arquivo
AL = 0 (obtm data e hora) ou 1 (fix a hora e data; CH = hora, DX = data)
S ada:
Na obteno de data e hora, CX = Hora e DX = Data
CF = 0 (sucesso) ou 1 (erro; AL = 1 nmero de funo invlido, 6 descritor
invlido)
Observao:
H ora=2048horas+32minutos+segundos/ 2 e D ata=512(A no-1980)+32ms+dia
INT 33h Funes de Mouse
Funo 0h Inicializa o driver do mouse
E ntrada: AX = 0
S ada:
BX = nmero de botes (FFFFh= 2, 0000h= + de 2, 0003h = mouse L ogitech)
AX = FFFFh (mouse instalado) ou 0 (mouse no instalado)
Observao:
Inicializ a o driver e posiciona o cursor do mouse, ainda que oculto, no meio da tela.
Funo 01h Apresenta/ ativa o cursor do mouse
E ntrada:
AX = 1
Funo 02h Oculta o cursor do mouse
E ntrada:
AX = 2
Funo 03h Obtm a posio do cursor
E ntrada:
AH = 3
S ada:
CX = coordenada x do cursor (coluna), em mick eys
DX = coordenada y do cursor (linha), em mick eys
BX = boto pressionado (1 = esquerdo, 2 = direito, 3 = central)
Observao:
Para transformar de mick ey para um valor de vdeo 8025 vlido, necessrio dividir o valor
de retorno de CX ou D X por 8.
Funo 04h Define a posio do cursor
E ntrada:
AX = 4
CX = coordenada x do cursor (coluna), em mick eys
DX = coordenada y do cursor (linha), em mick eys
Funes 05h e 06h Monitoram os botes do mouse
E ntrada:
AX = 5 ou 6, respectivamente
BX = boto a ser monitorado (0 = esquerda, 1 = direita, 2 = central)
S ada:
AX = boto pressionado (0 = esquerda, 1 = direita, 2 = central)
BX = nmero de vezes que o boto foi pressionado desde a ltima chamada
CX = coordenada x do cursor (coluna) no ltimo clique, em mick eys
DX = coordenada y do cursor (linha) no ltimo clique, em mick eys
Funo 07h Confina o cursor horizontalmente
E ntrada:
AX = 7
CX = coluna esquerda (inicial)
DX = coluna direita (final)
A nex o C Interrupes BIOS e D OS
Anna Catharina/ CEFET-RN/ 2000
84
Funo 08h Confina o cursor verticalmente
E ntrada:
AX = 8
CX = linha superior (inicial)
DX = linha inferior (final)
Funo 0Ah Modifica o formato do cursor para modo texto
E ntrada:
AX = 0Ah
Software: BX = 0, CX = mscara de tela, DX = mscara de cursor
H ardware: BX = 1, CX = linha inicial, DX = linha final a ser preenchida da clula tex to
Observao:
N o formato por software, a mscara de tela realiz ar um A N D com o par caractere-atributo
da posio atual da tela. O resultado dessa operao realiz ar um X OR com a mscara do cursor.
Funo 0Bh Rastreia os movimentos do mouse
E ntrada:
AX = 0Bh
S ada:
CX = deslocamento horizontal (mick eys) desde a ltima chamada
DX = deslocamento vertical (mick eys) desde a ltima chamada chamada
Observao:
V alores positivos de deslocamento indicam sentido de baix o para cima e da esquerda para a
direita. A contagem inicializ ada em z ero a cada nova chamada.
Funo 10h Define regio obscura para o cursor
E ntrada:
AX = 10h
CX, DX = coordenadas (x, y) do canto superior esquerdo
SI, DI = coordenadas (x, y) do canto inferior direito
Observao:
Uma vez que o cursor tenha entrado na rea obscura, permanecer desativado, requerendo
uma reativao atravs da funo 01h.
Funo 15h Capacidade necessria para salvar o estado do driver
E ntrada:
AX = 15h
S ada
BX = tamanho do buffer necessrio para armazenar o estado do driver
Funo 16h Salva o estado do driver
E ntrada:
AX = 16h
ES:DX aponta para o buffer onde ser armazenado o estado do driver
Observao:
A ntes de utiliz ar a funo 16h, necessrio ex ecutar a funo 15h.
Funo 17h Restaura o estado do driver
E ntrada:
AX = 17h
ES:DX aponta para o buffer que contm o estado do driver armazenado
Funo 1Dh Define pgina de vdeo para apresentao do cursor
E ntrada:
AX = 1Dh
BX = nmero da pgina onde ser apresentado o curso

You might also like