fbpx
Wikipedia

Segmentación de memoria del x86

Direccionamiento de memoria

Los registros del 8086 son de 16 bits, por lo tanto el número de direcciones posibles a direccionar con 1 solo registro es: 2 65536 10000 16 = 10 = 16 lo cual representa un total de 64 KiB los valores de direcciones se encuentran en el rango de 0 a FFFF. Para superar este límite se utilizan 2 registros para direccionar memoria: Uno de SEGMENTO y otro de DESPLAZAMIENTO (offset) dentro del segmento. La notación utilizada para una dirección segmentada es: SEGMENTO:DESPLAZAMIENTO La relación entre la dirección de memoria real y la dirección segmentada es: DIR = SEGMENTO * 16 + DESPLAZAMIENTO Al multiplicar por 16 se obtienen 4 bits más con lo que ahora se tiene: 2 1048576 100000 20 = 10 = 16 con lo cual tenemos un total de 1024 KiB = 1 MiB de memoria direccionable. Los valores para las direcciones reales se encuentran en el rango 0 a FFFFFh. Es importante hacer notar que una misma dirección de memoria puede ser direccionada con distintos valores de segmento y desplazamiento Ej: 100:50 = 105:0 =0:1050, trabajando en base 16.

Modos de direccionamiento

Se entiende por modos de direccionamiento a las diferentes formas que pueden tomar los parámetros de las instrucciones del procesador. Diferentes autores clasifican en forma distinta los modos de direccionamiento del 8086. Nosotros distinguiremos fundamentalmente cuatro modos diferentes:

Registro

Un parámetro que direcciona a un registro está utilizando el modo de direccionamiento registro.

Ej: MOV AX, BX

En este ejemplo los dos parámetros direccionan un registro.

Valor o inmediato

El modo de direccionamiento inmediato es utilizado cuando se hace referencia a un valor constante. Este se codifica junto con la instrucción. Es decir dicho parámetro representa a su valor y no a una dirección de memoria o un registro que lo contiene.

Ej: MOV AX, 500

En este ejemplo el número 500 es un parámetro inmediato.

Directo

Se utiliza el modo directo cuando se referencia a una dirección de memoria y la misma está codificada junto con la instrucción.

Ej: MOV AL, [127]

En este ejemplo el desplazamiento de la dirección de memoria se codifica junto con la instrucción y el segmento se asume a DS.

Si MEMORIA es un array de bytes que representa a la memoria la instrucción anterior se puede poner como: AL := MEMORIA[ DS:127 ]

Indirecto

Se utiliza el modo indirecto cuando se referencia a una dirección de memoria a través de uno o varios registros.

Ej: MOV AL, [BX]

Aquí el desplazamiento de la dirección de memoria está contenido en el registro BX y al igual que el caso anterior como no se especifica el segmento se asume DS. Si MEMORIA es un array de bytes que representa a la memoria la instrucción anterior se puede poner como:

Al := MEMORIA[ DS:BX ]

La especificación completa de las expresiones que van dentro de los paréntesis rectos es: { BX | BP } [ + { SI | DI } ] [ + desplazamiento ] | { SI | DI } [ + desplazamiento ] | desplazamiento

Donde la expresión entre {} es obligatoria, la expresión entre [] es opcional y el signo | implica opción entre dos expresiones. Fuera del paréntesis recto se puede indicar cual es el registro de segmento usado para completar la dirección de memoria. En caso que este no se especifique siempre se asume uno por defecto. Ejemplos: Mov Ax, [Bp + 3] Add [Bx + Si ], 4 Sub Es:[Bx + Di + 5],Dx En la Tabla 1 se indican las combinaciones posibles entre registros índice y los segmentos así como las asignaciones por defecto.

  •   Datos: Q4413527

segmentación, memoria, este, artículo, sección, sobre, informática, necesita, wikificado, favor, edítalo, para, cumpla, convenciones, estilo, este, aviso, puesto, enero, 2014, Índice, direccionamiento, memoria, modos, direccionamiento, registro, valor, inmedia. Este articulo o seccion sobre informatica necesita ser wikificado por favor editalo para que cumpla con las convenciones de estilo Este aviso fue puesto el 6 de enero de 2014 Indice 1 Direccionamiento de memoria 2 Modos de direccionamiento 2 1 Registro 2 2 Valor o inmediato 2 3 Directo 2 4 IndirectoDireccionamiento de memoria EditarLos registros del 8086 son de 16 bits por lo tanto el numero de direcciones posibles a direccionar con 1 solo registro es 2 65536 10000 16 10 16 lo cual representa un total de 64 KiB los valores de direcciones se encuentran en el rango de 0 a FFFF Para superar este limite se utilizan 2 registros para direccionar memoria Uno de SEGMENTO y otro de DESPLAZAMIENTO offset dentro del segmento La notacion utilizada para una direccion segmentada es SEGMENTO DESPLAZAMIENTO La relacion entre la direccion de memoria real y la direccion segmentada es DIR SEGMENTO 16 DESPLAZAMIENTO Al multiplicar por 16 se obtienen 4 bits mas con lo que ahora se tiene 2 1048576 100000 20 10 16 con lo cual tenemos un total de 1024 KiB 1 MiB de memoria direccionable Los valores para las direcciones reales se encuentran en el rango 0 a FFFFFh Es importante hacer notar que una misma direccion de memoria puede ser direccionada con distintos valores de segmento y desplazamiento Ej 100 50 105 0 0 1050 trabajando en base 16 Modos de direccionamiento EditarSe entiende por modos de direccionamiento a las diferentes formas que pueden tomar los parametros de las instrucciones del procesador Diferentes autores clasifican en forma distinta los modos de direccionamiento del 8086 Nosotros distinguiremos fundamentalmente cuatro modos diferentes Registro Editar Un parametro que direcciona a un registro esta utilizando el modo de direccionamiento registro Ej MOV AX BXEn este ejemplo los dos parametros direccionan un registro Valor o inmediato Editar El modo de direccionamiento inmediato es utilizado cuando se hace referencia a un valor constante Este se codifica junto con la instruccion Es decir dicho parametro representa a su valor y no a una direccion de memoria o un registro que lo contiene Ej MOV AX 500En este ejemplo el numero 500 es un parametro inmediato Directo Editar Se utiliza el modo directo cuando se referencia a una direccion de memoria y la misma esta codificada junto con la instruccion Ej MOV AL 127 En este ejemplo el desplazamiento de la direccion de memoria se codifica junto con la instruccion y el segmento se asume a DS Si MEMORIA es un array de bytes que representa a la memoria la instruccion anterior se puede poner como AL MEMORIA DS 127 Indirecto Editar Se utiliza el modo indirecto cuando se referencia a una direccion de memoria a traves de uno o varios registros Ej MOV AL BX Aqui el desplazamiento de la direccion de memoria esta contenido en el registro BX y al igual que el caso anterior como no se especifica el segmento se asume DS Si MEMORIA es un array de bytes que representa a la memoria la instruccion anterior se puede poner como Al MEMORIA DS BX La especificacion completa de las expresiones que van dentro de los parentesis rectos es BX BP SI DI desplazamiento SI DI desplazamiento desplazamientoDonde la expresion entre es obligatoria la expresion entre es opcional y el signo implica opcion entre dos expresiones Fuera del parentesis recto se puede indicar cual es el registro de segmento usado para completar la direccion de memoria En caso que este no se especifique siempre se asume uno por defecto Ejemplos Mov Ax Bp 3 Add Bx Si 4 Sub Es Bx Di 5 Dx En la Tabla 1 se indican las combinaciones posibles entre registros indice y los segmentos asi como las asignaciones por defecto Datos Q4413527Obtenido de https es wikipedia org w index php title Segmentacion de memoria del x86 amp oldid 117465337, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos