0 / 0 / 0
Регистрация: 15.04.2012
Сообщений: 20
1

Сегментная организация памяти

21.04.2012, 01:33. Показов 2296. Ответов 9
Метки нет (Все метки)

Всех приветствую!
Интересует источник(сайт,книга), в котором на ваш взгляд лучше описывается данный механизм, т.к. на этот вопрос нормального ответа в книгах (авт. Юров, Финогенов, Пирогов...) не нашел.

Просто вопросы базового типа крутятся в голове, сам не могу построить логическое объяснение: как работает сегмент и смещение (осознал), как строится физический адрес .... и так далее.
Прошу помощи!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2012, 01:33
Ответы с готовыми решениями:

Организация памяти IBM PC с отличием
Вопрос: К примеру у нас IBM совместимая машина, но у нее на борту 1МБайт памяти типа EPROM с...

Страничная организация памяти,обращение к страницам
;---(3)---------- Установка CR3=Page directory pointer ----------------------...

Сегментная организация памяти
Прошу прощения, если не туда написал. Но, нужна помощь с решением следующей задачи. Помогите...

Используется сегментная адресация реального 16-битного режима
Используется сегментная адресация реального 16-битного режима. Какие значения необходимо записать в...

9
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
21.04.2012, 06:04 2
Go.D-bq, попробуйте Ирвин "Язык ассемблера процессоров intel" 4 издание. На мой взгляд неплохо описано.

Цитата Сообщение от Go.D-bq Посмотреть сообщение
нормального ответа в книгах (авт. Юров, Финогенов, Пирогов...)
У Юрова "Assembler. Учебник для ВУЗов" тоже вполне хорошо изложено.

Цитата Сообщение от Go.D-bq Посмотреть сообщение
как строится физический адрес
При вычеслении линейного адреса умножается сегментная часть на 10h и прибавляется смещение. Умножаем на 10h, т.к. адрес каждого сегмента всегда кратен 16 байтам. По данной формуле казалось бы можно обратится к такому диапазону 0000h-10FFEFh. Но т.к. в процессорах 8086/8088 всего 20 младших разрядов шины адреса, поэтому реально доступен только 1 мегабайт, диапазон адресов 0000h-FFFFFh.

Например есть адрес 0123h:0100h. Тогда линейный адрес будет 1330h.
1
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
21.04.2012, 06:08 3
Мне кажется, что здесь

Цитата Сообщение от _lucius_ Посмотреть сообщение
При вычеслении линейного адреса умножается сегментная часть на 10h и прибавляется смещение
ошибка, а как система в линейном адресе различит, скажем 0123h:0100h и 0122h:0110h?]:
0
Ушел с форума
Автор FAQ
15522 / 7344 / 962
Регистрация: 11.11.2010
Сообщений: 13,255
21.04.2012, 06:25 4
programmisto, в real mode 0123h:0100h и 0122h:0110h и 0133h:0000h один и тот же адрес
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
21.04.2012, 06:28 5
Это ещё почему? Ведь они в real mode будут находиться в разных сегментах.
0
Ушел с форума
Автор FAQ
15522 / 7344 / 962
Регистрация: 11.11.2010
Сообщений: 13,255
21.04.2012, 06:30 6
programmisto, учебник стоит читать
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
21.04.2012, 06:41 7
Да,Mikl___, ты прав, открыл я отладчик и посмотрел, что по этим адресам одно и то же. А почему так? Подскажите, пожалуйста, где найти материал об этом.
0
Ушел с форума
Автор FAQ
15522 / 7344 / 962
Регистрация: 11.11.2010
Сообщений: 13,255
21.04.2012, 06:53 8
Лучший сборник книг в электронном виде по Ассемблеру
1
2013 / 1285 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
21.04.2012, 11:11 9
Цитата Сообщение от programmisto Посмотреть сообщение
Ведь они в real mode будут находиться в разных сегментах.
Вы похоже называете "сегментом" содержимое сегментного регистра. Это не совсем верно. Сегмент это просто участок памяти фиксированного размера, а содержимое сегментного регистра скорее следует называть "параграфом", хотя я сам не люблю эти споры о терминологии.
Все эти странности с сегментной адресацией связаны с тем, что в 86 процах были 16 разрядные регистры и 16 разрядная шина данных, но 20 разрядная шина адреса. То есть адресоваться можно было к мегабайту памяти(2^20), но в 16 разрядные регистры невозможно было использовать для адресации более чем 64 килобайт памяти. Чтобы победить это разработчики добавили сегментные регистры. Сегментный регистр содержит старшие 16 бит адреса. Для получения полного(линейного) адреса к сегментному адресу прибавляется смещение. Таким образом на один и тот же адрес памяти указывает 4096 сочетаний сегмент/смещение. Введение защищенного режима решило эту проблему(ни слова про 286)
0
Клюг
7673 / 3188 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
21.04.2012, 12:06 10
Цитата Сообщение от vital792
Введение защищенного режима решило эту проблему
Зато усугубило разброд и шатание в неокрепших умах начинающих прогеров. Почему-то сразу вспоминается loadall(0Fh 05h) и unreal mode...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2012, 12:06
Помогаю со студенческими работами здесь

Сегментная адресация памяти
Здравствуйте, читаю небольшой материал про процессор 8086 и появившийся в нем режим сегментации...

Организация памяти.
Здравствуйте. Объясните, пожалуйста, вот что: Допустим есть класс, с определенным количеством...

Страничная организация памяти
Добрый день! Если не трудно, объясните в кратце страничную организацию памяти, или киньте ссылку,...

Организация памяти, объясните
Всем привет. Скажите почему при страничной организации вирт. памяти номер кадра стыкуется со...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru