Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
54
Добавлен:
03.06.2014
Размер:
2.63 Mб
Скачать

Основные понятия

При обсуждении спецификации XMS мы будем использовать следующие понятия и термины:

  • расширенная память(Extended Memory илиXMS) - это память, используемая в компьютерах с процессорами 80286, 80386, 80486 иPentium, располагающаяся в адресном пространстве выше границы 1 Мбайт;

  • старшая область памяти (High Memory Area илиHMA) - это первые 64 Кбайт расширенной памяти, начинающиеся с адреса FFFFh:0010h. Адрес конца области HMA - FFFFh:FFFFh. Следовательно, размер области составляет 64 Кбайт без 16 байт. Следует отметить, что эта область может адресоваться процессором в реальном режиме и поэтому пригодна для обычных программ, предназначенных для работы в среде MS-DOS;

  • верхние блоки памяти (Upper Memory Blocks или UMB) - располагаются между границей 640 Кбайт и 1 Мбайт. Расположение и размер этих блоков могут сильно изменяться в зависимости от конфигурации аппаратуры компьютера;

  • расширенные блоки памяти (Extended Memory Blocks или EMB)- блоки расширенной памяти, располагающиеся выше границы HMA;

  • линия A20 - двадцать первая адресная линия процессора. Обычно эта линия заблокирована. Разблокировка линии открывает программам доступ к области HMA

На рис. 11.1 схематично показано расположение различных перечисленных выше блоков памяти в адресном пространстве.

Рис. 11.1. Расположение различных блоков памяти в адресном пространстве

Установка драйвера himem.Sys

Для установки драйвера файл CONFIG.SYS должен содержать строку:

device=[d:][путь]himem.sys [/HMAMIN=h] [/NUMHANDLES=n]

Параметр /HMAMIN= (необязательный) задает минимальный размер памяти, который могут использовать программы в области HMA. Размер задается в килобайтах. Смысл использования этого параметра заключается в том, чтобы позволять использовать область HMA только тем программам, которые затребуют из этой области не меньше h Кбайт. Это нужно для того чтобы более эффективно использовать область HMA.

Если параметр не задан, используется по умолчанию значение 0. Это означает, что первая же программа, запросившая область HMA, получит к ней доступ. Программа, запущенная следом и, возможно, использующая эту память эффективнее, уже не сможет воспользоваться областью HMA.

Максимальное значение параметра h равно 63.

Параметр /NUMHANDLES= задает максимальное количество областей расширенной памяти (блоков EMB), которое может быть запрошено программами. Диапазон задаваемых значений от 1 до 128, значение по умолчанию - 32. Задавая большие значения n, помните, что на управление каждым блоком EMB тратится 6 байт резидентной памяти.

При установке драйвер HIMEM.SYS может выдавать сообщения об ошибках в следующих случаях:

  • используется MS-DOS более старой версии, чем 3.00;

  • в компьютере установлен процессор 8086 или 8088;

  • при использовании компьютеров с нестандартными схемами управления расширенной памятью и линией A20

Спецификация xms

Спецификация XMS содержит описание программного интерфейса драйвера HIMEM.SYS и рекомендации по использованию области памяти HMA.

Проверка подключения драйвера

Первое, что должна сделать программа, которая собирается вызывать драйвер HIMEM.SYS - проверить, был ли установлен этот драйвер при загрузке операционной системы.

Для этого надо загрузить в регистр AX значение 4300h и вызвать прерывание INT 2Fh. Если после этого регистр AL будет содержать значение 80h, драйвер установлен, в противном случае - нет.

Приведем фрагмент программы, проверяющей подключение драйвера:

; Проверяем, установлен ли драйвер HIMEM.SYS

mov ax, 4300h

int 2fh

cmp al, 80h

; Если драйвер установлен, выполняем переход

je HMM_installed

Соседние файлы в папке несколько программ