Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABA_2.DOC
Скачиваний:
6
Добавлен:
18.09.2019
Размер:
398.85 Кб
Скачать

Лабораторная работа 2

Программирование арифметических операций, работа с внешними портами ввода-вывода и исследование циклов микропроцессора

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

Задание:

1. Изучить методы программирования в машинных кодах для МП БИС КР580ВМ80.

2. Исследовать заданные программы и внести изменения в исследуемые программы.

  1. Самостоятельно разработать программы и исследовать их.

Предварительная подготовка к выполнению лабораторной работы

1. Изучить Л.2. стр.18-37, 47-59, Л.4. cтp.170 -186.

2. Изучить систему команд МП БИС КР580ВМ80.

3. Нарисовать внутреннюю структуру и условное графическое обозначение МП БИС КР580ВМ80.

4. Рассмотреть правила выполнения команд INR А (30), DCR А(3D), ADD А (87), ORA А (В7), СМР А (BF), DAA (27), IN, OUT.

5. Видоизменить и записать программу 2 так, чтобы при ее выполнении исследуемое число первоначально записывалось по адресу 081F (Программа4).

6. Разработать программы:

а) увеличения числа записанного по адресу 081A на 5 и записи результата по адресу 081B (Программа 4);

б) сложения чисел, записанных по адресу 081C и в регистре внешнего порта, и записи результата во внешний порт (Программа 5 должна выполнять десятичную коррекцию результата).

в) сравнение чисел записанных по адресам 081F и в регистре внешнего порта, и записи большего в регистр внешнего порта (Программа 6).

г) используя принцип программы выдачи звука в лабораторной работе №1 написать программу, имитирующую работу аварийных сигналов. В порт вывода должны записываться 1 в самый младший и самый старший разряд с частотой около 2 герц (Программа 7).

Пояснение к работе:

Внутренняя структура микропроцессора К580ВМ80А представлена на рис.2.1. С помощью магистралей адреса SA и данных SD микропроцессор может обмениваться цифровой информацией с памятью и внешними устройствами, а также обрабатывать эту информацию и управлять процессом этой обработки. Для того чтобы заставить МП выполнять операции над двоичными числами, необходимо создать программу и записать ее в память микроэвм. Программа представляет собой список команд, расположенных в последовательных ячейках памяти. Каждая команда представляет собой комбинацию 8-разрядных двоичных чисел (байт), назначение и размер которого определяется системой команд данного микропроцессора.

Каждая команда содержит операцию и операнд. Операция указывает какое действие необходимо выполнить микропроцессору, а операнд - на что направлено или с чем произвести это действие. Например, для того чтобы переслать содержимое регистра С в регистр А (аккумулятор), необходимо по шине данных ввести в процессор двоичный (бинарный) код команды 01111001 из соответствующей ячейки памяти. Операнды располагаются в команде следующим образом. Три младших разряда кода команд указывают номер регистра-

Регистр адреса Буфер

RA (16) шины

С адреса

INT х PC (16)

е

м Дешиф- SP (16)

INTE а

ратор B (8) C (8)

у A0 - A15

HLD п выбора D (8) E (8)

р Дешиф-

а ратор регистра H (8) L (8)

HLDA в команд D0 - D7

л W (8) Z (8)

е

н Мультиплексор

SR и

я

Регистр Буфер

и шины

C1 команд Внутренняя шина данных (8) данных

c RC(8)

и

C2 н

х

р Регистр флагов Аккумулятор Схема WR

о F (8) A(8) управ-

RDY н ления

и обме-

з Арифметико- ном RC

WI а Схема логическое

ц десятичной устройство

и коррекции (АЛУ)

SYN и

Рис 2.1. Внутренняя структура микропроцессора К580ВМ80А

приемника (111) информации. Регистры В, С, D, Е, Н, L, кодируются двоичными числами соответственно от 000 до 100. Код 110 обозначает ячейку ЗУ, адрес которой указан врегистровой паре HL, состоящей из регистров Н и L, а код 111 является кодом аккумулятора. Два старших разряда кода команды являются операцией и указывают на то, что эта команда является однобайтовой (по размеру) командой пересылки (по содержанию).

Команды, также, могут быть двух- или трехбайтовыми. Например, для того чтобы к содержимому аккумулятора прибавить число 0000 1010 с учетом переноса при переполнении старшего разряда и результат занести в аккумулятор, необходима команда, код которой 1100 1110 0000 1010 - эта команда является двухбайтовой.

