Что если выйти за предел объема ОП?
Вобщем задача такая.... Работаем в защищенном режиме. Есть сегмент размером 4Га. Начинаем считать каждый байт этого сегмента поочереди с самого начал. Объем ОП 256 мегов. Что будет, когда я выйду за этот объем?
Комп просто перезагрузиться. Хотя если подробнее, на процессор посылается сигнал #RESET, его можно обрабатывать. Например из-за его обработки BIOS'ом при повторной перезагрузке память не тестируется. Правда, как его обрабатывать, нигде не видел.
А ты может посоветуешь элегантный способ определить доступный объем озу?
А вобще вот попробовал, не перезагружается, но выдает всякий мусор. Пишу туда одно значение, читаю совсем другое. Хотя, мне это и надо было :)
А ты может посоветуешь элегантный способ определить доступный объем озу?
Наверное ты попал в память какого-нибудь контроллера, которая на адресное пространство процессора отмаппирована. А объём ОЗУ можно определить твоим способом - записываешь туда какое-нибудь значение, а потом читаешь и сравниваешь. Или через функцию 0e801. Вот описание:
int 15h fn e801h
Входные параметры:
ax = e801h.
Выходные параметры:
ax - размер расширенной памяти в килобайтах до 16Mb;
bx - размер расширенной памяти в блоках по 64к свыше 16Мб;
cx - размер сконфигурированный расширенной памяти в килобайтах до 16Mb;
dx - размер сконфигурированной расширенной памяти в блоках по 64к свыше 16Мб.
Но она на старых биосах не работает, или неправильно показывает. А бывает, что ax и bx - 0, тогда надо из cx и dx размер памяти определять.