Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Ассемблер.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
286.77 Кб
Скачать

>

A000h

B000h

B800h

C000h

D000h

F000h

A0000h

B0000h

B8000h

C0000h

D0000h

F0000h

64 Кбайт 32 Кбайт 32 Кбайт

64 Кбайт 128 Кбайт 64 Кбайт

>

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

ПЗУ - расширения BIOS

Графический

видеобуфер

Свободные адреса

Свободные адреса

Текстовый

видеобуфер

COMMAND.COM

ПЗУ BIOS

Обычная память (640 Кбайт)

Старшая память (384 Кбайт)

Рисунок 11. Схема использования адресного пространства в реальном режиме

Текстовый видеобуфер включает 8 видеостраниц и занимает в адресном пространстве компьютера (за пределами обычной памяти) 32 Кбайт от сегмент­ного адреса B800h. Начинается он с видеостраницы 0, адрес которой совпадает с адресом всего видеобуфера. Каждая страница занимает 4 Кбайт, таким образом, страница 1 начинается с сегментного адреса B900h, страница 2- е адреса BA00h и т.д. Весь видеобуфер простирается до границы (сегментной) C000h

При включении компьютера активной (видимой) становится видеостраница 0. Смена видеостраниц осуществляется вызовом функции 05h прерывания 10h BIOS.

Любой код, записываемый в видеобуфер, сразу же отображается на экране в виде цветного символа на одном из знакомест. Каждый символ занимает в буфере поле из двух байт Младшие (четные) байты всех полей отводятся под коды ASCII

отображаемых символов, старшие(нечетные) байты - под их атрибуты.

Двухбайтовые коды символов записываются в видеобуфер в том порядке, в каком они должны появляться на экране: первые 80 двухбайтовых полей соответствуют первой строке экрана, Вторые 80 полей - второй строке и т.д. Все управляющие коды теряют свои управляющие функции и отображаются в виде соответствующих им символов.

Для того, чтобы из программы получить доступ к видеобуферу надо занести его сегментный адрес в один из сегментных регистров данных. После этого, задавая те или иные смещения можно выполнить запись в любые места видеобуфера.

Пример -Прямое программирование видеобуфера:

; очистка экрана ; на стр 0 видеобуфера

mov AX, 0B 800h; сегментный адрес видеоадаптера mov ES, AX ;загрузим его в es

; выведем два символа mov BX, 80*2*5 ; смещение в видеобуфер в байтовый символ mov AL, ‘* ’

mov AH, 0eh ; цвет желтый цвет по черному

mov ES:[BX], AX; запись в видеобуфере

mov ES:[BX+162], 0B0Fh; цвет от светло- бирюзового

; по черному символ 0fh Запись в видеобуфер непосредственно числа 0B0F, удобно когда на экран выводится символы не имеющие закрепленных за ними клавиш.

Формирование изображений.

Адаптеры хранят содержимое изображения в оперативной памяти, таким образом, что определенному адресу в памяти соответствует определенное место на экране дисплея. Цвет элемента изображения на экране формируется из 4- х сигналов :красного, синего, зеленого и яркость.

В текстовых режимах используется байт для задания цвета, яркости и мигания символа, а также цвета фона.

В графических режимах единица изображения - отдельный пиксель (от 1­32 битного кодирования).

Управление видеодисплеем.

Можно выполнить -4- я способами используя службы языка программирования используя службы ОС используя видео-службы ROM BIOS

прямое управление аппаратными средствами через обращения к памяти или портам ввода-вывода.

Графический режим.

Вывод текста

В графическом режиме знаки формируются пиксель за пикселем программным знаковым генератором, входящим в ROM BIOS(прерывание 10 h обеспечивает данную службу).

