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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Министерство образования Российской Федерации
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
НИЖНЕКАМСКИЙ ХИМИКО-ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
(филиал)
государственного образовательного учреждения
высшего профессионального образования
«КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ»
А.В. Долганов, Г.Х. Садикова
ОРГАНИЗАЦИЯ ЭВМ И СИСТЕМ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторной работе № 1
Нижнекамск 2009
Лабораторная работа № 1
Адресация МП Intel в реальном режиме
1. ЦЕЛЬ РАБОТЫ
Целью работы является изучение адресации МП Intel в реальном режиме на примере команды mov.
2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ. ПРОГРАММНАЯ МОДЕЛЬ МП INTEL.
2.1. Режимы работы.
Корпорация Intel для использования в РС выпускала микропроцессоры различной разрядности. Наиболее известные из них:
Имеется еще расширение архитектуры МП, совместимых c IBM PC, до 64 бит (модели МП Hammer (К-8) корпорации АМD), но это расширение коснулось только формата данных и РОН.
Первые МП корпорация Intel выпускала, находясь в составе корпорации IBM. Программное обеспечение для этих РС производила корпорация Microsoft, также входящая в состав корпорации IBM. По этой причине, когда говорят о МП, используют термин "МП Intel архитектуры (МП IА)" или МП, совместимые с IBM PC.
В МП этих архитектур можно выделить четыре режима работы, четыре программные модели.
Реальный режим 16-ти битового микропроцессора МП i8086. Это основной режим 8-и 16-битовых первых персональных ЭВМ, программно совместимых с IBM PC (режим МП IA-16).
Защищенный режим работы. Это основной 32-х битовый режим работы для 32-х битовых микропроцессоров МП IA (Intel архитектуры). В этом режиме доступны все команды и все архитектурные возможности. Используется механизм виртуальной памяти, все встроенные средства защиты, процедура переключения задач (режим МП IA-32).
Дополнительными режимами для них являются реальный и виртуальный 86 (режим V86).
Реальный режим 32 -х битового микропроцессора. Это 16-ти битовый режим адресации и обработки данных с прямым обращением к памяти. Режим эмулирует программную среду (модель) МП 8086 с некоторыми дополнительными возможностями, включая новые РОНы, часть новых команд и расширений, как адресов, так и данных. Но в любом случае, 32-х битное смещение в сегменте не должно превышать значения 65 535 (64 Кбайт).
При запуске или перезагрузке МП устанавливается именно реальный режим. Он используется для подготовки программной среды для работы в защищенном режиме.
Виртуальный режим 86 это разновидность формы эмуляции модели 8086. Здесь нет прямой адресации памяти. Он использует механизмы защиты и виртуальной памяти. Виртуальный режим 86 устанавливается из защищенного (для запуска программ, написанных для реального режима) с возможностью возврата в защищенный режим.
Вопросы для самопроверки:
1. Характеристики защищенного режима работы МП, определите возможности использования разрядности операндов и других средств архитектуры.
2. Характеристика реального режима работы МП, назначение режима, возможности использования разрядности операндов и других средств архитектуры.
3. Характеристика виртуального режима 86, назначение режима и возможности использования разрядности операндов и других средств архитектуры.
2.2. Программная модель 16-ти битового микропроцессора МП IA-16.
2.2.1. Модель памяти.
Одной из особенностей МП Intel это использование сегментированной памяти. Полнокровное развитие персональных ЭВМ (PC) началась с появления 16-ти битовых микропроцессоров. Изначально микропроцессоры предназначались для управляющих систем. Но PC проектировались для широкого круга пользователей, как максимально дешевых индивидуальных (одна для одного) ЭВМ для эксплуатации без посредников (профессиональных программистов). Для этого они должны быть снабжены определенными средствами программирования на основе простейших языков программирования (типа Бейсик), управляющей (операционной) программной системой и простейшими офисными системами: текстовые редакторы, электронные таблицы и т.д.
Но 16-ти битовая адресация позволяла адресовать только 216 = 65 536 байт (64 Кбайт). Этого было достаточно для управляющих ЭВМ, но не для PC.
Вероятно, по этой причине была выбрана модель структурированной математической памяти (Рис. 2.1.), состоящая из 16 сегментов по 65 536 байт (64 Кбайт)
Этот прием позволил увеличить адресное пространство математической памятив реальном режиме до 220 = 1 048 576 (1 Мбайт).
При этом первые 10 сегментов определялись, как память пользователей, а остальные 6 сегментов как системные (для операционной системы).
Кроме этого, вводился еще один дополнительный сегмент (64Кбайт) для адресации портов. Порты это программно-доступные (адресуемые) регистры контроллеров устройств ввода-вывода. Но это отдельное (дополнительное) адресное пространство процессора.
Биты в памяти, как и в регистрах, нумеруются с младших разрядов. Многобайтные операнды адресуются по номеру младшего байта. Размещение программных объектов без соблюдения правил целочисленных границ не рекомендуются
Использование сегментированной математической памяти для расширения адресного пространства имеет и отрицательные моменты. Это несоответствие адресных структур математической и физической (линейной) памяти. При каждом обращении к физической памяти необходима процедура преобразование адреса обращения из адреса сегментированной математической памяти в адрес линейной физической памяти. Это процедура трансляции сегмента.
Процедура трансляции сегментов заключается в вычислении адреса линейной, плоской физической оперативной памяти по адресу сегмента и смещению в сегментах.
Вопросы для самопроверки:
2.2.2. Порты ввода/вывода.
МП позволяет адресовать порты в адресном пространстве портов и ячейки оперативной памяти в отдельном адресном пространстве оперативной
памяти.
Для адресации портов используются команды ввода: вывода: IN, INS, OUT, OUTS (пересылки между РОНами и портами), а для адресации ячеек памяти любые адресные команды.
Для доступа к порту ввода/вывода, расположенному в адресном пространстве памяти могут использоваться любые работающие с памятью команды. Это дает некоторую гибкость работы с портами. Например, команда MOV позволяет пересылать данные между портом и любым регистром. Команды AND, OR, и TEST могут манипулировать отдельными битами управляющих регистров портов при программировании процедур ввода/вывода. Сегменты логической памяти, порты ввода/вывода и их отображение (возможное размещение) в памяти представлены на рис. 2.1.
Если при отображении портов на адресное пространство памяти используется сегментация, то поля AVL в дескрипторах сегментов позволяют отметить сегменты как неперемещаемые и не подлежащие подкачке.
Все сегменты (включая сегмента портов) в плоской памяти задаются двумя независимыми параметрами: сегментом (базовый адрес сегмента) и адресом объекта в сегменте (смещением в сегменте).
Адресное пространство портов:
В командах ввода вывода адреса портов от 1 до 255 могут задаваться прямыми адресами:
Задание в командах портов с адресами больших 255 производится с использованием регистра dx:
Вопросы для самопроверки:
2.2.3. Регистровый файл.
Регистровый файл МП IA 16 содержит 14 пользовательских регистров:
Все эти регистры в той или иной степени доступны программам пользователей.
Регистры общего назначения.
РОНы МП Intel (Рис.2.2) не являются классическими регистрами общего назначения. Они могут задаваться и явными адресами и по умолчанию (кодом операции, постбайтом и т.д.).
C точки зрения использования регистров по умолчанию, они делятся на две группы:
Регистр bx, хотя и относят к группе регистров данных, но он же является и одним из регистров адреса базы данных (для сегмента DS).
Регистр dx может использоваться в качестве адресного регистра портов в командах ввода/вывода.
Регистры cx, si и di по умолчанию используются при обработке строк.
При работе с 16-ти битовыми операндами и компонентами адреса используются 16- битовые РОНы ax, cx, dx, bx, sp, bp, si и di (по возрастанию адресов).
15 |
8 |
7 |
0 |
||
ax |
ah |
al |
Акумулятор |
||
cx |
ch |
cl |
Счетчик |
||
dx |
dh |
dl |
Данные |
||
bx |
bh |
bl |
База (для DS) |
||
sp |
Указатель стека |
||||
bp |
База кадра стека SS) |
||||
si |
Индекс источника |
||||
di |
Индекс приемника |
||||
Рис. 2.2. РОНы |
При работе с байтовыми операндами используются 8 битовые РОНы: al, cl, dl, bl, ah, ch, dh и bh (по возрастанию адресов).
Сегментные регистры и трансляция сегментов.
При использовании сегментированной математической памяти необходима процедура преобразования адреса сегментированной (математической памяти) в адреса линейной физической памяти при каждом обращении к памяти.
Адрес объекта в сегментированной памяти задается двумя компонентами базовым адресом сегмента и смещением в сегменте. В команде задается только смещение в сегменте. Базовый адрес сегмента задается содержимым одного из четырех сегментных регистров (рис. 2.3).
МП IA-16 содержали 4 сегментных регистров по 16 бит:
№ |
19 |
Базовые адреса сегментов |
4 |
3 |
0 |
|
00 |
ES Доп. сегмент данных |
0000 |
||||
01 |
CS Сегмент кода |
0000 |
||||
10 |
SS Сегмент стека |
0000 |
||||
11 |
DS Сегмент данных |
0000 |
||||
Рис.2.3. Сегментные регистры IA-16. |
Использование регистров CS, SS, DS и ES возможно по умолчанию и с использованием префикса замены сегмента. Базовые адреса сегментов используются для преобразования адреса сегментированной памяти в линейную.
Емкость физической памяти в МП IA-16 позволяет разместить одновременно до 16 полных сегмента по 64 Кбайт (216 байт). Но одновременно, без изменения содержимого сегментных регистров, в реальном режиме IA-16 можно обращаться только к четырем, по числу сегментных регистров.
Переход на использование остальных сегментов (кроме кодовых), размещенных в оперативной памяти можно производить:
Все операции работы со стеком ориентированы на словарную организацию стека. По этой причине адрес указателя стека и базовый адрес сегментного регистра SS должны бить четными.
Переходы на новые кодовые сегменты производятся командами межсегментных передач управления.
Преобразование адреса сегментированной памяти в адрес линейной (плоской) памяти производится процедурой трансляции сегмента: сложением базового адреса сегмента с адресом операнда в сегменте.
Но сегментные регистры - 16-и битные, а базовые адреса должны быть 20 - битными. Поэтому при использовании сегментных регистров их содержимое умножается на 16, добавлением четырех нулей после младшего разряда
Таким образом, адрес в сегменте математической памяти МП IA-16 задается тремя компонентами: B (база), X (индекс) и disp (смещение).
Для вычисления адреса обращения к физической памяти (при сегментированной структуре математической памяти) требуются, по крайней мере, две процедуры:
Результатом первого преобразования адреса является получение одной компоненты логического адреса смещения в сегменте, результатом второго преобразования получения смещения в линейной памяти.
Для уменьшения неопределенности при использовании вышеописанных смещений используют термины:
Схема вычисления смещения в сегменте (offset) по компонентам адреса, включая смещение в кадре сегмента (disp), и трансляции сегмента (вычисление линейного адреса в несегментированной памяти) представлена на рис.2.4.
Трансляция сегментов связана с проблемой с (20-й адресной шиной) оперативной памяти. Эта проблема заключается в следующем.
Максимальный адрес сегмента, который может быть записан с сегментный регистр (с учетом четырех нулей в младших разрядах) составляет число:
А max = 220 -24 1.при использовании этого адреса, как базового адреса сегмента, то в оставшиеся ячейки памяти можно будет записать только 16 слов. В МП с 20-й битовой адресной шиной, остальные данные сегмента запишутся в ячейки оперативной памяти, начиная с нулевого адреса.
В МП IA-32 при работе в реальном режиме (эмуляции МП IA-16) приходится учитывать это явление, используя прием (заворота) 20-й шины адреса.
В защищенном режиме, если включен механизм виртуальной памяти, происходит еще одно преобразование адреса трансляции страниц.
В (МП IA-16) трансляция страниц (виртуальная память) не реализована.
Указатель команд IP.
Это 16-ти битный регистр счетчик, вычисляющий адрес следующей команды (в кодовом сегменте) по числу байт в текущей команде. Программе указатель команд доступен только частично по командам передачи управления. В начальное состояние IP устанавливается автоматически в процедуре включения процессора. Прямой доступ к IP по записи или чтению не предусмотрен (но возможен доступ к содержимому IP после его копирование в стеке).
Регистр состояния (флагов).
Это 16-ти битный регистр, в котором сгруппированы управляющие сигналы режимов работы основных систем процессора и флаги кодов условий для условных команд передач управления.
Флаги кодов условий передач управления:
Вопросы для самопроверки:
2.2.4. Структура команд.
Имеется две формы представление машинных команд:
Команды на языке ассемблера. На языке ассемблера команды содержат символьный код операции и один или два адреса. Команды могут быть одноадресными или двухадресными. Первый адрес в команде адрес приемника, второй источника. Оба адреса могут быть адресами РОНов, Адресом оперативной памяти может быть только один.
Исключением является:
Адрес оперативной памяти может задаваться прямым адресом (offset) или компонентами (D, X, disp).
Примеры команд на уровне ассемблера:
Машинная кодировка команд IA 16.
МП IA-16 используют команды переменного формата от 1 до 7 байт. Кодировка команд производилась с учетом частоты использования команды в типовых программах.
Команда может иметь (рис. 2.5.):
0, 1 или 2 байта |
1 байт |
0,1 байт |
0,1 или 2 байта |
0,1 или 2 байта |
префикс |
код операции |
постбайт |
байты смещения |
непосредственный операнд |
Рис.2.5. Структура команд МП IA -16. |
Элементы команды:
Префикс.
Это необязательный байт, модифицирующий процедуру выполнения команды.
МП IA 16 предусматривает использование двух префиксов:
Префикс повторения. В МП IA 16 для обработки строк данных используются обычные команды, но с использованием префикса повторения. Префикс повторения обеспечивает повторные действия над элементами строк данных. Предусмотрены два варианта префикса повторения, отличающиеся заданием конца повторений: количеством повторений:
Префикс замены сегмента памяти.
В МП IA-16 предусмотрены 4 сегментных регистра. Использование любого из них может быть задано по умолчанию или явно, кроме сегмента команд.
По умолчанию используются сегменты:
Изменения использования сегмента по умолчанию можно указав в команде явно используемый сегмент:
Cegment CS задание сегмента,
DW ma 45 зарезервировать двухбайтную ячейку для данных ma с начальным значением 45.
Код операции.
Это единственный из обязательных элементов команды (1 байт), задающий операцию. Возможны операции, заданные одним кодом операции. Это одноадресные команды, операнд для которых задается или выставляется по умолчанию. Поле кода операции может содержать собственно код операции и от одного до 3 специальных битов:
Возможен однобайтовой вариант одноместной команды, в котором адрес данных (номер РОНа) размещается в трех младших разрядах кода операции.
Постбайт.
Это необязательный элемент команды. Задает один (для одноадресной команды) или два адреса операндов, один из которых используется и как адрес результата.
7 |
6 |
5 |
3 |
2 |
0 |
||
md |
r/r |
r/m |
|||||
Рис. 2.6. Структура постбайта |
Постбайт (рис. 2.6) содержит 3 поля:
Поле md. Это поле режима адресации.
Задает тип команды:
Для команд регистр/память задает процедуру вычисления адреса операнда в памяти:
Задании md 11 определяет команду типа регистр память. В этом случае поле r/r содержит номер РОНа, в котором находится один из операндов, а поле r/m, номер алгоритма вычисления адреса памяти, по которому хранится второго операнда.
Значения поля r/m от 000 до 011, задают формулы вычисления адреса памяти второго операнда по 3 компонентам: B, X и disp.
Значения поля r/m от 100 до 111, задают формулы вычисления адреса памяти второго операнда по двум компонентам: B и disp.
Количество выбираемых смещений disp, расположенных после постбайта, определяется по полю постбайта md.
Исключение: В адресации операндов, в качестве исключения, имеется возможность задавать адрес операнда в памяти прямым 16-ти разрядным адресом. Признаком прямой адресации является комбинация значений md = 00 и r/m=110 (в таблице 1 выделен жирным шрифтом).
Количество выбираемых смещений disp, расположенных после постбайта, определяется по полю постбайта md.
В таблице 1. представлены все формулы вычисления адресов РОН и ячеек памяти в зависимости от значений полей постбайта: md, r/r, r/m.
На рис. 2.7 представлена структура команд МП Intel в реальном режиме и схемы вычисления адресов операндов.
Таблица 1.Постбайтовые режимы адресации МП IA-16 |
|||||
Поле r/m |
Поле md |
||||
00 |
01 |
10 |
11 |
||
w = 0 |
w = 1 |
||||
000 |
DS:[bx + si] |
DS:[bx + si + disp(1 байт)] |
DS:[bx + si + disp(2 байт)] |
al |
ax |
001 |
DS:[bx + di] |
DS:[bx + di + disp(1 байт)] |
DS:[bx + di + disp(2 байт)] |
cl |
cx |
010 |
SS:[bp + si] |
SS:[bp + si + disp(1 байт)] |
SS:[bp + si + disp(2 байт)] |
dl |
dx |
011 |
SS:[bp + di] |
SS:[bp + di + disp(1 байт)] |
SS:[bp + di + disp(2 байт)] |
bl |
bx |
100 |
DS:[si] |
DS:[si + disp(1 байт)] |
DS:[si + disp(2 байт)] |
ah |
si |
101 |
DS:[di] |
DS [di + disp(1 байт)] |
DS [di + disp(2 байт)] |
ch |
di |
110 |
DS:[disp-2 ба-та] |
SS:[bp + disp(1 байт)] |
SS:[bp + disp(2 байт)] |
dh |
bp |
111 |
DS:[bx] |
DS [bx + disp(1 байт)] |
DS [bx + disp(2 байт)] |
bh |
bx |
Структура команд МП Intel в реальном режиме. |
||||||||
0,1 байт |
1 байт |
0,1 байт |
0,1,2 байта |
0,1,2 байта |
||||
Префикс |
Код операции. |
Постбайт |
Disp |
# d |
||||
md |
r |
r/M |
||||||
2 бита |
3 бита |
3 бита |
||||||
если |
r/M ≤ 11, |
то команда типа r/M; базовая индексная адресация; 1-й операнд находится в регистре, указанном полем r, адрес M вычисляется как: (B)+(X)+ #d16, где В и Х задаются кодом поля r/M. |
||||||
при: |
00 |
Disp отсутствует |
||||||
01 |
Disp = 1 байт |
|||||||
10 |
Disp = 2 байта |
|||||||
При |
11 |
Команда типа r/r, операнды находятся в регистрах, указанными полями r и r/M. |
||||||
Вариант относительно-индексной адресации памяти |
||||||||
если |
r/M ≥ 100, |
то команда типа r/M, первый операнд находится в регистре, указанном полем r, адрес M вычисляется как: (B)+ Disp, где: B задается кодом поля r/M постбайта. |
||||||
при |
00 |
Disp отсутствует |
||||||
01 |
Disp = 1 байт |
|||||||
10 |
Disp = 2 байта |
|||||||
Исключение: при md=00 и r/M = 110, адрес задается прямым 16-ти битным смещением (#d16). |
||||||||
Выбор сегмента: при указании в качестве компоненты адреса (bp), используется сегмент стека (SS), иначе сегмент данных (DS) |
||||||||
Рис.2.7. Структура команд МП Intel в реальном режиме и схемы вычисления адресов операндов. |
Вопросы для самопроверки:
3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Лабораторная работа расположена по следующему пути на сервере кафедры:
Z:\Документация\По предметно\Организация ЭВМ и систем (ОЭВМиС) \Лабораторные занятия\Лабораторная работа _1\ADR_PC_WIN
2. Скопируйте папку ADR_PC_WIN на свой компьютер.
3. Внутри папки запустите файл main.exe.
4. В открытом окне (см. рис.3.1) нажмите на кнопку «Практика».
Рис. 3.1. Общий вид программы.
5. В окне «Регистрация» введите свою фамилию и группу (см. рис. 3.2.).
Рис. 3.2. Окно регистрации студента.
6. Выберите тип адресации команды, указанной в поле «команда» и нажмите кнопку «Выбрать» (см. рис.3.3).
Рис. 3.3. Окно выбора формата команды.
7. Формат команды необходимо перевести в машинный код, выбирая в соответствующих полях окна двоичные расшифровки частей команды (см. рис.3.4.).
Рис. 3.4. Окно преобразования команды в машинный код.
8. В случае правильного выбора машинного кода команды появится следующее окно (см. рис. 3.5), выполненное вами задание отметится галочкой, в поле состояния пропишется «зачтено» (см. рис. 3.6).
Рис. 3.5. Окно правильного выполнения задания.
Рис. 3.6. Окно выбора формата команды после правильного преобразования команды в машинный код.
9. Необходимо выполнить все задания.
4. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен включать:
а) окно окончания лабораторной работы, которое необходимо показать преподавателю (см. рис. 3.7.);
Рис. 3.7. Окно о завершении работы студентом.
б) ответить на контрольные вопросы
5. Контрольные вопросы
а) вопросы в конце каждого пункта теоретического материала (вопросы для самопроверки),
б) вопросы преподавателя.