Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab_pr_MP_14

.pdf
Скачиваний:
43
Добавлен:
06.03.2016
Размер:
509.67 Кб
Скачать

11

записаны соответственно младший и старший байты адреса возврата из подпрограммы.

Для процессоров i8080/85 и КР580ВМ80А область стека автома- тически (по умолчанию) не устанавливается, а задается разработчи- ком методом явной записи в регистр указатель стека адреса вер- хушки стека. Как уже указывалось выше, в УМПК-80 при включении стенда верхушка стека располагается по адресу 0BB0h.

В процессорах i8080/85 и КР580ВМ80А не предусмотрена авто- матическая защита области стека. Поэтому при неправильно разрабо- танном алгоритме (когда количество записей в стек не совпадает с количеством чтений из стека) возможна ситуация, при которой либо операция записи в стек уничтожит данные программы пользователя, либо программа пользователя модифицирует данные, сохраненные в стеке.

Физически адресация памяти и регистров (внешних устройств) осуществляется посредством использования двух типов сигналов. Адресация к области памяти или внешнему устройству (в качестве которого может выступать отдельный регистр) осуществляется через формирование инверсного сигнала CS (Chip Select Выбор устройст- ва) из некоторого набора старших разрядов магистрали адреса, а ад- ресация к отдельной ячейке внутри области памяти либо к отдельно- му порту внешнего устройства (если устройство имеет несколько фи- зических портов) обеспечивается непосредственно младшими адрес- ными линиями МА. На рис. 1.2 представлена схема адресации памяти и внешних устройств, реализованная в стенде А с помощью простого 3-разрядного дешифратора. Здесь адресными линиями, формирую- щими сигнал выбора области памяти или внешнего устройства, яв- ляются линии А11, А12 и А13. Любая из восьми комбинаций состоя- ний этих разрядов однозначно определяет область памяти или вид устройства, с которым будет работать МП БИС на каждом машинном цикле. Линии А0… А10 в формировании сигнала CS не участвуют и используются для адресации отдельной ячейки внутри указанной старшими разрядами области памяти. В качестве внешних устройств в стенде А используются отдельные регистры, для обращения к кото- рым физически используется только сигнал CS.

12

Рис. 1.2 Дешифрация адресов в микроЭВМ (стенд А)

Поэтому для обращения к конкретному регистру (например, ре- гистру ввода данных РгВв) достаточно обратиться по любому адресу из множества адресов, разряды А11, А12, А13 которых соответствен- но имеют значения 0, 0 и 1 (число 4 (100) в двоичном представлении, что соответствует выводу дешифратора CS4) (рис. 1.2). Аналогично, для обращения к регистру вывода РгВыв достаточно обратиться по любому адресу из множества адресов, разряды А11, А12, А13 кото- рых соответственно имеют значения 0, 1 и 1 (число 6 (110) в двоич- ном представлении, что соответствует выводу дешифратора CS6).

На карте адресного пространства (табл. 1.1) регистру ввода дан- ных (РгВв) соответствует поле адресов с адреса 2000h по адрес 27FFh, а регистру вывода данных (РгВыв) – поле адресов с адреса 3000h по адрес 37FFh. Для записи в аккумулятор микропроцессора содержимого регистра РгВв достаточно выполнить команду LDA 2000h (загрузить аккумулятор содержимым ячейки памяти c адресом 2000h), а для вывода значения из аккумулятора микропроцессора в регистр РгВыв достаточно выполнить команду STA 3000h (сохранить

13

содержимое аккумулятора в ячейке памяти по адресу 3000h). При этом если адрес 2000h заменить любым адресом из множества 2000h … 27FF h (например, адресом 2345h), то результат выполнения опера- ции будет тем же, так как значения разрядов А11… А13 у обоих адре- сов совпадают. То же касается и операции с РгВв, а также с другим регистрами стенда А.

Вышеизложенное, однако, в полной мере справедливо только для команд, манипулирующих 16-разрядными адресами (в том числе, для команд пересылок и арифметических и логических команд, ис- пользующих косвенную адресацию). При использовании команд IN <Aдрес> и OUT <Aдрес>, оперирующих 8-разрядными адресами, в процессорах i8080/85 и КР580ВМ80А на 16-разрядной магистрали адреса формируется двухбайтный адрес, в котором оба байта имеют одинаковое значение. Например, при выполнении команды IN 20h (запись в аккумулятор с входного устройства с адресом 20h) на маги- страли адреса автоматически формируется адрес 2020h, то есть в младшем байте адреса биты А3, А4 и А5 принимают то же значение, что и физически дешифрируемые дешифратором (рис. 1.2) биты А11, А12, А13. Таким образом, в конкретном случае можно считать, что при использовании команд ввода-вывода IN и OUT адресное про- странство отдельного регистра стенда А определяется значением старшего байта МА. В табл. 1.2 приведена карта адресного простран- ства стенда А для команд ввода вывода IN и OUT.

 

 

