МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


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


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Структура машинной команды





МИКРОПРОЦЕССОРНАЯ ТЕХНИКА

Лабораторная работа № 4

 

Форматы команд. Кодировка регистров. Назначение полей ОРС, MOD, Reg/Mem, DISP, IMM формата команды.

 

по специальности 2-40 01 01

«Программное обеспечение информационных технологий»

 

 

Витебск

 

Разработана Иваненко Е.С., преподавателем спецдисциплин.

 

 

Рассмотрено и одобрено на заседании цикловой комиссии информатики и программирования.

 

Протокол № __ от « __ » _____________ 20 __ г.

 

Председатель ЦК ___________ А.С. Шандриков

 

Лабораторная работа № 4.

Тема: «Форматы команд. Кодировка регистров. Назначение полей ОРС, MOD, Reg/Mem, DISP, IMM формата команды»

 

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

Программа работы.

1. Повторить теоретический материал по теме «Структура машинной команды».

2. Определение значений всех полей используемых двухоперандных команд.

Вызвать программу отладчик afd. На запрос “Press any key to continue” нажать любую клавишу.

Ввести команду: A 100 (ввод). Набрать ниже указанный фрагмент программы:

Команда Машинные коды команды Поле кода операции OPC Поле d Поле w Поле mod Поле reg Поле r/m
MOV AL,BL              
MOV BX,[SI]              
ADD AX,BX              
ADD CX,[DI]              
ADD AL,BL              
MOV [BX],CL              

 

Нажать клавиши CTR+ENTER для выхода из ассемблирования. Набрать D 100 и заполнить в таблице машинные коды команд. Разбейте команду на соответствующие поля, запишите их в таблицу и согласно ниже приведенным таблицам убедиться, что они соответствуют данным командам.

3. Сделать вывод о проделанной работе.

4. Составить отчет о выполнении работы.

 

Отчет по работе должен содержать:

1. Номер, название и цель работы;

2. Заполненную таблицу;

3. Вывод по проделанной работе.

 

Краткие теоретические сведения.

Структура машинной команды

Машинная команда представляет собой закодированное по определенным правилам указание микропроцессору на выполнение некоторой операции или действия. Каждая команда содержит элементы, определяющие:

· что делать? (ответ на этот вопрос дает элемент команды, называемый кодом операции (КОП));

· объекты, над которыми нужно что-то делать (эти элементы называются операндами);

· как делать? (эти элементы называются типами операндов — обычно задаются неявно).

Приведенный на рис. 1 формат машинной команды является самым общим. Максимальная длина машинной команды — 15 байт. Реальная команда может содержать гораздо меньшее количество полей, вплоть до одного — только КОП.

Опишем назначения полей машинной команды.

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



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

§ 2eh — замена сегмента cs;

§ 36h — замена сегмента ss;

§ 3eh — замена сегмента ds;

§ 26h — замена сегмента es;

§ 64h — замена сегмента fs;

§ 65h — замена сегмента gs.

Рисунок 1 –Формат машинной команды

 

o Префикс разрядности адреса уточняет разрядность адреса (32 или 16-разрядный).
Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда. Этот адрес может иметь разрядность 16 или 32 бит. Если разрядность адреса для данной команды 16 бит, это означает, что команда содержит 16-разрядное смещение (см. рис. 1), оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента. В контексте рис. 2 это смещение называется эффективный адрес. Если разрядность адреса 32 бит, это означает, что команда содержит 32-разрядное смещение (см. рис. 1), оно соответствует 32-разрядному смещению адресного операнда относительно начала сегмента и по его значению формируется 32-битное смещение в сегменте. С помощью префикса разрядности адреса можно изменить действующее по умолчанию значение разрядности адреса. Это изменение будет касаться только той команды, которой предшествует префикс.

o Префикс разрядности операнда аналогичен префиксу разрядности адреса, но указывает на разрядность операндов (32 или 16-разрядные), с которыми работает команда. В соответствии с какими правилами устанавливаются значения атрибутов разрядности адреса и операндов по умолчанию?
В реальном режиме и режиме виртуального i8086 значения этих атрибутов — 16 бит.

Рисунок 2 –Механизм формирования физического адреса в реальном режиме


В защищенном режиме значения атрибутов зависят от состояния бита D в дескрипторах исполняемых сегментов (см. урок 16). Если D = 0, то значения атрибутов, действующие по умолчанию, равны 16 бит; если D = 1, то 32 бит.
Значения префиксов разрядности операнда 66h и разрядности адреса 67h. Вы можете с помощью префикса разрядности адреса в реальном режиме использовать 32-разрядную адресацию, но при этом необходимо помнить об ограниченности размера сегмента величиной 64 Кбайт. Аналогично префиксу разрядности адреса вы можете использовать префикс разрядности операнда в реальном режиме для работы с 32-разрядными операндами (к примеру, в арифметических командах).

o Префикс повторения используется с цепочечными командами (командами обработки строк). Этот префикс “зацикливает” команду для обработки всех элементов цепочки. Система команд поддерживает два типа префиксов:

§ безусловные (rep — 0f3h), заставляющие повторяться цепочечную команду некоторое количество раз;

§ условные (repe/repz — 0f3h, repne/repnz — 0f2h), которые при зацикливании проверяют некоторые флаги, и в результате проверки возможен досрочный выход из цикла.

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

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

