Expanded Memory Specification
EMS (ang. Expanded Memory Specification, LIM EMS) – specyfikacja dostępu do pamięci poszerzonej (ang. expanded memory) w programach pracujących w systemie operacyjnym DOS na komputerach wyposażonych w procesor 80286 lub nowszych.
Pamięć poszerzona (dodatkowa) była umieszczana na odrębnych kartach, wyposażonych w układ sterujący oraz odpowiedni sterownik programowy. Pamięć taka nie była w całości widoczna w przestrzeni adresowej procesora trybu rzeczywistego, dostęp do niej był realizowany przez mechanizm okna. Okno, o rozmiarze 64 kB, znajdowało się w przestrzeni adresowej procesora, w obszarze 640 kB - 1 MB, i był w nim odwzorowany fragment pamięci dodatkowej – program miał więc w danej chwili dostęp tylko do 64 kB tego typu pamięci. Okno nosiło też nazwę ramki stron z powodu tego, iż składało się z czterech 16 kB stron pamięci, z których każda mogła być odwzorowana niezależnie. Jednym z ograniczeń korzystania z pamięci EMS był fakt, że mogła być ona stosowana tylko do przechowywania danych, natomiast kod programu mógł być umieszczony wyłącznie w pamięci konwencjonalnej.
Aby w oknie został odwzorowany inny fragment pamięci EMS program musiał odwołać się do sterownika, który zmieniał odwzorowanie stron (pamięć dodatkowa była podzielona na strony o rozmiarze 16kB, dlatego można również spotkać się z nazwą pamięć stronicowana). Ten prosty zabieg pozwalał programom, bez wielkich w nich zmian, na wykorzystanie pamięci o wielkości większej od 1 MB do własnych celów.
Specyfikacja EMS, która powstała by ujednolicić interfejs programowy sterowników (dostęp do usług EMS jest realizowany przez przerwanie 67h), została ogłoszona w 1988 roku przez firmy Lotus, Intel i Microsoft – stąd też do określenia tego rodzaju pamięci często stosowany jest skrót LIM EMS.
W systemie DOS, począwszy od wersji 5.00, dostarczany był standardowo sterownik o nazwie EMM386.EXE. Jego zadaniem była emulacja pamięci EMS w pamięci XMS, ponieważ w systemach komputerowych na bazie procesora 80386 możliwe było przejście do trybu chronionego procesora, dostęp do i wymiana stron pamięci w oknie oraz powrót do trybu rzeczywistego - w procesorze 80286 powrót do trybu rzeczywistego był możliwy tylko przez reset procesora.