русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Распределение адресного пространства (карта памяти)


Дата добавления: 2014-11-27; просмотров: 987; Нарушение авторских прав


Для пользовательских программ выделяется память блоками

размером 0-FFFFh $ в области транзитных программ.

Учет свободной и занятой памяти ведется с помощью спец. блоков MCB (Memory Control Blocks)=16байт

Размещается непосредственно над тем блоком памяти, кот. он контролирует. MCB соединены в цепочку Формат: см. ↓

Адрес первого MCB хранится в области данных ОС и может

быть получен с помощью ф-ции 52h прерывания int 21h, в результате кот. в ES:BX система вернет полный логический

адрес списка сегментов. ПО смещению «-2» хранится адрес

первого MCB. При загрузке программы ей выделяется 2 блока:

под переменные окружения и под саму программу.

Формат MCB

Тип (1) Адрес владельца (2) Размер (2) Резерв(3) Имя прог-мы, если блок прог-мы(8)

 

 

Управление памятью в реальном режиме

1) 48h – выделяет блок памяти

2) 49h освобождает блок памяти

3) 4Ah – изменяет размер блока памяти

Эти ф-ции могут быть использованы программой в след. случаях: 1) когда требуется выделить доп.

память под динамические данные 2) если требуется сократить размер выделенного блока до реального

размера программы, 3) если требуется освободить блок памяти либо от дочерней программы, либо

от самой себя (программа самовыгружается – для резидентных программ)

 

 

ПРИМЕР) Организация взаимодействия МП i8086 с клавиатурой.

Контроллер клавиатуры распознает каждую нажатую клавишу и помещает ее в скэн-код или номер порта 60h. Любой клавише соответствует два скэн-кода: код нажатия и код отпускания(на 80h больше).

При нажатии клавиши вырабатывается сигнал аппаратного прерывания, по которому вызывается процедура int 09 – стандартного обработчика клавиатуры. Int09 считывает из порта 60h скэн-код нажатой клавиши и анализирует его значение. В соответствии с состоянием байта флагов вырабатывается соответствующий ASCII-код нажатой клавиши и помещается вместе со скэн-кодем в кольцевой буфер ввода. Буфер располагается в области данных BIOS, в ячейке 41Eh-43Ch адресуется двумя указателями. Адрес хвостового символа - первая свободная ячейка. Адрес головного символа- самый старый код помещает в буфер. При запросе прикладной программы из буфера считывается самый старый код, адрес головного символа увеличился на 2. при нажатии клавишей скэн-код и ASCII-код помещаются по адресу хвоста, при этом значение хвостового указателя увеличится на 2. если буфер пуст – оба указателя равны между собой, причем в начале работы они равны 1E. Буфер переполнен, когда адрес головы на 4 больше, чем адрес хвоста.



 

Организация текстового видеобуфера. Пример работы с текстовым видеобуфером.

Текстовый видеобуфер находится по адресу 0b800h. Количество страниц зависит от адаптера. Размер страницы=4кб. Страницы нумеруются с 0. Любой код, записывающийся в видеобуфер, сразу отображается на экране в определенной позиции. Символ занимает в видеобуфере 2 байта: код символа и атрибуты. Байты записываются в видеобуфер в том порядке, в котором должны появиться на экране, управляющие коды значения не имеют. Чтоб получить доступ в видеобуфер, требуется в сегментный регистр ES занести сегментный адрес буфера. Значение смещения определяет позицию символа на экране. Вывод осуществляется командами пересылки строк

Mov ax, 0b800h

Mov es,ax

Mov di, 80*2*17+25*2 ; начальный символ на экране

Lea si, message

Mov cx, len_mes

Rep mov sb

; в области данных

Message DB ‘П’,65,’Р’,65,‘И’,65, ‘М’,65, ‘Е’,65, ‘Р’,65

Len_mes equ $-message

80*2*12+35*2, 80 – количество мест, 12 – строка, 35 – позиция в строке

 



<== предыдущая лекция | следующая лекция ==>
Особенности программ в ЕХЕ-формате. Структура, хранение на диске, загрузка в память, | Регистровая модель МП i80386


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.085 сек.