ЭВМ и Периферийные устройства

2 курс 2 семестр
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 367
Стаж: 2 года 9 месяцев
Откуда: Вологодская область
Контактная информация:

ЭВМ и Периферийные устройства

Сообщение Артём Мамзиков »

Архив с решенными заданиями 400Руб
контрольная Варианты 5, 10, 12, 14
Лаба вариант 2
Содержимое архива
Содержимое архива
Содержимое архива
Вариант 10
Задание на контрольную работу №1.

1. Подключить микросхемы ОЗУ и параллельного программируемого интерфейса КР580ВВ55А к микропроцессорному комплекту КР580 так, чтобы они заняли следующие адреса в памяти (табл. 1.1).

Таблица 1.1
Задания
№ Адресное пространство ОЗУ Адрес регистра управляющего слова КР580ВВ55А
10 3000h-33ffh B0h

2. Написать программу, которая обеспечивала бы последовательный просмотр содержимого ячеек этих микросхем ОЗУ вперед и назад, осуществляемых с помощью клавиш. Для индикации использовать светодиодные семисегментные индикаторы, на просмотр выводить одновременно содержимое двух ячеек (требуется 4 индикатора) и адрес одной из ячеек (требуется 4 индикатора). Семисегментные индикаторы и клавиши следует подключить к микросхеме параллельного интерфейса КР580ВВ55А. Программа должна размещаться в ПЗУ с адреса 0000h, т. е. к комплекту реализованному в пункте 1 требуется еще подключить ПЗУ.

3.Описать назначение и формат дескрипторов сегментов процессоров семейства х86. В соответствии с вариантом задания описать следующие виды дескрипторов. Во всех вариантах задания сегменты должны быть расположены в оперативной памяти. Для всех сегментов кода чтение из сегмента должно быть разрешено.
Вариант 10
а) для 16-разярдного подчиненного сегмента кода с нулевым
уровнем привилегий, базовый адрес сегмента - 000f0fffh; размер
- 0afffh.
б) для 32-разрядного сегмента данных для чтения и записи с
нулевым уровнем привилегий, базовый адрес сегмента
00090e20h; размер – 0F000h

Решение вариант 10

План
Задание 1 3
Задание 2 8
Задание 3 13
Список используемой литературы 17

Задание 1
Подключить микросхемы ОЗУ и параллельного программируемого интерфейса КР580ВВ55А к микропроцессорному комплекту КР580 так, чтобы адресное пространство ОЗУ занимало адреса d000h-d0ffh, адрес РУС F0h.
Для подключения устройств к МП необходимо перераспределить адресное пространство для этого существуют микросхемы дешифрации. В качестве такой микросхемы будем использовать КР155ИД3 (рис.1). В таблице 1 изображена таблица истинности этой микросхемы.
1 - ibmpfustr1.jpg
1 - ibmpfustr1.jpg (6.41 КБ) 1149 просмотров
Рисунок 1 Микросхема КР155ИД3
Микросхемы ОЗУ применяются для хранения данных, которые могут быть изменены в любой момент времени при исполнении текущей программы. В качестве ОЗУ будем использовать К132РУ8.
Определим номера разрядов шины адреса для формирования общего сигнала выборки ОЗУ. Это те из 16 разрядов адреса, двоичные значения которых остаются постоянными для всех адресов из диапазона ОЗУ:
d000h-d0ffh=1101000000000000-1101000011111111
Разряды, сохраняющие постоянное значение, подчёркнуты. Они соответствуют сигналам системной шины адреса A15, A14, A13, A12, A11, A10, A9, A8
2
2
В формировании сигнала SELECTRAM участвуют также сигналы MRDC, MWTC системной шины управления, т. к. ОЗУ в блоке памяти должно быть выбрано (активно) только во время циклов чтения или записи в память. Во время циклов ввода-вывода ОЗУ не выбрано (пассивно; хранит раннее записанную информацию) (рис.2).
Программирование периферийной микросхемы КР580ВВ55А осуществляется путем посылки УС в РУС (или их аналоги). Программирование периферийных микросхем может осуществляться через адресное пространство портов ввода/вывода. В этом случае обращение к регистрам периферийной микросхемы должно происходить через адреса портов. Для этого необходимо в проектируемой ВС предусмотреть схему выборки, т.е. присвоить определенным регистрам периферийной микросхемы определенные адреса.
3
3
Рисунок 2 – Схема дешифрации адреса ОЗУ

Обращаться к каналу ВА ППИ можно по номеру портов, в которых два младших двоичных разряда были бы равны 00, к каналу ВВ ППИ можно обращаться по номерам портов, в которых два младших двоичных разряда были бы равны 01, к каналу ВС ППИ можно обращаться по номерам портов, в которых два младших двоичных разряда были бы равны 10 и к РУС по номерам портов, в которых два младших двоичных разряда были бы равны 11.
Для расчета адресного пространства КР580ВВ55А необходимо к заданному значению адреса регистра УС (F0h) добавить еще три состояния, соответственно адрес ППИ будет занимать следующие значения адресного пространства МП.
F0h-F3h=0000000011110000-0000000011110011
Разряды, сохраняющие постоянное значение, подчёркнуты. Они соответствуют сигналам системной шины адреса A7, A6, A5, A4, A3, A2. При обращении к внешним ВУ МП создает на младших 8 битах и старших 8 битах адресной шины одинаковый сигнал, поэтому в выборке микросхемы ППИ будут участвовать младшие 8 бит.
Таким образом, сигналы A7, A6, A5, A4, A3, A2 подаются на блок дешифрации адресов и формируют общий сигнал выборки ППИ.
SELECTппи =
Для обращения к РУС требуется высокий сигнал на двух входах адресной шины ППИ соответственно сигнал с МП должен инвертироваться (рис.3).
4
4
Рисунок 3 – Схема дешифрации адреса ППИ
F0h – 11110000 – обращение к РУС
F1h – 11110001 – обращение к каналу ВВ
F2h – 11110010 – обращение к каналу ВС
F3h – 11110011 – обращение к каналу ВА

Задание 2
Написать программу, которая обеспечивала бы последовательный просмотр содержимого ячеек этих микросхем ОЗУ вперед и назад, осуществляемых с помощью клавиш. Для индикации использовать светодиодные семисегментные индикаторы, на просмотр выводить одновременно содержимое двух ячеек (требуется 4 индикатора) и адрес одной из ячеек (требуется 4 индикатора). Семисегментные индикаторы и клавиши следует подключить к микросхеме параллельного интерфейса КР580ВВ55А. Программа должна размещаться в ПЗУ с адреса 0000h, т. е. к комплекту реализованному в пункте 1 требуется еще подключить ПЗУ.

В ПЗУ хранится программа и данные, которые не стираются при снятии с микросхемы питания. В качестве ПЗУ будем использовать однократно программируемую КР556РТ4.
Для того чтобы подключить ПЗУ к адресному пространству начиная с 0000h надо переопределить адреса адресную карту МП следующим образом.
5
5
Здесь используется только управляющий сигнал чтения из памяти, т. к. в процессе функционирования МПС из ПЗУ только считываются коды машинных команд управляющей программы.
Схема дешифрации адресного пространства ПЗУ изображена на рисунке 3.
6
6
Рисунок 3 – Схема дешифрации адреса ПЗУ.
Для отображения содержимого ячеек и их адреса необходимо подключение двух микросхем ППИ, к портам вывода которых необходимо подключить семисегментные индикаторы. Для управления второй микросхемой ППИ 2 выделим следующие адреса
FCh – 11111100 – обращение к РУС
FDh – 11111101 – обращение к каналу ВВ
FEh – 11111110 – обращение к каналу ВС
FFh – 11111111 – обращение к каналу ВА
Подключение двух микросхем ППИ изображено на рисунке 4.
7
7
Рисунок 4
Для хранения адреса ячейки используем два регистра H и L.
Для хранения данных текущей ячейки будем использовать регистр Е, для хранения данных предыдущей ячейки будем использовать регистр D.
Для вывода данных текущей ячейки будем использовать порт В ППИ 1, для вывода данных предыдущей ячейки будем использовать порт А ППИ 1, порт С ППИ 1 настроим на ввод для определения состояния клавиш. Для вывода адреса текущей ячейки будем использовать порты А и В ППИ 2.