Двоичным кодом первого байта можно представить 256 двоичных комбинаций. Почти столько же команд имеет и МП БИС КР580ВМ80 (некоторые комбинации не используются). Естественно, что запомнить более 200 кодов команд, представленных в виде набора единиц и нулей, почти не возможно. Поэтому каждому коду команды ставиться в соответствие мнемоническое название (мнемоника) команды, которая является сокращением от английских слов, описывающих ее действие (операцию). Если операндами являются регистры, то они кодируются по своим именам А,B,C,D,Е,Н,L или регистровые пары BC, DE, HL и PSW (образована аккумулятором А и регистром признаков F ), SP - указатель стека и СР - счетчик команд. Операндfми могут являться адреса (ADR) и однобайтные (#D8) или двухбайтные (#D16) данные.

Например, приведенная выше однобайтовая команда в мнемонике будет иметь такой вид: MOV А, С (от английского MOVE-передвигать, перемещать). Мнемоника команд МП БИС КР580ВМ80 приведена в Приложении 2. При записи программы все числа и адреса представляются в шестнадцатиричной системе счисления. Поэтому шестнадцатеричный (гексадецимальный) код данной команды будет записан как 79 Н.

Рассмотрим простейшую программу (Программа 1) извлечения числа из ячейки памяти с адресом 0810 Н, инвертирования его и записи в ячейку с адресом 0811 Н, которая состоит из команд LDA ADR, CMA, STA ADR, RST 1.

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

Мнемокод

Комментарий

LDA 0810

СМА

STA 0811

RST 1

Получить число из ячейки с адресом 0810

Инвертировать число

Записать результат в ячейку ЗУ с адресом 0811

Прервать выполнение программы

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

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

Адрес

Коды

Комментарий

0800

0801

0802

0803

0804

0805

0806

0807

3A

10

08

2F

32

11

08

CF

Код команды LDA

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

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

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

Код команды STA Младший байт адреса

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

Код команды RST 1

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

Программа 1 (общий вид записи)

Адрес

Мнемокод

Машинный код

Комментарий

0800

0803

0804

0807

LDA,0810

CMA

STA,0811

RST 1

3A 10 08

2F

32 11 08

CF

Получить число

Инвертировать число

Записать число в память

Прервать программу

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

Программа 2.

Адрес

Мнемокод

Машинный код

Комментарий

0800

0803

0804

0805

0806

0807

LXIH,0810

MOV А,М

СМА

INX М

MOV М,А

RST 1

21 10 08

2F

23

77

CF

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

извлечь число из адреса, указанного в регистрах Н и L

инвертировать число

увеличить на единицу число в регистрах Н и L

записать число по адресу, указанному в регистрах H,L

прервать программу

Учебная микро-ЭВМ имеет имитаторы внешних устройств в виде двух восьмиразрядных регистров, один из которых имитирует порт ввода с адресом 05Н, а другой - порт вывода с тем же адресом. Состояния портов ввода и вывода индицируются светодиодными индикаторами ИС (младший разряд D0 всегда справа). Порт ввода имеет установочные переключатели (УП) для установки входного двоичного кода. Ввод и вывод данных через порты осуществляется командами IN и OUT. Для вывода результата в регистр внешнего порта вместо ячейки памяти с адресом 0811 в программе 1 необходимо заменить код команды STA 0В01 на код команды OUT 05. Поскольку команда OUT двухбайтовая, размер программы уменьшится.

Адрес

Мнемокод

Машинный код

Комментарий

0800

0803

0804

0806

LDA,0810

CMA

OUT,05

RST 1

3A 10 08

2F

D3 05

CF

Получить число

Инвертировать число

Записать число в порт 5

Прервать программу

После выполнения данной программы результат будет высвечен в двоичном коде светодиодным индикатором регистра порта вывода. Точно также одно из исходных чисел можно вводить через порт ввода с помощью команды IN 05.

Программа 3

Адрес

Мнемокод

Машинный код

Комментарий

0800

0802

0803

0805

IN,05

CMA

OUT,05

RST 1

DB 05

2F

D3 05

CF

Ввести число из порта 5

Инвертировать число

Записать число в порт 5

Прервать программу

Методика выполнения работы

1. Исследовать программу 1

1.1 Ввести в микро-ЭВМ программу 1.

1.2 Записать по адресу 0810 исследуемое число (по указанию преподавателя) и просмотреть содержимое ячейки памяти с адресом 0811 и аккумулятора. Результаты занести в табл. 2.1.

  1. Осуществить пошаговое исполнение программы с помощью клавиши ШК, фиксируя результаты каждого шага в табл.2.1. При пошаговом исследовании программы после просмотра регистров и ячеек памяти возврат к адресу следующей команды можно произвести нажатием клавиши ПрСч (программный счетчик).

Таблица 2.1

адрес кода

содержимое регистра А

содержимое ячейки 0810

содержимое ячейки 0811

  1. Исследовать программу 2.

2.1. Ввести в микро-ЭВМ программу 2.

2.2. Записать по адресу 0810 исследуемое число (по указанию преподавателя) и просмотреть содержимое ячейки памяти с адресом 0811 и аккумулятора. Результаты занести в табл. 2.2.

  1. .Осуществить пошаговое исполнение программы с помощью клавиши ШК, фиксируя результаты каждого шага в табл.2.2.

Таблица 2.2

адрес кода команды

Содержимое регистра А (аккумулятора)

содержимое регистровой пары HL

исходное число и его адрес

результат и его адрес

  1. Видоизменить и записать программу 2 так, чтобы при ее выполнении исследуемое число первоначально записывалось по адресу 081F. Исследовать видоизмененную программу согласно пункту 2.3. и результаты занести в таблицу 2.2.

3. Исследовать программу 3.

3.1. Ввести в микро-ЭВМ программу 3.

3.2. Установить с помощью переключателей УП двоичный код в регистре порта ввода, этот код должен высветится светодиодными индикаторами.

3.3. Осуществить пуск программы в реальном времени программы с помощью клавиши П, записать данные в портах ввода и вывода. Записать исходные данные и результат в отчет.

  1. Установить другой код в порте ввода и исследовать работу программы в поцикловом режиме. Результаты занести в таблицу 2.3.

Таблица 2.3

Цикл

Магистраль адресов (двоичный код)

Магистраль данных (двоичный код)

Магистраль упр (двоичный код)

4. Исследовать разработанные программы 4,5,6 и 7.

4.1. Ввести в микро-ЭВМ программу 4.

4.2. Записать по адресу 081A исследуемое число и просмотреть содержимое ячейки памяти с адресом 081B и аккумулятора. Результаты занести в табл. 2.2.

4.3. Осуществить пошаговое исполнение программы с помощью клавиши ШК, фиксируя результаты каждого шага в табл.2.2.

4.4. Ввести в микро-ЭВМ программу 5. Программа должна содержать команду десятичной коррекции результата.

4.5. Записать по адресу 081C исследуемое число (18 Н) и установить с помощью переключателей двоичный код (17 Н) в регистре порта ввода, этот код должен высветится светодиодными индикаторами.

  1. Осуществить пошаговое исполнение программы с помощью клавиши ШК, фиксируя результаты каждого шага в табл.2.4.

Таблица 2.4

адрес кода команды

Содержимое регистра А

содержимое ячейки 081C

содержимое порта ввода

содержимое порта вывода

4.7. Изменить код в порте ввода на 19 Н и снова провести исследование программы 4 согласно пункту 4.6.

4.6. После заполнения таблицы 2.4 проверить работу программы в реальном времени с другими исходными данными.

4.8. Ввести в микро-ЭВМ программу 6.

4.9. Записать по адресу 081F Н исследуемое число и установить с помощью переключателей УП двоичный код в регистре порта ввода.

  1. Осуществить пошаговое исполнение программы с помощью клавиши ШК, фиксируя результаты каждого шага в табл.2.5 (если в программе в команде СМР используется регистр отличный от В, то изменить заголовок третьей колонке таблицы 2.5 на соответствующий регистр общего назначения). Определить признаки результатов операций в соответствии с приложением 4.

Таблица 2.5

адрес кода команды

Содержимое регистра А

Содеожимое регистра В

содержимое регистра FL

исходные данные

  1. Исследовать работу программы 7 в реальном времени. Подобрать время цикла, чтобы частота мигания светодиодов порта вывода была около 2 герц. Записать текст исправленной программы в отчет.

Содержание отчета.

Отчет по выполненной работе должен содержать:

1. Наименование и цель работы.

2. Внутреннюю структуру МП БИС KP580BM80.

3. Исходные тексты исследуемых программ 1-3.

4. Исходные тексты видоизмененных и разработанных программ 2,4,5,6, и 7 согласно пунктам 5 и 6 предварительной подготовки к работе.

5. Таблицы 2.1-2.5 с полученными результатами исследования программ 1-6.

Контрольные вопросы.

1. За сколько машинных тактов выполняется каждая команда в программах 1 и 2?

2. Укажите различия в способах адресации, использованных в учебной микро-ЭВМ, выполненной на БИС МПК серии К580.

3. Укажите все возможные способы адресации, используемые в программах 3, 4, 5 и 6..

4. Какую функцию выполняет в МП БИС КП580ВМ80 регистр FL? В результате выполнения каких команд, приведенных в пункте 4 предварительной подготовки, может произойти изменение в регистре FL?

5. Какая команда использует бит вспомогательного переноса АС в регистре FL?

6. Какие сигналы в магистрали управления осуществляют обмен информацией с памятью и внешними устройствами?

7. Преобразуйте восьмиразрядныйбинарный код в гексадецимальный или наоборот.

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