Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Home Informática Oficina Sistemas Operacionais 4. A Memória do Computador - Página 2

Na Aldeia

Há 114 visitantes online

3642 registros
2 hoje
12 nesta semana
19 neste mês

Boas vindas: RDM

Estatística

Membros: 3652
Artigos: 1046
Links: 90
Leituras: 6716272

Login



Kanji da hora




Faça contato






Sáb

26

Mai

2007


11:21

4. A Memória do Computador - Página 2 PDF Imprimir Indique esta página
(25 votos, média 4.0 de 5)
Escrito por vovó Vicki   


Índice do Artigo
4. A Memória do Computador
Cálculo de endereços
Curiosidades
Considerações finais e Comentários
Todas as páginas

Calculando um endereço de memória

Imagine a memória disponível para o usuário como uma fileira de bits contínuos de 640 Kb de comprimento e que cada bloco tenha 64 Kb de comprimento. Quantas partes de 64 Kb você consegue destacar nesta fileira? Até parece pegadinha piscada

A primeira resposta que vem na cabeça da gente é 16 (mesmo porque já fizemos a conta). Pois é, se você respondeu 16, enganou-se! Imagine a primeira parte começando na primeira posição (a posição 0) e indo até a posição do byte 65.535; a segunda parte começando na segunda posição e indo até 65.536; a terceira parte começando na terceira posição e indo até 65.537 e assim sucessivamente. Só por cusiosidade, seria possível destacar 589.824 partes completas! É claro que usamos o expediente de sobrepor as partes, sempre com um intervalo de 1 byte.

Os engenheiros da Intel resolveram fazer a mesma coisa, só que com intervalos de 16 bytes, e chamaram cada parte de segmento. Portanto, segmento de memória são 65.536 bytes contínuos deslocados em 16 bytes para frente em relação ao início do segmento anterior. Está parecendo uma salada? Pois é isto mesmo que os engenheiros conseguiram fazer! A segmentação da memória ficou assim:

   Segmento 0 começa na posição 0 e vai até 65535
   Segmento 1 começa na posição 16 e vai até 65551
   ...
   Segmento 100 começa na posição 1600 e vai até 67135
   ...
   Segmento X começa na posição X*16 e vai até X*16 + 65535

Os blocos passaram a ser denominados Segmentos e a posição dentro de um bloco foi chamada de Deslocamento (offset, em Inglês). Convencionou-se indicar com Segmento:Deslocamento o parzinho que aponta uma determinada posição.

Agora um conceito importante: a diferença entre endereço absoluto ou real e endereço segmentado ou relativo. O endereço absoluto é o endereço físico, como se contássemos as posições na memória apontando com o dedo. O endereço segmentado é o indicado pelo parzinho Segmento:Deslocamento.

Talvez um exemplo de como 3 endereços segmentados indicam o mesmo endereço absoluto tire qualquer dúvida. Veja abaixo:

   4660:0005 => 4660 x 16 +   5 = 74.565
   4656:0069 => 4656 x 16 +  69 = 74.565
   4608:0837 => 4608 x 16 + 837 = 74.565

Abra a calculadora do Windows, passe-a para o modo científica e transforme os números acima em hexadecimal (a notação usada com frequência no Assembly). Lembre-se que 16 decimal corresponde a 10 hexadecimal, portanto, basta adicionar um 0 ao hexadecimal para multiplicá-lo por 16. Você deve obter o seguinte:

   1234:0005 => 1234 x 10 +   5 = 12340 +   5 = 12345
   1230:0045 => 1230 x 10 +  45 = 12300 +  45 = 12345
   1200:0345 => 1200 x 10 + 345 = 12000 + 345 = 12345


Última atualização ( Dom, 12.04.2009 17:29 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons