Форум программистов, компьютерный форум, киберфорум
ОС на Assembler
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232

Получить значение памяти в реальном режиме выше FFFFh

09.09.2018, 14:44. Показов 2448. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Меня не покидает идея создания своей ОС. Появилось свободное время, изучаю архитектуру компьютера. Появляются простые вопросы на которые не могу найти ответ в литературе или поиска в интернет. Вопросы могут показаться наивными и смешными, у меня есть некоторые знания и опыт программирования, но на ассемблере и темболее на "голом железе" я ничего не писал. Поэтому прошу помощи, подскажите, объясните если кому не трудно. Заранее Спасибо.

Как получить значение памяти в реальном режиме выше FFFFh?
Если сегмент умножается на 16 плюс смещение то
мы имеем доступ 0000h:0000h - 0000h:FFFFh с 0 до 65535
следующий адрес будет 0001h:0000h получается
сегмент 1*16*65536 старший разряд+0=1048576 теряются 983041 байт 1048576-65535

Если переходишь из реального режима в защищённый, то прерывания реального режима работают с своими векторами прерываний или происходит переключение на IDT, а векторы прерываний реального режима не используются?

Если перейти в защищённый режим, выделить память для нескольких задач(программ) и запустить их можно ли как то использовать общие подпрограммы например для работы с экраном и др.? Просто в защищённом режиме я так понял программа изолируется от других в этом и суть защищённого режима.

Добавлено через 4 часа 29 минут
С адресом вроде разобрался

0000h:FFFFh = 65535
плюс 1 = 65536 по нормальному будет 0001h:0000h
но какой то не хороший человек сказал, надо сдвигать на 4 бита в лево
т.е 0001h сдвигаем 0010h для адресации к ячейке 65536 в сегмент заносим 0010h в смещение 0000h
0010h:0000h = 65536 по нормальному должно быть 1048576

Я правильно понял? Ооооо до меня кажется дошло зачем надо сдвигать. Раньше объём памяти был 1 мегабайт, 32 разряда могут адресовать пространство до 4 Гб. А для того чтобы память можно было разделять на сегменты которые по сути могут пересекаться и ячейки памяти иметь практически два адреса.
К ячейке памяти с адресом скажем 0001h:1234h можно так же обратится так 0124h:0004h

Можно же было сделать гораздо проще. Изучая защищённый режим удивляюсь над теми кто это напридумывал, всё можно было бы сделать намного проще и удобнее. Но нет в очередной раз убеждаюсь, что у людей есть одно отвратительное качество всё делать плохо..
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2018, 14:44
Ответы с готовыми решениями:

Написать программу, определяющую количество байтов памяти с ненулевыми значениями для первых 256 Кб физической памяти в реальном режиме работы Intel 8
Доброе время суток, моя задача похоже на задачу из этой темы https://www.cyberforum.ru/assembler/thread762097.html. Но обладаю такими же...

Работа процессора в реальном режиме
Процессор работает в реальном режиме. В регистре CS находится значение 0х0ААА, а в регистре IP находитя значение 0х1200. Какой будет...

Переключение задач в реальном режиме
Здравствуйте. Во всех примерах разобрано переключение задач в защищённом режиме процессора, может кто-нибудь дать пример в реальном режиме?...

5
4189 / 1837 / 220
Регистрация: 06.10.2010
Сообщений: 4,124
09.09.2018, 16:34
Цитата Сообщение от pgb Посмотреть сообщение
сегмент 1*16*65536
0000:0000=0*16+0=0
0001:0000=1*16+0=16
но какой то не хороший человек сказал, надо сдвигать на 4 бита в лево
Правильно сказали. В реальном режиме 20-битная адресная шина - можно адресовать до 1 мегабайта.
32 разряда могут адресовать пространство до 4 Гб
Да, а если использовать PAE получается уже 36 бит и 64 Гб соответственно.
Если переходишь из реального режима в защищённый, то прерывания реального режима работают с своими векторами прерываний или происходит переключение на IDT, а векторы прерываний реального режима не используются?
В защищённом режиме адрес таблицы задаётся регистром IDTR
можно ли как то использовать общие подпрограммы например для работы с экраном и др
Можно просто мапить куски кода в адресное пространство процесса. так работают dll - одна физическая копия библиотеки может иметь несколько виртуальных адресов. Либо, если требуется повышение привилегий, использовать call gate (нет - не зубная паста).
0
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
09.09.2018, 17:22  [ТС]
Цитата Сообщение от murderer Посмотреть сообщение
В защищённом режиме адрес таблицы задаётся регистром IDTR
Значит память с 0 до 1023 векторов прерываний не используется и можно там хранить другие данные?
Цитата Сообщение от murderer Посмотреть сообщение
Можно просто мапить куски кода в адресное пространство процесса. так работают dll - одна физическая копия библиотеки может иметь несколько виртуальных адресов. Либо, если требуется повышение привилегий, использовать call gate (нет - не зубная паста).
Спасибо. Теперь начинаю понимать как сделать общие подпрограммы.
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
11.09.2018, 06:23
Цитата Сообщение от pgb Посмотреть сообщение
0010h:0000h = 65536
1000h:0000h = 65536

Добавлено через 3 минуты
Цитата Сообщение от pgb Посмотреть сообщение
Можно же было сделать гораздо проще.
А как ты гораздо проще собрался адресовать 20-и разрядные адреса на 16-и разрядном компьютере ?
0
4189 / 1837 / 220
Регистрация: 06.10.2010
Сообщений: 4,124
11.09.2018, 06:23
СТАТЬИ > Защищенный режим
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
11.09.2018, 13:25
Цитата Сообщение от pgb Посмотреть сообщение
Просто в защищённом режиме я так понял программа изолируется от других в этом и суть защищённого режима.
Хочешь изолируй, а хочешь не изолируй. Защищенный режим предоставляет средства, но не обязывает их использовать. А так есть ядро с кучей библиотек, есть системные вызовы к ядру и есть прикладное ПО. Начни читать литературу про ОС, это самые основы, которые можно печатать в учебниках по информатике для школьников.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2018, 13:25
Помогаю со студенческими работами здесь

Дано целое число. Если оно чётное, то записать в регистр DI значение FFFFh, если нечётное - FF00h
Дано целое число. Если оно чётное, то записать в регистр DI значение FFFFh, если нечётное - FF00h.

как запустить программу в реальном режиме
Как запустить программу в режиме реального времени, через свойства ярлыка PS: учетная запись обычного пользователя, не администратора

Трансляция на веб-сайте в реальном режиме
Всем привет. Стоит следующая задача: выбрать две камеры (например, IP-камеры), установить их на улице и чтобы пользователь с любой точки...

Визуализация данных в реальном режиме с сенсоров — фоторезисторов
Доброго времени суток! Я собираюсь делать сложный проект и хотела спросить с чего нужно начать. Суть проекта: я получаю данные в...

Вывести адрес первой команды BiOS. В реальном режиме
org 100h pushf ;устанавливаю трасировку pop ax or ax,8 ; 10000000b push ah popf ;установил флаг TF=1 ;перехватили int 1 xor...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru