Assembly Language for Intel-Based
Computers, 5th Edition
Kip Irvine
Capítulo 2: Arquitetura de
Processamento IA-32
Slides prepared by the author
Revision date: June 4, 2006
(c) Pearson Education, 2006-2007. All rights reserved. You may modify and copy this slide show for your personal use,
or for use in the classroom, as long as this copyright statement, the author's name, and the title are not changed.
Resumo do Capítulo
•
•
•
•
•
Conceitos Gerais
Arquitetura IA-32
Gerenciamento de memória IA-32
Componentes de um Microcomputador IA-32
Sistema de Entrada-Saída
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
2
Conceitos Gerais
•
•
•
•
Projeto de Microcomputador Básico
Ciclo de Execução de Instrução
Leitura da Memória
Como um programa é executado
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
3
Projeto de Microcomputador Básico
• As operações de CPU são sincronizadas pelo clock
• A unidade de controle (CU) coordena os passos da seqüência
de execução
• ALU realiza o processamento aritmético e lógico
data bus
registers
Central Processor Unit
(CPU)
ALU
CU
Memory Storage
Unit
I/O
Device
#1
I/O
Device
#2
clock
control bus
address bus
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
4
Clock
• Sincroniza todas as operações de CPU e barramento
• O tempo de ciclo mede a duração de uma única
operação
• O clock é usado para disparar eventos
one cycle
1
0
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
5
Próxima seção
•
•
•
•
•
Conceitos Gerais
Arquitetura IA-32
Gerenciamento de memória IA-32
Componentes de um Microcomputador IA-32
Sistema de Entrada-Saída
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
6
Ciclo de execução de instrução
Fetch
Decode
Fetch operands
Execute
Store output
I-1
memory
op1
op2
program
I-2 I-3 I-4
fetch
read
registers
registers
instruction
register
decode
write
I-1
write
•
•
•
•
•
PC
flags
ALU
execute
(output)
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
7
Pipeline Multi-estágio
• O pipeline torna possível a execução de instruções em paralelo
• A execução de uma instrução é dividida em estágios discretos
Stages
S1
1
S2
S5
I-1
4
I-1
5
I-1
6
7
8
I-1
I-2
I-2
9
I-2
10
I-2
11
I-2
12
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
S6
I-1
3
Cycles
S4
I-1
2
Exemplo de um
processador nãopipeline. Muitos ciclos
perdidos.
S3
I-2
Web site
Examples
8
Execução em pipeline
• Uso eficiente dos ciclos, com alto throughput de instruções:
Stages
Cycles
S1
1
I-1
2
I-2
3
4
5
6
S2
S3
S4
S5
S6
Para k estágios e n
instruções, o número
de ciclos requeridos é:
I-1
I-2
I-1
I-2
k + (n – 1)
I-1
I-2
I-1
I-2
7
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
I-1
I-2
Web site
Examples
9
Ciclos perdidos (pipeline)
• Quando um dos estágios requer dois ou mais ciclos, novamente
se perde ciclos.
Stages
Cycles
S1
S2
S3
exe
S4
1
I-1
2
I-2
I-1
3
I-3
I-2
I-1
I-3
I-2
I-1
I-3
I-1
4
5
S6
Para k estágios e n
instruções, o número
de ciclos requerido é:
6
I-2
7
I-2
8
I-3
9
I-3
10
S5
k + (2n – 1)
I-1
I-1
I-2
I-2
I-3
11
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
I-3
Web site
Examples
10
Superescalar
Um processador superescalar faz uso de múltiplos pipelines de
execução. No exemplo, note que o estágio S4 tem pipelines u e v.
Stages
S4
Cycles
S1
S2
S3
u
v
S5
S6
Para k estágios e n
instruções, o número
de ciclos requeridos é:
1
I-1
2
I-2
I-1
3
I-3
I-2
I-1
4
I-4
I-3
I-2
I-1
I-4
I-3
I-1
I-2
I-4
I-3
I-2
I-1
I-3
I-4
I-2
I-1
I-4
I-3
I-2
I-4
I-3
5
6
7
8
k+n
9
10
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
I-4
Web site
Examples
11
Leitura da Memória
•
Múltiplos ciclos são requeridos para a leitura de memória, pois a
memória é muito mais lenta que a CPU. Os passos são:
• Colocar o endereço no barramento de endereço
• Acionar a linha Read (RD) para zero
• CPU espera um ciclo pela resposta de memória
• A linha Read (RD) vai para 1, indicando que o dado está presente
no barramento de dados
Cycle 1
Cycle 2
Cycle 3
Cycle 4
CLK
Address
ADDR
RD
Data
DATA
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
12
Memória Cache
• RAM estática de alta velocidade e alto custo, que
pode estar dentro ou fora do chip de CPU.
• Cache nível-1 : dentro da CPU
• Cache nivel-2 : fora da CPU
• Acerto (hit): quando o dado a ser lido se encontra no
cache
• Falta (miss): caso contrário.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
13
Como um programa é executado
User
sends program
name to
Operating
system
gets starting
cluster from
searches for
program in
Current
directory
returns to
System
path
loads and
starts
Directory
entry
Program
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
14
Multitarefa
• O Sistema Operacional (SO) pode rodar múltiplos
programas ao mesmo tempo.
• Multiplos threads de execução dentro de um mesmo
programa.
• O Scheduler atribui uma dada quantidade de tempo
de CPU para cada programa em execução.
• Comutação rápida de tarefas
• ilusão de que todos os programas estão sendo
executados simultaneamente
• o processador deve suportar a comutação de tarefas.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
15
Arquitetura do processador IA-32
•
•
•
•
Modos de operação
Ambiente básico de execução
Unidade de ponto-flutuante
História dos microprocessadores da Intel
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
16
Modos de Operação
• Modo protegido (Windows, Linux)
• Modo de endereçamento real (MS-DOS)
• Modo de gerenciamento do sistema
(gerencimento de potência, segurança do sistema,
diagnóstico)
• Modo Virtual-8086
• Híbrido de protegido
• Cada programa tem seu próprio computador 8086
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
17
Ambiente básico de execução
•
•
•
•
•
•
Memória endereçável
Registradores de propósito geral
Registradores de índice e base
Uso especializado de registradores
Flags de Status
Registradores de ponto-flutuante, MMX
e XMM
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
18
Memória endereçável
• Modo protegido
• 4 GB
• Endereçamento de 32-bits
• Modos de endereçamento real e Virtual-8086
• Espaço de 1 MB
• Endereçamento de 20-bits
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
19
Registradores de propósito geral
Encontrados dentro da CPU.
32-bit General-Purpose Registers
EAX
EBP
EBX
ESP
ECX
ESI
EDX
EDI
16-bit Segment Registers
EFLAGS
EIP
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
CS
ES
SS
FS
DS
GS
Web site
Examples
20
Accessando parte dos registradores
• Usa nomes para 8-bits, 16-bits ou 32-bits
• Aplicados para EAX, EBX, ECX e EDX
8
8
AH
AL
AX
EAX
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
8 bits + 8 bits
16 bits
32 bits
Web site
Examples
21
Registradores de índice e Base
• Têm somente nome para 16-bits, além de 32-bits:
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
22
Uso especializado de registradores (1 de 2)
• propósito geral
•
•
•
•
•
EAX – acumulador
ECX – contador de laços
ESP – ponteiro de pilha
ESI, EDI – registradores de índice
EBP – ponteiro de estrutura (pilha)
• Segmentos
•
•
•
•
CS – segmento de código
DS – segmento de dados
SS – segmento de pilha
ES, FS, GS – segmentos adicionais
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
23
Uso especializado de registradores (2 de 2)
• EIP – ponteiro de instrução
• EFLAGS
• Flags de status e controle
• cada flag é um único bit
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
24
Flags de Status
• Carry
• Estouro em aritmética sem sinal
• Overflow
• Estouro em aritmética com sinal
• Sign
• Resultado negativo
• Zero
• Resultado é zero
• Auxiliary Carry
• carry do bit3 para o bit 4
• Parity
• Soma de bits 1 é um número par
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
25
Registradores de ponto-flutuante, MMX, e XMM
80-bit Data Registers
• Oito registradores de ponto-flutuante de 80-bits
ST(0)
• ST(0), ST(1), . . . , ST(7)
ST(1)
• em estrutura de pilha
ST(2)
• usados para aritmética de pontoflutuante
ST(3)
ST(4)
• Oito registradores MMX de 64-bits
ST(5)
• Oito registradores XMM de 128-bits para
operações SIMD(single-instruction-multiple-dada)
ST(6)
ST(7)
Opcode Register
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
26
História dos microprocessadores Intel
•
•
•
•
Intel 8086, 80286
Família de processadores IA-32
Família de processadores P6
CISC e RISC
80x86 – família de todos os microprocessadores a partir de
8086, incluindo os de 16 bits, 32 bits e 64 bits.
IA-16 – arquitetura Intel de 16 bits (8086,8088, 80286)
IA-32 – arquitetura Intel de 32 bits (80386, 80486, Pentium,…)
IA-64 – arquitetura Intel de 64 bits (Itanium)
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
27
Lei de
Moore
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
28
Primeiros microprocessadores Intel
• Intel 8080
• RAM endereçável até 64K
• Registradores de 8-bits
• Sistema operacional CP/M
• Arquitetura de barramento S-100
• Discos flexíveis de 8-polegadas!
• Intel 8086/8088
• IBM-PC Usava 8088
• RAM endereçável até 1 MB
• Registradores de 16-bits
• Barramento de dados de 16-bits (8-bits para
8088)
• Unidade de ponto-flutuante separada (8087)
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
29
GND
1
40
VCC
A14
2
39
A15
A13
3
38
A16/S3
A12
4
37
A17/S4
A11
5
36
A18/S5
A10
6
35
A19/S6
A9
7
34
A8
8
33
9
32
AD7
AD6
10
.
31
8088
S2´
S1´
S0´
TIPO DE CICLO DE BARRAMENTO
0
0
0
Reconhecimento de interrupção
0
0
1
Leitura de porto de E/S
0
1
0
Escrita de porto de E/S
0
1
1
Halt
1
0
0
Acesso a código
MN/MX´
RD´
RQ´/GT0´
AD5
11
30
RQ´/GT1´
AD4
12
29
LOCK´
AD3
13
28
AD2
14
27
S2´
S1´
AD1
15
26
S0´
AD0
16
25
QS0
1
0
1
Leitura de memória
NMI
17
24
QS1
1
1
0
Escrita de memória
INTR
18
23
TEST´
1
1
1
Liberação de barramento
CLK
19
22
READY
GND
20
21
RESET
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
30
Arquitetura do 8086/8088
registradores
de uso geral, AX,BX,CX,DX
índices e
SI,DI,
ponteiros
SP e BP
BUS interno
operando 1
IP
registradores
de segmento
geração de
endereços e
controle do
barramento
ES
CS
DS
SS
BUS
externo
operando 2
ALU
queue
(4 by tes)
FLAGS
EU - Execution Unit
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
BIU - Bus Interf ace Unit
Web site
Examples
31
Cálculo do endereço físico do 8086/8088
15
0000
0
deslocamento
endereço
ef etiv o
0
15
segmento
0000
registrador de
segmento
+
19
0
endereço
f ísico
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
32
16 bits
Registradores
do 8086/8088
AX
AH
AL
Acumulador principal
BX
BH
BL
Aritmética, apontadores
CX
CH
CL
Loops
DX
DH
DL
Multiplicação e Divisão
SI
Apontador f onte para operações
com cadeia de caracteres
DI
Apontador destino para operações
com cadeia de caracteres
BP
SP
CS
DS
Apontador de Base
Apontador de Pilha
Segmento de Código
Segmento de Dados
SS
Segmento de Pilha
ES
Segmento Extra
IP
Contador de Programa
FLAGS
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Palavra de Status
Web site
Examples
33
Endereçamento imediato
• O operando é um dado contido na própria
instrução
opcode
dado
dado
• Ex: mov cl, 10h
- o dado especificado na instrução (constante) é
carregado no registrador CL.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
34
Endereçamento de registrador
O operando é contido num registrador
opcode
modo
Ex: mov bx, ax
- o conteúdo do registrador AX é carregado no registrador BX.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
35
Dado contido na memória
• Endereçamento direto – o endereço efetivo de
memória é o deslocamento
opcode
modo
deslocamento
end.ef etiv o
Ex: mov al, (2000h)
- o conteúdo de memória no endereço DS:2000h
é transferido para o registrador AL.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
36
Dado contido na memória
• Endereçamento indireto – o endereço efetivo é
contido num registrador
opcode
modo
BX, BP, SI, DI
end.ef etiv o
Ex: mov al, (bx)
- o conteúdo de memória no endereço DS: BX
é carregado no registrador AL.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
37
Dado contido na memória
• Endereçamento por base – o endereço efetivo é a
soma de um registrador e o deslocamento
opcode
modo
deslocamento
BX, BP
+
end.ef etiv o
Ex: mov cl, (bx + 04)
- o conteúdo de memória no endereço DS: BX + 04
é carregado no registrador CL.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
38
Dado contido na memória
• Endereçamento indexado – o endereço efetivo é a
soma de dois registradores, com ou sem
deslocamento
opcode
modo
deslocamento
BX, BP
+
SI,DI
+
end.ef etiv o
Ex: mov ah, (bx + si + 10h)
- o conteúdo de memória dado pelo endereço DS: BX + SI + 10H
é carregado no registrador AH.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
39
Dado contido na memória
Endereçamento de string (cadeia) – os endereços de memória
são implícitos, usando DS:SI para fonte e ES:DI para destino,
para instruções de cadeia
opcode
Ex: movsb
Significado: copia um byte do endereço dado por DS:SI
para o endereço ES:DI.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
40
Endereçamento de instrução
• Endereçamento relativo – o endereço é relativo ao
contador de programa, e é usado para desvio
opcode
deslocamento
Ex: jc 20h
Significado: desvia de uma instrução no endereço 20H à frente,
caso ocorra o vai-um (carry = 1).
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
41
Endereçamento de entrada/saída
• Endereçamento de porto de entrada/saída(E/S)
modo direto
opcode
endereço
Ex1: in al, 20h
- o byte de dados presente no porto 20H
é carregado no registrador AL.
Ex2: out 50h, ax
- a palavra de 16 bits contida em AX
é transferida para o porto 50H.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
42
Endereçamento de entrada/saída
Endereçamento de porto de E/S, indireto, por
registrador DX
opcode
DX
endereço
Ex1: in al, dx
- o byte contido no porto cujo endereço é dado pelo conteúdo do
registrador DX, é carregado no registrador AL.
Ex2: out dx, al
- o byte contido no registrador AL é carregado para o porto cujo endereço
é dado pelo conteúdo do registrador DX.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
43
Exemplo de programa
• Uma máquina tem 3 lâmpadas:
1) verde – acende quando a temperatura é abaixo de
30 graus
2) amarela – acende quando a temperatura está
entre 30 e 40 graus
3) vermelha – acende quando a temperatura está
acima de 40 graus
endereço do sensor de temperatura: 0FF0H;
endereço da saída para as lâmpadas: 0FF1H;
código para acender as lâmpadas: verde = 05H
amarela = 10H
vermelha = 15H
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
44
Programa
Rótulo (label) mnemônico
mov
in
mov
cmp
jb
cmp
jbe
mov
out
jmp
amarela:
mov
out
jmp
verde :
mov
out
retorna:
ret
operandos
comentário
dx, 0FF0h
;sensor
al, dx
dx,0FF1h
;lâmpadas
al,1Eh ;30 graus
verde
al, 28h ;40 graus
amarela
al, 15h
dx,al
;acende vermelha
retorna
al, 10h
dx, al
;acende amarela
retorna
al, 05h ;acende verde
dx,al
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
45
O IBM-AT
• Intel 80286
• RAM endereçável até 16 MB
• Memória protegida
• Várias vezes mais rápido que 8086
• Introduziu o barramento IDE
• Unidade de ponto-flutuante 80287
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
46
Família Intel IA-32
• Intel386
• RAM endereçável até 4 GB, registradores de
32-bits, paginação (memória virtual)
• Intel486
• Pipeline de instruções
• Pentium
• superescalar, barramento de endereço de 32bits, caminho de dados interno de 64-bits
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
47
32 bits
IA32
Registradores
16 bits
GPR0
EAX
AX
AH
AL
Acumulador principal
GPR1
ECX
CX
CH
CL
Loops
GPR2
EDX
DX
DH
DL
Multiplicação e Divisão
GPR3
EBX
BX
BH
BL
Aritmética, apontadores
GPR4
ESP
SP
EBP
BP
GPR6
ESI
SI
Apontador fonte para operações
com cadeia de caracteres
GPR7
EDI
DI
Apontador destino para operações
com cadeia de caracteres
GPR5
CS
DS
PC
EIP
EFLAGS
Apontador de Pilha
Apontador de Base
Segmento de Código
Segmento de Dados
SS
Segmento de Pilha
ES
Segmento Extra
FS
Segmento de Dados 2
GS
Segmento de Dados 3
IP
FLAGS
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Contador de Programa
CÓDIGO DE CONDIÇÃO
Web site
Examples
48
Família Intel P6
• Pentium Pro
• Técnicas avançadas de otimização em microcódigo
• Pentium II
• Conjunto de instruções MMX (multimídia)
• Pentium III
• Instruções SIMD (streaming extensions)
• Pentium 4 e Xeon
• Micro-arquitetura Intel NetBurst, sintonizadas para
multimídia
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
49
Arquitetura Intel Net Burst
•
•
•
•
•
•
•
•
Tecnologia Hyper Pipeline
Barramento de sistema de 400MHz
Cache de execução de rastreio
mecanismo de execução rápida
Cache de transferência rápida
Execução dinâmica avançada
Unidade melhorada de ponto-flutuante e multimídia
Streaming SIMD Extensions 2
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
50
modo protegido
Modo Real
8086/8088
80286
386, 486, Pentium
endereço lógico
endereço lógico
endereço lógico
seg
seg
seg
offset
16
16
offset
32
16
16
16
offset
+
20
endereço fisico
descritor
de segmento
descritor
32
de segmento
24
+
+
32
24
20
endereço fisico
12
10
10
20
20
Cálculo de
endereço
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
descritores de paginação
32
endereço fisico
Web site
Examples
51
CISC e RISC
• CISC – complex instruction set
• Conjunto grande de instruções
• Operações de alto-nível
• Requer interpretador de microcódigo
• exemplos: família Intel 80x86
• RISC – reduced instruction set
• Instruções atômicas, simples
• Conjunto pequeno de instruções
• Executadas diretamente pelo hardware
• exemplos:
• ARM (Advanced RISC Machines)
• DEC Alpha (agora Compaq)
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
52
Próxima seção
•
•
•
•
•
Conceitos Gerais
Arquitetura IA-32
Gerenciamento de memória IA-32
Componentes de um Microcomputador IA-32
Sistema de Entrada-Saída
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
53
Gerenciamento de memória IA-32
•
•
•
•
•
Modo de endereçamento real
Cálculo de endereçamento linear
Modo protegido
Modelo Multi-segmento
Paginação
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
54
Modo de endereçamento real
• Endereçamento máximo de RAM de 1 MB
• Programas de aplicação podem acessar
qualquer área de memória
• Única tarefa
• Suportado pelo sistema operacional MS-DOS
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
55
Memória Segmentada
Endereçamento segmentado: endereço absoluto (linear) é uma combinação
de um valor de segmento de 16-bits adicionado a um offset (deslocamento)
de 16-bits .
F0000
E0000
8000:FFFF
D0000
C0000
B0000
A0000
one segment
90000
80000
70000
60000
8000:0250
50000
0250
40000
30000
8000:0000
20000
10000
seg
00000
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
ofs
Web site
Examples
56
Cálculo do endereço linear
• Dado um endereço de segmento, multiplicá-lo por 16
(adicionar um zero hexadecimal), e adicionar o offset
• Exemplo: converter 08F1:0100 a um endereço linear
Adjusted Segment value: 0 8 F 1 0
Add the offset:
0 1 0 0
Linear address:
0 9 0 1 0
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
57
Sua vez . . .
Que endereço linear corresponde o endereço segmento/offset
028F:0030?
028F0 + 0030 = 02920
Usar notação hexadecimal para endereçamento.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
58
Sua vez . . .
Que endereço de segmento corresponde ao endereço linear
28F30h?
Muitos diferentes endereços (segmento-offset ) podem
produzir o endereço linear 28F30h. Por exemplo:
28F0:0030, 28F3:0000, 28B0:0430, . . .
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
59
Modo protegido (1 de 2)
• RAM endereçável até 4 GB
• (00000000 a FFFFFFFFh)
• Cada programa é associado a uma partição de
memória que é protegida de outros programas
• Projetado para multitarefas
• Suportado por Linux & MS-Windows
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
60
Modo protegido (2 de 2)
• Tabelas de descrição de segmentos
• Estrutura de programa
• Áreas de código, dados e pilha
• Descritores de segmentos CS, DS e SS
• Tabela de descrição global (GDT)
• Programas MASM usam o modelo de memória flat
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
61
Modelo de segmento Flat
• Uma única tabela de descrição global (GDT).
• Todos os segmentos são mapeados no espaço de 32-bits
not used
Segment descriptor, in the
Global Descriptor Table
FFFFFFFF
(4GB)
00040000
limit
access
00000000
00040
----
physical RAM
base address
00000000
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
62
Modelo de multi-segmento
• Cada programa tem uma tabela de descrição local (LDT)
• Contem a descrição para cada segmento usado por um programa
RAM
Local Descriptor Table
26000
base
limit
00026000
0010
00008000
000A
00003000
0002
access
8000
3000
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
63
Paginação
• Suportada diretamente pela CPU
• Divide cada segmento em blocos de 4096-bytes
chamados páginas
• A soma de todos os programas pode ser maior que a
memória física
• Parte do programa em execução fica na memória, e
parte no disco
• Gerenciamento de memória virtual (VMM) – utilitário
do SO que gerencia a carga e descarga de páginas
• Falta de Página – emitida pela CPU quando uma
página deve ser carregada do disco
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
64
Próxima seção
•
•
•
•
•
Conceitos Gerais
Arquitetura IA-32
Gerenciamento de memória IA-32
Componentes de um Microcomputador IA-32
Sistema de Entrada-Saída
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
65
Componentes de um microcomputador IA-32
•
•
•
•
Placa-mãe
Saída de Video
Memória
Portos de entrada-saída
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
66
Placa-mãe (motherboard)
•
•
•
•
•
•
•
Soquete de CPU
Slots de memória cache externa
Slots de memória principal
Chips BIOS
Chip de sintetização de som (opcional)
Chip de controle de Vídeo (opcional)
Conectores IDE, paralelo, serial, USB, vídeo,
teclado, joystick, rede e mouse
• Conectores de barramento PCI (expansão)
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
67
Intel D850MD Motherboard
Video
mouse, keyboard,
parallel, serial, and USB
connectors
Audio chip
PCI slots
memory controller hub
Pentium 4 socket
AGP slot
dynamic RAM
Firmware hub
I/O Controller
Speaker
Battery
Power connector
Diskette connector
Source: Intel® Desktop Board D850MD/D850MV Technical Product
Specification
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
IDE drive connectors
Web site
Examples
68
Estrutura de barramento de um Pentium 4
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
69
Saída de Vídeo
• Controlador de vídeo
• Na placa-mãe ou em cartão de expansão
• AGP (accelerated graphics port technology)*
• Memória de Vídeo (VRAM)
• Mostrador de Vídeo CRT
• usa varredura de rastreio
• Retraço horizontal
• Retraço vertical
• Monitores LCD
• Usa a tecnologia de cristais líquidos
* This link may change over time.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
70
Monitores de CRT
•
O CRT (Cathode Ray Tube) contem um canhão que pode emitir um feixe de
elétrons contra uma tela fosforescente na parte frontal.
A grade serve para repelir o feixe de elétrons, ao ser aplicada uma tensão negativa,
e para acelerá-lo ao ser aplicada uma tensão positiva e fazer brilhar um ponto na
tela, por um curto espaço de tempo.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
71
CRTs com deflexão eletrostática
- Usa campo elétrico para a deflexão do feixe de elétrons. A varredura
pode ser em qualquer direção.
- Útil em aplicações que necessitam de velocidade no traçado gráfico,
porém que não precise preencher toda a tela, como em osciloscópios,
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site Examples
aparelhos de eletrocardiograma e terminais
gráficos vetoriais. 72
CRTs com deflexão magnética
• Usado em TVs e na maioria dos monitores atualmente.
• Usa o campo magnético para as deflexões horizontais e verticais.
• Durante a varredura horizontal o feixe varre a tela da esquerda para a
direita em aproximadamente 50 ms, traçando uma linha quase
horizontal, seguida de uma varredura de retorno até a extremidade
esquerda, para iniciar uma nova varredura.
• Após completar todas as linhas horizontais de cima para baixo, o
feixe de elétrons faz um retorno para o canto esquerdo superior da
tela ( retorno vertical).
• Um dispositivo com essa forma de produção de imagem linha por
linha, é denominado de dispositivo de varredura por rastreamento
(raster scan).
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
73
Varredura entrelaçada
No modo entrelaçado, uma varredura completa é composta de campo par
e campo ímpar. O campo par é composto de linhas pares e o campo ímpar, de
linhas ímpares.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
74
Varredura não-entrelaçada
No modo de varredura não-entrelaçada,
as linhas são desenhadas seqüencialmente.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
75
LCD (Liquid Crystal Display)
•• 128-bit
Cristais3D
líquidos
são moléculas orgânicas viscosas que fluem como líquido,
graphics
que têm estrutura
espacial
como um cristal.
performance
powered
by
RAGE™ 128 PRO
•• 3D
Foram
descobertos
por um botânico austríaco (Rheinitzer) em 1888 e
graphics
performance
aplicados pela primeira vez em visores (por exemplo, calculadoras e
• Intelligent
TV-Tuner
relógios) na
décadawith
de 1960.
Digital VCR
•• TV-ON-DEMAND™
Quando todas as moléculas estão alinhadas na mesma direção, as
propriedades ópticas do cristal dependem da direção e polarização da luz
• Interactive
incidente. Program Guide
• Still image and MPEG-2 motion
capture
• video
Usando
um campo elétrico, o
alinhamento molecular e, por conseguinte, as
propriedades
• Video
editing ópticas podem ser mudadas. Em particular, fazendo passar
luz através de um cristal líquido, a intensidade da luz que sai dele pode ser
• Hardware
DVD
playback
controlada
porvideo
meios
elétricos.
• Video output to TV or VCR
•
Essa propriedade pode ser explorada para construir visores de tela plana.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
76
• Uma tela de monitor de LCD consiste de duas placas de vidro
paralelas entre as quais há um volume selado que contem um cristal
líquido.
• Uma luz atrás da placa traseira, natural ou artificial, ilumina a tela por
trás.
• Os eletrodos transparentes ligados a cada placa são usados para criar
campos elétricos no cristal líquido.
• Diferentes partes da tela recebem tensões elétricas diferentes para
controlar a imagem apresentada.
• Existem polaróides colados às partes frontal e traseira da tela pois a
tecnologia exige luz polarizada.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
77
Notebook com tela de LCD
Eletrodo frontal
Polaróide frontal
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
78
• Um tipo de visor de LCD é o TN (Twisted Nematic).
• A placa traseira contem minúsculos sulcos
horizontais , e a placa frontal, minúsculos sulcos
verticais.
• Sem campo elétrico, as moléculas de LCD tendem a
se alinhar com os sulcos.
• Como os alinhamentos frontal e traseiro estão a 90
graus de diferença, a estrutura cristalina fica torcida.
• Na parte de trás do visor há um polaróide horizontal
que permite somente a passagem de luz polarizada
horizontalmente. Na parte da frente do visor há um
polaróide vertical que permite somente a passagem
de luz polarizada verticalmente.
• Se não existisse líquido entre as placas, a luz
polarizada horizontalmente que passa pelo polaróide
traseiro seria bloqueada pelo polaróide frontal
produzindo uma tela escura.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
79
Polarização vertical e
horizontal
vertical
horizontal
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
80
• Contudo, a estrutura cristalina torcida das moléculas do LCD
guia a luz na passagem e gira a sua polarização fazendo com
que ela saia na vertical.
• Portanto, na ausência de um campo elétrico, a tela LCD é
uniformemente brilhante.
• Aplicando a tensão elétrica em partes selecionadas da placa, a
estrutura torcida pode ser destruída, bloqueando a luz nessas
posições.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
81
Efeitos de polaróides cruzados e
a presença do cristal líquido
Polaróide cruzado
(não transmite luz)
Efeito do
cristal líquido
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
82
• Há dois esquemas que podem ser usados para se aplicar a tensão
elétrica.
• Em um monitor de matriz passiva, ambos os eletrodos contêm fios
paralelos. Em um visor de 640x480, o eletrodo traseiro poderia ter
640 fios verticais e o frontal 480 fios horizontais.
• Aplicando uma tensão elétrica a um dos fios verticais e então
fazendo pulsar um dos horizontais, a tensão em uma posição de
pixel selecionada pode ser mudada, fazendo com que o pixel
escureça por um curto espaço de tempo.
• Repetindo esse pulso para o próximo pixel e então para o
seguinte, pode-se pintar uma linha escura de varredura, análogo a
um CRT.
• Normalmente a tela inteira é pintada 60 vezes por segundo.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
83
• Outro esquema de ampla utilização é o monitor de matriz ativa.
• É mais caro, mas produz melhor imagem.
• Em vez de ter apenas dois conjuntos de fios perpendiculares
entre si, ele tem um minúsculo elemento comutador em cada
posição de pixel em um dos eletrodos.
• Desligando e ligando esses elementos pode-se criar um padrão
de tensão elétrica arbitrário na tela, o que permite um padrão de
bits também arbitrário.
• Os elementos comutadores são chamados transistores de
película fina (TFT – Thin film transistors) e os monitores de tela
plana que os utilizam costumam ser chamados monitores TFT.
• A maioria dos notebooks e monitores de LCD usam a
tecnologia TFT.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
84
Monitores coloridos
• Os monitores coloridos usam os mesmos princípios gerais dos
monocromáticos, porém manipulando 3 cores: vermelha, verde
e azul em cada posição de pixel.
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
85
Memória
•
•
•
•
•
•
ROM
• Somente de leitura (read-only)
EPROM
• ROM programável e apagável (erasable programmable)
RAM Dinâmica (DRAM)
• Custo baixo, mas deve ser reavivada constantemente (refresh)
RAM Estática (SRAM)
• Custo alto; usada para memória cache; não necessita reavivamento
RAM de Vídeo (VRAM)
• Dois acessos (dual port); optimizada para reavivamento constante do vídeo
CMOS RAM
• complementary metal-oxide semiconductor
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
86
Portos de entrada-saída
• USB (universal serial bus)
•
•
•
•
Conexão a dispositivos de alta velocidade
Até 12 megabits/segundo
Hub USB conecta múltiplos dispositivos
enumeração: para o computador distingüir os
dispositivos
• suporta conexão quente (hot connections)
• Paralelo
•
•
•
•
Cabo curto, alta velocidade
Comum para impressoras
bidirecional, transferência de dados em paralelo
Chip controladora Intel 8255
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
87
Portos de entrada-saída (cont)
• Serial
•
•
•
•
Porto serial RS-232
Um bit por vez
Usa cabos longos e modens
16550 UART (universal asynchronous receiver
transmitter)
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
88
Próxima seção
•
•
•
•
•
Conceitos Gerais
Arquitetura IA-32
Gerenciamento de memória IA-32
Componentes de um Microcomputador IA-32
Sistema de Entrada-Saída
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
89
Níveis de entrada-saída
• Nível 3: chama uma função da biblioteca (C++, Java)
• fácil; abstraído do hardware; detalhes ocultos
• Desempenho lento
• Nível 2: Chama uma função do sistema operacional
• Específico a um SO; independente do dispositivo
• Desempenho médio
• nível 1: Chama uma função do BIOS (basic input-output system)
• Pode produzir diferentes resultados em diferentes sistemas
• Requer conhecimento de hardware
• Usualmente tem bom desempenho
• nível 0: Comunica diretamente com o hardware
• Pode não ser permitido por certos sistemas operacionais
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
90
Mostrando uma cadeia de caracteres
Quando um programa
HLL mostra uma cadeia
de caracteres, ocorrem
os seguintes passos:
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Application Program
Level 3
OS Function
Level 2
BIOS Function
Level 1
Hardware
Level 0
Web site
Examples
91
Nível de programação ASM
Os programas em ASM podem realizar entrada-saída em um
dos seguintes níveis:
ASM Program
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
OS Function
Level 2
BIOS Function
Level 1
Hardware
Level 0
Web site
Examples
92
Resumo
•
•
•
•
•
•
•
•
•
•
Unidade central de processamento (CPU)
Unidade lógica e aritmética (ALU)
Ciclo de execução de instrução
Multitarefa
Unidade de ponto-flutuante (FPU)
Conjunto de instruções complexas
Modo real e modo protegido
Componentes da placa-mãe
Tipos de memória
Entra/saída e níveis de acesso
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
93
42 69 6E 61 72 79
Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.
Web site
Examples
94