Программный знаковый генератор обращается к таблице битовых комбинаций, чтобы определить какие пиксели отображать на экране для данного знака (в ROM памяти каждой PC содержится таблица (принятая по умолчанию ) битовых комбинаций знаков.

В стандартной таблице каждый символ описывают 8 байтов.

Основные графические режимы VGA

Номер

Разрешение

Число цветов

11h

640x480

2

12h

640x480

16

13h

640x480

256

Отображение пикселей в памяти графических режимов.

При использовании графического режима пиксели хранятся в виде

последовательности битовой полей. При этом соблюдается

взаимнооднозначное соответствие между этими битовыми полями, хранящимися в памяти, и пикселями, отображаемыми на экране.

Расположение полей битов видеопамяти (видеобуфера) зависит от видеорежима. В 256 цветных режимах каждой точке изображений на экране монитора соответствует один байт видеопамяти, в который записывается код точки. Этот код не используется непосредственно, а служит индексом в специальном массиве, содержащем 256 строк по три элемента - таблице цветов ЦАП. Каждый из 3 - х элементов таблицы дает интенсивность одного из основных цветов электронно-лучевой трубки ( красный, зеленый, синий).

Значения интенсивностей, выбранные из строки, соответствующей хранящемуся в видеопамяти кода, поступают в ЦАП.

Отображения видеопамяти на экран в цветном режиме с разрешением 640х480.

Столбец 0 столб 1 столб 2

Байт 0

Байт 1

Байт 2

Байт

639

Байт

1279

Байт

306560

Байт

306561

306562

307199

В режиме VGA 320x200 с 256 цветами для отображения видеопамяти на основное адресное пространство используется 64 000 байт, располагающихся с адреса A000h:0000h. Дальнейшее увеличение разрешения или числа цветов приводит к тому, что объем видеопамяти превышает максимальные границы сегмента в реальном режиме (65 535 байт), а затем и размер участка адресного пространства, отводимого для видеопамяти (160 Кб, от A000h:0000h до B800h:FFFFh. С адреса C800h:0000h начинается область ROM BIOS). Чтобы вывести изображение, используются два механизма - переключение банков видеопамяти для реального режима и LFB (линейный кадровый буфер) для защищенного.

Работа в современных графических режимах.

Большинство из выпускаемых сейчас видеоадаптеров относятся к классу SVGA.

Некоторые режимы видеоадаптеров SVGA.

Разрешение в пикселях

Число цветов

Номер режима

800х600

256

103h

800х600

16777216

115h

2024х768

65536

117h

1280х1024

256

107h

Современные видеоконтроллеры отличаются от VGA тем, что обеспечивают работу с высокими разрешениями и позволяют использовать линейную адресацию видеопамяти.

Организация видеопамяти в режимах типа Direct Drow.

В режимах группы Direct Drow (Hi Color u True Color) информация поступает на цифро- аналоговый преобразователь непосредственно из видеопамяти соответственно красная, зеленая и синяя составляющие цвета точки представлены отдельными полями и выделенной для хранения точки области видеопамяти (от 2 до 4 байтов на точку).

В режимах Hi Color точка кодируется 16 разрядным словом, причем существует 2 варианта представления цвета:

Формат HiColor15 Формат HiColor16

В режимах HiColor точка кодируется 16-разрядным словом, причем существует два варианта представления цвета,: HiColorl5 (формат 1:5:5:5) и HiColorl6 (формат 5:6:5). Через X на рисунке обозначена зарезервированная (неотображаемая) область данных. Из видеопамяти на экран информация отображается слева направо и сверху вниз.

15

14 10

9

5

4 0

Х

Красный

Зеленый

Синий

15

11

10

5

4 0

Красный

Зеленый

Синий

В режимах True Color для хранения каждого компонента цвета точки выделена по одному байту видеопамяти, существует два формата.

True Color 24

Байт 8

Байт 2

Байт 3

Красный

зеленый

Синий

True Color 32

Байт 3

Байт 2

Байт 1

Байт 0

Х

красный

зеленый

синий

Т. о в 24- разр. True Color.

Основная литература: 6[131-266];

Дополнительная литература: 11[70-81],16[85-103,153-181], 18[152-153]

Контрольные вопросы:

  1. Из каких основных компонентов состоит видеоподсистема.

  2. Перечислите параметры, определяющие режим видеоконтроллера.

3 .Перечислите типы графических режимов, используемых в настоящее время.

  1. Из каких сигналов формируется цвет элемента изображения.

Тема лекции 14. Работа с файлами.

Один из способов для передачи данных в программу и из нее состоит в чтении и записи файлов, определяемых через значения, называемые дескрипторами (слово файл может относиться как к дисковому файлу, так и к другим устройствам , таким как дисплей , клавиатура и принтер.) Дескриптор- 16 битное число ASCIIZ строка, которого содержит обозначение дисковода, путь, имя файла и расширение.

Основные понятия, связанные с файловым вводом-выводом

Необходимо отрыть файл перед тем, как считать данные из него или записывать новые данные на диск (при открытии существующих файлов сохраняется информации, записанная там раньше).

При создании нового файла он открывается для чтения и записи.

Данные, которые записываются в дисковые файлы, временно хранятся в буфере DOS. При закрытии файла все данные из буфера записываются на диск.

При закрытии файла пополняется каталог диска и дескриптор освобождается для дальнейшего использования.

Открывая файл, DOS назначает ему очередной свободный элемент (блок описания файла) специальной системной таблицы, называемой таблицей открытых файлов (System File Table, SFT) располагаемой в оперативной памяти среди системных областей данных. Объем этой таблицы, определяющий максимальное число файлов, с которыми можно работать одновременно, задается на этапе конфигурирования DOS директивой FILES файла CONFIG.SYS.

Найдя в системе каталогов диска запись об открываемом файле, DOS записывает в выделенный ему элемент SFT (блок описания_ файла) основные характеристики файла, такие, как имя, длину, атрибуты, дату и время создания, стартовый кластер, физический адрес на диске записи каталога, содержащей информацию о файле и ряд других. Часть информации переписываётся в элемент SFT из записи каталога, часть (например, указатель на блок параметров диска, где хранится информация о физических характеристиках диска) DOS поставляет сам. Важным элементом блока описания файла является двухсловная ячейка, в которой хранится указатель файла - номер байта от­носительно начала файла, с которого начнется очередная операция записи или чтения. Наличие указателя позволяет организовать прямой доступ к файлу, т.е. чтение или запись начиная от любого места файла. Ссылку на номер выделенного файлу блока описания файла в SFT DOS возвращает в программу в виде дескриптора.

Обращение к открытому файлу (запись, чтение, изменение характеристик файла и т.д.) осуществляется по присвоенному ему дескриптору; неоткрытый файл дескриптора не имеет и система работать с ним не может. По мере выполнения операций с открытым файлом DOS модифицирует информацию в блоке SFT; содержимое SFT всегда отражает текущее состояние файла.

После окончания работы с файлом его надо закрыть предназначенной для этого функцией DOS. В процессе закрытия осуществляется сброс на диск буферов DOS, модификация записи каталога и освобождение блока описания файла в SFT вместе с закрепленным за ним дескриптором.

Буферы DOS, количество которых определяется директивой BUFFERS файла CONFIG.SYS, служат для ускорения работы с файлом. DOS, получив из выполняемой программы заказ на чтение некоторой порции данных из файла, находит и считывает соответствующие секторы диска (в которых, между про­чим, данных может быть больше, чем конкретно затребовала программа) и, переслав прочитанные данные в программу, помимо этого сохраняет содержимое прочитанных секторов в своих внутренних буферах. Если программа в дальнейшем передаст DOS запрос на чтение с диска или запись на диск тех данных, которые уже находятся в буферах DOS, система выполнит затребованные операции не на диске, а лишь в буферах DOS, что на несколько порядков сократит время их выполнения. Однако в этом случае состояние файла на диске не всегда отвечает его логическому образу в программе. Сброс буферов DOS на диск в процессе закрытия файла выполняет физическое обновление файла на диске и приведение его в соответствие с логическим образом в программе.

Схожая ситуация складывается с характеристиками файла в записи каталога. Пока идет работа с файлом (например, добавление в него новых данных с увеличением его длины) информация о характеристиках файла обновляется только в блоке описания файла в SFT. Каталог на диске модифицируется лишь при закрытии файла, когда измененные характеристики файла переписываются из SFT в запись каталога.

Наконец, при закрытии файла освобождается выделенный ему блок описания файла вместе с дескриптором. И то, и другое можно теперь использовать для работы с другим файлом. Таким образом, система может последовательно работать с неограниченным количеством файлов, но число одновременно открытых файлов определяется объемом системной таблицы файлов.

При завершении программы (для этого предусмотрена функция DOS 4Ch) выполняется автоматическое закрытие всех открытых в программе файлов. Поэтому в простых и не слишком ответственных программах файлы можно явным образом не закрывать - они все равно будут закрыты системой.

Одна программа может иметь максимально до 20 открытых файлов, из них 5 дескрипторов резервируются для стандартных устройств ввода/ вывода следующим образом

Указатель

Название

устройств

Описание

устройств

0

CON (STDIN)

Стандартное устройство- ввода (обычно клавиатура)

1

CON (STDOUT)

Стандартное устройство вывода

1

CON (STDERR)

Устройство вывода сообщ- й об ошибках

3

AUX (COM)

Стандартный

последовательный

порт

4

PRN (LPT1)

Параллельный

порт

Всего открытых файлов для всех активных программ 255.

В каждой программе допускается открытие 15 файлов. Для увеличения этого предела можно:

  1. закрыть один или более стандартных дескрипторов.

Например программы, которые не вызывают функции DOS управления принтером и последовательными портами ввода-вывода могут увеличить это число (15) на 2 после выполнения следующего кода:

Mov ah,03Eh; закрыть файл.

Mov вх,3; установить в ВХ номер дискриптора AUX (3)

Int 21h; вызов DOS для закрытия файла

Int вх; установит в вх. номер дискриптора PRN (4)

Int 21h; вызов DOS для закрытия файла

  1. 1 -В файл Config.sys поместить строку FILES=N,где N-нужное количество одновременно открытых файлов (этого недостаточно, так как таблица файлов находится в PSP и может содержать не более 20 описателей)

2-скопировать таблицу на новое место и указать ее новый адрес и

размер.

( В PSP программы по смещению 18 h; находится таблица описателей. Под нее отводится 20 байт, поэтому программа не может открыть одновременно больше 20 файлов. Кроме того , в PSP по смещению 32 h (слово) хранится размер таблицы описателей ,а в четырехбайтовой ячейке со смещением 34 h записан полный адрес этой таблицы ;

Для облегчения ориентации в многочисленных функциях DOS, осуществляющих операции над файлами, каталогами и дисками, их удобно разбить на смысловые группы.

  1. Создание, открытие и закрытие файла:

ЗОД - создать файл;

5Ah - создать временный файл;

5Вh - создать новый файл;

3Dh - открыть файл;

ЗЕh - закрыть файл;

68h - сбросить файл на диск;

41h - удалить файл.

  1. Запись и чтение данных:

42h - установить указатель;

3Fh - читать из файла или устройства;

40h - записать в файл или устройство.

  1. Изменение характеристик файла:

43h - получить или установить атрибуты файла;

56h - переименовать файл;

57h - получить или установить дату и время создания файла.

  1. Поиск файла:

lAh - установить адрес области передачи данных (DTA);

2Fh - получить адрес области передачи данных (DTA);

4Eh - найти первый файл; 4Fh - найти следующий файл.

  1. Операции над каталогами:

39h - создать каталог;

ЗАh - удалить каталог;

3Bh - сменить текущий каталог;

47h - получить текущий каталог.

Для работы с длинными именами файлов в DOS 7.0 (Windows 95) и

старше используется набор функций, которые вызываются как функция DOS 71h:

LFN 6^ - создать или открыть ф- л с длинным именем.

LFN41h - удаление ф- в с длинным именем LFN4Eh - найти 1- й ф- л с длинным именем.

LFN4Fh - найти следующий файл LFNA1h - закончить поиск файла.

LFN39h - создать директорию с длинным именем.

LFN3Аh - удалить директорию с длинным именем .

LFN47h - определить текущую директорию с длинным именем .

Основная литература : О2[198-208],4[230-251]

Дополнительная литература : Д20[56-87]

Контрольные вопросы:

1.Что происходит при открытии файла ?

  1. Сколько файлов допускается открывать по умолчанию?

  2. Что происходит при закрытии файла?

3 Каким образом можно снять ограничение на число открытых файлов для каждой программы?

Тема лекции 15. Защищенный режим работы. Адресация при работе в защищенном режиме.

Микропроцессоры Pentium, так же, как и его предшественники (начиная с 80268), могут работать в двух режимах: реального адреса и виртуального защищенного адреса. Обычно эти режимы называют просто реальным и защищенным. В реальном режиме 32-разрядные микропроцессоры функционируют фактически так же, как МП 86 с повышенным быстродействием и расширенным набором команд. Характерной особенностью реального режима является ограничение объема адресуемой оперативной памяти величиной 1 Мбайт.

Только перевод микропроцессора в защищенный режим позволяет полностью реализовать все возможности, заложенные в его архитектуру и недоступные в реальном режиме. Сюда можно отнести:

-увеличение адресуемого пространства до 4 Гбайт;

-возможность работать в виртуальном адресном пространстве, превышающем максимально возможный объем физической памяти и составляющем 64 Тбайт;

-организация многозадачного режима с параллельным выполнением нескольких программ (процессов).

-страничная организация памяти, повышающая уровень защиты задач друг от друга и эффективность их выполнения.

При включении микропроцессора в нем автоматически устанавливается режим реального адреса. Переход в защищенный режим осуществляется программно путем выполнения соответствующей последовательности команд.

В защищенном режиме программа состоит из сегментов, адресуемых с помощью 16-разрядных сегментных регистров. В сегментные регистры в защищенном режиме записываются селекторы, биты 3...15 которых рассматриваются, как номера (индексы) ячеек специальной таблицы, содержащей дескрипторы сегментов программы. Таблица дескрипторов обычно создается операционной системой защищенного режима (например, системой Windows) и, как правило, недоступна программе. Каждый дескриптор таблицы дескрипторов имеет размер 8 байт, и в нем хранятся все характеристики, необходимые процессору для обслуживания этого сегмента. Среди этих характеристик необходимо выделить в первую очередь две: адрес сегмента и его длину

Под адрес сегмента в дескрипторе выделяется 32 бит, и, таким образом, сегмент может начинаться в любой точке адресного пространства объемом 232 ~ 4 Гбайт. Это адресное пространство носит название линейного. В простейшем случае, когда выключено страничное преобразование, линейные адреса отвечают физическим. Таким образом, процессор может работать с оперативной памятью объемом до 4 Гбайт.

Адрес адресуемой ячейки вычисляется процессором, как сумма базового адреса сегмента и смещения:

Линейный адрес = базовый адрес сегмента + смещение В 32-разрядных процессорах смещение имеет размер 32 бит, поэтому максимальная длина сегмента составляет 232 = 4 Гбайт.

Адреса, используемые программой для обращения к ячейкам памяти, и состоящие всегда из двух компонентов — селектора и смещения — иногда называются виртуальными.

Система сегментной адресации преобразует виртуальные адреса в линейные. Программисту доступны только виртуальные адреса, преобразование же их в линейные и затем в физические берет на себя операционная система.

Каков объем виртуального адресного пространства? Программа указывает номер нужного ей дескриптора с помощью селектора, в котором для индекса дескриптора отведено 13 бит. Отсюда следует, что в дескрипторной таблице

13

может быть до 2 = 8 К дескрипторов. Однако в действительности их в два раза

больше, так как программа может работать не с одной, а с двумя дескрипторными таблицами — одной глобальной, разделяемой всеми выполняемыми задачами, и одной локальной, принадлежащей конкретной задаче. В селекторе предусмотрен специальный бит (бит 2), состояние которого говорит о типе требуемой программе дескрипторной таблицы. Таким образом, всего программе могут быть доступны 214 = 16 К дескрипторов, т.е. 16 К сегментов. Так

как размер каждого сегмента, определяемый максимальной величиной смещения, может достигать 232 = 4 Гбайт, объем виртуального адресного

пространства оказывается равным 16 К *4Гбайт = 64 Тбайт.

Полный объем виртуального пространства может быть реализован только с помощью многозадачной операционной системы, которая хранит все неиспользуемые в настоящий момент сегменты на диске, загружая их в память по мере необходимости.

Преобразование линейных адресов в физические осуществляется с помощью страничной трансляции, частично реализуемой процессором, а частично — oneрационной системой. Если страничная трансляция выключена, все линейные адреса совпадают с физическими; если страничная трансляция включена, то линейные адреса преобразуются в физические в соответствии с содержимым страничных таблиц. На рисунке 12 представлена цепочка преобразований виртуального адреса в физический

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]