Привет всем! Кто может ТОЧНО сказать, что за размер памяти лежит по адресу 00413h-00414h В инете я встерчал обяснения, что это размер сегмента, отведенного в реальном режиме для одной прогр. А в книге Барри Брэя "Микропроцессоры Intel, архитектура и т.д." сказано дословно: "Размер стандартной памяти в Кбайт (от 0 до 640)". Так где же правда? И если это правильно, о какой стандартной памяти идет речь?
Стоп. Стандартная память (Base Memory) - она же вроде всегда 640 кб! На то она и Стандартная... как это "размер"?
DEEP Great Не совсем верно. Физически вся эта память в размере 640 Кб, конечно, присутствует, однако для нужды программы часть её нельзя использовать. Если точнее, всегда нельзя использовать область векторов прерываний реального режима (нижний килобайт) и область данных BIOS (следующие 256 байт как минимум, а для некоторых функций BIOS -- ещё 256) -- итого 1,5 килобайта в самом низу (в адресах 00000-005FF). Кроме того, многие более-менее современные BIOS имеют область расширенных данных, находящуюся в верхней части области в 640 Кб, которую тоже нельзя затирать. Узнать размер этой области можно, спросив у BIOS имеющийся объём стандартной памяти. Например, на моём компе будет возвращена величина в 633 килобайта -- т.е. область расширенных данных занимает 7 Кб А вот какое число хранится в указанных ячейках, я, честно говоря, не знаю. Можно попробовать определить экспериментально: запросить у BIOS объём стандартной памяти, а затем глянуть, что записано в этих ячейках.
sizif Может это и не имеет отношения к эти ячейкам, но например в OS/2 для досовских программ которые не использую графический режим можно было поставить использование памяти до $B800(текстовый буфер), то есть программа могла занимать 700К
sizif Прошу прощения, проморгал вопрос :-[ С помощью INT 12h, естественно. Сие прерывание входных параметров не имеет, а на выходе возвратит в AX размер памяти в килобайтах. Если у BIOS нет области расширенных данных, в AX будет содержаться 640 (десятичное).
SII Да тут не только биос. Всякии там резиденты используют эту ячейку чтобы отвести для себя место в памяти.Для того чтобы их не стрели случайно. Расширенная облость биоса иначе определяется int 15h ah=0C1h.
Pavia INT 12h отрапортует фактически о том, какой максимальный адрес из младших 640 Кб можно использовать. Если проводить опрос до загрузки оси (а значит, и всяких программ), то память в верхних адресах этих 640 Кб может быть занята только самим BIOSом.