Sei sulla pagina 1di 6

Direccionamiento de

memoria MS-DOS
Ing. Otto Ponce
Direccionamien
to segmentado
El procesador 8086 tienen
registros de 16 bits, por lo que
solo se puede contener
directamente 2
16
posiciones
(65.536).
La solucin consiste en
expresar las direcciones
mediante dos palabras de 16
bits, denominadas
desplazamiento y segmento
que , pueden ser
representadas mediante un
hexadecimal de cuatro cifras
en el rango 0000 FFFFh.
Estas dos palabras pueden ser traducidas a una direccin de 16 bits mediante la
operacin denominada suma con desplazamiento. Suponiendo que el desplazamiento y
el segmento fuesen respectivamente ABCDh y E1FAh, la forma de obtener la direccin
resultante es:
Una de las palabras, el desplazamiento, se corre una posicin aadindole un cero a la
derecha (equivale a multiplicarla por 16, debido a que las direcciones se expresan en
hexadecimal). Para nuestro ejemplo, si el desplazamiento es ABCDh la resultante es
ABDCD0h.
El valor obtenido se suma con el valor del segmento (E1FAh), as que la direccin
resultante, sera B9ECAh. A esta se le denomina direccin absoluta.
Notacin
hexadecimal
Un byte son 8 bites. Si los
agrupamos en dos partes,
llamadas cuartetos, cada
cuarteto es de 4 bites. En 4
bites se puede expresar desde
el 0000 al 1111 (donde los
ceros y los unos son la
posicin de cada bite).
Por lo tanto este cuarteto,
puede tener desde los nmeros
0 al 15 ya que 1111 es 2 al
cubo + 2 al cuadrado + 2
elevado a 1 + 1 = 15
Si ahora a los nmeros decimales 10, 11, 15, los expresamos con
las letras A, B, F quiere decir que el valor de cada cuarteto puede ir
de 0 a F.

Entonces 16 bits, son 2 bytes = 4 cuartetos, puede ir desde los
valores 0000 a FFFF, siendo ahora cada letra o numero un cuarteto.
Segmentos y prrafos
Esta forma de representacin segmentada de las
direcciones es en realidad una imagen de como son
manejadas internamente en el procesador.
Habamos mencionado que tienen registros de 16 bits
que pueden servir para almacenar los desplazamientos,
es decir, cualquier direccin dentro de una zona de 64kb
(que se conoce como segmento). Disponen adems de 4
registros de segmento de 16 bits (CS, SS, DS y ES).
Segmento de cdigo CS (Code segment) seala la
direccin del segmento de cdigo del programa que
se est ejecutando.
Segmento de datos DS (Data segment) seala la
direccin del segmento de datos del programa en
ejecucin.
Segmento de pila SS (Stack segment) seala la
direccin del segmento donde est la pila del
programa.
Segmento Extra ES (Extra segment) es un segmento
auxiliar a los anteriores, se utiliza para sealar
espacio extra en alguno de los segmentos o para
almacenar momentneamente direcciones
interemedias.
Segmentos y
prrafos
En los anteriores registros se
almacenan las direcciones de
inicio del segmentos activo en
cada momento.
Resulta que se puede
direccionar un total absoluto de
1Mb, y hasta 64 x 4 = 256 kb
sin necesidad de cambiar los
registros de segmento. A esto
se le conoce como
funcionamiento en modo real.
En la figura se muestra como se utilizan los registros para sealar las
direcciones de inicio de los diversos mdulos de un programa
cargado en memoria dentro del espacio de memoria direccionable
con 16 bits.

Potrebbero piacerti anche