MVI A,89h ; настройка ППИ, формирование УС
OUT F0h ; подача управляющего слова 89h по адресу FB
OUT FСh ; подача управляющего слова 89h по адресу FC
LXI H,D000h ; загрузка в регистровую пару H,L начального адреса
ОЗУ
L1: IN F2h ; прием состояния порта PC в аккумулятор
ANI 1h ; маска
JNC L2 ; переход если А≠0
CALL ‘UP’ ; переход на подпрограмму листания вверх
IN F2h ; прием состояния порта PC в аккумулятор
ANI 2h ; маска
JNC L1 ; переход если А≠0
CALL ‘DOWN’ ; переход на подпрограмму листания вниз
JMP L1 ; переход на начало опроса клавиши
UP: MOV E,M ;загрузка данных в регистр E из текущей ячейки
памяти
MVI A,E ;формирование данных для вывода на индикатор
текущих данных
OUT F1h ;вывод данных в порт В ППИ1
MVI A,D ; формирование данных для вывода на индикатор
предыдущих данных
OUT F2h ;вывод данных в порт С ППИ1
MVI A,H ;формирование адреса для вывода на индикатор
OUT FDh ;вывод старшего бита адреса в порт В ППИ2
MVI A,L ; формирование адреса
OUT FFh ;вывод младшего бита адреса в порт A ППИ2
INR M ;инкрементирование содержимого регистров H,L
MOV D,E ;перенос содержимого регистра E в D
JMP L1 ; переход на начало опроса клавиши
DOWN: MOV E,M ;загрузка данных в регистр E из текущей ячейки
памяти
MVI A,E ;формирование данных для вывода на индикатор
текущих данных
OUT F1h ;вывод данных в порт В ППИ1
MVI A,D ; формирование данных для вывода на индикатор
предыдущих данных
OUT F2h ;вывод данных в порт С ППИ1
MVI A,H ;формирование адреса для вывода на индикатор
OUT FDh ;вывод старшего бита адреса в порт В ППИ
MVI A,L ; формирование адреса
OUT FFh ;вывод младшего бита адреса в порт A ППИ
DCR M ;декрементирование содержимого регистров H,L
MOV D,E ;перенос содержимого регистра E в D
JMP L1 ; переход на начало опроса клавиши


Задание 3
Описать назначение и формат дескрипторов сегментов процессоров семейства х86. В соответствии с вариантом задания описать следующие виды дескрипторов. Во всех вариантах задания сегменты должны быть расположены в оперативной памяти. Для всех сегментов кода чтение из сегмента должно быть разрешено.
а) для 32-разярдного неподчиненного сегмента кода с третьим уровнем привилегий, базовый адрес сегмента - 003ff5ffh; размер - 1A000h.
б) для 16-разрядного сегмента данных для чтения и записи с первым уровнем привилегий, базовый адрес сегмента 004f0520h; размер – 0ff0eh.

Дескрипторы представляют собой восьмибайтные структуры данных, используемые для определения свойств программных элементов. Дескриптор определяет положение элементов в памяти, размер занимаемой ими области, его назначение и характеристики защиты. Все дескрипторы хранятся в таблицах, обращение к которым поддерживается процессором аппаратно.
Существует три типа таблиц дескрипторов – локальная таблица дескрипторов (LDT), глобальная таблица дескрипторов (GDT) и таблица дескрипторов прерываний (IDT). Размеры таблиц могут находиться в пределах 8 байт – 64 Кбайт.
Глобальная таблица (GDT) содержит дескрипторы, доступные всем задачам. Она может содержать дескрипторы любых типов, кроме дескрипторов прерываний и ловушек. Нулевой элемент этой таблицы процессором не используется. Локальная таблица (LDT) может быть собственной для каждой задачи и содержит только дескрипторы сегментов, шлюзы задач и вызовов.
Дескрипторы имеют восьмибайтный формат как для 16-разрядных, так и для 32-разрядных процессоров. Назначение дескриптора определяется полями байта управления доступом – байт со смещением 5. Дескрипторы 16- и 32-разрядных процессоров отличаются разрядностью поля базового адреса (24 и 32 бит) и трактовкой поля лимита, которое должно обеспечивать размер сегмента до 64 Кб или 4 Гб. Два старших байта у дескрипторов 80286 всегда нулевые (для совместимости с последующими процессорами), что позволяет их отличать и корректно использовать, выполняя 16-битные приложения защищенного режима на 32-разрядных процессорах.
Два старших байта дескрипторов 32-разрядных процессоров содержат расширения полей BASE и LIMIT, бит дробности G, определяющий, в каких единицах задан лимит: G=0 – в байтах, G=1 – в страницах до 4 Кб.
В дескрипторах сегментах, существующих в физической памяти (P=0), процессор контролирует только байт управления доступом. Назначение остальных байт определяется ОС.
Дескрипторы сегментов кода и данных определяют базовый адрес, размер сегмента, права доступа, а для систем с виртуальной памятью еще и присутствие сегмента в физической памяти (рис. ).
8
8
Рисунок - Дескриптор сегмента данных: а – 32-битный формат, b – 16-битный формат.
9
9
Рисунок - Дескриптор сегмента кода: а – 32-битный формат, b – 16-битный формат.

G – флаг гранулярности (Granularity), который, как раз, указывает, в чём измеряется размер сегмента: если G=0, то размер сегмента считается в байтах (то есть, максимальный размер сегмента получается 220=1 мегабайт), если G=1, то размер сегмента считается в 4-килобайтных блоках (страницах), то есть, максимальный размер сегмента равен 220*212=4 гигабайт, при чём размер сегмента всегда кратен 4 килобайтам.
D/B – флаг, указывающий разрядность сегмента: 0 – сегмент 16-разрядный, 1 – сегмент 32 разрядный.
Бит 53 зарезервирован и всегда должен быть равен нулю.
AVL – является свободным (Available) и может использоваться по усмотрению программы.
P – присутствие в памяти. При Р=1 сегмент отображен в физической памяти, при Р=0 отображения нет, и поля базового адреса и лимита не используются.
DPL – определяют привилегии доступа к сегменту (Descriptor Privelege Level). Всего существует 4 уровня доступа, в которых 0 – самый высокий приоритет, 3 – самый низкий приоритет.
А – обращение. А=0 – к сегменту не было обращения, А=1 – селектор данного сегмента загружался в регистр сегмента или для него выполнялась команда тестирования.
Е – контролируемое направление расширения : Е=0 – расширение вверх, Е=1 – расширение вниз.
W – разрешение (W=1) или запрет (W=0) записи данных в сегмент.
а)
My descriptor: dw A000h ; размер сегмента
db 1h ; размер сегмента
dw 003Fh ; базовый адрес сегмента
db F5FFh ; базовый адрес сегмента
db 11110010b ; доступ и тип
db 11000000b ; дополнительная информация и размер
db 0 ; базовый адрес сегмента
б)
My descriptor: dw FF0Eh ; размер сегмента
dw 520h ; базовый адрес сегмента
db 4fh ; базовый адрес сегмента
db 10110010b ; доступ и тип
db 01000000b ; дополнительная информация и размер
db 0 ; базовый адрес сегмента

