Методические указания к лабораторной работе по курсу
‘‘Микропроцессоры и микроконтроллеры‘‘
Раздел ‘‘Микропроцессоры‘‘
1 Цель лабораторной работы
Изучить организацию и работу микропроцессора i8080 с точки зрения программиста;
Ознакомиться с программой имитатором работы микропроцессора, назначением и действием всех кнопок (директив) и режимами работы имитатора;
Приобрести практические навыки работы с программой имитатором микропроцессора i8080.
2 Домашнее задание
2.1 Изучить программную модель микропроцессора.
2.2 Ознакомиться со структурой вырабатываемого микропроцессором байта состояния и назначением его отдельных разрядов.
2.3 Уяснить понятие адресного пространства микропроцессора и его распределение.
2.4 Ознакомиться с техническими характеристиками программы имитатора и порядком её работы.
2.5 Ознакомиться с составом, назначением, форматами и действиями директив пульта программы.
3 Контрольные вопросы
3.1 Основные регистры микропроцессора, их назначение и характеристики.
3.2 Программно-доступные узлы микропроцессора.
3.3. Регистр флагов, признаки результата, их назначение и использование.
3.4. Регистровые пары микропроцессора, их назначение и использование.
3.5 Байт состояния процессора (БСП).
3.6 Назначение отдельных разрядов БСП.
3.7 Адресное пространство микропроцессора и его распределение в программе имитатора.
3.8 Пульт оператора программы имитатора микропроцессора, его назначение, состав и функции.
3.9 Структурная схема микропроцессора i8080.
3.10 Система команд пересылок однобайтовых и двухбайтовых.
3.11 Система команд арифметических операций с одним и с двумя операндами.
3.12 Система команд логических операций с одним и с двумя операндами
3.13 Команды установки признаков.
3.14 Команды 16-ти битовых операций.
3.15 Команды сдвига содержимого аккумулятора.
3.16 Команды передачи управления.
3.17 Команды вызова и возврата из подпрограмм.
3.18 Система специальных команд.
3.19 Выполнение программы в покомандном режиме работы.
3.20 Выполнение программы в потактовом режиме работы.
3.21 Индикатор отображения адреса в программе имитатора.
3.21 Индикатор отображения состояния INTA, WO, STACK, HLTA, OUT, M1, INP, MEMR.
3.22 Индикатор состояния флагов Z, S, P, C, AC.
3.23 Индикатор отображения содержимого регистров общего назначения (РОН), регистра косвенного адреса, программного счетчика, указателя стека
4 Порядок выполнения работы
4.1 Запустить программу имитатор работы микропроцессора i8080, согласно указаниями п. 7.6??
4.2 Изучить интерфейс программы-имитатора (вкладки: Файл, Структурная схема, Система команд).
4.3 Практически освоить работу с кнопками клавиатуры имитатора 0-9, A-F, H, L, SpL, PcL, SpH, PcH, ОЗУ, Регистр, Сброс ОЗУ, Сброс Рег.
4.4 Занести в оперативную память следующую программу (табл. 1), выбирая адреса ячеек памяти и данные из таблицы вариантов (табл. 2). При этом необходимо помнить, что в микропроцессоре i8080 старший байт двухбайтового слова следует заносить по старшему адресу памяти, а младший байт – по младшему адресу. Например, трехбайтовая команда ассемблера LDA 0850H записывается в память в машинных кодах как 3A 50 08.
4.5 Выполнить записанную в память рабочую программу у пользуясь директивой ‘‘автоматического покомандного и потактового режима‘‘. Проверить правильность ее работы.
4.6 Выполнить пункт 4.4 по структурной схеме отслеживая в потактовом и покомандном режиме состояние всех блоков микропроцессора. Результаты выполнения представить в таблицах, указывая состояния шин адреса и данных и наименование машинного цикла (см. табл. 3).
ША | ШД | Код и имя машинного цикла | Примечание |
3А | А2 – Выборка команды | LDA | |
… | … | … | … |
4.7 Реализовать покомандный режим выполнения программы. В примечаниях к программе привести содержимое РОН, стека, ячеек оперативной памяти по ходу выполнения программы.
4.8 Оформить протокол лабораторной работы.
Таблица 1 – Рабочая система на языке Ассемблера и в машинных кодах
Адрес команды | Команды Ассемблера (мнемоника) | Машинные коды | Операция | Комментарий |
MVI H, A16 | 26 <30> | ![]() | Непосредственная передача 2-х мл. разрядов адреса | |
MOV L,H | 6C | Перенос содержимого регистра Н в L | ||
MVI H, A16 | 26 <09> | Непосредственная передача 2-х ст. разрядов адреса | ||
MVI B, D8 | 06 <5B> | ![]() | Непосредственная передача операнда | |
MOV M, B | ![]() | Передать содержимое регистра В в ячейку памяти по адресу наход. в RP H | ||
… | … | … | … | … |
LDA A16 | 3A <3009> | ![]() | Загрузка аккумулятора (прямая адресация) | |
CMA | 2F | ![]() | Инверсия содержимого аккумулятора | |
STA A16+1 | 32 <0931> | ![]() | Запись содержимого аккумулятора в ячейку памяти | |
HLT | ![]() | Останов | ||
… | … | … | … | … |
A16 | DB D8 | <5B> | Данные в памяти по адресу A16 |
Таблица 2 – Варианты заданий
Номер варианта | Адрес ячейки памяти A16 | Данные D8 |
0900H | 35H | |
0910H | D3H | |
0920H | 4AH | |
0930H | 5BH | |
0940H | 6DH | |
0950H | 3AH | |
0960H | E5H | |
0970H | C8H | |
0980H | 7EH | |
0990H | 8CH | |
09A0H | A3H | |
09B0H | C9H | |
09C0H | B7H | |
09D0H | 6AH | |
09E0H | 8EH | |
09F0H | 2DH | |
0A00H | 37H | |
0A10H | 69H | |
0A20H | 7DH | |
0A30H | ABH | |
0A40H | CDH | |
0A50H | 58H | |
0A60H | A6H | |
0A70H | D2H | |
0A80H | EFH |
5 Содержание отчета
5.1 Цель работы.
5.2 Основные теоретические положения работы: программная модель МП, байт состояния процессора, понятие адресного пространства МП.
5.3 Результаты выполнения работы по пп. 4.2 – 4.7 в соответствующей форме.
5.4 Краткий анализ полученных результатов (выводы по работе).
6. Список литературы
1.
7 Основные теоретические положения
7.1 Программная модель микропроцессора i8080
Рассмотрим упрощённую структуру МП i8080, содержащую только узлы, наиболее важные для понимания программистом процесса работы МП (рис. 1).
Обычно программист не вникает в структуру связей между функциональными узлами устройства. Ему необходимо знать, в какие регистры можно поместить данные и в каких регистрах разместится результат. Для него микропроцессор – это набор регистров общего назначения (РОН) и специальных регистров, а также флагов (признаков), которые устанавливаются в результате тех или иных операций.
В верхней части рисунка представлены все программно-доступные (адресуемые в командах в явной или неявной форме) узлы МП и памяти, а в нижней части – программно-недоступные узлы процессора, наиболее существенные для процесса выполнения команд.
Аккумулятор А, регистр флагов F и регистры общего назначения – В, С, D, Е, Н, L микропроцессора i8080 8-разрядные, причём указанные регистры могут программно объединяться в регистровые пары (RР), реализуя 16-разрядные регистры. Регистр флагов F и аккумулятор А совместно образуют 16-разрядный регистр слова состояния процессора, именуемый PSW (Processor status word). Имена остальных регистровых пар В, D и Н определяются именами старших регистров соответствующих пар.
Идентификатор PSW используется в командах обращения к стеку при спасании и восстановлении регистров МП, т.е. при сохранении текущего состояния прерываемой программы. Аккумулятор А и регистр флагов F всегда адресуются в командах Ассемблера в неявной форме.
Пять двоичных признаков (флагов) результата, полученного в аккумуляторе, фиксируются в регистре флагов F и могут в дальнейшем использоваться при выполнении команд условных переходов, вызовов и возвратов из подпрограмм. Остальные три разряда регистра не используются, для определённости в ник записаны соответствующие константы (см. рис. 1). Значения флагов формируются следующим образом.
Флаг знака результата S (“sign”) - копирует значение старшего разряда результата.
Признак нулевого результата Z (“zero”) - принимает значение Z = l, если результат в аккумуляторе равен нулю, иначе Z = 0.
Признак вспомогательного переноса C‘ – устанавливается в единицу при возникновении переноса из младшей тетрады аккумулятора в старшую (перенос из полубайта). Используется при обработке двоично- десятичных кодов.
Признак паритета (чётности) Р (“parity”) – принимает значение Р = 1,если число единиц в байте результата четно; иначе Р = 0.
Признак переноса из байта CY (“carry”) – принимает значение СY = 1, если при выполнении команды возникает перенос из старшего разряда (или заём в него), иначе CY = 0. Этот флаг является наиболее мощным средством, позволяющим на малоразрядном МП проводить обработку данных любой длины путём последовательной обработки байтов операндов.
Узловой точкой всех преобразований данных и основным рабочим регистром микропроцессора является аккумулятор А. Он используется для хранения одного из операндов и результата операции, а также для обмена данными между МП и периферийными устройствами по командам ввода-вывода.
Три пары регистров общего назначения В, D и Н могут использоваться в качестве указателей при косвенной адресации памяти в однобайтных командах. Однако обычно для этого применяется регистровая пара RP Н, так как широкий набор команд типа MOV M,R {операция M(H,L):=(R)} или MOV R,M {(R):=M(H,L)} позволяет адресовать в команде не только произвольную ячейку памяти, но и любой из программно-доступных регистров R, тогда как RP В и RP D (например, в командах LDAX В {операция (А):=:=М(В.С)} или STAX В {операция М(В, С): = (А) }) подразумевают адресацию ячеек памяти только с аккумулятором.
Рисунок 1 – Программная модель МП i8080
Программный счётчик PC хранит адрес памяти текущей команды исполняемой программы. Начальный адрес устанавливается нулевым при включении или начальной установке (сбросе) микроэвм. Выполнение программы начинается в этом случае с нулевой ячейки программной' памяти, в которую можно поместить команду безусловной передачи управления любому требуемому адресу. Произвольный начальный адрес может быть загружен в PC оператором с пульта управления.
Указатель стека SP адресует последнюю занятую ячейку стековой памяти.
7.2 Байт состояния микропроцессора
Для нормального функционирования микропроцессорной системы недостаточно управляющих сигналов, генерируемых непосредственно МП {например, DBIN (чтение), WAIT (ожидание), HLDA (подтверждение захвата шин) и др.}. Система в каждом машинном цикле должна получать более полную информацию о состоянии МП. Эта информация, в виде байта состояния МП, выдаётся им в первом такте каждого машинного цикла на шину данных и фиксируется на время данного цикла во внешнем регистре состояния (РБС). Выходы РБС и управляющие сигналы самого МП совместно образуют шину управления МП-системы (12 линий), сигналы которой используются при обращениях к памяти или периферийным устройствам.
Из 256 возможных наборов байта состояния только 10 из них используются для формирования различных команд МП. Эти десять кодов определяют, в свою очередь, десять типов машинных циклов со следующими именами: выборка команды, чтение из памяти, запись в память, чтение из стека, запись в стек, ввод, вывод, разрешение прерывания, останов, разрешение прерывания при останове.
Различные команды МП могут содержать от одного до пяти машинных циклов. Если при реализации любой команды её первый машинный цикл обязательно является циклом выборки команды, то остальные машинные циклы могут следовать в достаточно произвольном порядке, который определяется кодом данной команды.
Типы и коды машинных циклов МП, а также обозначения разрядов байта состояния в английской и русской транскрипций приведены в табл. 3.
Назначение каждого разряда в коде байта состояния разъяснено в табл. 4. Косая черта в конце обозначения означает, что активный уровень данного управляющего сигнала – низкий.
7.3 Адресное пространство микропроцессора
Максимальное число возможных отличных друг от друга кодов (адресов), которое может выдать на адресную шину микропроцессор, определяет его адресное пространство.
Иначе говоря, адресное пространство представляет собой упорядоченное множество кодов , где n – число адресных линий микропроцессора.
Так как адресная шина микропроцессора i8080 содержит всего 16 линий, то по ней можно передать
различных адресов (кодов). Таким образом, его адресное пространство составляет
, где
.
Это, однако, не означает, что каждому коду из указанного множества обязательно соответствует реальный программно-доступный элемент – ячейка памяти или периферийное устройство. Адресное пространство определяет лишь потенциальные возможности системы – максимальное число программно-доступных элементов, которые принципиально могут в ней присутствовать. Поэтому адресное пространство можно сравнить с пустым или частично заполненным помещением библиотеки, в котором можно разместить, например, не более 64К книг.
Адресное пространство – понятие абстрактное и его стоимость, например, нельзя выразить в денежных единицах. Это пространство позволяет лишь наглядно представить размещение в нём адресов различных программно-доступных объектов системы, таких как ячейки оперативной и постоянной памяти, контроллеров связи разного применения, таймеров и других устройств. Если процессор обратится в любую не занятую ячейку адресного пространства, то он, конечно, не получит ответного сигнала от несуществующего устройства. В малых микропроцессорных системах доля занятого адресного пространства обычно бывает весьма незначительной.
Таблица 3 – Типы и коды машинных циклов МП
Назначение машинного цикла | Разряды байта состояния МП | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
MEMR ЧТ | INP ВВ | M1 М1 | OUT ВЫВ | HLTA ПОСТ | STACK СТЕК | WO/ ЗВ/ | INTA ППР | |
Выборка команды | ||||||||
Чтение из памяти | ||||||||
Запись в память | ||||||||
Чтение из стека | ||||||||
Запись в стек | ||||||||
Ввод | ||||||||
Вывод | ||||||||
Разрешение прерывания | ||||||||
Разрешение останова | ||||||||
Разрешение прерывания при останове |
Таблица 4 – Назначение каждого разряда в коде байта состояния
Обозначение упр. сигнала | Разряд БС МП | Назначение |
MEMR ЧТ | D7 | Указывает на то, что в текущем машинном цикле будет производиться чтение из памяти |
INP ВВ | D6 | Указывает, что в текущем машинном цикле выполняется операция ввода |
M1 М1 | D5 | Указывает, что МП находится в цикле выборки первого байта команды |
OUT ВЫВ | D4 | Указывает, что в текущем машинном цикле выполняется операция вывода |
HLTA ПОСТ | D3 | Свидетельствует о том, что МП перешел в состояние останова по команде HLT |
STACK СТЕК | D2 | Означает наличие на шине адреса содержимого указателя стека SP, используемого для адресации области стековой памяти |
WO/ ЗВ/ | D1 | Указывает, что в текущем машинном цикле будет выполняться запись в память или вывод (при WO=0) |
INTA ППР | D0 | Подтверждение запроса прерывания, сигнал используется для запуска команд RST (рестарт), которая вызывает одну из 8 подпрограмм обработки прерываний |
4*. 5. Определить контрольную сумму мас сива. памяти, пользу-ясь директивой "KG". В кгдместве массива использовать занесенную рабочую ггрограмму. Вычислить контрольную сумму вручную и сравнить с машинной.
4.6. Заполнить массив памяти с адресами ОА.40Н. - - -OA5FH
после запуска программы имитатора необходимо обнулить содержимое ОЗУ и Регистров, путем нажатия на кнопки Сброс ОЗУ и Сброс Рег.
После сброса содержимого Регистров и ОЗУ, необходимо нажать кнопку ОЗУ.
Над окошком сегментных индикаторов будет выведен запрос ‘‘Введите номер ячейки ОЗУ‘‘ курсором мыши на клавиатуре имитатора вводим необходимый адрес ячейки ОЗУ в который мы будем записывать данные. В первом поле сегментного индикатора отображается адрес, а во втором содержимое ячейки памяти соответствующей этому адресу. После ввода содержимого ячейки во втором поле сегментного индикатора, чтобы занести данные по адресу необходимо нажать кнопку Ввод.
7.4 Назначение учебной программы-имитатора микропроцессора i8080
Программа-имитатор микропроцессора i8080 представляет собой полную программную модель микропроцессора и предназначена:
для изучения основ обслуживания и проектирования микро-ЭВМ, построенных на базе микропроцессора (МП) i8080;
для обучения основам программирования данного микропроцессора;
для разработки и макетирования блоков программного управления измерительной, технологической и др. аппаратуры.
7.6 Подготовка программы-имитатора к работе
1 Запустить исполнительный файл программы-имитатора CPU580 на выполнение. Должно появиться следующее окно.
2 Произвести сброс оперативной памяти, регистров и флагов путем нажатия указателем мыши на кнопки Сброс ОЗУ и Сброс Рег.
Появится следующее окно программы-имитатора
7.7 Описание интерфейса программы-имитатора
Пульт оператора предназначен для взаимодействия оператора с имитатором МП.
Он состоит из клавиатуры, шестиразрядного матричного дисплея, двоично-светодиодной индикации и управляющих клавиш SpL, SpH, PcL, PcH, Сброс ОЗУ, Сброс Рег., Регистр и ОЗУ.