Распределение адресного пространства
Не следует думать, что термины "адресное пространство" и "оперативная память" эквивалентны. Адресное пространство – это просто набор адресов, которые умеет формировать процессор; совсем не обязательно все эти адреса отвечают реально существующим ячейкам памяти. В зависимости от модификации персонального компьютера и состава его периферийного оборудования, распределение адресного пространства может несколько различаться. Тем не менее, размещение основных компонентов системы довольно строго унифицировано. Типичная схема использования адресного пространства компьютера приведена на рис. 1.5. Значения адресов на этом рисунке, как и повсюду дальше в книге, даны в шестнадцатеричной системе счисления.
Рис. 1.5. Типичное распределение адресного пространства.
Первые 640 Кбайт адресного пространства с адресами от 00000h до 9FFFF11 (и, соответственно, с сегментными адресами от 0000h до 9FFFh) отводятся под основную оперативную память, которую еще называют стандартной (conventional). Начальный килобайт оперативной памяти занят векторами прерываний, которые обеспечивают работу системы прерываний компьютера, и включает 256 векторов по 4 байта каждый. Вслед за векторами прерываний располагается так называемая область данных BIOS, которая занимает всего 256 байт, начиная с сегментного адреса 40h.
Сама BIOS (от Basic In-Out System, базовая система ввода-вывода) является частью операционной системы, хранящейся в постоянном запоминающем устройстве. Это запоминающее устройство (ПЗУ BIOS) располагается на системной плате компьютера и является, таким образом, примером встроенного, или "зашитого" программного обеспечения. В функции BIOS входит тестирование компьютера при его включении, загрузка в оперативную память собственно операционной системы MS-DOS, хранящейся на магнитных дисках, а также управление штатной аппаратурой компьютера – клавиатурой, экраном, дисками и прочим. В области данных BIOS хранятся разнообразные данные, используемые программами BIOS в своей работе. Так, здесь размещаются:
- входной буфер клавиатуры, куда поступают коды нажимаемых пользователем клавиш;
- адреса видеоадаптера, а также последовательных и параллельных портов;
- данные, характеризующие текущее состояние видеосистемы (форма курсора и его текущее положение на экране, видеорежим, используемая видеостраница и проч.);
- ячейки для отсчета текущего времени и т.д.
Область данных BIOS заполняется информацией в процессе начальной загрузки компьютера, а затем динамически модифицируется системой по мере необходимости. Многие прикладные программы, особенно, написанные на языке ассемблера, обращаются к этой области с целью чтения или модификации содержащихся в них данных. С некоторыми ячейками области данных BIOS мы столкнемся при рассмотрении примеров конкретных программ.
В области памяти, начиная с адреса 500h, располагается собственно операционная система MS-DOS, которая обычно занимает несколько десятков Кбайт. Программы MS-DOS, как и другие системные составляющие (векторы прерываний, область данных BIOS) записываются в память автоматически в процессе начальной загрузки компьютера.