
- •Изучение организации, режимов работы, системы команд и основных директив программного имитатора микропроцессора i8080
- •1 Цель лабораторной работы
- •2 Домашнее задание
- •3 Контрольные вопросы
- •4 Порядок выполнения работы
- •5 Содержание отчета
- •6. Список литературы
- •7 Основные теоретические положения
- •7.2 Байт состояния микропроцессора
- •7.3 Адресное пространство микропроцессора
- •7.4 Назначение учебной программы-имитатора микропроцессора i8080
- •7.6 Подготовка программы-имитатора к работе
- •7.7 Описание интерфейса программы-имитатора
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 ППР |
|
Выборка команды |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
Чтение из памяти |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Запись в память |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Чтение из стека |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
Запись в стек |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Ввод |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Вывод |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Разрешение прерывания |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
Разрешение останова |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
Разрешение прерывания при останове |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
Таблица 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
после запуска программы имитатора необходимо обнулить содержимое ОЗУ и Регистров, путем нажатия на кнопки Сброс ОЗУ и Сброс Рег.
После сброса содержимого Регистров и ОЗУ, необходимо нажать кнопку ОЗУ.
Над окошком сегментных индикаторов будет выведен запрос ‘‘Введите номер ячейки ОЗУ‘‘ курсором мыши на клавиатуре имитатора вводим необходимый адрес ячейки ОЗУ в который мы будем записывать данные. В первом поле сегментного индикатора отображается адрес, а во втором содержимое ячейки памяти соответствующей этому адресу. После ввода содержимого ячейки во втором поле сегментного индикатора, чтобы занести данные по адресу необходимо нажать кнопку Ввод.