Расширенная память (EMS) - дополнительная возможность для программ, запускающихся в реальном режиме (или в режиме V86), обращаться к памяти, которая находится за пределами первого мегабайта. EMS позволяет отобразить сегмент памяти, начинающийся обычно с 0D000h, на любые участки памяти, аналогично тому, как осуществляется доступ к видеопамяти в SVGA-режимах. Вызывать функции EMS (прерывание 67h) разрешается, только если в системе присутствует драйвер с именем ЕММХХХХ0. Для проверки его существования можно, например, вызвать функцию 3Dh (открыть файл или устройство). Причем на тот случай, если драйвер EMS отсутствует, а в текущей директории есть файл с именем ЕММХХХХО, следует дополнительно вызвать функцию IOCTL -INT 21h с AX = 4400h и ВХ = идентификатор файла или устройства, полученный от функции 3Dh. Если значение бита 7 в DX после вызова этой функции равно 1, то драйвер EMS наверняка присутствует в системе.
Основные функции EMS:
Спецификация EMS была разработана для компьютеров IBM XT, снабжавшихся особой платой, на которой и находилась расширенная память. С появлением процессора 80286 стало возможным устанавливать больше одного мегабайта памяти на материнской плате, и для работы с ней была введена новая спецификация - XMS. Тогда же были созданы менеджеры памяти, эмулировавшие EMS поверх XMS, для совместимости со старыми программами, причем работа через EMS выполнялась медленнее. Позже, когда в процессорах Intel появился механизм страничной адресации, выяснилось, что теперь уже EMS можно реализовать гораздо быстрее XMS. Большинство программ для DOS, которым требуется дополнительная память, поддерживают обе спецификации.