MS-DOS для программиста


Распределение памяти в MS-DOS - часть 5


Очевидно, что конец области оперативной памяти, простирающейся от 0 до 1024 Кбайт, имеет адрес FFFFh:000Fh, так как этому логическому адресу соответствует физический адрес FFFFFh. Адрес FFFFFh - это самый большой адрес, который может быть задан при использовании 20-разрядной адресации. А реальный режим работы процессора использует именно 20-разрядную адресацию.

Зададим себе вопрос: что произойдет, если, например, при записи в память будет указан логический адрес FFFFh:0010h?

Если в вашем компьютере установлен процессор 8086 или 8088, то произойдет запись в самую первую ячейку оперативной памяти, имеющую физический адрес 00000h, так как перенос из девятнадцатого разряда в двадцатый будет игнорирован (адресные разряды в процессоре 8086 или 8088 нумеруются от 0 до 19).

Процессоры 80286, i386, i486 и Pentium имеют большее количество адресных линий, поэтому перенос в двадцатый разряд не будет потерян. Произойдет адресация памяти за пределами первого Мбайта!

За счет двадцатого разряда адресной шины процессор в реальном режиме получает доступ к памяти в диапазоне адресов от FFFFh:0010h до FFFFh:FFFFh. Это почти 64 Кбайт (без шестнадцати байт). Именно эти 64 Кбайт MS-DOS может использовать для размещения своего ядра и областей данных. Все что вам нужно для того чтобы использовать таким образом область старшей памяти HMA - это две строки в файле config.sys :

DEVICE=C:\DOS\HIMEM.SYS DOS=HIGH




Начало  Назад  Вперед