Что предпочитаете?

суббота, 12 февраля 2011 г.

Адресация

Ну пока-что заходят только мои знакомые лица, но надеюсь на лучшее.

Так как у микропроцессора 8088 указатель команд и адресные регистры имеют по 1 Кбитов, то можно подумать, что он способен адресоваться к памяти объемом не более 64 Кбайт (65 536 байт), т. е. имеет стандартный для 8-битовых микропроцессоров диапазон адресов. Однако на самом деле микропроцессор 8088 всегда генерирует 20-битовые адреса. Он делает это за счет добавления 16-битового смещения к содержимому регистра сегмента, умноженному на 16. Таким образом:

физический адрес = смещение + 16 • (регистр сегмента)

В действительности, микропроцессор  вместо умножения на 16 использует содержимое регистр сегмента так, как если бы оно имело четыре дополнительных нулевых бита

Добавление нулей аналогично умножению, поскольку при каждом сдвиге на одну позицию влево двоичное число удваивается. Следовательно, перемещение значения регистра сегмента на четыре позиции влево умножает его на16:2*2*2*2=16.



Например, если смешение адреса имеет значение 10Н, где суффикс Н обозначает шестнадцатеричное число, а регистр сегмента содержит 2000Н, то микропроцессор произведет вычисление физического адреса следующим образом (операнды показаны в двоичном виде):

             0000 0000 0001 0000 (смещение)

 + 0010 0000 0000 0000 0000 (номер блока)

    0010 0000 0000 0001 0000 (физический адрес).

Следовательно, мы получим 20-битовый адрес ячейки памяти 20010Н.

Имея в своем распоряжении 20-битовый адрес, микропроцессор 8088 может получить доступ к любому из 1 048 576 байт. (Данное значение называется "мегабайт" (Мбайт); 1 Мбайт = 1024 Кбайт.) Это в 16 раз превышает диапазон адресов микропроцессора 8088!

1 комментарий: