Оперативная память

Читаем: https://novostis.ru/ | Интересное здесь: https://novostie.ru/

Работа с расширенной памятью


Оперативная память
Оперативная память Оперативная память (ОЗУ, RAM) является одним из важнейших ресурсов персонального компьютера. В англоязычной технической литературе вы можете встретить три термина, х...
Работа с расширенной памятью
Работа с расширенной памятью После резервирования блока и отображения части или всех его логических страниц с расширенной памятью могут работать все без исключения команды микропроцесс...
Способ пересылки большого блока
Способ пересылки большого блока При выполнении графических задач может потребоваться сохранение содержимого всего рабочего пространства видеопамяти. Учитывая его большие размеры, сохра...
Подпрограмма пересыки блока
Подпрограмма пересыки блока Программная реализация пересылки показана в примере Б.7. Перед вызовом подпрограммы в регистрах es и fs указываются коды видеобуфера и сегмента EMS, в приме...
Пример Б 7 Пересылка содержимого рабочей области экрана
Пример Б.7. Пересылка содержимого рабочей области экрана movebl: push Cur_win pusha mov ax, BaseWin mov Cur_win, ax call Setwin mov ax, bperline mul versize mov bisize, dx...
Сохранение и восстановление рабочей области экрана
Сохранение и восстановление рабочей области экрана В примере Б. 7 основные действия выполняет строковая операция movs, у которой расположение источника задает регистр fs, а приемника —...
Несколько блоков в расширенной памяти
Несколько блоков в расширенной памяти При работе с обычной памятью каждому блоку соответствует свой уникальный код сегмента. В отличие от обычной, при работе с расширенной памятью досту...
Заключение
Заключение. Мы закончили описание основных видов оперативной памяти, поэтому можно подвести общий итог. При работе в среде DOS для программ доступна как основная, так и дополнительная п...
Расширенная память (Extended Memory)
Расширенная память (Extended Memory) Термин Extended memory относится к тому же пространству памяти, которое описано в предыдущем разделе, но обозначает другой способ доступа, а именно,...
Менеджер Extended memory
Менеджер Extended memory В состав DOS входит драйвер, хранящийся в файле himem.sys, его спецификация обязательно указывается в первой строке файла config.sys. Этот драйвер выполняет не...
Поддержка BIOS
Поддержка BIOS После выпуска микропроцессора Intel 286 в состав BIOS была включена группа функций с названием AT services, доступных через прерывание int ish. Две из них имеют отношение...
Функция 87h Move Extended Memory Block
Функция 87h Move Extended Memory Block перемещает блок данных из расширенной памяти в обычную, или в обратном направлении. Размер блока, выраженный в словах, указывается в регистре сх,...
Пример Б 9 Структура таблицы GDI
Пример Б.9. Структура таблицы GDI GDtab: db 16 dup (0) 16 пустых байтов dw ? размер источника в байтах (2*[сх]+1) dw ? младшая часть адреса источника db ? старшая часть адреса источник...
ФУНКЦИЯ 88h Get Extended Memory Size
ФУНКЦИЯ 88h Get Extended Memory Size возвращает В регистре ах размер доступного пространства расширенной памяти, выраженный в килобайтах. Это то значение, которое указано при установке...
ФУНКЦИЯ 89h Enter Protected Moded
ФУНКЦИЯ 89h Enter Protected Moded выполняет действия, необходимые ДЛЯ перехода в защищенный режим и переводит микропроцессор в этот режим, т. е. после возврата из BIOS задача уже будет...
Виртуальный диск
Виртуальный диск Если на компьютере установлен достаточно большой объем оперативной памяти, то часть его можно использовать для размещения виртуального (или электронного) диска. Большой...
Заключение
Заключение. При создании задач, предназначенных для выполнения в реальном режиме работы микропроцессора, дополнительную память ПК имеет смысл использовать как Expanded memory. Функции E...
Обычная память (Conventional Memory)
Обычная память (Conventional Memory) Conventional — общепринятый, обычный. Так называют младшую часть ОЗУ, занимающую первые 640 Кбайт пространства адресов и имеющую большое значение в...
Сегменты оперативной памяти
Сегменты оперативной памяти Первые компьютеры IBM PC имели 16-разрядную шину данных, что соответствовало пространству адресов 64 Кбайт. У IBM PC/XT, собранного на базе процессора Intel...
Сегменты оперативной памяти
Сегменты оперативной памяти В реальном режиме работы процессора пространство оперативной памяти делится на сегменты, размер которых не превышает 64 Кбайт, а адрес начала обязательно кра...
Расположение адресов в регистрах
Расположение адресов в регистрах Микропроцессор выбирает части адреса из двух разных регистров. Коды сегментов хранятся в специальных сегментных регистрах, которые предназначены только...
Пример Б 1 Структура программы состоящей из трех сегментов
Пример Б.1. Структура программы, состоящей из трех сегментов stack Segment word stack "stack"; начало стекового сегмента db 10Oh dup (?) ; размер области стека 10Oh байтов stac...
Пример Б 2 Специальные директивы описания основных сегментов |
Пример Б.2. Специальные директивы описания основных сегментов | Dosseg ; задает расположение сегментов .Model small ; описание модели памяти .Stack 100h ; описание стекового сегмента...
Работа с именами сегментов
Работа с именами сегментов Макроассемблер рассматривает имя сегмента как константу (а не как переменную), ее прямая пересылка в сегментный регистр невозможна, поэтому приходится использ...
Динамическое управление памятью
Динамическое управление памятью Перед началом выполнения задачи DOS выделяет для нее всю свободную часть пространства обычной памяти. Задача может произвольно распоряжаться выделенным п...
Блок задачи
Блок задачи Пространство, выделенное DOS для выполнения задачи, в технической документации принято называть блоком задачи. Он состоит из трех основных частей. Первые юоь (256) байтов бл...
Адрес свободного пространства
Адрес свободного пространства Для определения адреса свободного пространства надо знать, где заканчивается последний сегмент задачи. Для этого, в свою очередь, необходимо выяснить, како...
Размер свободного пространства
Размер свободного пространства В PSP слово со смещением 2 содержит последний доступный для задачи адрес оперативной памяти, выраженный в параграфах, т. е. это код последнего доступного...
Вычисление SwpSeg и GenSeg
Вычисление SwpSeg и GenSeg В приведенных в основной части книги примерах использовались буфер обмена и буфер общего назначения. Мы предполагали, что код сегмента, содержащего буфер обме...
Пример Б З Вычисление значений переменных SwpSeg и GenSeg 1
Пример Б.З. Вычисление значений переменных SwpSeg и GenSeg 1 .Alpha порядок расположения сегментов Dosseg порядок расположения сегментов stack Segment word stac : "stack" ;...
Использование функций DOS
Использование функций DOS Для того чтобы DOS могла распределять оперативную память, ей надо вернуть все свободное пространство, расположенное за пределами сегментов, образующих тело за...
Определение размера задачи
Определение размера задачи Будем предполагать, что стековый сегмент расположен в теле задачи последним. В таком случае нас интересует расстояние от начала PSP до конца стекового сегмен...
Функции DOS
Функции DOS По запросам прикладных программ DOS выполняет несколько функций, связанных с распределением оперативной памяти. Нас будут интересовать только три из них. Все обращения к...
Функция 48h Allocate Memory
Функция 48h Allocate Memory выделяет запрашиваемое пространство памяти. Требуемый размер памяти, выраженный в параграфах, указывается в регистре bx. Если такое пространство существует,...
Функция 49h Free Allocated Memory Block
Функция 49h Free Allocated Memory Block открепляет выделенный ранее для задачи блок памяти, после этого задача не может с ним работать. Код сегмента, начиная с которого расположен осво...
Функция 4Ah shrink or Expand a Memory Block
Функция 4Ah shrink or Expand a Memory Block урезает или расширяет суще-ствующий блок памяти. Код сегмента, начиная с которого расположен изменяемый блок, указывается в регистре es, а н...
Вычисление SwpSeg и GenSeg
Вычисление SwpSeg и GenSeg В примере Б.4 показан фрагмент начала текста программы, в котором производится сокращение размера блока задачи и выделение двух блоков для размещения буферов...
Пример Б 4 Получение от DOS значений переменных SwpSeg и GenSeg
Пример Б.4. Получение от DOS значений переменных SwpSeg и GenSeg dosseg задаем расположение сегментов .model small выбор модели памяти .stack 200h задаем стековый сегмент .data нач...
Контроль выполнения запросов
Контроль выполнения запросов При описании функций говорилось, что при возврате из DOS состояние С-разряда указывает, успешно или неудачно завершилось выполнение запроса. Контролировать...
Освобождение блоков
Освобождение блоков Освободившийся блок возвращается DOS по запросу 49h (Free Allocated Memory Block), но с этим действием можно не спешить. В среде DOS задача, как правило, выполняетс...
Заключение
Заключение. Мы описали три варианта выделения нужного пространства в основной памяти ПК: явное описание в исходном тексте задачи, размещение в свободной части блока задачи и его запросы...
Расширенная память (Expanded Memory)
Расширенная память (Expanded Memory) Очень скоро после начала массового производства IBM PC XT стало ясно, что заложенная в нем возможность работы с адресным пространством в 1 Мбайт явл...
Спецификация расширенной памяти
Спецификация расширенной памяти Спецификация расширенной памяти (Expanded Memory Specification ИЛИ EMS) содержит перечень требований к оборудованию, предназначенному для работы с доп...
Менеджер расширенной памяти
Менеджер расширенной памяти (Expanded Memory Manager или EMM) оформлен в виде драйвера, который располагается в оперативной памяти при загрузке DOS и остается резидентным до выключения...
Функция 40h Get EMM status
Функция 40h Get EMM status предназначена для получения информации о состоянии драйвера. Входные параметры отсутствуют. Результат проверки возвращается в регистре ah. Если он очищен, то все...
Функция 41h Get Physical Segment Address of EMS Frame
Функция 41h Get Physical Segment Address of EMS Frame возвращает зна- чение сегмента, используемого для доступа к расширенной памяти. Входные параметры отсутствуют, код сегмента указан...
Функция 42h Get EMS Memory size
Функция 42h Get EMS Memory size позволяет определить общее и свободное пространство expanded memory. Входные параметры у нее отсутствуют. Общий размер памяти возвращается в регистре dx...
ФуНКЦИЯ 43h Allocate Memory and Open EMM handle
ФуНКЦИЯ 43h Allocate Memory and Open EMM handle запрашивается для выделения требуемого пространства расширенной памяти. Входным параметром является необходимое количество страниц, указ...
Функция 44h Map Memory
Функция 44h Map Memory связывает физическую страницу с логической. Входными параметрами являются номера физической (ai) и логической (bx) страниц и EMM handle (dx). Номер физической ст...
Функция 45h Release Memory
Функция 45h Release Memory освобождает пространство памяти, выделенное для задачи функцией 43п. Входным параметром является идентификатор блока, указываемый в регистре dx. Отказ от выполне...
Функция 46h Get EMM version number
Функция 46h Get EMM version number позволяет определить версию менеджера EMM. Входные параметры отсутствуют, номер версии в двоично-десятичном коде возвращается в регистре ai. Например,...
Использование функций драйвера
Использование функций драйвера Для корректной работы с расширенной памятью задачи должны выполнять определенную последовательность действий, а именно: 1. Проверить наличие менеджера...
Специальные переменные
Специальные переменные При работе с Expanded memory обязательно используются код сегмента расширенной памяти и идентификаторы выделенных блоков. В некоторых случаях могут быть нужны ном...
Резервирование блока
Резервирование блока Предположим, что для выполнения задачи требуется непрерывное пространство расширенной памяти (блок) размером в 1 Мбайт. Для резервирования такого блока задача должн...
Пример Б 5 Создание в расширенной памяти блока размером 1 Мбайт
Пример Б. 5. Создание в расширенной памяти блока размером 1 Мбайт mov ax, 4100h код функции запроса сегмента int 67h обращение к драйверу or ah, ah функция выполнена ? je @F ->...
Отображение страниц
Отображение страниц Для отображения логической страницы блока на одну из физических страниц сегмента EMS запрашивается функция 44h. Мы рассмотрим универсальный вариант подпрограммы отоб...
Пример Б 6 Подпрограмма отображения 4х страниц сегмента EMS
Пример Б.6. Подпрограмма отображения 4-х страниц сегмента EMS mapseg: mov ex, 04 ; количество повторов цикла xor al, al нулевая физическая страница maplp : reov ah, 44h код функции о...
Освобождение памяти
Освобождение памяти Для освобождения выделенного задаче блока выполняются следующие действия: mov dx, Ehndlr ; dx = идентификатор блока mov ax, 4500h ; ах = код функции освобождения...


Начало




Книжный магазин