| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 моде все совсем иначе, надо почитать про архитектуру процессора, таких сайтов полно. |