· Байт режима адресации modr/m. Значения этого байта определяет используемую форму адреса операндов. Операнды могут находиться в памяти в одном или двух регистрах. Если операнд находится в памяти, то байт modr/m определяет компоненты (смещение, базовый и индексный регистры), используемые для вычисления его эффективного адреса (см. рис. 2). В защищенном режиме для определения местоположения операнда в памяти может дополнительно использоваться байт sib (Scale-Index-Base — масштаб-индекс-база). Байт modr/m состоит из трех полей (см. рис. 1):

o поле mod определяет количество байт, занимаемое в команде адресом операнда (см. рис. 1, поле смещение в команде).
Поле mod используется совместно с полем r/m, которое указывает способ модификации адреса операнда смещение в команде.
К примеру, если mod = 00, это означает, что поле смещение в команде отсутствует, и адрес операнда определяется содержимым базового и (или) индексного регистра. Какие именно регистры будут использоваться для вычисления эффективного адреса, определяется значением этого байта.
Если mod = 01, это означает, что поле смещение в команде присутствует, занимает один байт и модифицируется содержимым базового и (или) индексного регистра.
Если mod = 10, это означает, что поле смещение в команде присутствует, занимает два или четыре байта (в зависимости от действующего по умолчанию или определяемого префиксом размера адреса) и модифицируется содержимым базового и (или) индексного регистра.
Если mod = 11, это означает, что операндов в памяти нет: они находятся в регистрах. Это же значение байта mod используется в случае, когда в команде применяется непосредственный операнд;

o поле reg/коп определяет либо регистр, находящийся в команде на месте первого операнда, либо возможное расширение кода операции;

o поле r/m используется совместно с полем mod и определяет либо регистр, находящийся в команде на месте первого операнда (если mod = 11), либо используемые для вычисления эффективного адреса (совместно с полем смещение в команде) базовые и индексные регистры.

· Байт масштаб-индекс-база (байт sib) используется для расширения возможностей адресации операндов.
На наличие байта sib в машинной команде указывает сочетание одного из значений 01 или 10 поля mod и значения поля r/m= 100. Байт sib состоит из трех полей:

o поля масштаба ss. В этом поле размещается масштабный множитель для индексного компонента index, занимающего следующие три бита байта sib.
В поле ss может содержаться одно из следующих значений: 1, 2, 4, 8.
При вычислении эффективного адреса на это значение будет умножаться содержимое индексного регистра. Более подробно с практической точки зрения эта расширенная возможность индексации рассматривается на уроке 12 при обсуждении вопросов работы с массивами;

o поля index — используется для хранения номера индексного регистра, который применяется для вычисления эффективного адреса операнда;

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

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

· Поле непосредственного операнда. Необязательное поле, представляющее собой 8, 16 или 32-разрядный непосредственный операнд. Наличие этого поля, конечно, отражается на значении байта modr/m.

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

Формат двухоперандной команды имеет вид:

       
   


Opc d w Mod reg r/m

 

Первый байт команды содержит код операции и два однобитовых поля: направления d и размерность операнда w. При d=1 осуществляется передача операнда или результата операции в регистр, который определяется полем reg второго байта команды; при d=0 – передача из указанного регистра. Поле w идентифицирует разрядность операндов: при w=1 команда оперирует словом, при w=0 – байтом.

Второй байт, называемый постбайтом, определяет участвующими в операции регистры или RG и ячейку памяти. Постбайт состоит из 3-х полей: md – режим, reg – адрес регистра, r/m – адрес второго регистра/вид адресации для используемой ячейки памяти. Поле reg определяет операнд, который обязательно находится в регистре и условно считается вторым операндом. Поле r/m определяет операнд, который может находится в регистре или в памяти, и условно считается первым. Способ кодирования внутренних регистров микропроцессора: если mod=11, то оба операнда содержатся в регистрах и поля reg и r/m определяют используемые регистры, указанные в таблице.

Поля Reg и r/m регистр Поля Reg и r/m регистр
Если w=0 Если w=1 Если w=0 Если w=1
al ax ah sp
cl cx ch bp
dl dx dh si
bl bx bh di

Поле reg используется для указания регистра только в двухоперандных командах. Если в команде один операнд, то он идентифицируется полем r/m, а поле reg используется для расширения кода операции.

Поле mod показывает, как интерпретируется поле r/m для нахождения первого операнда: если mod=11. то операнд содержится в регистре, в остальных случаях в памяти. Когда адресуется память, поле mod определяет используемое смещение disp, находящегося в 3-ем и 4-ом байтах.

Кодирование поля r/m

Поле r/m Получение исполнительного адреса EA Поле r/m Получение исполнительного адреса EA
EA=(BX)+(SI)+disp EA=(SI)+disp
EA=(BX)+(DI)+disp EA=(DI)+disp
EA=(BP)+(SI)+disp EA=(BP)+disp
EA=(BP)+(DI)+disp EA=(BX)+disp

Если mod=00 и r/m=110, то EA=disp, т.е. команда содержит абсолютный адрес памяти. Т.о. операнд в памяти можно адресовать прямо или косвенно. Во втором случае память можно адресовать через базовый регистр (BP или BX), через индексный регистр (SI или DI), а также через комбинацию базового и индексного регистра.

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

3.1 Укажите, какие поля содержит формат команды в общем случае?

3.2 Укажите, какие префиксы используются в команде?

3.3 Укажите, что определяет поле OPC?

3.4 Укажите, что определяет поле d?

3.5 Укажите, что определяет поля w?

3.6 Укажите, что указывает поле mod?

3.7 Укажите, что определяют поля reg и r/m?

 

Литература

В.Юров, С.Хорошенко. Assembler. Учебный курс. Санкт-Петербург, Москва, Харьков, Мн.: 1999





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.