Таблица 1.2

 

Карта адресов для внешних устройств стенда А

18-1F

Входной регистр чтения клавиатуры

РгЧК

 

20-27

Входной регистр (переключатели)

РгВв

 

28-2F

Регистр сканирования дисплея и клавиатуры

РгСк

 

30-37

Выходной регистр (светодиоды)

РгВыв

 

38-3F

Регистр сегментов дисплея

РгСг

 

80-87

Регистр звукового выхода

СхВЗС

 

Структура и схема организации управления адресным простран- ством (АП), представленные на рис. 1.1 и в табл. 1.2, реализуют ме- тод управления с разделённым адресным пространством, так как фак- тически АП процессора разделяется между ПЗУ, ОЗУ и внешними устройствами. Другим методом управления АП является метод раз- дельного управления памятью и внешними устройствами. При этом методе для обращения к памяти и к внешним устройствам одновре-

14

менно с сигналами CS используются дополнительные активные низ- ким уровнем сигналы отдельно для обращения к памяти (MEMR (чте- ние памяти) и MEMW (запись в память)) и для обращения к внешним устройствам и регистрам (I/OR (чтение внешнего устройства), I/OW (запись во внешнее устройство)). Эти сигналы формируются либо не- посредственно процессором, либо специальной логической схемой, либо системным контроллером (на стенде Б это контроллер КР580ВК28). Принцип построения систем с таким методом управле- ния адресным пространством представлен на рис. 1.3. В табл. 1.3 представлена карта адресов для внешних устройств стенда Б.

Рис. 1.3. Подключение памяти и внешних устройств при методе раздельного управления в микроЭВМ (стенд Б)

При методе раздельного управления памятью и внешними уст- ройствами для обращения к регистрам и портам используются только команды IN <A> и OUT <A>, где <A> - восьмиразрядный адрес (для МП КР580ВМ80), так как при обработке этих команд блок централь- ного процессора БЦП (рис. 1.3) формирует дополнительные сигналы I/OR и I/OW. При выполнении других команд обращения к памяти

15

БЦП формирует сигналы MEMR и MEMW, что исключает возмож-

ность ложного обращения к какому-либо внешнему устройству, да- же если на дешифратор адреса Дшф поступит код, формирующий сигнал CS для данного устройства. Число возможно адресуемых уст-

ройств - 256 устройств ввода-вывода или, в предельном варианте - 256 устройств ввода и 256 устройств вывода, то есть два различных регистра могут иметь одинаковые адреса, если один из них предна- значен для ввода, а другой - для вывода (пример - регистр клавиатуры и регистр сегментов на рис. 1.2 и в табл. 1.3)

Таблица 1.3

Карта адресов для внешних устройств стенда Б

Адреса устройств ввода (Hex)

Адреса устройств вывода (Hex)

 

 

 

 

Входной порт (позици-

05

Регистр данных для схемы

04

онные переключатели)

 

генерации звука

 

Регистр клавиатуры

06

Выходной порт

05

 

 

(светодиоды)

 

 

 

Регистр сегментов дисплея

06

 

 

 

 

 

 

Регистр сканирования дис-

07

 

 

плея и клавиатуры

 

 

 

Регистр управления звуком

08

 

 

 

 

1.3.4. Режим работы учебной микроЭВМ и алгоритм управляю- щей программы

Управляющая программа микроЭВМ выполняет а) подпрограмму тестирования отдельных узлов микроЭВМ;

б) начальную установку содержимого внутренних регистров МП БИС и ячеек ОЗУ;

в) сохранение содержимого внутренних регистров МП БИС; г) выдачу сообщения на дисплей; д) чтение и декодирование клавиатуры; е) обслуживание звукового выхода.

Кроме того, управляющая программа включает в себя подпро- граммы, обеспечивающие режимы:

1) ожидание ввода команд управления с клавиатуры;

16

2)отображение на дисплее любого адреса и его содержания;

3)ввод с клавиатуры кода любого адреса с одновременным ото- бражением его на дисплее и после ввода последней цифры адреса в микроЭВМ - автоматический переход к выполнению режима 2 (нача-

ло режима ввода кода адреса с клавиатуры инициируется нажатием клавиши ОтА - отыскание адреса);

