Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Организация ЭВМ - Отчет по всем лабам.docx
Скачиваний:
6
Добавлен:
11.04.2015
Размер:
92.68 Кб
Скачать

Лабораторная работа №4 Изучение команд «Сервис – Монитора»

Цель работы: изучить команды сервис монитора и принципы их составления.

Команда имеет следующую структуру (регистр/память):

A1 A2

COP d w md reg r/m disp L disp H

6 1 1 2 3 3 8 8

Здесь:

СОР – код операций;

d – направление передачи (d = 0, А1 – источник; d = 1, А1 – приемник);

w – длина операнда (w = 0 – младший байт регистра,w = 1 – весь регистр – два байта);

reg – номер регистра операнда А1;

md, r/m – компоненты метода адресации операнда А2.

disp - смещение относительно IP следующей команды.

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

СЕГ. РЕГ

ФА= 0000 + 0000 ,

где ЕА – эффективный (вычисляемый) адрес.

Варинт 7

Метод адресации:

Первый операнд содержится в AL

Второй операнд содержится и DS:[BX+SI]

Индивидуальная команда:

COP = 000000; “сложение ”

d = 1;

w = 0;

md = 0; (0 в 8 сс)

reg = 111; (7 в 8 сс)

r/m = 000; (0 в 8сс)

0000001000111000 (2cc) = 0238 (16 сс); ADD AL, DS:[BX+SI]

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

Проверка: 12(16 с.с.) + 1A(16 с.с.) = 2C(16 с.с.)

Выполнил:

Проверил:

Гурчин И.И.

Лабораторная работа №5 Переключение микропроцессора в защищенный режим

Цель работы: изучить практические методы перевода МП в защищенный режим и организации межуровневой защиты.

Методические указания Простая программа переключения режима мп

Пусть необходимо написать программу, которая переключает МП в защищенный режим (PM),изменяет атрибуты устройства отображения на негативное изображение и возвращается в реальный режим (RM) в ДОС.

Для большей наглядности работы программы, перед переключением в РМ на экран выдается строка символов %%%%%%. Так как МП здесь еще в RM, то можно воспользоваться прерыванием BIOS int10h (функция 0Eh - вывод символа).

Как только МП переходит в режим РМ, то выдается звуковой сигнал низкого тона. Программа переводит в негатив изображение всего экрана. Перед возвращением в режим RM программа выдает высокий тон и восстанавливает прямое изображение.

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

После возврата в RM и в ДОС на экран выводится строка символов ######## и завершается выполнение программы.

Таков общий план программы.

Конкретизируем этапы составления программы.

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

Необходимы следующие сегменты:

1. Сегмент глобальной дескрипторной таблицы. Для удобства разместим его на территории кодового сегмента.

2. Кодовый сегмент.

3. Алиас кодового сегмента - псевдосегмент данных. Территориально этот сегмент совпадает с кодовым. Он необходим для того, чтобы можно было изменять содержание дескрипторов, а возможно и кодового сегмента, не нарушая их зашиту в режиме РМ.

4. Стековый сегмент. Необходим для внутрипрограммных процедур.

5. Сегмент данных.

6. Дополнительный сегмент данных. Оба сегмента данных нужны для перезагрузки буфера монитора (видеобуфера) с заменой атрибута символов экрана на негатив.

Необходимым оказалось создать еще один сегмент, но которому не нужен дескриптор и селектор. Это фрагмент четырех байт BIOS в ОП по адресу 0040h:0067h, куда помещают смещение (IP) и базовый адрес сегмента (CS), по которым произойдет возврат в реальный режим

Параметры дескрипторов.

Структура дескрипторов разного типа приведена в методическом пособии к данной работе. Отметим, что она включает длину сегмент, его базовый адрес и байт атрибутов.

Замечания по выбору значений этих параметров следующие.

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

Что касается сегментов стека и данных, то их длину не всегда можно определить. Если проблем со свободной ОП нет, то предел можно взять максимальным - FFFF, что соответствует 64kb.

2. Базовый адрес сегмента также может быть иногда указан точно, как это было указано выше для фрагмента BIOS. В нашем примере также известны базовые адреса сегментов данных, т.к. они должны совпадать с адресом B8000 буфера монитора. В общем случае, базовый адрес сегментов определяется загрузчиком ДОС и директивами пользователя этапу трансляции, т.е. в момент выполнения программы базовый адрес известен и находится в сегментном регистре. Как было сказано выше, адрес должен быть переведен в формат защищенного режима прежде, чем будет занесен в дескриптор.

3. У каждого дескриптора должен быть свой байт атрибутов. Структура байта зависит от типа сегмента. Она приведена в методическом пособии к работе. В данном примере сегменты GDT, алиас кодового сегмента, стековый, данных и дополнительных данных имеют одинаковый тип, а именно - тип данных, поэтому байт атрибутов их дескрипторов также одинаков. В самом деле, компоненты байта атрибутов здесь следующие: Р(бит присутствия)=1, DPL(приоритет)=00, S(сегмент несистемный)=1, Е(сегмент кодовый)=0, ED(адресация вниз)=0, V(разрешение записи в сегмент)=1, А(обращение к сегменту уже было)=0. Это соответствует коду 10010010.

Для кодового сегмента компоненты байта атрибутов следующие: Р=1, DPL=00, S=1, E=1, C(бит подчиненности)=0, R(разрешение считывания кода как данных с помощью префикса замены сегмента)=1, А=0. Поэтому байт атрибутов равен 10011010 = 9Аh.

Параметры селекторов

Как приведено в методическом пособии, селектор в защищенном режиме содержит INDEX, TI, RPL. INDEX - это номер дескриптора в таблице. Его можно получить, разделив на 8 относительный адрес дескриптора от начала таблицы, поскольку дескрипторы имеют 8 байт. INDEX смещен в селекторе влево на 3 разряда. Это можно сделать последующим умножением на 8. Значение TI и RPL удобно наложить арифметическим сложением с соответствующей константой.

RPLселекторов = 0,DPLдескрипторов сегментов, покрывающих видеобуфер, = 3(011).