Список используемой литературы
1.Изучение БИС параллельного периферийного адаптера: Учебное пособие для студентов фак. компьютерных наук и инф. технологий – Саратов: Изд-во Сарат. ун-та, 2006. – 44 с.
2. Аверьянов, Н. Н. Микропроцессоры и микропроцессорные комплекты интегральных микросхем: справочник: в 2 т./ Н. Н. Аверьянов, А. И. Березенко, Ю. И. Борщенко и др.; под ред. В. А. Шахнова. – М.: Радио и связь, 1988. – Т. 1. – 368с., ил. (описание микропроцессорного комплекта КР580)
3. Быстров, Ю. А. Электроника: справочная книга/ Ю. А. Быстров, Я. М. Великсон, В. Д. Вогман и др.; под ред. Ю. А. Быстрова. – СПб.: Энергоатомиздат, 1996. – 544 с., ил.
4. Машкин, А. В. Организация ЭВМ и систем: Методические указания по курсовому проектированию/ А. В. Машкин. – Вологда: ВоГТУ, 2010. – 26 c.
5. Гук, М. Процессоры Pentium III, Atlon и другие/ М. Гук, В. Юров. –СПб.: Питер, 2000. – 480с., ил.
А также документация Intel и AMD по процессорам семейства x86.
6. Процессоры Pentium 4, Athlon и Duron. – СПб.: Питер, 2001. – 512 с.
7. Микропроцессорная лаборатория.
8. Интернет.
Последний раз редактировалось Артём Мамзиков Вс мар 31, 2019 20:55, всего редактировалось 1 раз. количество слов: 432
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 367
Стаж: 2 года 9 месяцев
Откуда: Вологодская область
Контактная информация:

ЭВМ и Периферийные устройства

Сообщение Артём Мамзиков »

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

Вариант 3

Дескриптор – 8-ми байтная структура данных, используемая для определения свойств программных элементов (сегментов, шлюзов и таблиц). Дескриптор определяет положение элемента в памяти, размер занимаемой им области (лимит), его назначение и характеристики защиты. Все дескрипторы хранятся в таблицах, обращение к которым поддерживается процессором аппаратно.
Дескрипторы сегментов кода и данных определяют базовый адрес, размер сегмента, права доступа (чтение, чтение\запись, только исполнение кода или исполнение\чтение), а для систем с виртуальной памятью еще и присутствие сегмента в физической памяти.

Формат дескриптора:
10
10
а) для 16-разрядного неподчиненного сегмента кода с первым уровнем привилегий, базовый адрес сегмента – 00fff0feh; размер - 0afddh
Базовый адрес сегмента (адрес первого блока):
00fff0fe16=0000 0000 1111 1111 1111 0000 1111 11102.
Размер сегмента: 0afdd16=0000 1010 1111 1101 11012.
Адрес последнего блока: 00fff0fe16+0afdd16=0100a0db16=
=0000 0001 0000 0000 1010 0000 1101 10112

б) для 16-разрядного сегмента стека с нулевым уровнем привилегий, базовый адрес сегмента 00040d20h; размер – 05fffh
Базовый адрес сегмента (адрес первого блока):
00040d20h16=0000 0000 0000 0100 0000 1101 0010 00002.
Размер сегмента: 05fffh16=0000 0101 1111 1111 11112.
Адрес последнего блока: 00040d2016+05fff16=00046d1f16=
=0000 0000 0000 0100 0110 1101 0001 11112

Содержимое полей дескриптора:
11
11
количество слов: 63
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 367
Стаж: 2 года 9 месяцев
Откуда: Вологодская область
Контактная информация:

ЭВМ и Периферийные устройства

Сообщение Артём Мамзиков »

Вариант 5

Задача 1
Подключить микросхемы ОЗУ и параллельного программируемого интерфейса КР580ВВ55А к микропроцессорному комплекту КР580 так, чтобы они заняли следующие адреса в памяти:
Адресное пространство ОЗУ: 8400h-84ffh
Адрес регистра управляющего слова КР580ВВ55А: 4h

Нижняя и верхняя границы диапазона адресов:

В двоичной форме записи подчёркнута постоянная часть адреса, т.е. не меняющаяся в заданном диапазоне адресов и указывающая на конкретный кристалл ИМС ОЗУ. По неизменной части адреса сигнал выборки кристалла формируется по правилу:

При формировании сигнала выборки ОЗУ используются также сигналы системной шины управления MRDC и MWTC, т.к. кристалл должен быть выбран только во время чтения или записи. Схема подключения ИМС ОЗУ показана на рисунке 1.

Рисунок 1 – Схема подключения ИМС ОЗУ

Для обращения к каналам BA, BB и BC, а также к РУС ИМС по-следовательно-параллельного интерфейса (ППИ) используются два младших бита адреса. При этом, согласно организации ИМС, для доступа к BA, BB, BC и РУС используются адреса 00, 01, 10 и 11 соответственно. Адрес РУС , т.е. для обращения к РУС младшие биты следует обратить. Схема дешифрации адреса показана на рисунке 2.

Рисунок 2 – Дешифрация адреса РУС
Тогда доступ к каналам ППИ осуществляется пол адресам:
– РУС – (или 11 после инверсии);
– BC – (10);
– BB – (01);
– BA – (00).
Шесть старших бит адреса остаются постоянными и определяют выбор кристалла ППИ – 000001. Сигнал выборки формируется по правилу:

Схема дешифрации адреса ППИ показана на рисунке 3.

Рисунок 3 – Подключение ИМС ППИ

Задача 2
Написать программу, которая обеспечивала бы последовательный просмотр содержимого ячеек этих (Задача 1) микросхем ОЗУ вперед и назад, осуществляемых с помощью клавиш. Для индикации использовать светодиодные семисегментные индикаторы, на просмотр выводить одновременно содержимое двух ячеек (требуется 4 индикатора) и адрес одной из ячеек (требуется 4 индикатора). Семисегментные индикаторы и клавиши следует подключить к микросхеме параллельного интерфейса КР580ВВ55А. Программа должна размещаться в ПЗУ с адреса 0000h, т. е. к комплекту реализованному в пункте 1 требуется еще подключить ПЗУ.

Распределение памяти выполняется следующим образом:
– 000016–7FFF16 – ПЗУ (память программного кода);
– 800016–83FF16 – свободно;
– 840016–84FF16 – ОЗУ (память данных);
– 850016–FFFF16 – свободно.

Таблица 1 – Программа, выполняющая заданные действия
Адрес Машин-ный код Метка Мнемо-ника Операнд Комментарий
Блок начальных директив
ORG 0000H Директива начального адреса
PORTX EQU 01H Инициализация портов ввода/вывода
PORTY EQU 02H
PORTZ EQU 04H
Организация стека и очереди
0000 31 00 40 M0: LXI SP,4000H Организация стека в ОЗУ
0003 21 07 80 LXI H,8007H Загрузка адреса указателя начала очереди в ОЗУ (N=710=07H)
0006 AF M1: XRA A Обнуление аккумулято-ра
0007 77 MOV M,A Обнуление ячейки оче-реди адреса
0008 3E 01 MVI A,01H Номер ячейки конца очереди
000A 2D DCR L Адрес следующей ячей-ки
000B BD CMP L (A)–(L)=0?
000C 2C 06 00 JNZ M1 Переход на метку M1, если не последняя ячей-ка
000F C2 07 80 LXI H,800AH Повторная загрузка указателя начала очереди
Основная программа
0010 16 84 00 MVI D, 84 00 Адрес первой ячейки в регистре D
0013 DB 01 MAIN: IN PORTX Чтение из порта X (кнопки)
0015 C2 01 00 1D JC 01 Переход, если нажата кнопка «1»
0019 С2 02 00 27 JC 02 Переход, если нажата кнопка «2»
001D 00 DD D1 00 INR D Увеличение адреса на единицу
0020 C3 00 27 JMP 0027 Безусловный переход к команде по адресу 0027
0023 00 DD D1 01 DCR D Уменьшение адреса на единицу
0027 54 MOV D, H Копирование адреса в регистр H
0028 00 DD D1 00 INR H Увеличение адреса в регистре H на единицу
002C AF XRA A Подготовка к выводу адреса
002D 7D MOV A, D
002E D3 01 OUT PORTX Вывод адреса на инди-катор через порт X
0030 AF XRA A Подготовка к выводу содержимого первой ячейки
0031 7D MOV A, D
0032 D3 02 OUT PORTY Вывод содержимого первой ячейки на инди-катор через порт Y
0034 AF XRA A Подготовка к выводу содержимого второй ячейки
0035 7D MOV A, H
0036 D3 04 OUT PORTY Вывод содержимого второй ячейки на инди-катор через порт Z
0038 C3 JMP LINE Безусловный переход к метке LINE – в начало программы.
END Директива окончания программы


