Контрольные вопросы:
1.Как реализуется контроль по четности?
2.Оцените избыточность в процентах при использовании контроля по четности для пакета размеров 8 бит.
3.Определяет ли контроль по нечетности ошибку в двух разрядах?
4.Какой флаг регистра состояния микропроцессора используется для определения четного количества единиц в байте?
39
Лабораторная работа №7 Машинный формат команд микропроцессора
Цель работы: изучить машинный формат команд микропроцессора 8086 с помощью отладчика Debug.
Теоретическ ие сведения
По функциональному признаку система команд микропроцессора 8086 разбивается на 6 групп: пересылка данных, арифметические операции, логические операции и сдвиги, передача управления, обработка цепочек и управления микропроцессором. Каждой команде соответствует определенный двоичный код, который определяет тип команды и адреса операндов [4].
Способ представления команды в виде чисел в двоичном коде называется машинным форматом команды. Микропроцессор понимает команды, представленные только в машинном формате. Так как вся цифровая информация, обрабатываемая МП, в том числе и команды, хранятся в элементах памяти в виде набора логических «1» и «0». Но человеку запомнить соответствие последовательности до нескольких десятков единиц и нулей (например, до 48) определенной команде очень сложно. Поэтому были разработаны языки программирования (Ассемблер, Pascal, С++), использующие символьные коды для представления команд. Для перевода команд в символьном представлении в машинный формат используются специальные программы: компиляторы и трансляторы.
Машинные форматы команд МП 8086 в зависимости от типа команды и способа адресации содержат от 1 до 6 байтов, общая структура которого представлена на рис. 9 [5].
Ключевыми являются первые два байта: COP и RegAdr. Первый байт в основном определяет код операции, а второй - способ адресации операндов. Следующие 2 байта команды используются как адрес одного из операндов, причем адрес может быть как 8-битным, так и 16-битным.
40
Рис. 9. Структура машинного формата команды МП 8086
Последние два байта используются, если в команде непосредственно указывается один из операндов виде числа.
В данной работе изучение машинного формата команды производится на примере команды MOV. Команда MOV предназначена для пересылки данных от источника (src) к приемнику (dst). Источником могут быть регистр, ячейка памяти и или непосредственный, а в качестве приемника - регистр или ячейка памяти. Команда MOV состоит из кода операции (COP, первый байт), способа адресации (второй байт) и, если того требует COP, адреса ячейки памяти (dispL и dispH), непосредственно операнда (dataL и dataH).
По COP различают 2 вида команды пересылки:
-в качестве источника и приемника используются регистры или ячейки памяти (рис. 10,а));
-в роли источника выступают непосредственные данные, а в качестве приемника - либо регистр, либо память (рис. 10,б).
41
Рис. 10. Первые 2 байты команды MOV
Поле COP определяет тип команды, а поле src - адрес регистра источника. Адреса регистров представлены в табл. 12.
В МП 8086 есть ряд регистров имеющих одинаковые адреса регистров. Например, регистр DI имеет адрес 1112, и регистр ВН имеет тот же адрес. Единственная разница в том, что DI - 16-разрядный регистр, а ВН - 8-разрядный. Значит, в COP должен быть предусмотрел отличительный признак байта или слова. Это разряд W (word - слово). Для него возможны следующие случаи:
-0 - значит, что все адреса касаются однобайтовых
данных;
-1 - значит, что все адреса имеют отношение к словам. Для кодирования адреса приемника отведено 5 разрядов:
mod и reg/mem. Следовательно, существует 32 (25) различных способов адресации. Основой адресации приемника является поле mod (D7,D6), который определяет два варианта: приемник - это регистр микропроцессора (reg), или элемент ЗУ
(mem-MEMORY).
Приемником является регистр если mod=11. Поле reg/mem в этом случае определяет адрес регистра-приемника данных в соответствии с табл. 12.
42
Таблица 12
Адреса регистров
Второй случай - приемником является элемент ЗУ (ОЗУ или ПЗУ). Здесь возможны 24 варианта (25-8). Их можно объединить в 7 глобальных групп, которые определяются полем mod: 00, 01, 10. В табл. 13 представлены способы формирования эффективного адреса EA соответствующие данным вариантам.
Таблица 13 Способы адреса приемника данных
43