Как работает схема адресации сегмент: смещение? - PullRequest
3 голосов
/ 01 января 2012

Я читал, что во времена ЦП Intel 8086 самые большие регистры были 16-битными, и каждый искал способ доступа к более чем 65536 байтов линейной памяти, но вместо расширения регистров ЦП они изобрели сегментСхема адресации со смещением и, насколько я понимаю, вы можете «сгруппировать» два 16-разрядных регистра вместе в 32-разрядный адрес памяти.Но там же я прочитал, что процессор может получить доступ только к 1 МБ памяти.Как это работает?2 ^ 32 равно 4 294 967 296, поэтому я не понимаю, пожалуйста, просветите меня:)

Ответы [ 3 ]

2 голосов
/ 01 января 2012

Значение регистра сегмента смещено влево на 4 (умножено на 16) и добавлено к адресу операнда.

16 * 65536 = 1 мегабайт.

1 голос
/ 15 июля 2015

Только четыре бита (или четырехбитный регистр) были фактически необходимы для адресации до 1 048 360 байт ... (от 65 535 до 1 мегабайта), но у них был доступен 16-битный регистр ... и поэтому они использовали 16-битный Вместо этого зарегистрируйтесь, ожидая дней, когда шина адреса памяти будет расширена до 32 бит. В Intel 8088 было 20 адресных строк с номерами A0-A19 Этот процессор может адресовать 1 мегабайт памяти. FFFFF будет самым большим линейным адресом ... 4 бита на шестнадцатеричную цифру, 5 цифр = 20 строк адреса.

Я думаю, что для этого линейного адреса потребуется сегмент 000F и смещение FFFF

1 голос
/ 20 мая 2014

8086 имеет 20-битную адресную строку.таким образом, максимальный адрес составляет 2 ^ 20 = 1 МБ.http://en.wikipedia.org/wiki/Intel_8086

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...