Memória Segmentos

Propaganda
Memória
Função: armazenamento de dados e instruções
Estrutura Lógica:
Endereço
Conteúdo
0000 0000 h 
1010 0010
…
…
0256 0A20 h Æ
…
1101 1100
…
0D63 52E2 h Æ
0011 1111
0D63 52E3 h Æ
0110 1001
…
…
FFFF FFFE h
0111 0101
FFFF FFFF h 
0010 1001
byte
1
Segmentos
A memória é dividida em segmentos com localização variável.
Segmento – área especial da memória reservada por um
programa para conter informação: instruções,
dados, etc.
¾
Cada p
programa
g
contém um ou mais segmentos,
g
, q
que p
podem começar
ç
em qualquer posição na memória, variar em tamanho e estar dispostos
em qualquer sequência.
0000 0000 h 
Espaço utilizado pelo
Sistema Operativo
Segmento de Código
…
Segmento de Dados
Segmento
g
Pilha
FFFF FFFF h 
2
Segmentos
¾
Segmento de Código (“Code Segment”)
espaço da memória reservado para as instruções do
programa
¾
Segmento de Dados (“Data Segment”)
espaço da memória reservado para variáveis ou outros
dados que estão a ser utilizados
Poderão existir vários segmentos de código ou de dados
3
Segmentos
¾
Segmento Pilha ((“Stack
Stack Segment
Segment”))
espaço
da
memória
reservado
temporariamente
p
dados e endereços;
ç ;
para
guardar
É utilizado frequentemente como espaço para guardar
t
temporariamente
i
t o valor
l de
d registos
i t
que são
ã momentaneamente
t
t
necessários para outras operações, ou para a passagem de
parâmetros para subrotinas
¾
Segmentos
g
Extra ((“Extra Segments”)
g
)
espaços de memória adicionais reservados para dados,
que possibilitam um acesso mais seguro e eficiente a
dif
diferentes
t tipos
ti
d dados
de
d d da
d memória
ói
4
Modelos de Programação
Existem três modelos principais de programação em Assembly:
Modelo Uniforme em Modo Real ((Modelo Uniforme);
)
Modelo Segmentado em Modo Real (Modelo Segmentado);
g
((Modelo Protegido).
g )
Modelo Uniforme em Modo Protegido
A diferenças
As
dif
entre
t os modelos
d l recaem, do
d ponto
t de
d vista
i t do
d
programador, sobretudo sobre o modo como são usados os
registos de endereçamento (as outras diferenças relativas ao
modo de endereçamento da memória estão escondidas do
programador pelo sistema operativo)
5
Endereçamento
¾
ép
possível endereçar
ç q
quantidades arbitrariamente g
grandes de memória
recorrendo a esquemas de endereçamento mais complexos, que
ultrapassam a capacidade de endereçamento directo
Modelo Uniforme (modelo uniforme em modo real):
16 bits → 64 kB (216 combinações ⇒ 65.536
65 536 posições de memória)
Modelo Segmentado (modelo segmentado em modo real):
20 bits → 1 MB (220 combinações ⇒ 1.048.576 posições de memória)
Modelo Protegido (modelo uniforme em modo protegido):
32 bits → 4 GB (232 combinações ⇒ 4.294.967.296 posições de memória)
6
CPU Intel 8080
Computadores com microprocessadores da INTEL 8080:
- CPU de 8 bits (registos de 8 bit )
- Barramento de 16 bit (com 16 linhas de endereço)
- Capacidade de endereçamento até 64kB (216 = 65.536 bytes)
- Memória até 16, 32 ou 48 kB
¾
era possível endereçar toda a memória através do
endereçamento directo com recurso a endereços de 16 bit, de
0000H a FFFFH, restando ainda endereços
7
CPU Intel 8080
Endereçamento directo:
endereço de 16 bit => 0000H-FFFFH => 65.536 posições de memória
0000 h 
Prefixo do Segmento do
Programa
g
0100 h 
Código do Programa
Memória não utilizada
Sistema Operativo
CP/M-80
16, 32 ou 48kB
FFFF h 
Endereços sem
Memória Instalada
64kB
8
CPU Intel 8086
Computadores com microprocessadores da INTEL 8086:
- CPU de 16 bits (registos de 16 bit )
- Barramento de 16 bit (com 16 linhas de endereço)
- Memória até 1Mbyte (220 = 1.048.576 bytes)
¾
os microprocessadores da linha INTEL 8086, usados nos
computadores
p
pessoais,, usavam um esquema
p
q
de memória
segmentada.
era possível endereçar toda a memória através do endereçamento
di t com recurso a endereços
directo
d
d 20 bit (obtidos
de
( btid pela
l associação
i ã de
d
dois endereços de 16bit), de 00000h a FFFFFh
9
Modelo Segmentado
No Modelo Segmentado em Modo Real, o programa pode utilizar
toda a memória (1MB - 1.048.576 bytes).
Modo Real - o p
processador apenas
p
executa um p
programa
g
de cada vez.
Modelo Segmentado – apenas a associação de dois endereços de 16bit
permite endereçar qualquer posição dentro dos 1MB, sendo um dos
endereços o da base do segmento, e o outro o do deslocamento dentro do
segmento.
10
Modelo Segmentado
¾
endereço do segmento (“segment address”):
valor de referência de contagem dos endereços, que encontra-se
g ardado num
guardado
n m registo específico
¾
qualquer endereço de memória divisível por 16 (fronteira de um
parágrafo) pode ser considerada o início de um segmento (ou
endereço de um programa)
⇒
a casa hexadecimal menos significativa toma sempre o valor 0, pelo
que é omitida
⇒
endereço de 20 bits, composto por 16 bits + 4 bits LSD com valor 0
11
Modelo Segmentado
¾
endereço efectivo (“offset address”):
representa um desvio face a uma referência de contagem de endereços
⇒ endereço de 16 bits (65.536 posições de memória = 64 kbytes)
¾
um segmento pode estar localizado em quase qualquer posição da
memória (a partir de endereços referentes à fronteira de um
parágrafo) ocupando o espaço necessário para o programa (que pode
chegar aos 64kB).
64kB)
12
Modelo Segmentado
¾
endereço físico (“actual address”):
endereço de uma posição de memória: é obtido através da soma do
endereço
e
de eço e
efectivo
ect o ao e
endereço
de eço base do seg
segmento
e to
endereço do segmento (16 bit):
21D0|0 h
endereço efectivo (16 bit):
endereço físico (20 bit):
+ 507A h

26D7A h
A notação utilizada para o endereço físico consiste na associação dos
endereços base do segmento e efectivo,
efectivo separados por dois pontos
CS:IP
DS:BX
SS:SP
DS:SI
SS:BP
Ex: 21D0:507A
DS:DI
13
Modelo Segmentado
Endereço físico de 20 bit => 00000h - FFFFFh => 1.048.576 posições de memória
00000 h 
Espaço utilizado pelo
Si t
Sistema
Operativo
O
ti
Segmento de Código
CS
Segmento de Código
IP
CS:IP
Segmento de Dados
SI
DS:SI
Segmento de Dados
DI
ES:DI
SP
SS:SP
DS
ES
SS
Segmento Pilha
“Pilha”
FFFFF h 
14
Modelo Segmentado
¾
A existência de mais de um registo de segmento de dados (DS,
ES, FS, GS) permite que, a qualquer momento, se aceda a
mais de um Segmento de Dados.
Dados
¾
Só se pode
d aceder
d a um Segmento
S
t de
d Código
Códi
d cada
de
d vez,
apesar de poder existir mais do que um, pois só existe um
registo de segmento de código (CS).
(CS)
¾
Só existe um Segmento Pilha para cada
especificado pelo registo de segmento pilha SS.
programa,
15
Modelo Protegido
Surgiu
g com os computadores com CPU da INTEL 80386:
- CPU de 32 bit
- Barramento de 32 bit
- Memória até 4GB = 4.294.967.296 bytes
No Modelo Uniforme em Modo Protegido, o programa e os
dados com que trabalha, pode utilizar memória até 4GB 4 294 967 296 bytes.
4.294.967.296
bytes
Modo Protegido - o processador pode executar vários programas/tarefas
de cada vez,
vez protegendo-os
protegendo os uns dos outros.
outros
Modelo Uniforme – os registos genéricos (32bit) podem endereçar
qualquer posição dentro dos 4GB.
4GB
16
Modelo Protegido
Endereçamento directo (no segmento da memória reservado para o programa):
deslocamento de 32 bit => 0000 0000 h - FFFF FFFF h
=> 4.294.967.296 posições de memória
0000 0000 h 
“Program Segment
Prefix”
Prefix
Código do Programa
CS
DS
SS
ES
EIP
EBX
Dados do Programa
ESI
EDI
“Pilha”
ESP
17
FFFF FFFF h 
Programas com formato .COM
Endereçamento directo (no segmento da memória reservado para o programa):
deslocamento de 16 bit => 0000h - FFFFh => 65.536 posições de memória
0000 h 
0100 h 
“Program Segment
Prefix”
Prefix
Dados do Programa
Código do Programa
CS
DS
SS
ES
BX
IP
Espaço de Memória
não Utilizado
FFFF h 
“Pilha”
SP
18
Download