El documento describe la estructura de memoria de segmentación utilizada por el procesador 8086. Usa registros de segmento de 16 bits para acceder a 1 MB de memoria física dividiéndola en segmentos de 64 KB. Las direcciones de 20 bits se calculan mediante la fórmula "Dirección física = 16 * (registro de segmento) + desplazamiento". Esto permite al 8086 acceder a hasta 4 segmentos separados (código, datos, pila y extra) para un total de hasta 256 KB de espacio de direcciones lógicas.
0 calificaciones0% encontró este documento útil (0 votos)
59 vistas3 páginas
El documento describe la estructura de memoria de segmentación utilizada por el procesador 8086. Usa registros de segmento de 16 bits para acceder a 1 MB de memoria física dividiéndola en segmentos de 64 KB. Las direcciones de 20 bits se calculan mediante la fórmula "Dirección física = 16 * (registro de segmento) + desplazamiento". Esto permite al 8086 acceder a hasta 4 segmentos separados (código, datos, pila y extra) para un total de hasta 256 KB de espacio de direcciones lógicas.
El documento describe la estructura de memoria de segmentación utilizada por el procesador 8086. Usa registros de segmento de 16 bits para acceder a 1 MB de memoria física dividiéndola en segmentos de 64 KB. Las direcciones de 20 bits se calculan mediante la fórmula "Dirección física = 16 * (registro de segmento) + desplazamiento". Esto permite al 8086 acceder a hasta 4 segmentos separados (código, datos, pila y extra) para un total de hasta 256 KB de espacio de direcciones lógicas.
El documento describe la estructura de memoria de segmentación utilizada por el procesador 8086. Usa registros de segmento de 16 bits para acceder a 1 MB de memoria física dividiéndola en segmentos de 64 KB. Las direcciones de 20 bits se calculan mediante la fórmula "Dirección física = 16 * (registro de segmento) + desplazamiento". Esto permite al 8086 acceder a hasta 4 segmentos separados (código, datos, pila y extra) para un total de hasta 256 KB de espacio de direcciones lógicas.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 3
ESTRUCTURA DE MEMORIA DE SEGMENTACIÓN:
El 8086 usa un esquema llamado segmentación, para acceder
correctamente a un megabyte completo de memoria, con referencias de direcciones de sólo 16 bits, y todo esto gracias a la utilización de registros de segmento que dividen esencialmente el espacio de memoria en segmentos de 64K de longitud, que pueden estar separados entre sí, adyacentes o superpuestos, y que comienzan en una dirección divisible por 16.
La forma en que se completan los 20 bits del bus de direcciones,
disponiendo en la CPU, solamente, registros de 16 bits, se consigue de la siguiente manera:
Se parte del contenido de uno de los registros de segmento, que
actúan como base. Después, se multiplica por 16 el contenido del registro de segmento, lo que, en binario, significa añadirle 4 ceros a la derecha y convertirlo en una magnitud de 20 bits. Finalmente, se suma un desplazamiento al resultado de la multiplicación anterior. Abreviadamente, la fórmula para calcular una dirección de memoria es:
Dirección Física = 16 * (registro de segmento) + desplazamiento.
De esta manera, sobre la dirección base que apunta el registro de
segmento multiplicado por 16, existe un margen de 64K bytes, controlado por un desplazamiento de 16 bits. Después de haber visto de una forma general el funcionamiento de la estructura de la memoria de segmentación vamos a ver cómo, más concretamente, el 8086 y en función de los registros de segmento y el resto de registros, calcula las direcciones completas de las instrucciones, posiciones de pila y datos.
Las direcciones completas de las instrucciones y de las posiciones de
la pila se forman sumando el contenido de los registros IP y SP con el segmento de código (CS) y el segmento de pila (SS) respectivamente.
La dirección de un dato puede formarse mediante la suma de los
contenidos de los registros BX ó BP, los contenidos de SI ó DI, y un desplazamiento. El resultado de este cálculo se denomina dirección efectiva (EA) ó desplazamiento de segmento. La dirección definitiva del dato, sin embargo, se determina mediante la EA y el registro de segmento apropiado, el segmento de datos (DS), el segmento extra (ES) ó el segmento de pila (SS).
El uso de los diferentes segmentos significa que hay áreas de trabajo
separadas para el programa, la pila y los datos. Cada área de trabajo tiene un tamaño máximo de 64K bytes y un mínimo de 0. Dado que hay cuatro registros de segmento, uno de programa (CS), uno de pila (SS), uno de datos (DS) y uno extra (ES) el área de trabajo puede llegar hasta 256K.
El programador puede determinar la posición de estos segmentos,
cargando el apropiado registro de segmentación de 16 bits con la dirección de segmento apropiada. Esto se realiza normalmente al inicio del programa, pero se puede fácilmente hacer en cualquier momento mientras al programa se ejecuta, cambiando dinámicamente la dirección de estos segmentos. Cambiando el desplazamiento, el programador puede acceder a cualquier punto de segmento. Se puede pensar en el segmento como una ampliación de memoria que forma un área de trabajo. El desplazamiento es la única parte de la dirección que aparece normalmente en los programas en lenguaje ensamblador durante las referencias a direcciones del área de trabajo.