4)обращение к программному счетчику. Выполнение этого ре- жима вызывается нажатием клавиши ПрСч (программный счетчик) и приводит к автоматическому выводу содержания программного счет- чика на дисплей адреса с последующим переходом к режиму 2;

5)вывод на дисплей содержимого внутренних программно- доступных регистров МП БИС с указанием на дисплее названия вы-

водимого регистра. Этот режим устанавливается нажатием клавиши ОтРг (отыскание регистра), при этом на дисплей будет выведено со-

держимое аккумулятора МП БИС. Последующие нажатия на клавишу ЗпУв (запись - увеличить) приведут к циклическому выводу содер- жания всех внутренних регистров МП БИС. Содержимое регистров будет выводиться на дисплей в такой последовательности: А, FL (ре- гистр флагов), B, С, D, E, H, L, SPH (старший байт указателя стека), SPL (младший байт указателя стека), PCH, PCL (соответственно старший и младший байты регистра счетчика команд);

6)запись с клавиатуры в ячейки ОЗУ и внутренние программно- доступные регистры МП БИС нового кода. При работе микроЭВМ в

режимах 2 и 5 после изменения кода чисел, представленных на дис- плее данных, запись чисел инициируется нажатием на клавишу ЗпУв;

7)увеличение или уменьшение на единицу адреса, представлен-

ного на дисплее, при работе микроЭВМ в режиме 2. Эти режимы инициируются соответственно нажатием клавиш ЗпУв и Ум (умень- шить);

8)запуск программы с адреса, указанного на дисплее, с помо- щью клавиши П ( пуск);

9)выполнение команд по машинным циклам с отображением

информации на магистралях микроЭВМ с помощью светодиодов. Режим устанавливается нажатием клавиши ШЦ (шаг машинного

цикла в данном лабораторном практикуме это режим НЕ ИС-

ПОЛЬЗУЕТСЯ); 10) выполнение программы по командам. Режим устанавливается

нажатием клавиши ШК (шаг команды), при этом после каждой ко-

17

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

4;

11)останов программы пользователя. Режим устанавливается при нажатии клавиши Ст (стоп) с автоматическим сохранением в ОЗУ содержимого всех внутренних регистров МП БИС и переходом к вы- полнению режима 4. Сохранение регистров позволяет анализировать их содержание на момент останова с помощью перехода к режиму 5. После останова программы микроЭВМ может быть переведена на режимы 9, 10;

12)возврат микроЭВМ из режима выполнения команд по машин- ным циклам на управляющую программу с автоматическим восста- новлением содержания внутренних регистров МП БИС и переходом к режиму 4.

Работа микроЭВМ рассчитана так, что после подачи на нее пи- тания запускается программа тестирования всех основных узлов. Эта программа начинается с ячейки ПЗУ с адресом 0000h. В результате выполнения теста проверяются:

-правильность записанной в ПЗУ информации и возможность ее верного считывания;

-содержимое ОЗУ на отсутствие ошибок при записи/считывании чи- сел;

-МП БИС на правильность выполнения им простейших арифметиче- ских и логических операций;

-запись чисел в регистр вывода и работоспособность всех его свето- диодов состояния, а также работа всех сегментов дисплея. В случае обнаружения ошибок в ОЗУ или ПЗУ подается прерывистый звуко- вой сигнал и на дисплей выводится соответствующее сообщение: ОЗУ или ПЗУ. При успешном завершении теста микроЭВМ проводит начальную установку всех регистров МП БИС и на дисплей выводит- ся сообщение НАЧАЛО, свидетельствующее о готовности ее к рабо- те.

Программы, записанные в оставшейся части ПЗУ, можно услов- но разбить на два типа:

1) вспомогательные подпрограммы выполнения арифметических и алгебраических операций (например, умножение, деление двухбайто- вых чисел и т.д.), которые могут применяться пользователем при соз- дании более сложных программ; 2) демонстрационные подпрограммы (например, подпрограмма, ис-

пользуемая для записи и воспроизведения с помощью звукового вы-

18

хода музыкальных произведений по нотам, коды которых можно хра- нить в виде чисел в ПЗУ или ОЗУ, подпрограмма-"секундомер" и т.д.). После включения учебной микроЭВМ или нажатия клавиши на- чальной установки R содержание программного счетчика МП БИС обнуляется и выполнение программы начинается с нулевой ячейки памяти, где записаны программы тестов узлов микроЭВМ.

После выполнения тестов производится начальная установка всех внутренних программно-доступных регистров МП БИС. На- чальная установка состоит в том, что в программный счетчик записы- вается число 0800 (первый адрес ОЗУ), в указатель стека - число 0ВВ0, а остальные регистры МП БИС обнуляются.

