Foro de elhacker.net

Foros Generales => Dudas Generales => Mensaje iniciado por: Oppenheimer en 21 Septiembre 2013, 22:28 pm



Título: Duda sobre direccionamiento de la memoria
Publicado por: Oppenheimer en 21 Septiembre 2013, 22:28 pm
Buenas amigos, aquí os traigo una dudilla de novato total que espero que me podais resolver. El  problema es el siguiente:

Con 2 bytes (1 palabra) en una arquitectura 8086 claro esta que se pueden direccionar 64k (16^4) de manera que se puede acceder a las posiciones de memoria desde 0 a FFFFh.

Lo que no entiendo es el concepto de los registros de segmento y desplazamiento que sirven para superar este límite.

la formulita como tal se que es esta 16xsegmento+desplazamiento y de esta manera se consigue un nibble más,pudiendo ahora direccionar 1Mb(16^5) desde 0 a FFFFFh.

No llego a comprender como se consigue un nibble más gracias a esto del segmento y desplazamiento. Seguro que es una chorrada pero si alguien me  pudiera aclarar este concepto un poco así en términos que entienda se lo agradecería muchísimo.

Un saludo!


Título: Re: Duda sobre direccionamiento de la memoria
Publicado por: .:UND3R:. en 22 Septiembre 2013, 23:14 pm
Me obligaste a repasar un libro que hace un tiempito me leí, lo que estás comentando lo relacionaré con el procesador 8086, este tiene dos modos de programación (los cuales tratan de forma distinta la memoria):

Modo protegido:
Este es utilizado comúnmente (ideal para modelo de memoria FLAT), utiliza direcciones desde 0 hasta FFFFFFFFh (DWORD).

Modo direccionamiento lineal:
El procesador 8086 no podía almacenar direcciones de 20 bit en sus registros de 16 bits, por lo que se creó la "memoria segmentada", en donde la dirección se representa por:
segmento(WORD) + desplazamiento (WORD) = dirección resultante (DWORD) ej:
0800:120D
los segmentos más comunes son: CS, DS, SS, ES, FS, GS.

ejemplo:
mov ax,@data
mov ds,ax
mov eax,300h
call x


Saludos


Título: Re: Duda sobre direccionamiento de la memoria
Publicado por: Oppenheimer en 23 Septiembre 2013, 20:07 pm
Amigo! vale muchas gracias. Yo me estaba haciendo la picha un lío ya por esta tontería. A veces la explicación mas obvia es la correcta jajaja. Yo me creía que se multiplicaba de verdad en la formulita de mas arriba xd

Muchas gracias por la aclaración ;)