Лабораторная
работа 2
Исследование
структуры машинного цикла микропроцессора
Intel8080
Цель работы: исследование выполнения отдельных команд и простых программ; исследование процесса выполнения команд по машинным циклам, запись программ в машинных кодах и на языке ассемблер.
Используемое оборудование: учебный микропроцессорный комплект (УМК), дополнительная макетная плата (плата ТЭЗ М1 из комплекта УМК), цифровой осциллограф.
1. Краткие сведения из теории.
Микропроцессор Intel8080 представляет собой однокристальный 8-разрядный микропроцессор. Структурная схема микропроцессора представлена на рис. 1. Микропроцессор имеет раздельные 8-разрядную шину данных и 16-разрядную шину адреса, которая обеспечивает адресное пространство памяти 64К байт и раздельные адресные пространства ввода и вывода по 256 байт.
Микропроцессор состоит из устройства управления (УУ), блока регистров общего назначения (РОН),арифметико-логического устройства (АЛУ), схемы управления обменом (СУО), буферных схем данных и адреса (БУ и БД). Блоки микропроцессора объединены через 8-разрядную внутреннюю шину данных.
УУ выполняет функции выборки команды, ее декодирования и выполнения, прием и выдачу управляющих сигналов для составных частей микропроцессора и системы.
Из системы УУ получает сигналы:
C1 и С2 – две не перекрывающиеся (т.е. не совпадающие во времени) периодические последовательности импульсов синхронизации;
INT – сигнал требования прерывания;
HLD – сигнал требования прямого доступа в память;
RESET – сигнал сброса (установка микропроцессора в исходное состояние);
RDY – сигнал готовности от составных частей МП системы.
УУ выдает в систему сигналы:
INTE – разрешение прерывания;
HLDA – разрешение прямого доступа в память;
WAIT – ожидание (микропроцессор находится в состоянии ожидания);
SYN – сигнал начала машинного цикла (выдается в начале каждого цикла).
Рис.1. Функциональная схема микропроцессора Intel8080
Выполняемая команда хранится в специальном регистре, который называется регистром команд (РК).
Арифметико-логическое устройство совместно с аккумулятором (А) и регистром признаков (F) выполняет арифметические и логические операции с двоичными числами (они носят название операндов). В аккумуляторе хранится один из операндов перед выполнением операции и результат после выполнения операции. В регистр признаков помещаются признаки событий, происходящих при выполнении операций (например, перенос из старшего значащего разряда, нулевой результат операции, отрицательный результат и т.д.).
Блок РОН включает 6 8-разрядных регистров (B,C,D,E,H,L), которые могут использоваться попарно как 3 16-разрядных (BC, DE,HL), 16-разрядный регистр-счетчик команд (IP) и 16-разрядный регистр – указатель стека (SP). Схема управления обменом выдает сигналы, синхронизирующие обмен данными между микропроцессором и МП системой. Сигнал WR сопровождает данные, выводимые из МП, а сигнал DBIN – синхронизирует прием информации. Этих сигналов явно недостаточно для управления всей системой, поэтому в начале каждого машинного цикла по шине данных передается служебная информация о типе операции, которая будет выполнена в текущем цикле. Эта информация сопровождается сигналом SYN, принимается специальной дополнительной схемой (она называется системный контроллер), которая, используя эту информацию, формирует все необходимые сигналы шины управления:
MRDC - чтение данных из памяти,
MWTC - запись данных в память,
IORC - чтение данных из порта ввода,
IOWC - запись данных в порт вывода.
Буферные схемы БА и БД обеспечивают необходимую нагрузочную способность шин адреса и данных, а также возможность отключения шин от внешней, по отношению к МП, системы (путем перевода выходов в третье состояние).
Микропроцессор имеет фиксированный набор из 244 команд. Выполнение команд происходит по машинным циклам. Каждый цикл – это выполнение элементарной операции по управлению шинами МП системы. Время выполнения команды определяется процессом получения, декодирования и выполнения команды. В зависимости от вида команды время ее выполнения может составлять 1-5 машинных циклов. Машинный цикл состоит из 3-5 машинных тактов. Такт – это один период синхронизирующих импульсов. При типовой частоте импульсов синхронизации, равной 2 МГц, длительность одного такта равна 500 нс.
Для КР580ВМ80А имеется 10 различных типов машинных циклов: выборка кода команды (цикл М1), чтение данных из памяти, запись данных в память, чтение данных из стека, запись данных в стек, ввод данных из внешнего устройства, запись данных во внешнее устройство, цикл обслуживания прерываний, останов, обслуживание прерывания в режиме останова. Первым машинным циклом при выполнении любой команды является цикл М1. Тип выполняемого цикла, как указывалось выше, определяется информацией, выдаваемой на шину данных в начале каждого цикла. Соответствие типа цикла и сигналов в каждом разряде шины данных приведено в таблицах 2 и 3 книги УМК.ЭКСПЛУАТАЦИОННАЯ ДОКУМЕНТАЦИЯ.(лист 11). На шине УМК (плата ТЭЗ М1) разряду D0 соответствует сигнал ST0, разряду D1 – ST1 и т.д.
В каждом машинном цикле МП проверяет состояние сигнала «Готов»(RDY) на своем входе. При нулевом сигнале на этом входе работа МП приостанавливается. В УМК это используется для выполнения программы в пошаговом режиме. Одно нажатие кнопки «ШГ» приводит к выполнению одной команды или одного машинного цикла программы.
2. Исследование выполнения команд по машинным циклам
2.1. Присоединить к УМК дополнительную плату ТЭЗ М1. Общий провод платы М1 соединить с входом заземления, а контакт ST5 – с входом внешнего запуска осциллографа. Переключить осциллограф в режим внешней синхронизации. Пригласить преподавателя для проверки схемы.
ВНИМАНИЕ! НЕЛЬЗЯ ВКЛЮЧАТЬ СОЕДИНЕННУЮ СХЕМУ БЕЗ РАЗРЕШЕНИЯ ПРЕПОДАВАТЕЛЯ. ЭТО МОЖЕТ ПРИВЕСТИ К ВЫХОДУ ИЗ СТРОЯ УМК.
2.2. Включить УМК и осциллограф. Поставить переключатели разверток по X – 1 В/дел, по Y – 1 мкс/дел. Добиться появления на экране линии развертки.
2.3.1. С адреса 0800Н ввести в УМК последовательность шестнадцатеричных чисел 3А 00 09 С3 00 08. Эта последовательность представляет собой две команды. Первая (3А 00 09) – команда извлечения числа из памяти и передача его в аккумулятор микропроцессора. Число 3А – код команды, 00 09 – адрес в памяти пересылаемого числа (этот адрес равен 0900Н – в МП действует соглашение, что для двухбайтовых чисел младший байт расположен по меньшему адресу, старший – по большему). Вторая команда (С3 00 08) передает управление по адресу 0800Н, т.е. приведенная программа – это бесконечное выполнение команды 3А 00 09.
2.3.2. Переключить УМК в пошаговый режим работы (кнопки РБ/ШГ и КМ/ЦК нажаты). Запустить программу, подав команду СТ 0800 ВП. Она остановится на первом шаге, причем на индикаторах будет высвечиваться информация. Нажимая кнопку ШАГ, несколько раз выполним программу, информацию занесем в таблицу 1.
Таблица 1.
Шаг |
Адрес |
Данные |
Состояние |
Тип цикла |
Комментарий |
1 |
0000100000000000 |
00111010 |
10100010 |
М1 |
Загрузка команды |
2 |
0000100000000001 |
00000000 |
10000010 |
чтение |
Чтение мл. байта адреса |
3 |
0000100000000010 |
00001001 |
10000010 |
чтение |
Чтение ст. байта адреса |
4 |
0000100100000000 |
10111111 |
10000010 |
чтение |
Чтение из памяти по адресу 0900H |
5 |
0000100000000011 |
11000011 |
10100010 |
М1 |
Загрузка команды |
6 |
0000100000000100 |
00000000 |
10000010 |
чтение |
Чтение мл. байта адреса |
7 |
0000100000000101 |
00001000 |
10000010 |
чтение |
Чтение ст. байта адреса |
8 |
0000100000000000 |
00111010 |
10100010 |
М1 |
Повтор шага 1 |
Примечание. На шаге 4 информация на индикаторах Данные может отличаться от приведенной в таблице.
Из анализа таблицы 1 видим, что команда 3А 00 09 выполняется за 4 цикла (цикл М1 и 3 цикла чтения памяти). В первом цикле происходит загрузка кода команды 3А (находится в памяти по адресу 0800Н) в РК микропроцессора. Во втором цикле читается младший байт адреса 00 (в памяти по адресу 0801Н). В третьем цикле читается старший байт адреса 09 (в памяти по адресу 0802Н). В четвертом цикле число, находящееся по адресу 0900 (в нашем случае оно равно 0BFH), считывается в аккумулятор микропроцессора.
2.3.3. Снять временную диаграмму выполнения команды 3А0009.
2.3.3.1. Переключить УМК в непрерывный режим работы (отжать кнопки КМ/ЦК и РБ/ШГ).
2.3.3.2. Снять и зарисовать временные диаграммы сигналов на контактах ST5, F2, IORC, IOWC, MRDC, MWTC, A0, A1, A8, D0. Все сигналы по времени на осциллографе привязаны к началу цикла М1 и должны быть зарисованы в одном временном масштабе. Сигнал F2 совпадает с сигналом синхронизации С2, и его период равен одному такту. Пример временной диаграммы приведен на рис.2.
2.3.3.3. Проанализируем нашу временную диаграмму. Она показывает, что команда выполняется за 13 периодов сигнала F2, т.е. за 13 тактов, причем цикл М1 выполняется за 4 такта, а циклы чтения за 3. Из сигналов синхронизации обмена информацией активным (активный уровень этих сигналов – низкий) бывает только сигнал MRDC (сопровождение чтения из памяти), что и следовало ожидать. Активным уровнем сигналов на шине адреса является низкий уровень, а на шине данных - высокий.
2.3.4. Записать в УМК с адреса 0800Н 22 00 09 С3 00 08. Выполнить программу в пошаговом режиме и результат занести в таблицу, аналогичную таблице 1. Снять временную диаграмму выполнения команды 22 00 09. Ответить на вопросы:
1. За сколько машинных циклов выполняется команда? За сколько тактов?
2. Какие циклы используются при выполнении команды?
3. Какие сигналы синхронизации обмена информацией бывают активны при выполнении команды?
4. Какие действия, по-вашему, выполняет команда?
Рис.2. Пример временной диаграммы
3. Выполнение простейших программ.
Рассмотрим программу, извлекающую число из адреса памяти 0900, инвертирующую его и записывающую в адрес 0901. Для удобства программистов двоичные числа, которые являются командами, при написании программ заменяются буквенно-цифровыми кодами (мнемокодами), где буквенный код указывает, какую операцию нужно выполнить, а цифры являются операндами команды. Мнемокод отражает суть производимого командой действия и является сокращением от соответствующих английских слов, например, MOV – Move (двигать), передача данных между регистрами или регистрами и памятью микропроцессора.
Программа 1 (в мнемокодах)
Мнемокод Комментарий
LDA 0900 ;Прочитать число из памяти по ;адресу 0900H
CMA ;Инвертировать число
STA 0901 ;Записать результат по адресу 0901
HLT ;Останов
При записи программ все числа представляются в шестнадцатеричной системе счисления. Для записи программ в ОЗУ микро-ЭВМ необходимо перевести мнемокоды команд в машинные коды.
Команды в программе могут быть одно-, двух- или трехбайтовые и должны в памяти занимать соответственно одну, две или три ячейки.
Программа 1 ( размещение по адресам памяти)
Адрес Число Комментарий
0800 3А ; код команды
0801 00 ; младший байт адреса
0802 09 ; старший байт адреса
0803 2F ; код команды СМА
0804 32 ; код команды STA
0805 01 ; младший байт адреса
0806 09 ; старший байт адреса
0807 76 ; код команды HLT
Предварительную запись программ удобно проводить в более компактной форме. В программе указывается начальный адрес каждой команды и при этом понимается, что, в зависимости от длины, команды в памяти будут занимать от одной до трех последовательных ячеек. При такой записи в левом столбце указываются лишь адреса команд в программе. Это позволяет сократить объем при описании программ и сделать более простым их анализ.
Программа 1 (общий вид записи)
Адрес Машинный код Мнемокод Комментарий
0800 3А 00 09 LDA 0900 ;читатать число из памяти
;по адресу 0900H
0803 2F CMA ; инвертировать число
0804 32 01 09 STA 0901 ; записать число в память
;по адресу 0901H
0807 76 HLT ; останов
Порядок выполнения:
1. Ввести в УМК программу 1.
2. Записать по адресу 0900 исследуемое число.
3. Осуществить пуск программы. Последовательно нажать клавиши «СБ», «СТ», ввести адрес 0800 и нажать клавишу «ВП». Выждать 1-2с и нажать клавишу «ПР», при этом на адресном дисплее отобразится адрес ячейки, следующий за командой HLT.
4. Проверить результат выполнения программы путем считывания числа из ячейки 0901.
5. Исследовать процесс выполнения программы по командам.
Клавишу «РБ/ШГ» установить в нажатое положение. Осуществить пуск программы и, последовательно нажимая клавишу «ШГ», выполнить программу по командам. После выполнения каждой команды проанализировать показания индикаторов ША, ШД и регистров состояния.
6. Исследовать процесс выполнения команд в программе 1 по машинным циклам. Обратить внимание на последовательность передачи и преобразования информации в микро-ЭВМ при выполнении каждой команды.
Программа 2
Адрес Машинный код Мнемокод Комментарий
0800 21 00 09 LXI H, 0900 ;записать в регистры H,L
;число 0900H
0803 7Е MOV A,M ;получить число из памяти,
;по адресу, указанному в
;регистровой паре H,L
0804 2F CMA ;инвертировать число в
;аккумуляторе
0805 2З INX H ;увеличить на 1 число в
;регистрах H,L
0806 77 MOV M,A ;записать число из аккуму-
;лятора по адресу, указан-
;ному в регистрах H, L
0807 76 HLT ; останов
Порядок выполнения:
1. Ввести в УМК программу 2.
2. Записать по адресу 0900 исследуемое число.
3. Осуществить пуск программы с адреса 0800. Проверить результат выполнения программы по числу, записанному по адресу 0901.
4. Исследовать процесс выполнения команды MOV A,M по машинным циклам.
СОДЕРЖАНИЕ ОТЧЕТА.
1. Цель работы.
2. Таблицы пошагового выполнения программ.
3. Временные диаграммы выполнения команд.
4. Ассемблерные записи 2-х программ с комментариями.
5. Ответы на вопросы.
6. Выводы.