1.3.5. Машинный такт. Машинный цикл. Команды. Программы. Выполнение программ

МП БИС КР580ВМ80 имеет фиксированный набор команд. Время выполнения команды определяется процессом получения, де- кодирования и выполнения команды. Это время можно представить состоящим из ряда временных интервалов. Наиболее короткий вре- менной интервал, равный периоду синхросигналов МП БИС, называ- ется машинным тактом. Время, необходимое для извлечения 1 байт информации из памяти или внешнего устройства или для выполнения команды, определяемой одним машинным словом, называется ма- шинным циклом. Машинный цикл для МП БИС КР580ВМ80 может включать в себя 3-5 машинных тактов. В зависимости от вида коман- ды время выполнения может состоять из 1-5 машинных циклов. Для МП БИС имеется 10 различных типов машинных циклов: извлечение кода команды (цикл М1), чтение данных из памяти, запись данных в память, извлечение данных из стека, запись данных в стек, ввод дан- ных из внешнего устройства, запись данных во внешнее устройство, цикл обслуживания прерывания, останов, обслуживание прерывания в режиме останова. Первым машинным циклом при извлечении лю- бой команды является цикл М1. На каждом машинном цикле МП БИС проверяет состояние сигнала "Готов" на своем входе. Нулевой сигнал на этом входе приостанавливает нормальную работу МП БИС, при этом на магистралях микроЭВМ присутствует вся информация, передаваемая на рассматриваемом машинном цикле. В учебной мик- роЭВМ это может быть использовано для исследования выполнения

19

команд по машинным циклам. В этом режиме информация на маги- стралях микроЭВМ отображается светодиодами состояния.

Программа записывается в микроЭВМ в последовательных ячейках памяти.

Рассмотрим простейшую программу (программа 1.1), извле- кающую число из ячейки памяти с адресом 0В00h, инвертирующую его и записывающую результат в ячейку памяти с адресом 0В01h.

Программа 1.1 (в мнемокодах)

Мнемокод

Комментарий

LDA 0B00

загрузить в аккумулятор число из ячейки памяти с адре-

CMA

сом 0В00h ((A)<-(0B00h))

побитно инвертировать содержимое аккумулятора

STA 0B01

записать результат по адресу 0В01h

RST1

вызвать подпрограмму остановки программы

При записи программ все числа представляются в шестнадцате- ричной системе счисления.

Для записи программы в память микроЭВМ необходимо пере- вести мнемокоды команд в машинные коды. Команды в программе могут быть одно-, двух- или трехбайтные и должны в памяти зани- мать соответственно один, два или три адреса. При записи адреса в коде команды сначала указывается младший байт адреса, а затем - старший байт адреса.

Программа 1.1 (размещение по адресам памяти)

Адрес

Число

Комментарий

0800

3А

код команды LDA

0801

00

младший байт адреса

0802

0B

старший байт адреса

0803

2F

код команды СМА

0804

32

код команды STA

0805

01

младший байт адреса

0806

0B

старший байт адреса

0807

CF

код команды RST1

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

20

одной до трех последовательных ячеек. При такой записи в левом столбце указывается лишь адреса команд в программе. Это позволяет сократить объем при написании программ и сделать более простым их анализ.

Программа 1.1 (общий вид записи). Используется прямой способ ад- ресации.

Адрес

Машинный

 

код

0800

3A 00 0B

0803

2F

0804

32 01 0B

0807

CF

Метка

Мнемокод Комментарий

LDA 0B00 загрузить в аккумулятор число из ячейки памяти с адресом 0В00h

((A)<-(0B00h))

CMA побитно инвертировать содержи- мое аккумулятора

STA 0B01 записать результат по адресу 0В01h RST 1 вызвать подпрограмму

остановки программы

Рассмотрим программу, аналогичную программе 1.1, с использовани- ем косвенного способа адресации (программа 1.2).

Программа 1.2

Адрес

Машин-

ный код

 

0800

21 00 0В

0803

7E

0804

2F

0805

23

0806

77

0807

CF

Метка

Мнемокод

Комментарий

LXI H,0B00

записать в регистры H и L число

MOV A,M

0В00h (адрес ячейки памяти)

загрузить в аккумулятор данные

 

из ячейки памяти с адресом, ука-

 

занным в регистре HL

CMA

побитно инвертировать содержи-

 

мое аккумулятора

INX H

увеличить на 1 адрес-указатель в

 

регистре HL

MOV М,А

записать результат из аккумуля-

RST 1

тора по адресу, указанному в HL

вызвать подпрограмму

 

остановки программы

Для успешного выполнения лабораторных работ необходимо предварительное ознакомление с языком программирования и коман-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]