Задача 3
Описать назначение и формат дескрипторов сегментов процессо-ров семейства х86. В соответствии с вариантом задания описать следу-ющие виды дескрипторов. Во всех вариантах задания сегменты долж-ны быть расположены в оперативной памяти. Для всех сегментов кода чтение из сегмента должно быть разрешено.
а) для 32-разярдного подчиненного сегмента кода с первым уровнем привилегий, базовый адрес сегмента – 000f0fffh; размер – 2000h.
б) для 32-разрядного сегмента данных только для чтения со вто-рым уровнем привилегий, базовый адрес сегмента 00010e20h; раз-мер– 03000h.

Данные о сегменте (а):
Базовый адрес сегмента (адрес первого блока):
000F0FFF16=0000 0000 0000 1111 0000 1111 1111 11112.
Размер сегмента: 200016=0010 0000 0000 00002.
Адрес последнего блока: 000F0FFF16+200016=000F2FFF16=0000 0000 0000 1111 0010 1111 1111 11112

Данные о сегменте (б):
Базовый адрес сегмента (адрес первого блока):
00010E2016=0000 0000 0000 0001 0000 1110 0010 00002.
Размер сегмента: 300016=0011 0000 0000 00002.
Адрес последнего блока:
00010E2016+300016=00013E2016=0000 0000 0001 0011 1110 0010 00002

Таблица 2 – Формат дескриптора
Положение Название Краткое описание
Два младших байта (нулевой и первый) Segment Limit (part 1) Младшие 16 бит 20-ти битного поля Segment Limit. Поле используется для вычисления размера сегмента, содер-жит номер последнего блока, являю-щегося частью сегмента.
Второй, третий, четвёртый байты Base Address (part 1) Младшие три байта 32-х битного поля Base Address. Поле Base Address содержит базовый адрес сегмента в линейном адресном пространстве.
0-й бит пятого байта – –
1-й бит пятого байта R/W Для сегмента кода называется R (Read enable), для сегмента данных – W (Write enable). В случае сегмента кода управляет возможностью чтения его содержимого, в случае сегмента данных управляет возможностью модификации. Если флаг установлен, то чтение/модификация разрешены, если нет – не разрешены.
2-й бит пятого байта – –
3-й бит пятого байта Code/Data Если флаг установлен, дескриптор описывает сегмента кода, если сбро-шен – сегмент данных.
4-й – 7-й биты пятого байта – –
0-й – 3-й биты шестого байта Segment Limit (part 2) Старшие 4 бита поля Segment Limit.
4-й – 6-й биты шестого байта – –
7-й бит шестого байта G Granularity. Флаг гранулярности. Ис-пользуется для вычисления размера сегмента, определяет, в каких едини-цах он указан. Если флаг сброшен, размер сегмента указан в байтах, если установлен – в 4096-ти байтных блоках (4096 == 1000h).
Седьмой байт Base Address (part 2) Старший байт поля Base Address.

Таблица 3 – Содержимое полей дескриптора
Положение Название Содержимое
Сегмент
а) Сегмент
б)
Два младших байта Segment Limit (part 1) 0010 1111 1111 1111 0011 1110 0010 0000
Второй, третий, чет-вёртый байты Base Address (part 1) 0000 1111 0000 1111 1111 1111 0000 0001 0000 1110 0010 0000
0-й бит пятого байта – 0 0
1-й бит пятого байта R/W 1 1
2-й бит пятого байта – 0 0
3-й бит пятого байта Code/Data 1 0
4-й – 7-й биты пя-того байта – 1001 1001
0-й – 3-й биты ше-стого байта Segment Limit (part 2) 0000 0000
4-й – 6-й биты ше-стого байта – 000 000
7-й бит шестого бай-та G 0 0
Седьмой байт Base Address (part 2) 0000 0000 0000 0000
количество слов: 428
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 367
Стаж: 2 года 9 месяцев
Откуда: Вологодская область
Контактная информация:

ЭВМ и Периферийные устройства

Сообщение Артём Мамзиков »

Вариант 12

Задание 1

Подключить микросхемы ОЗУ и параллельного программируемого интерфейса КР580ВВ55А к микропроцессорному комплекту КР580 так, чтобы адресное пространство ОЗУ занимало адреса b000h-b0ffh, адрес РУС D0h.

Микросхемы ОЗУ применяются для хранения данных, которые могут быть изменены в любой момент времени при исполнении текущей программы. В качестве ОЗУ будем использовать КР155ИД3.

Таблица истинности КР155ИД3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A3 A2 A1 A0
X X X X X X X X X X X X X X X X Z Z Z Z
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Z Z Z Z
X X X X X X X X X X X X X X X 0 0 0 0 0
X X X X X X X X X X X X X X 0 1 0 0 0 1
X X X X X X X X X X X X X 0 1 1 0 0 1 0
X X X X X X X X X X X X 0 1 1 1 0 0 1 1
X X X X X X X X X X X 0 1 1 1 1 0 1 0 0
X X X X X X X X X X 0 1 1 1 1 1 0 1 0 1
X X X X X X X X X 0 1 1 1 1 1 1 0 1 1
X X X X X X X X 0 1 1 1 1 1 1 1 0 1 1 1
X X X X X X X 0 1 1 1 1 1 1 1 1 1 0 0
X X X X X X 0 1 1 1 1 1 1 1 1 1 1 0 0 0
X X X X X 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0
X X X X 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
X X X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
X X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1


Определим номера разрядов шины адреса для формирования общего сигнала выборки ОЗУ. Это те из 16 разрядов адреса, двоичные значения которых остаются постоянными для всех адресов из диапазона ОЗУ:

b000h-b0ffh=1011000000000000-1011000011111111
Разряды, сохраняющие постоянное значение, подчёркнуты. Они соответствуют сигналам системной шины адреса A15, A14, A13, A12.

Таким образом, сигналы A15, A14, A13, A12 подаются на блок дешифрации адресов и формируют общий сигнал выборки ОЗУ.

SELECTRAM =

В формировании сигнала SELECTRAM участвуют также сигналы MRDC, MWTC системной шины управления, т. к. ОЗУ в блоке памяти должно быть выбрано (активно) только во время циклов чтения или записи в память. Во время циклов ввода-вывода ОЗУ не выбрано (пассивно; хранит раннее записанную информацию) (рис.1).

Программирование периферийной микросхемы КР580ВВ55А осуществляется путем посылки УС в РУС (или их аналоги). Программирование периферийных микросхем может осуществляться через адресное пространство портов ввода/вывода. В этом случае обращение к регистрам периферийной микросхемы должно происходить через адреса портов. Для этого необходимо в проектируемой ВС предусмотреть схему выборки, т.е. присвоить определенным регистрам периферийной микросхемы определенные адреса.

