Duda teórica

Duda teórica

de Ignacio Cabrera -
Número de respuestas: 4

Buenas, estoy algo confundido con respecto al siguiente tema: en el teórico se dijo que como los registros del 8086 son de 16 bit sólo pueden direccionar 64kb. Lo que me genera confusión es por qué se habla de kilobytes cuando en realidad cada palabra es de 16 bytes. No debería ser que con 16 bit se pueden direccionar 2^16 palabras? 

En respuesta a Ignacio Cabrera

Re: Duda teórica

de Gustavo Brown -

Tu duda tiene varias puntas, pero el primer tema es que la memoria en 8086 se direcciona de a byte. Eso quiere decir que cada dirección de memoria contiene 1 byte de memoria y no una palabra de 16 bits de memoria. Entonces con un registro de 16 bits podes generar 2^16 valores distintos que mapean a 64Kb de memoria.

Por otro lado, la arquitectura 8086 permite direccionar 1Mb de memoria mediante el mecanismo de segmentación.

Un segmento puede "ver" únicamente 64Kb de memoria, y en las notas está explicado cómo se calcula la dirección efectiva (la dirección de 20 bits que va por el bus de direcciones) a partir de un registro de segmento (de 16 bits) más un desplazamiento (también de 16 bits). 

El desplazamiento de 16 bits puede formarse a partir de la suma de los siguientes componentes (al menos 1 de ellos):

 - registros BX o BP  (uno solo de ellos)
 - registros SI o DI (uno solo de ellos)
 - inmediato

Saludos,
  Gustavo

En respuesta a Ignacio Cabrera

Re: Duda teórica

de Federico Rivero -

Estimado,

Lo que pasa es que el direccionamiento en x86 (y en la gran gran mayoría de las arquitecturas), el direccionamiento es de a byte.  Es decir, cada byte tirne su propia dirección. 

Lo que sucede entonces, es que si en x86 leés una palabra a partir de la dirección 0x12000, vas a leer el byte de la dirección 0x12000 y el byte de la dirección 0x12001.

Saludos!

        Federico

En respuesta a Federico Rivero

Re: Duda teórica

de Federico Rivero -
En respuesta a Federico Rivero

Re: Duda teórica

de Ignacio Cabrera -

jaja gracias a ambos! Ahora creo haber entendido, la confusión estaba en que debido a que el bus de datos y una palabra son de 16 bits ( que es lo que implica que la arquitectura sea de 16-bit no?) pensaba que lo que viajaba por dicho bus sólo se podía almacenar en una misma dirección.