Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > кокой адресный лимит у сегментных регистров?


Автор: Dreamuchiy 7.5.2011, 23:11
Теоретически если сегментные регистры 16 разрядов то получается FFFF: FFFF то есть можно манипулировать памятью от 0 до 4294967296 байт (65536 страниц умноженые на 65536 байт). Вообщем какой лимит например у CS ? Почему тогда дос видит только около мегабайта памяти а 32 разрядная винда типа XP в районе 3гб?

объясните новичку пожалуйста 

Автор: Игорь1024 8.5.2011, 04:42
Про какой режим говорим? IA-32e учитываем?
DOS в RM работает. Форточки в PM. Посмотрите определения на той же википедии, и поймёте.

Автор: Игорь1024 8.5.2011, 07:55
Ладно. DOS у нас работает в реальном режиме => всего адресовать можно (1Мб+64Кб-16б). Теперь возьмём форточки, которые используют paging, то есть здесь они могут покрыть всё 32-разрядное пространство (4 гига). Вот и ответ.
З.Ы. В RM в сегментных регистрах хранятся (Реальный_адрес_базы_сегмента/10h). Скажем так.

Автор: 500mhz 8.5.2011, 11:13
потому что это не означает 0xffff страниц по 65536 байт
к примеру имеем cs=0 si=0
при увеличении cs на 1 получим

cs=1:si=0  =   cs=0:si=16

то есть 16*65536 = 1 мег 

Автор: Korod 24.10.2011, 13:56
DOS работает в любом режиме, было бы желание программиста. Просто физичекие адреса в Real и Protect модах вычисляются по-разному. Про Real верно было сказано, что 
    (содержимое сегментного рег-ра * 16 + смещение в сегменте)
В Protect моде все совсем иначе, надо почитать про архитектуру процессора, таких сайтов полно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)