Рисунок 1 – Схема дешифрации адреса ОЗУ

Обращаться к каналу ВА ППИ можно по номеру портов, в которых два младших двоичных разряда были бы равны 00, к каналу ВВ ППИ можно обращаться по номерам портов, в которых два младших двоичных разряда были бы равны 01, к каналу ВС ППИ можно обращаться по номерам портов, в которых два младших двоичных разряда были бы равны 10 и к РУС по номерам портов, в которых два младших двоичных разряда были бы равны 11.
Для расчета адресного пространства КР580ВВ55А необходимо к заданному значению адреса регистра УС (D0h) добавить еще три состояния, соответственно адрес ППИ будет занимать следующие значения адресного пространства МП.
D0h-D3h=0000000011010000-0000000011010011
Разряды, сохраняющие постоянное значение, подчёркнуты. Они соответствуют сигналам системной шины адреса A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, A2. При обращении к внешним ВУ МП создает на младших 8 битах и старших 8 битах адресной шины одинаковый сигнал, поэтому в выборке микросхемы ППИ будут участвовать младшие 8 бит.
Таким образом, сигналы A7, A6, A5, A4, A3, A2 подаются на блок дешифрации адресов и формируют общий сигнал выборки ППИ.
SELECTппи =
Для обращения к РУС требуется высокий сигнал на двух входах адресной шины ППИ соответственно сигнал с МП должен инвертироваться (рис.2).

Рисунок 2 – Схема дешифрации адреса ППИ

D0h – 11010000 – обращение к РУС
D1h – 11010001 – обращение к каналу ВВ
D2h – 11010010 – обращение к каналу ВС
D3h – 11010011 – обращение к каналу ВА

Задание 2
Написать программу, которая обеспечивала бы последовательный просмотр содержимого ячеек этих микросхем ОЗУ вперед и назад, осуществляемых с помощью клавиш. Для индикации использовать светодиодные семисегментные индикаторы, на просмотр выводить одновременно содержимое двух ячеек (требуется 4 индикатора) и адрес одной из ячеек (требуется 4 индикатора). Семисегментные индикаторы и клавиши следует подключить к микросхеме параллельного интерфейса КР580ВВ55А. Программа должна размещаться в ПЗУ с адреса 0000h, т. е. к комплекту реализованному в пункте 1 требуется еще подключить ПЗУ.
В ПЗУ хранится программа и данные, которые не стираются при снятии с микросхемы питания. В качестве ПЗУ будем использовать однократно программируемую КР556РТ4.
Для того чтобы подключить ПЗУ к адресному пространству начиная с 0000h надо переопределить адреса адресную карту МП следующим образом.

Адрес Устройство
0000h-00FFh ПЗУ
… …
b000h-b0FFh ОЗУ
… свободно
FF00h-FFFFh свободно

КР556РТ4 ПЗУ будет занимать следующее адресное пространство
0000h-3FFFh = 0000000000000000-0000000011111111
Таким образом, сигналы A15, A14, A13, A12, A11, A10, A9, A8 подаются на блок дешифрации адресов и формируют общий сигнал выборки ПЗУ.
SELECTпзу =
Здесь используется только управляющий сигнал чтения из памяти, т. к. в процессе функционирования МПС из ПЗУ только считываются коды машинных команд управляющей программы.
Схема дешифрации адресного пространства ПЗУ изображена на рисунке 3.

Рисунок 3 – Схема дешифрации адреса ПЗУ.
Для отображения содержимого ячеек и их адреса необходимо подключение двух микросхем ППИ, к портам вывода которых необходимо подключить семисегментные индикаторы. Для РУС второй микросхемы ППИ 2 выделим следующие адреса
F0h – 11110000 – обращение к РУС
F1h – 11110001 – обращение к каналу ВC
F2h – 11110010 – обращение к каналу ВВ
F3h – 11110011 – обращение к каналу ВА
Подключение второй микросхемы ППИ (рис.4)

Для хранения адреса ячейки используем два регистра H и L.
Для хранения данных текущей ячейки будем использовать регистр Е, для хранения данных предыдущей ячейки будем использовать регистр D.
Для вывода данных текущей ячейки будем использовать порт В ППИ 1, для вывода данных предыдущей ячейки будем использовать порт А ППИ 1, порт С ППИ 1 настроим на ввод для определения состояния клавиш. Для вывода адреса текущей ячейки будем использовать порты А и В ППИ 2.

MVI A,89h ; настройка ППИ, формирование УС
OUT D0h ; подача управляющего слова 89h по адресу FB
OUT F0h ; подача управляющего слова 89h по адресу 3F
LXI H,b000h ; загрузка в регистровую пару H,L младшего адрес
L1: IN D2h ; прием состояния порта PC в аккумулятор
ANI 1h ; маска
JNZ L2 ; переход если А≠0
CALL ‘UP’ ; переход на подпрограмму листания вверх
JMP L1 ; переход на начало опроса клавиши
L2: IN D2h ; прием состояния порта PC в аккумулятор
ANI 2h ; маска
JNZ L1 ; переход если А≠0
CALL ‘DOWN’ ; переход на подпрограмму листания вниз
JMP L1 ; переход на начало опроса клавиши
UP: MOV E,M ;загрузка данных в регистр E из текущей ячейки
памяти
MVI A,E ;формирование данных для вывода на индикатор
текущих данных
OUT D1h ;вывод данных в порт В ППИ1
MVI A,D ; формирование данных для вывода на индикатор
предыдущих данных
OUT D2h ;вывод данных в порт С ППИ1
MVI A,H ;формирование адреса для вывода на индикатор
OUT 1Fh ;вывод старшего бита адреса в порт В ППИ
MVI A,L ; формирование адреса
OUT 2Fh ;вывод младшего бита адреса в порт С ППИ
INR M ;инкрементирование содержимого регистров H,L
MOV D,E ;перенос содержимого регистра E в D
JMP L1 ; переход на начало опроса клавиши
DOWN: MOV E,M ;загрузка данных в регистр E из текущей ячейки
памяти
MVI A,E ;формирование данных для вывода на индикатор
текущих данных
OUT D1h ;вывод данных в порт В ППИ1
MVI A,D ; формирование данных для вывода на индикатор
предыдущих данных
OUT D2h ;вывод данных в порт С ППИ1
MVI A,H ;формирование адреса для вывода на индикатор
OUT 1Fh ;вывод старшего бита адреса в порт В ППИ
MVI A,L ; формирование адреса
OUT 2Fh ;вывод младшего бита адреса в порт С ППИ
DCR M ;декрементирование содержимого регистров H,L
MOV D,E ;перенос содержимого регистра E в D
JMP L1 ; переход на начало опроса клавиши
Задание 3
Описать назначение и формат дескрипторов сегментов процессоров семейства х86. В соответствии с вариантом задания описать следующие виды дескрипторов. Во всех вариантах задания сегменты должны быть расположены в оперативной памяти. Для всех сегментов кода чтение из сегмента должно быть разрешено.
а) для 32-разярдного подчиненного сегмента кода с третьим уровнем привилегий, базовый адрес сегмента - 000fff05h; размер - 03F000h.
б) для 32-разрядного сегмента данных только для чтения с
первым уровнем привилегий, базовый адрес сегмента 00ff0e20h;
размер – 011000h.

Решение
а.

б.
количество слов: 633
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 367
Стаж: 2 года 9 месяцев
Откуда: Вологодская область
Контактная информация:

ЭВМ и Периферийные устройства

Сообщение Артём Мамзиков »

Вариант 14

План
Задание 1 3
Задание 2 8
Задание 3 13
Список используемой литературы 17

