Dos7book
.pdfПриложение А.11: Спецификации оборудования компьютера
Примечание 3: регистр флагов позволяет грубо идентифицировать тип процессора. Невозможность сбросить флаг 0Fh в нуль – признак древних процессоров 8086. Невозможность установить в единицу бит 0Eh регистра флагов – признак 16-разрядных процессоров. Если процессор допускает запись в бит 0Eh, то он 32-разрядный и имеет регистр EFLAGS, а в нем бит 15h подскажет, способен ли данный
процессор выдать таблицу своих параметров в ответ на команду
CPUID (ее код 0F A2).
Примечание 4: EFLAGS – это старшие биты 32-разрядного регистра флагов. В реальном режиме доступ к ним обеспечивают команды PUSHF и POPF с префиксом 66h, как показано в разделе 7.02-06.
Примечание 5: установление режима V86 командой POPF невозможно (блокировано). Установить режим V86 из стека можно только в защищенном режиме командой IRET, когда битом 6 в байте 06h сегментного дескриптора (A.12-2) включена 32-разрядная адресация.
Примечание 6: здесь имеется ввиду выравнивание размещения операндов по адресам, кратным числу байтов в формате этих операндов.
Контроль выравнивания производится только на третьем уровне привилегий при работе в защищенном режиме (подробнее – в примечании к 8.01-42). Бит 12h в регистре CR0 разрешает генерацию исключения, даже если она не разрешена битом 12h в регистре EFLAGS.
Примечание 7: управляющие регистры доступны посредством команды MOV (примечание 1 к 7.03-58). Кроме того, возможно считывание состояния регистра CR0 прерыванием INT 67\AX=DE07h (8.03-72).
Примечание 8: бит 10h служит для защиты сегментов пользовательских программ от записи со стороны операционной системы, действующей на более высоком уровне привилегий.
Примечание 9: 20 старших бит регистра CR3 хранят базовый адрес таблицы каталога страниц. Этот базовый адрес должен быть кратен размеру страницы (обычно 4 кб). Запись в регистр CR3 вызывает обновление данных в буфере TLB процессора, необходимое после внесения каждого изменения в таблицы страничной переадресации.
A.11-5 Отладочные регистры центрального процессора.
Современные процессоры, начиная с модели 80386, содержат отладочные регистры DR0 – DR7. Эти регистры позволяют аппаратно вызывать прерывание INT 01 (8.01-02) при обращениях к портам или к заранее указанным адресам памяти, в том числе при обращениях к данным и к незаписываемым носителям, на которых расставить контрольные точки нельзя. Для доступа к отладочным
– 659 –
Приложение А.11: Спецификации оборудования компьютера
регистрам можно использовать INT 67\AX=DE08h-DE09h (8.03-73), а также команду MOV (примечание 1 к 7.03-58).
Регистры DR0 – DR3 служат для записи 32-разрядных абсолютных линейных адресов назначаемых точек прерывания. Регистр DR7 определяет условия вызова прерывания INT 01. Регистр DR6 выделен для фиксации обстоятельств, при которых процессор вызвал прерывание исполнения (программные и внешние прерывания в регистре DR6 не отмечаются). Назначение отдельных битов в регистрах DR6 и DR7 показано в приведенной ниже таблице.
Регистр |
Бит |
Назначение |
Примечания |
DR6 |
00h |
Доступ к адресу, записанному в DR0 |
*1 |
DR6 |
01h |
Доступ к адресу, записанному в DR1 |
*1 |
DR6 |
02h |
Доступ к адресу, записанному в DR2 |
*1 |
DR6 |
03h |
Доступ к адресу, записанному в DR3 |
*1 |
DR6 |
0Dh |
Зарегистрирована попытка доступа |
*1 |
DR6 |
0Eh |
Доступ при пошаговом исполнении |
*1 |
DR6 |
0Fh |
Доступ при переключении задач |
*1 |
DR7 |
00h |
2-битовое поле разрешения для DR0 |
*2 |
DR7 |
02h |
2-битовое поле разрешения для DR1 |
*2 |
DR7 |
04h |
2-битовое поле разрешения для DR2 |
*2 |
DR7 |
06h |
2-битовое поле разрешения для DR3 |
*2 |
DR7 |
0Dh |
Бит запрета генерации исключения |
*3 |
DR7 |
10h |
4-битовое поле управления для DR0 |
*4 |
DR7 |
14h |
4-битовое поле управления для DR1 |
*4 |
DR7 |
18h |
4-битовое поле управления для DR2 |
*4 |
DR7 |
1Ch |
4-битовое поле управления для DR3 |
*4 |
Примечание 1: биты 1 – 3 регистра DR6 фиксируют акты обращения по адресам, заданным регистрами DR0 – DR3, даже когда генерация исключения INT 01 не разрешена битом 0Dh в регистре DR7, а также битом 10h в регистре EFLAGS (A.11-4). Бит 0Eh в регистре DR6 фиксирует состояние флага пошагового исполнения в момент обращения, а бит 0Fh – состояние флага переключения задач. Установленное состояние бита 0Dh в регистре DR6 напоминает о том, что процессор еще не генерировал исключение INT 01, хотя акт обращения уже зафиксирован (генерация исключения сбрасывает бит 0Dh в нуль).
Примечание 2: оба бита в этом 2-битовом поле разрешают регистрацию попыток доступа, но первый из них действует локально и сбрасывается при каждом переключении задачи. А второй бит действует глобально и позволяет регистрировать события, даже если они не связаны с исполнением текущей задачи.
– 660 –
Приложение А.11: Спецификации оборудования компьютера
Примечание 3: бит 0Dh в регистре DR7 запрещает не регистрацию попыток доступа, а генерацию исключения INT 01 при регистрации попыток доступа. Изменить состояние бита 0Dh в регистре DR7 можно только на высшем (нулевом) уровне привилегий или при работе в реальном режиме.
Примечание 4: первая пара битов в каждом поле управления определяет цель тех попыток доступа, которые следует регистрировать:
00 – обращение к команде для ее исполнения
01 – только запись данных в память
10 – обращение к порту (для процессоров Pentium+)
11 – обращения для записи или чтения данных.
Вторая пара битов в поле управления определяет размер зоны адресов (байт, слово или двойное слово), в пределах которой
обращение к любому байту будет считаться регистрируемым событием.
A.12 Управление выделением и обслуживанием памяти
A.12-1 Карта распределения областей памяти
Приводимая ниже таблица показывает общие особенности функционального распределения областей памяти до 1 Мбайт, типичные для AT-совместимых компьютеров при их работе под управлением DOS. В каждом конкретном
компьютере распределение областей памяти может несколько отличаться от показанного здесь, так как оно зависит и от версии BIOS, и от настроек BIOS Setup, и от конфигурации загрузки компьютера.
Адрес |
Длина |
Содержание |
0000:0000 |
400h |
Таблица прерываний реального режима |
0000:0074 |
4 |
Адрес таблицы состояний видеорегистров |
0000:0078 |
4 |
Адрес параметров флоппи-дисковода (A.08-2) |
0000:007C |
4 |
Адрес знаков 80-FFh графического шрифта 8x8 |
0000:0104 |
4 |
Адрес таблицы 1-го жесткого диска (A.13-1) |
0000:010C |
4 |
Адрес графического шрифта (8.01-30) |
0000:0118 |
4 |
Адрес таблицы 2-го жесткого диска (A.13-1) |
0040:0000 |
100h |
Область данных BIOS (A.01-1) |
0050:0000 |
1 |
Статус принтера для INT 05 (8.01-06) |
0050:0004 |
1 |
Выбор флоппи-дисковода (A: или B:) |
0050:0040 |
BCh |
Адреса обработчиков прерываний (примечание 6) |
– 661 –
Приложение А.12: Управление выделением и обслуживанием памяти
Продолжение таблицы А.12-1
0000:7C00 |
200h |
Область исполнения загрузочных записей |
9000:FFFF |
– |
Граница "обыкновенной" памяти (примечание 1) |
A000:0000 |
10000h |
Окно доступа к видеопамяти (примечание 2) |
B000:0000 |
10000h |
Окно доступа к видеопамяти (примечание 2) |
B800:0000 |
8000h |
Видеобуфер для текстовых видеорежимов EGA+ |
C000:0000 |
8000h |
Область видео-BIOS видеокарт (примечание 3) |
C000:0070 |
7 |
Сигнатура "EXTMODE" (= поддержка SVGA) |
C800:0000 |
4000h |
Область BIOS жестких магнитных дисков |
D000:0000 |
10000h |
Область блоков UMB (5.04-04, 5.04-02) |
E000:0000 |
10000h |
Кадр страниц доступа к расширенной памяти |
F000:0000 |
FFFFh |
Область кодов BIOS компьютера (примечание 3) |
F000:FFF0 |
– |
Точка входа в программу загрузки (примечание 4) |
F000:FFF5 |
8 |
Дата разработки системы BIOS |
F000:FFFD |
1 |
Контрольная сумма кода системы BIOS |
F000:FFFE |
1 |
Код модели компьютера |
FFFF:0010 |
FFEFh |
Область верхней памяти (примечание 5) |
Примечание 1: граница 640 кбайт для "обыкновенной" памяти задается аппаратно
микросхемой контроллера динамической памяти в составе комплекта микросхем (чипсета) материнской платы. За этой границей 384 кбайт адресного пространства резервированы для видеопамяти и для микросхем постоянной памяти с "прошивками" кодов BIOS. Свободные участки адресного пространства в
резервированной области обычно бывают доступны в защищенном режиме благодаря механизму страничной переадресации в центральном процессоре.
Примечание 2: область адресов A000:0000h – B000:FFFFh предоставлена видеопамяти и может быть использована по-разному в зависимости от видеорежима (A.10-1). SVGA BIOS современных видеокарт организует в этой области одно или два "скользящих" окна доступа к обширной памяти видеокарты (подробнее в 8.01-39).
Примечание 3: через одни и те же участки адресного пространства может осуществляться доступ как непосредственно к кодам BIOS и видео-BIOS в микросхемах постоянной памяти, так и к их копиям в более быстродействующей оперативной памяти. Выбор того или
другого варианта определяется установками параметров "shadowing" для соответствующих участков адресного пространства в программе BIOS Setup.
Примечание 4: адрес F000:FFF0h точки входа аппаратно обусловлен тем, что
процессоры при включении электропитания устанавливают свои адресные шины в начальное состояние FFFF0h. Дальнейший ход
– 662 –
Приложение А.12: Управление выделением и обслуживанием памяти
процесса загрузки зависит от значения байта 0Fh в CMOS RAM (примечание 1 к A.14-1) системы BIOS:
00h – обычная загрузка с тестом POST;
04h – загрузка посредством вызова INT 19 (8.01-90)
05h – сброс и переход по адресу в ячейке [0040:0067h] (A.01-1) 0Ah – переход по адресу в ячейке [0040:0067h] (A.01-1)
В отличие от первичной загрузки, при перезагрузке режим теста POST еще зависит от слова по адресу 0040:0072h (примечание 1 к A.01-1). Варианты 05h и 0Ah имеют смысл только при перезагрузке и различаются, в частности, установлением в начальное состояние контроллера прерываний.
Примечание 5: обращение к верхней памяти происходит тогда, когда при
суммировании сегментного адреса со смещением образуется бит переноса, направляемый в линию A20 шины адреса. Область верхней памяти доступна в реальном режиме, но для пользования ею необходимо установить драйвер HIMEM.SYS (5.04-01), осуществляющий оперативное управление коммутацией линии A20.
Примечание 6: в области 0050:0040 – 0050:00FB MS-DOS7 сохраняет копии избранных адресов обработчиков прерываний (INT 00 – INT 1F, INT 40 – INT 43, INT 46, INT 70 – INT 77), подготовленных системой BIOS для последующей загрузки операционной системы.
В основной таблице прерываний эти адреса могут быть замещены адресами других обработчиков, устанавливаемых позже драйверами, резидентными программами или самой MS-DOS7.
A.12-2 Дескрипторы сегментного доступа.
Сегментная адресация в защищенном режиме осуществляется посредством дескрипторов, в которых содержатся сведения об адресах сегментов, об их размерах и о правах доступа к ним. К моменту вызова процедур перехода в защищенный режим "глобальная" таблица дескрипторов сегментного доступа (GDT) должна быть составлена хотя бы частично. Готовить ее нужно заранее, пока процессор еще работает в реальном режиме. Состав помещаемых в таблицу дескрипторов, их
количество и порядок их расположения определяются требованиями той процедуры, которая будет использовать таблицу.
Примеры таблиц GDT для разных процедур приведены в разделах 8.01-76, 8.01-78 и 9.10-01. Общим для всех таблиц GDT является то, что первый дескриптор в них должен быть заполнен нулями: он служит принимаемым по умолчанию шаблоном для дескрипторов не запрошенных сегментов и страниц памяти. Все дескрипторы сегментного доступа имеют одинаковую структуру, показанную в приведенной ниже таблице.
– 663 –
Приложение А.12: Управление выделением и обслуживанием памяти
Смещение |
Длина |
Содержание |
||
00h |
2 |
2 байта от размера сегмента, начиная с младшего |
||
02h |
3 |
3 байта от адреса сегмента, начиная с младшего |
||
05h |
1 |
Байт прав доступа (примечание 2): |
||
|
|
бит 0: = 0 |
– обращений к сегменту еще не было |
|
|
|
|
= 1 |
– доступ к сегменту произошел |
|
|
бит 1: = 0 |
– чтение данных или исполнение кода |
|
|
|
|
= 1 |
– запись данных или чтение кода |
|
|
бит 2:– направление расширения (примечание 3) |
||
|
|
бит 3: = 0 |
– сегмент содержит данные |
|
|
|
|
= 1 |
– сегмент содержит исполняемый код |
|
|
бит 4: = 0 |
– маркер системных дескрипторов |
|
|
|
|
= 1 |
– маркер дескрипторов программ |
|
|
биты |
= 00 – высший уровень привилегий |
|
|
|
5-6 |
= 11 – низший уровень привилегий |
|
|
|
бит 7: = 0 |
– сегмент надо подкачивать с диска |
|
|
|
|
= 1 |
– сегмент – в оперативной памяти |
06h |
1 |
Биты 0 – 3: старшие 4 бита от размера сегмента |
||
|
|
бит 4: – свободный бит (примечание 4) |
||
|
|
бит 5: = 0 |
(резервирован) |
|
|
|
бит 6: – бит разрядности (примечание 5): |
||
|
|
|
= 0 |
– 16-битовые адресация и операнды |
|
|
|
= 1 |
– 32-битовые адресация и операнды |
|
|
бит 7: – бит гранулярности: |
||
|
|
|
= 0 |
– размер сегмента в байтах |
|
|
|
= 1 |
– размер в единицах по 4К байт |
07h |
1 |
Старший байт адреса сегмента |
Примечание 1: байты 06h и 07h в составе дескриптора принимаются во внимание процессорами не древнее модели 80386. Байты 06h и 07h следует обнулять, если программа должна сохранять работоспособность на процессорах 80286. Кроме того, нулевые значения байтов 06h и 07h являются отличительным признаком 16-разрядных программ защищенного режима, обеспечивающим их правильное исполнение на 32-разрядных процессорах.
Примечание 2: интерпретация бит 0 – 3 в байте прав доступа зависит от бита 4. Здесь показана интерпретация этих битов для дескрипторов, относящихся к пользовательским программам, включая сегменты данных и сегменты исполняемого кода. В системных дескрипторах биты 0 – 3 выражают 16 видов функций данного дескриптора.
– 664 –
Приложение А.12: Управление выделением и обслуживанием памяти
Примечание 3: интерпретация бита 2 в байте прав доступа зависит от бита 3. Для сегментов кода нулевое значение бита 2 означает, что исполнять этот код разрешено только программам, которые имеют тот же уровень привилегий (иначе право на исполнение кода имеют также программы с более высоким уровнем привилегий). Для сегментов данных нулевое значение бита 2 означает обычное направление расширения вверх, а единичное значение – направление расширения вниз (используемое, в частности, в сегменте стека).
Примечание 4: бит 4 в байте 06h предоставлен в распоряжение программистов. В
дескрипторах страниц его используют как метку запрета переопределения, например, при отображении в память адресного пространства ввода-вывода.
Примечание 5: как разрядность адресации, так и разрядность операндов определяются состоянием бита разрядности 6 в байте 06h дескриптора сегмента кода. В системных сегментах биты 4 – 6 байта 06h должны быть обнулены.
A.12-3 Избранные функции XMS-драйвера HIMEM.SYS
Перед тем, как обращаться к функциям драйвера HIMEM.SYS (5.04-01), необходимо выполнить две операции. Во-первых, нужно с помощью
INT 2F\AX=4300h (8.03-22) убедиться, что драйвер HIMEM.SYS установлен.
Во-вторых, нужно с помощью INT 2F\AX=4310h (8.03-23) найти указатель на точку входа в исполнительную программу XMS-драйвера. Возвращаемый указатель будет служить адресом дальнего перехода (CALL FAR, 7.03-08), посредством которого осуществляется вызов функций XMS-драйвера. Запрашиваемые функции определяются значениями в регистре AH в момент вызова, эти значения показаны в первой колонке приведенной ниже таблицы. Для многих функций дополнительные данные передаются через регистр DX; его роль показана во второй колонке таблицы. Возвращаемое содержимое регистра AX показано в четвертой колонке. Большая часть функций XMS-драйвера возвращает в регистре AX слово статуса, причем статус AX=0001h означает успешное завершение, а статус AX=0000h означает ошибку. В случае ошибки почти все функции (кроме AH=00h) возвращают в регистре BL код ошибки, показанный в таблице A.06-1, а две функции – AH=08h и AH=88h – возвращают код ошибки в регистре BL всегда.
AH |
DX при |
Функция |
AX при |
Приме- |
|
вызове |
возврате |
чания |
|||
|
|
||||
00h |
|
Сообщить версию XMS |
Версия |
*1 |
|
05h |
|
Включить адресную шину A20 |
Статус |
|
|
06h |
|
Выключить адресную шину A20 |
Статус |
|
|
08h |
|
Наибольший свободный блок |
Размер |
*2 |
|
|
|
– 665 – |
|
|
Приложение А.12: Управление выделением и обслуживанием памяти
Продолжение таблицы A.12-3 |
|
|
|||
|
09h |
Размер |
Выделить блок XMS-памяти |
Статус |
*3 |
|
0Ah |
Ссылка |
Освободить блок XMS-памяти |
Статус |
|
|
0Bh |
|
Копирование в XMS-памяти |
Статус |
A.12-4 |
|
0Ch |
Ссылка |
Закрыть блок XMS-памяти |
Статус |
*4 |
|
0Dh |
Ссылка |
Раскрыть блок XMS-памяти |
Статус |
|
|
0Eh |
Ссылка |
Получить сведения о ссылке |
Статус |
*5 |
|
0Fh |
Ссылка |
Изменить размер блока XMS |
Статус |
*6 |
|
10h |
Размер |
Выделить блок UMB |
Статус |
*7,*8 |
|
11h |
Адрес |
Высвободить блок UMB |
Статус |
*7 |
|
12h |
Адрес |
Изменить размер блока UMB |
Статус |
*7,*8 |
|
88h |
|
Наибольший свободный блок |
Размер |
*2,*9 |
|
89h |
Размер |
Выделить блок XMS-памяти |
Статус |
*3,*9 |
|
8Eh |
Ссылка |
Получить сведения о ссылке |
Статус |
*5,*9 |
|
8Fh |
Ссылка |
Изменить размер блока XMS |
Статус |
*6,*9 |
Примечание 1: в регистре DX возвращается статус области HMA: DX=0001h означает, что область HMA используется, а DX=0000h – что область HMA не задействована.
Примечание 2: функция 08h при вызове требует BL=00h, размер свободной XMS-памяти (в килобайтах) она возвращает в регистре DX, а в регистре AX возвращает размер наибольшего свободного блока. Функция 88h делает то же самое, но возвращает результаты в 32-разрядных регистрах EDX и EAX. Помимо того, функция 88h возвращает в регистре ECX наибольший физический адрес, соответствующий доступному байту XMS-памяти.
Примечание 3: функции 09h и 89h принимают запрашиваемый размер XMS блока в килобайтах, но функция 09h принимает его из регистра DX, а функция 89h – из 32-битного регистра EDX. Обе эти функции возвращают номерную ссылку на выделенный блок в регистре DX.
Примечание 4: в случае успеха в регистрах DX:BX возвращается 32-битный физический адрес блока памяти, доступ к которому был закрыт.
Примечание 5: функция 0Eh возвращает в регистре BH содержимое счетчика актов закрытия данного блока, в регистре BL – число свободных номерных ссылок, в регистре DX – размер блока памяти (в килобайтах), доступ к которому обеспечивает запрошенная номерная ссылка. Функция 8Eh делает то же самое, но возвращает число свободных номерных ссылок в регистре CX, а размер блока памяти – в 32-разрядном регистре EDX.
Примечание 6: функция 0Fh, переопределяющая размер выделенного блока XMS-памяти, принимает запрашиваемое значение (в килобайтах) из регистра BX. Функция 8Fh делает то же самое, но принимает
– 666 –
Приложение А.12: Управление выделением и обслуживанием памяти
новый размер блока из 32-разрядного регистра EBX. При этом переопределяемый блок XMS-памяти не должен быть закрыт.
Примечание 7: чтобы реализовать функции 10h – 12h путем табличной переадресации, их исполнение (начиная с процессора i80386) передано драйверу EMM386.EXE (5.04-02), который организует
переадресацию и перехватывает адрес прямого вызова HIMEM.SYS. Исполнение функций 10h – 12h без перехода в защищенный режим обеспечивает драйвер UMBPCI.SYS (5.04-04).
Примечание 8: функции 10h и 12h "понимают" запрашиваемый размер UMB-блока
в16-байтовых единицах (параграфах). Функция 12h, изменяющая размер блока, принимает запрашиваемый размер из регистра BX. Функция 10h при успешном завершении возвращает сегментный адрес выделенного UMB-блока в регистре BX, а фактический размер выделенного UMB-блока – в регистре DX. В случае неудачи, отмечаемой значением AX = 0000h, функции 10h и 12h возвращают
врегистре DX размер наибольшего имеющегося UMB-блока.
Примечание 9: в отличие от функций 0xh, функции 8xh требуют драйвера HIMEM.SYS версии не ниже 3.07 и не могут быть выполнены на устаревших 16-разрядных процессорах.
A.12-4 Блок данных запроса на копирование в XMS-памяти
Указатель на этот блок данных должен быть в регистрах DS:SI при вызове функции AH = 0Bh (A.12-3) XMS-драйвера HIMEM.SYS (5.04-01). Функция AH = 0Bh копирует группу байтов из одного блока XMS-памяти (блока-источника) в другой блок XMS-памяти – блок назначения.
Смещение |
Длина |
Содержание |
00h |
4 |
Число копируемых байтов (обязательно четное) |
04h |
2 |
Номерная ссылка на блок-источник |
06h |
4 |
Начальное смещение в блоке-источнике |
0Ah |
2 |
Номерная ссылка на блок назначения |
0Ch |
4 |
Начальное смещение в блоке назначения |
Примечание 1: если блоки источника и назначения перекрываются, то правильно исполняется только копирование вперед, то есть когда базовый адрес источника меньше, чем базовый адрес назначения.
Примечание 2: если вместо любой из номерных ссылок указано значение 0000h, то
соответствующее четырехбайтовое значение начального смещения интерпретируется как указатель (сегмент : смещение) на блок в обыкновенной памяти в пределах до 1 Мегабайта.
– 667 –
Приложение А.12: Управление выделением и обслуживанием памяти
A.12-5 Дескриптор запроса на копирование в EMS-памяти
Этот дескриптор служит для спецификации блоков источника и назначения в операциях копирования и обмена INT 67\AX=5700h-5701h (8.03-69), выполняемых драйвером EMM386.EXE (5.04-02). Как блок источника, так и блок назначения могут принадлежать страницам EMS-памяти или находиться в обыкновенной памяти. В последнем случае расположение определяется не номером EMS-страницы, а сегментным адресом блока, причем вместо соответствующей номерной ссылки должно быть указано значение 0000h.
Смещение |
Длина |
Содержание |
00h |
4 |
Длина запрашиваемого блока в байтах |
04h |
1 |
= 00h: источник – в обыкновенной памяти |
|
|
= 01h: источник – на EMS-странице |
05h |
2 |
Номерная ссылка на источник или значение 0000h, |
|
|
если источник – в обыкновенной памяти |
07h |
2 |
Смещение начала блока-источника на EMS- |
|
|
странице или относительно сегментного адреса |
09h |
2 |
Номер логической EMS-страницы источника или |
|
|
его сегментный адрес в обыкновенной памяти |
0Bh |
1 |
= 00h: блок назначения – в обыкновенной памяти |
|
|
= 01h: блок назначения – на EMS-странице |
0Ch |
2 |
Номерная ссылка на блок назначения или значение |
|
|
0000h, если этот блок – в обыкновенной памяти |
0Eh |
2 |
Смещение начала блока назначения на EMS- |
|
|
странице или относительно сегментного адреса |
10h |
2 |
Номер EMS-страницы блока назначения или его |
|
|
сегментный адрес в обыкновенной памяти |
Примечание 1: допускается взаимное перекрытие блоков источника и назначения при операции копирования, но в таком случае только одно направление копирования позволяет избежать потери данных.
A.12-6. Блок данных для запроса на переход в EMS-памяти.
Показанный ниже блок данных служит для спецификации параметров вызова подпрограммы в операции INT 67\AH=56h (8.03-68), выполняемой драйвером
EMM386.EXE (5.04-02). В операции дальнего перехода INT 67\AH=55h (8.03-68)
используется только часть показанного ниже блока до смещения 09h.
– 668 –