Расчет физического адреса в 8086 - PullRequest
0 голосов
/ 16 июля 2011

Я узнал, что физический адрес рассчитывается путем смещения адреса сегмента (16-битного) влево 4 раза и добавления его с 16-битным адресом смещения.Память в архитектуре 8086 составляет 1М.Мой вопрос: если регистр сегмента и значение смещения оба равны FFFFH и FFFFH, то результат будет больше, чем FFFFH, т. Е. Больше 1M.* ----------

10FFEF

Как это на самом деле рассчитано ... ??

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Шина адреса 8086 имеет ширину всего 20 бит, что дает максимальный высокий адрес 0xFFFFF = 1 048 575.Он рассчитывается так, как вы это сделали, но в выборке памяти используются только младшие 20 бит.

1 голос
/ 16 июля 2011

Делает модульную арифметику, сбрасывая любые переносы.Таким образом, для сегмента FFFF и смещения FFFF вы вычисляете FFFF0 + FFFF = 10FFEF, но он «сбрасывает» начальную 1, оставляя реальный ответ 0FFEF.

...