Задание 1
Подключить микросхемы ОЗУ и параллельного программируемого интерфейса КР580ВВ55А к микропроцессорному комплекту КР580 так, чтобы адресное пространство ОЗУ занимало адреса d000h-d0ffh, адрес РУС F0h.
Для подключения устройств к МП необходимо перераспределить адресное пространство для этого существуют микросхемы дешифрации. В качестве такой микросхемы будем использовать КР155ИД3 (рис.1). В таблице 1 изображена таблица истинности этой микросхемы.

Рисунок 1 Микросхема КР155ИД3
Микросхемы ОЗУ применяются для хранения данных, которые могут быть изменены в любой момент времени при исполнении текущей программы. В качестве ОЗУ будем использовать К132РУ8.
Определим номера разрядов шины адреса для формирования общего сигнала выборки ОЗУ. Это те из 16 разрядов адреса, двоичные значения которых остаются постоянными для всех адресов из диапазона ОЗУ:
d000h-d0ffh=1101000000000000-1101000011111111
Разряды, сохраняющие постоянное значение, подчёркнуты. Они соответствуют сигналам системной шины адреса A15, A14, A13, A12, A11, A10, A9, A8

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A3 A2 A1 A0
X X X X X X X X X X X X X X X X Z Z Z Z
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Z Z Z Z
X X X X X X X X X X X X X X X 0 0 0 0 0
X X X X X X X X X X X X X X 0 1 0 0 0 1
X X X X X X X X X X X X X 0 1 1 0 0 1 0
X X X X X X X X X X X X 0 1 1 1 0 0 1 1
X X X X X X X X X X X 0 1 1 1 1 0 1 0 0
X X X X X X X X X X 0 1 1 1 1 1 0 1 0 1
X X X X X X X X X 0 1 1 1 1 1 1 0 1 1
X X X X X X X X 0 1 1 1 1 1 1 1 0 1 1 1
X X X X X X X 0 1 1 1 1 1 1 1 1 1 0 0
X X X X X X 0 1 1 1 1 1 1 1 1 1 1 0 0 0
X X X X X 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0
X X X X 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
X X X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
X X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Таблица 1 Таблица истинности микросхемы КР155ИД3
Таким образом, сигналы A15, A14, A13, A12 подаются на две микросхемы КР155ИД3 и формируют общий сигнал выборки ОЗУ.
SELECTRAM =
В формировании сигнала SELECTRAM участвуют также сигналы MRDC, MWTC системной шины управления, т. к. ОЗУ в блоке памяти должно быть выбрано (активно) только во время циклов чтения или записи в память. Во время циклов ввода-вывода ОЗУ не выбрано (пассивно; хранит раннее записанную информацию) (рис.2).
Программирование периферийной микросхемы КР580ВВ55А осуществляется путем посылки УС в РУС (или их аналоги). Программирование периферийных микросхем может осуществляться через адресное пространство портов ввода/вывода. В этом случае обращение к регистрам периферийной микросхемы должно происходить через адреса портов. Для этого необходимо в проектируемой ВС предусмотреть схему выборки, т.е. присвоить определенным регистрам периферийной микросхемы определенные адреса.

Рисунок 2 – Схема дешифрации адреса ОЗУ

Обращаться к каналу ВА ППИ можно по номеру портов, в которых два младших двоичных разряда были бы равны 00, к каналу ВВ ППИ можно обращаться по номерам портов, в которых два младших двоичных разряда были бы равны 01, к каналу ВС ППИ можно обращаться по номерам портов, в которых два младших двоичных разряда были бы равны 10 и к РУС по номерам портов, в которых два младших двоичных разряда были бы равны 11.
Для расчета адресного пространства КР580ВВ55А необходимо к заданному значению адреса регистра УС (F0h) добавить еще три состояния, соответственно адрес ППИ будет занимать следующие значения адресного пространства МП.
F0h-F3h=0000000011110000-0000000011110011
Разряды, сохраняющие постоянное значение, подчёркнуты. Они соответствуют сигналам системной шины адреса A7, A6, A5, A4, A3, A2. При обращении к внешним ВУ МП создает на младших 8 битах и старших 8 битах адресной шины одинаковый сигнал, поэтому в выборке микросхемы ППИ будут участвовать младшие 8 бит.
Таким образом, сигналы A7, A6, A5, A4, A3, A2 подаются на блок дешифрации адресов и формируют общий сигнал выборки ППИ.
SELECTппи =
Для обращения к РУС требуется высокий сигнал на двух входах адресной шины ППИ соответственно сигнал с МП должен инвертироваться (рис.3).

Рисунок 3 – Схема дешифрации адреса ППИ
F0h – 11110000 – обращение к РУС
F1h – 11110001 – обращение к каналу ВВ
F2h – 11110010 – обращение к каналу ВС
F3h – 11110011 – обращение к каналу ВА

Задание 2
Написать программу, которая обеспечивала бы последовательный просмотр содержимого ячеек этих микросхем ОЗУ вперед и назад, осуществляемых с помощью клавиш. Для индикации использовать светодиодные семисегментные индикаторы, на просмотр выводить одновременно содержимое двух ячеек (требуется 4 индикатора) и адрес одной из ячеек (требуется 4 индикатора). Семисегментные индикаторы и клавиши следует подключить к микросхеме параллельного интерфейса КР580ВВ55А. Программа должна размещаться в ПЗУ с адреса 0000h, т. е. к комплекту реализованному в пункте 1 требуется еще подключить ПЗУ.

В ПЗУ хранится программа и данные, которые не стираются при снятии с микросхемы питания. В качестве ПЗУ будем использовать однократно программируемую КР556РТ4.
Для того чтобы подключить ПЗУ к адресному пространству начиная с 0000h надо переопределить адреса адресную карту МП следующим образом.
Адрес Устройство
0000h-00FFh ПЗУ
… …
D000h-D0FFh ОЗУ
… свободно
FF00h-FFFFh свободно

КР556РТ4 ПЗУ будет занимать следующее адресное пространство
0000h-3FFFh = 0000000000000000-0000000011111111
Таким образом, сигналы A15, A14, A13, A12, A10, A11, A9, A8, подаются на блок дешифрации адресов и формируют общий сигнал выборки ПЗУ.
SELECTпзу =
Здесь используется только управляющий сигнал чтения из памяти, т. к. в процессе функционирования МПС из ПЗУ только считываются коды машинных команд управляющей программы.
Схема дешифрации адресного пространства ПЗУ изображена на рисунке 3.

Рисунок 3 – Схема дешифрации адреса ПЗУ.
Для отображения содержимого ячеек и их адреса необходимо подключение двух микросхем ППИ, к портам вывода которых необходимо подключить семисегментные индикаторы. Для управления второй микросхемой ППИ 2 выделим следующие адреса
FCh – 11111100 – обращение к РУС
FDh – 11111101 – обращение к каналу ВВ
FEh – 11111110 – обращение к каналу ВС
FFh – 11111111 – обращение к каналу ВА
Подключение двух микросхем ППИ изображено на рисунке 4.

Рисунок 4
Для хранения адреса ячейки используем два регистра H и L.
Для хранения данных текущей ячейки будем использовать регистр Е, для хранения данных предыдущей ячейки будем использовать регистр D.
Для вывода данных текущей ячейки будем использовать порт В ППИ 1, для вывода данных предыдущей ячейки будем использовать порт А ППИ 1, порт С ППИ 1 настроим на ввод для определения состояния клавиш. Для вывода адреса текущей ячейки будем использовать порты А и В ППИ 2.

