|
Sistemas Operativos
Funcionamento em modo real
Segmentação
Um endereço, representado por 2 ou mais valores de registo, é um endereço lógico.
O endereço físico / real, é calculado a partir do endereço lógico, (de 2 registos de 16 bits).
Para calcular o endereço físico, soma-se o valor do registo de
offset
com o segmento seleccionado, juntando em ordem de menor peso 4 linhas de zeros. Assim o endereço físico é calculado, deslocando o valor do segmento de base, 4 bits para a esquerda, 1 dígito na base 16, somando-lhe o valor de registo do
offset
.
Quando a localização física da memória é 02100h, os endereços lógicos podem ser: 0200h e 0100h.
0200h é o valor do CS
|
Bit 15
|
Hexadecimal
|
Bit 0
|
|
0 |
2 |
0 |
0 |
|
|
|
|
|
|
Binário
BCD
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0
|
0 |
0 |
0 |
0 |
0 |
0 |
0100h é o valor do IP
|
Bit 15
|
Hexadecimal
|
Bit 0
|
|
0 |
1 |
0 |
0 |
|
|
|
|
|
|
Binário
BCD
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
4 bits forçados a zero
|
|
CS |
0000
|
0010
|
0000
|
0000
|
0000
|
|
|
|
|
|
|
|
|
IP |
+
|
0000
|
0001
|
0000
|
0000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bin. |
0000
|
0010
|
0001
|
0000
|
0000
|
|
|
|
|
|
|
|
|
Hexa. |
0
|
2
|
1
|
0
|
0
|
Quando a localização física da memória é 00256h, os endereços lógicos podem ser: 0020h e 0056h.
CS = 0020h ( registo de segmento )
IP = 0056h ( registo do
offset
)
|
CS
|
0 |
0 |
2 |
0 |
0 |
0 |
0 |
0 |
|
IP
|
|
|
|
|
|
|
IP
|
+
|
0 |
0 |
5 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
2 |
5 |
6 |
|