Duda sobre direccionamiento de la memoria

Iniciado por Oppenheimer, 21 Septiembre 2013, 22:28 PM

0 Miembros y 1 Visitante están viendo este tema.

Oppenheimer

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!

.:UND3R:.

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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Oppenheimer

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 ;)