MVI A,89h ; настройка ППИ, формирование УС
OUT F0h ; подача управляющего слова 89h по адресу FB
OUT FСh ; подача управляющего слова 89h по адресу FC
LXI H,D000h ; загрузка в регистровую пару H,L начального адреса
ОЗУ
L1: IN F2h ; прием состояния порта PC в аккумулятор
ANI 1h ; маска
JNC L2 ; переход если А≠0
CALL ‘UP’ ; переход на подпрограмму листания вверх
IN F2h ; прием состояния порта PC в аккумулятор
ANI 2h ; маска
JNC L1 ; переход если А≠0
CALL ‘DOWN’ ; переход на подпрограмму листания вниз
JMP L1 ; переход на начало опроса клавиши
UP: MOV E,M ;загрузка данных в регистр E из текущей ячейки
памяти
MVI A,E ;формирование данных для вывода на индикатор
текущих данных
OUT F1h ;вывод данных в порт В ППИ1
MVI A,D ; формирование данных для вывода на индикатор
предыдущих данных
OUT F2h ;вывод данных в порт С ППИ1
MVI A,H ;формирование адреса для вывода на индикатор
OUT FDh ;вывод старшего бита адреса в порт В ППИ2
MVI A,L ; формирование адреса
OUT FFh ;вывод младшего бита адреса в порт A ППИ2
INR M ;инкрементирование содержимого регистров H,L
MOV D,E ;перенос содержимого регистра E в D
JMP L1 ; переход на начало опроса клавиши
DOWN: MOV E,M ;загрузка данных в регистр E из текущей ячейки
памяти
MVI A,E ;формирование данных для вывода на индикатор
текущих данных
OUT F1h ;вывод данных в порт В ППИ1
MVI A,D ; формирование данных для вывода на индикатор
предыдущих данных
OUT F2h ;вывод данных в порт С ППИ1
MVI A,H ;формирование адреса для вывода на индикатор
OUT FDh ;вывод старшего бита адреса в порт В ППИ
MVI A,L ; формирование адреса
OUT FFh ;вывод младшего бита адреса в порт A ППИ
DCR M ;декрементирование содержимого регистров H,L
MOV D,E ;перенос содержимого регистра E в D
JMP L1 ; переход на начало опроса клавиши

Задание 3
Описать назначение и формат дескрипторов сегментов процессоров семейства х86. В соответствии с вариантом задания описать следующие виды дескрипторов. Во всех вариантах задания сегменты должны быть расположены в оперативной памяти. Для всех сегментов кода чтение из сегмента должно быть разрешено.
а) для 32-разярдного неподчиненного сегмента кода с третьим уровнем привилегий, базовый адрес сегмента - 003ff5ffh; размер - 1A000h.
б) для 16-разрядного сегмента данных для чтения и записи с первым уровнем привилегий, базовый адрес сегмента 004f0520h; размер – 0ff0eh.

Дескрипторы представляют собой восьмибайтные структуры данных, используемые для определения свойств программных элементов. Дескриптор определяет положение элементов в памяти, размер занимаемой ими области, его назначение и характеристики защиты. Все дескрипторы хранятся в таблицах, обращение к которым поддерживается процессором аппаратно.
Существует три типа таблиц дескрипторов – локальная таблица дескрипторов (LDT), глобальная таблица дескрипторов (GDT) и таблица дескрипторов прерываний (IDT). Размеры таблиц могут находиться в пределах 8 байт – 64 Кбайт.
Глобальная таблица (GDT) содержит дескрипторы, доступные всем задачам. Она может содержать дескрипторы любых типов, кроме дескрипторов прерываний и ловушек. Нулевой элемент этой таблицы процессором не используется. Локальная таблица (LDT) может быть собственной для каждой задачи и содержит только дескрипторы сегментов, шлюзы задач и вызовов.
Дескрипторы имеют восьмибайтный формат как для 16-разрядных, так и для 32-разрядных процессоров. Назначение дескриптора определяется полями байта управления доступом – байт со смещением 5. Дескрипторы 16- и 32-разрядных процессоров отличаются разрядностью поля базового адреса (24 и 32 бит) и трактовкой поля лимита, которое должно обеспечивать размер сегмента до 64 Кб или 4 Гб. Два старших байта у дескрипторов 80286 всегда нулевые (для совместимости с последующими процессорами), что позволяет их отличать и корректно использовать, выполняя 16-битные приложения защищенного режима на 32-разрядных процессорах.
Два старших байта дескрипторов 32-разрядных процессоров содержат расширения полей BASE и LIMIT, бит дробности G, определяющий, в каких единицах задан лимит: G=0 – в байтах, G=1 – в страницах до 4 Кб.
В дескрипторах сегментах, существующих в физической памяти (P=0), процессор контролирует только байт управления доступом. Назначение остальных байт определяется ОС.
Дескрипторы сегментов кода и данных определяют базовый адрес, размер сегмента, права доступа, а для систем с виртуальной памятью еще и присутствие сегмента в физической памяти (рис. ).

Рисунок - Дескриптор сегмента данных: а – 32-битный формат, b – 16-битный формат.

Рисунок - Дескриптор сегмента кода: а – 32-битный формат, b – 16-битный формат.

G – флаг гранулярности (Granularity), который, как раз, указывает, в чём измеряется размер сегмента: если G=0, то размер сегмента считается в байтах (то есть, максимальный размер сегмента получается 220=1 мегабайт), если G=1, то размер сегмента считается в 4-килобайтных блоках (страницах), то есть, максимальный размер сегмента равен 220*212=4 гигабайт, при чём размер сегмента всегда кратен 4 килобайтам.
D/B – флаг, указывающий разрядность сегмента: 0 – сегмент 16-разрядный, 1 – сегмент 32 разрядный.
Бит 53 зарезервирован и всегда должен быть равен нулю.
AVL – является свободным (Available) и может использоваться по усмотрению программы.
P – присутствие в памяти. При Р=1 сегмент отображен в физической памяти, при Р=0 отображения нет, и поля базового адреса и лимита не используются.
DPL – определяют привилегии доступа к сегменту (Descriptor Privelege Level). Всего существует 4 уровня доступа, в которых 0 – самый высокий приоритет, 3 – самый низкий приоритет.
А – обращение. А=0 – к сегменту не было обращения, А=1 – селектор данного сегмента загружался в регистр сегмента или для него выполнялась команда тестирования.
Е – контролируемое направление расширения : Е=0 – расширение вверх, Е=1 – расширение вниз.
W – разрешение (W=1) или запрет (W=0) записи данных в сегмент.
а)
My descriptor: dw A000h ; размер сегмента
db 1h ; размер сегмента
dw 003Fh ; базовый адрес сегмента
db F5FFh ; базовый адрес сегмента
db 11110010b ; доступ и тип
db 11000000b ; дополнительная информация и размер
db 0 ; базовый адрес сегмента
б)
My descriptor: dw FF0Eh ; размер сегмента
dw 520h ; базовый адрес сегмента
db 4fh ; базовый адрес сегмента
db 10110010b ; доступ и тип
db 01000000b ; дополнительная информация и размер
db 0 ; базовый адрес сегмента

Список используемой литературы
1. Изучение БИС параллельного периферийного адаптера: Учебное пособие для студентов фак. компьютерных наук и инф. технологий – Саратов: Изд-во Сарат. ун-та, 2006. – 44 с.
2. Процессоры Pentium 4, Athlon и Duron. – СПб.: Питер, 2001. – 512 с.
3. Микропроцессорная лаборатория.
4. Интернет.
количество слов: 767
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 367
Стаж: 2 года 9 месяцев
Откуда: Вологодская область
Контактная информация:

ЭВМ и Периферийные устройства

Сообщение Артём Мамзиков »

Лабораторная работа №1
Исследование организации вычислительных машин с регистровой архитектурой.

1.1. Цель работы
Практическое ознакомление с видами адресации операндов и форматами представления данных микропроцессоров семейства х86 (представителями регистровой архитектуры). Овладение навыками работы с пакетом TASM, ознакомление с логическими и арифметическими командами, работа со стеком.

1.2. Теоретические сведения
История развития процессоров Intel семейства х86 началась с микро-процессора (мп) i8086, который своей 20-разрядной адресной шиной охватывает пространство в 1 Мб. Большинство регистров i8086 были 16-разрядными. Формирование 20-разрядного физического адреса с помощью 16-разрядных регистров происходило следующим образом (рис. 1.1) – процессор аппаратно сдвигал содержимое одного из четырех сегментных регистров cs, ds, es или ss, а затем суммировал это значение с эффективным адресом (EA- effective address).
В реальном режиме адресации возможно различное расположение кода данных и программ в сегментах. TASM поддерживает следующие основные модели памяти: tiny, small, medium, compact, large. Программа, которую требуется оттранслировать и скомпоновать, набирается в любом текстовом редакторе и состоит из следующих частей: заголовка, макроопределений, данных, тела и заключения. Заголовок имеет обычно следующий вид:
%TITLE ‘Необязательный – описывает назначение программы'
IDEAL; определяет режим ассемблирования
MODEL small; задает модель памяти
STACK 256; определяет размер стека в 256 байт.

Цепочечные команды позволяют производить действия над блоками
памяти, представляющими собой последовательности элементов следующего размера:
1) 8 бит, то есть байт;
2) 16 бит, то есть слово;
3) 32 бита, то есть двойное слово.
Поддержка строк, имеющих размер элементов 32 бита, появилась в
процессорах i80386. Строковые команды делятся на три группы:
1) команды пересылки строк;
2) команды проверки строк;
3) команды префикса повторения.

Использование команды пересылок
В любом текстовом редакторе набрать следующую программу и сохранить ее с расширением .asm (номера строк набирать не надо).
Программа 3.1 mov.asm
1: %TITLE ‘Использование команды mov'
2: MASM
3: MODEL small
4: .STACK 256
5: .DATA
6: exCode DB 0
7: var DB 99 ; однобайтовая переменная
8: .CODE
9: Start:
10: mov ax, @data ; установка в DS
11: mov ds, ax ;адреса сегмента данных
12: mov ax, 1 ; переслать конкретные данные
13: mov bx, 2 ; в регистры
14: mov cx, 3
15: mov dx, 4
16: mov ah, var ;загрузить значение var в ah
17: mov si, offset var1 ;загрузить адрес var в si
18: Exit:
19: mov ah, 04Ch ;функция DOS:выход из программы
20: mov al, exCod ;возврат значения кода ошибки
21: int 21h ;вызов DOS. Останов программы
22: END Start ;конец программы/ точка входа

После создания исходного файла с расширением *.asm, следует выполнить его трансляцию, набрав в командной строке любого менеджера файлов (FAR, NC и т.д.) следующую строку:
tasm /zi mov.asm , , ,
После успешной трансляции создается объектный файл mov.obj. Если файл с расширением *.obj не получен, то это говорит о том, что в исходном файле с расширением *.asm были ошибки. Локализовать их можно, либо посмотрев файл листинга (.lst), либо нажав Ctrl^0. Применение ключа /zi разрешает транслятору сохранить связь символических имен в программе и их смещений в сегменте кода. После получения объектного файла mov.obj следует выполнить его компоновку, набрав в командной строке любого менеджера файлов (FAR, NC и т.д.) следующую строку:
tlink/v mov.obj
После успешной компоновки создается исполняемый файл mov.exe. Ключ /v указывает компоновщику на необходимость отладочной ин-формации в исполняемом файле. После получения исполняемого файла следует запустить его в отладчике, набрав в командной строке любого менеджера файлов следующую строку:
td mov.exe
Перейдя в главное меню (верхняя строка) нажав клавишу F10 выбрать в нем пункт View (обзор) и подпункт CPU (центральный процессор). В этом случае в отладчике раскроется окно в котором будет отображаться исходный текст программы и двоичные коды команд; содержимое регистров процессора и состояние его регистра флагов; состояние стека и области данных программы.
Выполнить программу mov.exe в шаговом режиме. Выполнение про-граммы в пошаговом режиме осуществляется путем нажатия на клавиши F7 или F8 (различия между ними заключаются в том, что при нажатии на F7 будет осуществляться заход в процедуры, а на F8 – нет). Регистры, содержимое которых изменяется на данном шаге, подсвечиваются белым цветом.

Описать в сегменте данных инициализированные области памяти
размером байт, слово, двойное слово, инициализированную каким-то одним значением область памяти размером 10 байт, неинициализиро-ванную область памяти размером в 5 байт, слово и двойное слово, в правой части которых в директивах резервирования и инициализации стоит имя области памяти, используемое ранее для инициализации двойного слова, строчку ASCII символов (конец строки обозначается знаком $). Оттранслировав и скомпоновав программу, посмотрите в отладчике, как будут представлены, описанные данные. С помощью функции 09h прерывания int 21h выведите строчку ASCII символов на экран. Для вывода на экран можно использовать следующую последовательность команд:
mov ah, 09h
mov dx, offset message
int 21h.





Использование арифметических и логических команд, команд управления и пересылок
Составить программу, которая бы обеспечивала выполнение следующих действий:
1) Трижды бы складывала между собой значения операндов.
Этот фрагмент оформить в виде подпрограммы.

MASM
MODEL SMALL
.STACK 256
.DATA
op_2 dw 20h
.CODE
Start:
mov ax,@data
mov ds,ax

mov ax,4Eh
mov bx,67h

call Additional
call Additional
call Additional


Exit:
mov ax, 4c00h
int 21h
Additional PROC
add cx,ax
add cx, bx
add cx, op_2
ret
ENDP
END Start

Использование арифметических и логических команд, команд управления и пересылок
Составить программу, которая бы обеспечивала выполнение следующих действий:
2) Вычитала бы из полученной в пункте 1 суммы значение операн-да_3.
MASM
MODEL SMALL
.STACK 256
.DATA
op_2 dw 20h
.CODE
Start:
mov ax,@data
mov ds,ax

mov ax,4Eh
mov bx,67h

call Additional
call Additional
call Additional


Exit:
mov ax, 7с00h
int 21h
Additional PROC
add cx,ax
add cx, bx
add cx, op_2
ret
ENDP
END Start

Использование арифметических и логических команд, команд управления и пересылок
Составить программу, которая бы обеспечивала выполнение следующих действий:
3) Умножала бы полученный результат в пункте 2 на значение сум-мы, полученное в пункте 1.

MASM
MODEL SMALL
.STACK 256
.DATA
op_2 dw 20h
.CODE
Start:
mov ax,@data
mov ds,ax

mov ax,4Eh
mov bx,67h

call Additional
call Additional
call Additional


Exit:
mov ax, 73e0h
int 21h
Additional PROC
add cx,ax
add cx, bx
add cx, op_2
ret
ENDP
END Start
Использование арифметических и логических команд, команд управления и пересылок
Составить программу, которая бы обеспечивала выполнение следующих действий:
4) Делила бы полученный результат в пункте 3 на сумму первого и второго операнда.

MASM
MODEL SMALL
.STACK 256
.DATA
op_2 dw 20h
.CODE
Start:
mov ax,@data
mov ds,ax

mov ax,4Eh
mov bx,67h

call Additional
call Additional
call Additional


Exit:
mov ax, 94c0h
int 21h
Additional PROC
add cx,ax
add cx, bx
add cx, op_2
ret
ENDP
END Start
количество слов: 407
Ответить Вложения 12 Пред. темаСлед. тема

Вернуться в «ЭВМ и Периферийные устройства»