Поясним это на примере. Пусть при инициализации операционной системы из файла AUTOEXEC.BAT запускаются две программы. Одна изних использует 10 килобайт из области НМА и запускаетсяпервой (в регистре DX функции 0lhэта программа указывает значение 10240).Вторая запускаемая программа использует40килобайт и запускаетсяпосле первой. Очевидно, что втораяпрограмма использует область НМА более эффективно. Но т. к. область НМАуже распределена первойпрограмме, вторая программа не сможет ее использовать.
Задавая параметр /HMAMIN=40, мы запретимраспределение области НМАтем программам, которые используют вней меньше 40килобайт. Теперь перваяпрограмма не получит доступ к области нма, даже если она будет запускаться до второй, использующей40 килобайт памяти из области НМА.
Освободить область НМА:
На входе: АН = 02h.
На выходе: AX = 000lh - если функция выполнена успешно,
0000h - если произошла ошибка.
Ошибки: BL= 80h, 81h, 90h,93h.
Программы, которые запрашивали областьНМА, должны освободить ее с использованием этой функции.При этом данные, которые находились в этой области, будутпотеряны.
После тогокак программа освободила область НМА, эта область становится доступнойдругим программам.
Глобальное открывание линии А20
На входе: АН = 03h.
Навыходе: AX = 000lh - если функция выполнена успешно,
0000h - если произошла ошибка.
Ошибки: BL = 80h, 81h, 82h.
Эта функция предназначена длятех программ, которые будут использоватьобласть НМА.Она разрешает работу заблокированной по умолчанию 21-йадресной линии процессора. Перед возвратом управлениясистеме программа должна закрытьлинию А20 с помощью функции 04h.
Следует отметить, что на многихтипах компьютеров переключение линии А20 достаточно медленная операция.
Глобальное закрывание линии. А20
На входе: AH = 05h
На выходе: AX = 000lh - если функция выполнена успешно,
0000h - еслипроизошла ошибка.
Ошибки: 80h, 81h, 82h, 94h.
Эта функцияпредназначенадля тех программ, которые используют область НМА. Онадолжна выполняться перед завершением работы такой программы.
На входе: АН = 05h.
На выходе: АХ = 000lh -если функция выполнена успешно,
0000h - если произошлаошибка.
Ошибки: BL = 80h,81h, 82h.
Этафункция предназначенатолько для техпрограмм, которые непосредственно управляют расширеннойпамятью. Перед завершением работы программа должна закрыть линию А20 при помощифункции 06h.
На входе: АН = 06h.
На выходе: АХ = 000lh - если функция выполнена успешно,
0000h - если произошла ошибка.
Ошибки: BL = 80h, 81h, 82h, 94h.
Функция отменяет разрешениелинии А20, запрошенное предыдущей функцией. Она предназначена только для тех программ, которые непосредственно управляютрасширенной памятью.
Определение состояния линии А20
На входе: AH = 07h.
На выходе: AX = 0001h - если линия А20 открыта;
0000h - если линия А20 закрыта.
Ошибки: BL = OOh, 80h, 81h.
Функция выполняет попытку адресоваться за границу 1 мегабайта памяти и проверяет, не происходит ли при этом обращение в начало памяти (т. е. "свертка памяти").
Определение размера свободной расширенной памяти:
На входе: AH = 08h.
На выходе: AX = размер наибольшего свободного блока расширенной памяти в килобайтах;
DX = общий размер свободной расширенной памяти в килобайтах.
Ошибки: BL = 80h, 81h, AOh.
При определении размера свободной расширенной памяти в возвращаемое значение не включается 64 килобайта области НМА, даже еслиэта область не используется программами.
Получить блок ЕМВ
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.