Реферат: Методические указания к выполнению лабораторных работ по курсу «Микропроцессорная техника»



Министерство образования Украины

Днепропетровский национальный университет


Кафедра радиоэлектроники


МЕТОДИЧЕСКИЕ УКАЗАНИЯ К

ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

ПО КУРСУ

«Микропроцессорная техника»


Днепропетровск

2000

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


МЕТОДИЧЕСКИЕ УКАЗАНИЯ К

ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

ПО КУРСУ

«Микропроцессорная техника»


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


^ Запись и выполнение простых программ


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


ВВЕДЕНИЕ


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

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

Для МП КР580ИК80 существует десять различных типов машинных циклов: 1) извлечение кода команды (М1); 2) чтение данных из памяти; 3) запись данных в память; 4) извлечение из стека; 5) запись данных в стек; 6) ввод данных из внешнего устройства; 7) запись данных во внешнее устройство; 8) цикл обслуживания прерывания; 9) останов; 10) обслуживание прерывания при работе микропроцессора в режиме останова.

Первым машинным циклом при выполнении любой команды является цикл М извлечения кода команды.

На первом такте каждого машинного цикла МП указывает тип выполняемого цикла с помощью 8-разрядного слова состояния, выдаваемого на магистраль данных. Назначение каждого разряда в слове состояния указано в табл.2.1, В табл. 2.2 приведен вид слова состояния МП при выполнении различных циклов. Отдельные разряды слова состояния задействуются в микро-ЭВМ для формирования магистрали управления. Слово состояния выдается на МП лишь на интервале синхросигналов СИН (такты Т1 и Т2), а используется на протяжении всего машинною цикла. Поэтому необходимо записывать слово состояния в специальный регистр слова состояния (РСС). Па рис.2.1 приведена схема записи слова состояния в многорежимный буферный регистр К589ИР12. Запись осуществляется с использованием сигнала СИН и синхросигнала Ф1. Сигнал СИН появляется в начале каждого цикла и занимает промежуток времени между положительными фронтами синхросигнала Ф2 на тактах Т1 и Т2 (рис.2.2). Таким образом, запись слова состояния осуществляется сигналом Ф1 на такте Т2.

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

В такте Т1 (рис.2.3) программный счетчик МП выдает на МА адрес ячейки памяти, из которой будет считываться код команды. При этом схема приращения адреса МП автоматически увеличивает на единицу значение числа, записанного в программный счетчик. Положительным фронтом импульсов Ф2 формируется сигнал СИН и вызывается слово состояния на МД. Сигнал ПРИЕМ, управляющий двунаправленным шинным формирователем (ДШФ) МД. на этом такте равен нулю, что позволяет слову состояния поступить на МД микро-ЭВМ.

В такте Т1 слово состояния записывается в регистр. Положительным фронтом Ф2 заканчивается cигнал СИН и формируется единичный сигнал ПРИЕМ, позволяющий данным поступить на вход МП через двунаправленный шинный формирователь. Из сигнала ПРИЕМ и седьмого разряда слова состояния (Д7), формируется сигнал на чтение данных из памяти (Ч.ПАМЯТИ), позволяющий данным поступить из памяти на МД. Изменения данных на этом такте не будут восприниматься МП, так как их запись осуществляется в фиксированный момент времени на такте Т3. На этом же такте анализируется состояние сигналов ГОТОВ, ЗАХВАТ, ОБ.ОС. При нулевом сигнале на входе 3.ЗАХВАТ, нуле в разряде Д4 слова состояния и единичном сигнале на входе ГОТОВ микропроцессор переходит к выполнению такта Т3 . На такте Т3, в момент отрицательного фронта сигнала Ф1 производится запись данных во внутренний регистр кода команды.










Таблица 2.1


Разряд

Назначение

Обозначение

Д0


Д1


Д2


Д3


Д4


Д5


Д6


Д7


Обслуживание сигнала прерывания.

Совместно с сигналом "Прием" этот разряд используется для подачи команды RST на МД.


Д1=0 указыват, что в текущем цикле будет производиться запись данных в память или внешнее устройство. В противном сучае будет осуществляться чтение данных из памяти внешнего устройства.


Указывает, что на МА находится адрес стека из SP.

Указывает на выполнение команды "Останов".

Указывает, что на МА находится адрес внешнего устройства и МД будет содержать данные для записи при сигнале "ЗП".

Указывает выполнение цикла извлечения кода команды.

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

Указывает, что Мд будет использована для чтения данных из памяти.

ОБ.ПР


ЗАПИСЬ


СТЕК


ОБ.ОС


ВЫВОД


М1


ВВОД


ПАМЯТЬ



Положительным фронтом Ф2 оканчиваются сигналы ПРИЕМ и Ч.ПАМЯТИ на выходе МП. Отметим, что импульс на выходе ПРИЕМ будет формироваться микропроцессором в машинных циклах: извлечение кода команды (М1), чтение данных из памяти, прерывание, чтение из стека или внешнего устройства.

На последующих тактах Т1 и Т2 дешифратор кода команды расшифровывает код команды, определяет количество байтов в команде, формирует команды на внутренние пересылки данных и подготавливает МП к выполнению следующих машинных циклов.

Таблица 2.2


Разряды слова состояния

Информация сотояния

Вид состояния МП при машинных циклах

1

2

3

4

5

6

7

8

9

10

Извлечение кода команды

Чтение данных из памяти

Запись в память

Извлечение данных из стека

Запись в стек

Ввод данных из ВУ

Запись данных в ВУ

Обслуживание прерываний

Останов

Обслуживание прерываний в режиме останова

Д0


Д1


Д2


Д3


Д4


Д5


Д6


Д7

ОБ.ПР


ЗАПИСЬ


СТЕК


ОБ.ОСТ


ВЫВОД


М1


ВВОД


ПАМЯТЬ

0


1


0


0


0


1


0


1

0


1


0


0


0


0


0


1

0


0


0


0


0


0


0


0

0


1


1


0


0


0


0


1

0


0


1


0


0


0


0


0

0


1


0


0


0


0


1


0

0


0


0


0


1


0


0


0

1


1


0


0


0


1


0


0

0


1


0


1


0


0


0


1

1


1


0


1


0


1


0


0


Отличие по сравнению с М1 машинных циклов чтения данных из памяти, стека или внешнего устройства заключается в том, что МП воспринимает числа, полученные по МД на такте Т3 не как код команда, а как данные.

Временные диаграммы процесса записи данных в память приведены на рис.2.4.

На такте Т1 при положительном фронте Ф2 содержание регистра адреса выдается на МА, а слово состояния – на МД.

На такте Т2 сигналом Ф1 производится запись в регистр слова состояния. Положительным фронтом Ф2 оканчивается синхросигнал СИН, а на МД выдается данное для записи в память.

На такте Т3 на выходе ВЫДАЧА формируется сигнал, по которому будет происходить запись данных в память. Из этого сигнала и разряда Д4 формируется сигнал З.ПАМЯТЬ, разрешающий запись в память Непосредственно запись числа в память осуществляется по сигналу Ф2 .

Рассмотрим простейшую программу (программа 2.1), извлекающую число из ячейки с адресом 8010Н, инвертирующую содержимое и записывающую результат в память по адресу 8011Н.





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


Мнемокод

Комментарий

LDA 8010

извлечь число из памяти по адресу 8010 Н

CMA

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

STA 8011

записать результат по адресу 8011 Н

HLT

остановка МП


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

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


Адрес

Число

Комментарий

8020



Код команды LDA

8021

10

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

8022

80

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

8023

2F

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

8024

32

Код команды STA

8025

11

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

8026

80

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

8027

76

Остановка МП


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


Адрес

Машинный код

Метка

Мнемокод

Комментарий

8020

3А 10 80




LDA 8010 H

Извлечь число из памяти

8023

2F




CMA

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

8024

32 11 80




STA 8011 H

Записать по новому адресу

8027

76




HLT

Остановка МП


В рассмотренной программе используется прямой способ адресации Исследуем программу, аналогичную программе 2.1, с использованием косвенного способа адресации (программа 2.2).

Программа 2.2


Адрес

Машинный код

Метка

Мнемокод

Комментарий

8020

21 10 80




LXI 8010 H

Запись в регисты H,L число 8010 Н

8023






MOV A,M

Извлечь число из ячейки с адресм, указкнным в регистре H,L

8024

2F




CMA

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

8025

23




INX H

Увеличить на 1 число в регистрах

8026

77




MOV M,A

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

8027

76




HLT

Остановка МП



ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ


ЗАДАНИЕ 1. Исследовать программу 2.1.

Порядок выполнения задания следующий:

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

2. Записать по адресу 8010 Н исследуемое число.

3. Осуществить пуск программы 2.1. Проверить результат выполнения программы числа, записанного по адресу 8011 Н.

4. Перейдя в режим трассировки, исследовать процесс выполнения программы по командам. После выполнения каждой команды проанализировать содержимое программно-доступных регистров.

5. Заменяя в программе 2.1 команду^ СМА на команды INR A, DCR А, ADD A, ANA A, ОRA A, RLC, RAL, RRC, RAR, исследовать результат их выполнения по числу, записанному по адресу 8011 Н. Результаты выполнения программы при различных командах, описанных в программе 2.1 по адресу 8023 Н, занести в табл.2.3.

Таблица 2.3


Число, записанное по адресу 8010 Н

Команда, хранимая по адресу 8023 Н

Число, записанное по адресу 8011 Н

~ ~ ~





















ЗАДАНИЕ 2. Исследовать программу 2.2.

Порядок выполнения задания следующий:

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

2. Записать по адресу 8010 H исследуемое число.

3. Осуществить пуск программы с адреса 8020 Н. Проверить результат выполнения программы по числу, записанному по адресу 8011 Н.

4. Исследовать выполнение программы 2.2 в режиме трассировки.

5. Видоизменить программу 2.2 так. чтобы при ее выполнении результат записывался первоначально по адресу 8010 Н. Ввести в микро-ЭВМ модифицированную программу 2.2 и исследовать ее выполнение.

6. Исследовать выполнение модифицированной программы 2.2 в режиме трассировки.


ЗАДАНИЕ 3. Исследовать программу 2.3.

Порядок выполнения задания следующий:

1. Разработать программу 2.3 увеличения на 5 числа, записанного по адресу 8010 Н, и размещения результата по адресу 8011 Н.

2. Ввести в микро-ЭВМ программу 2.3 и осуществить ее запуск. Проверить результат ее выполнения по числу, записанному по адресу 8011 Н, при числах 05 Н и FЕ Н, хранимых но адресу 8010 Н.

3. Исследовать выполнение программы 2.3 в режиме трассировки.


ЗАДАНИЕ 4. Исследовать программу 2.4.

Порядок выполнения задания следующий:

1. Составить программу 2.4 сложения чисел, хранимых по адресам 8010 Н и 80FE H, и записи результата по адресу 8011 Н.

2. Ввести в микро-ЭВМ программу 2.4 и осуществить ее запуск. Проверить результат выполнения программы по числу, хранимому по адресу 8011 Н, последовательно записывая по адресам 8010 Н и 80FE Н соответственно числа 0В Н и ВО Н, FЕ Н и В5 Н.

3. Видоизменить и исследовать программу 2.4 для случая, когда сумма двух чисел будет превышать восьмиразрядное двоичное число.

4. Исследовать модифицированную программу 2.4 в режиме трассировки.

ЗАДАНИЕ 5. Исследовать программу 2.5.

Порядок выполнения задания следующий:

1. разработать программу 2.5 сравнения чисел, хранимых по адресам 8010 Н и 8011 Н, и записи большего из них в регистр В.

2. Ввести в микро-ЭВМ программу 2.5, а также записать по адресам 8010 Н и 8011 Н исследуемые числа.

3. Осуществить запуск программы 2.5. Проверить результат ее выполнения по числу, записанному в регистре В.

4. Исследовать выполнение программы 2.5 в режиме трассировки.

СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать:

1. Заполненную табл.2.3, отражающую выполнение программы 2.1 для различных случаев ее модификации.

2. Временные диаграммы выполнения любой произвольно выбранной одно- и трехбайтовой команды в программе 2.1.

3. Видоизмененную программу 2.2, записанную в машинных кодах, позволяющую первоначально записывать результат по адресу 8010 Н.

4. Разработанные программы 2.3, 2.4, 2.5, записанные в машинных кодах.

5. Результаты исследований работы программ 2.3, 2.4, 2.5 согласно заданиям 3-5. Наблюдаемое в режиме трассировки содержимое программно-доступных регистров после выполнения каждой команды программ 2.3, 2.4, 2.5.

ЗАДАНИЯ ДЛЯ САМОПРОВЕРКИ

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

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

3. Укажите все возможные способы адресации, используемые при составлении программ 2.3 - 2.5.

4. При выполнении каких команд, используемых при модификации программы 2.1, задействуются разряды регистра состояния МП?

5. Изобразите временные диаграммы процесса выполнения микро-ЭВМ следующих команд: LDA <А2><А1>, СМА, STA <А2><А1>, МОV М,А, MOV A.M, INX М.


Лабораторная работа № 3


^ Маскирование данных и организация условных переходов


Цель работы: Изучение программных способов маскирования данных иорганизация условных переходов в программах для микро­ЭВМ


Введение


Организация условных переходов в микро-ЭВМ осуществляется с помощью регистра признаков МП.

Peгистр признаков имеет пять разрядов, каждый из которых устанавливается по определенному правилу в соответствии с выполнением последней команды. Этими разрядами являются:

1. Разряд переполнения С (CARRY- перенос). В него записывается 1, если при выполнении арифметическом команды и команды сдвига было переполнение аккумулятора, и 0 в противном случае.

2. Разряд знака S (SIGN- знак). В него засылается 1, если после выполнения арифметической или логической команды в старшем (седьмом) разряде аккумулятора содержится 1; в противном случае в разряд знака записывается 0.

3. Разряд нулевого результата Z (ZERO- ноль). В него записывается 1, если в результате выполнения арифметической или логической команды в аккумуляторе содержатся только нули; в противном случае в разряд Z записывается нуль.

4. Дополнительный разряд переполнения AC (AUXILIARY CARRY -дополнительный перенос). В него записывается 1 при возникновении переноса из третьего в четвертый разряд аккумулятора.

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

Во многих случаях при выполнении команд необходимо проверять или изменять (маскировать) состояние одного или нескольких разрядов числа в аккумуляторе. Это можно осуществить с помощью команд:

1) логического умножения числа в аккумуляторе и маски; при этом разряд числа обнуляется, если в соответствующем разряде маски будет записан 0, и не изменяется, если в разряде маски записана 1;

2) логического сложения числа в аккумуляторе и маски; разряд числа устанавливается в 1, если в таком же разряде маски содержится 1, и не изменяется, если в нем был записан 0;

3) операции ИСКЛЮЧАЮЩЕГО ИЛИ числа в аккумуляторе и маски;

при этом содержание разряда числа инвертируется, если в соответствующем разряде маски записана 1, или остается неизменным, если в упомянутом разряде маски записан 0.

Примеры использования этих команд приведены в табл.3.1.


Таблица 3.1


Мнемо-код

Машин-ный код

Число в аккуму-ляторе

Маска

Комментарий

Результат в аккуму-ляторе

АNI

E6

00111010

11111111

00000000

10101010

11110000

00001111

00100010

10101100

00100010

00100010

00100010

11111111

11111111

00000000

Логическое умно-жение содержимо-го аккумулятора с байтом D

00101000

00100010

00000000

00100010

11110000

00001111

00000000

ORI

F6

00111010

00001111

11110000

10101100

00001111

00001111

Логическое сложе-ние содержимого аккумулятора с байтом D

10111110

00001111

11111111

XRI

EE

00111010

00001111

00001111

10101100

00001111

00001111

Операция ИСКЛЮЧАЮЩЕЕ ИЛИ содержимого аккумулятора с байтом D

10010110

00000000

11111111


Проведение логических операций возможно также с содержимым аккумулятора и внутренними регистрами МП. В этом случае применяются однобайтные команды.

При выполнении всех логических команд задействуются разряды Z, S, Р, AC регистра признаков (в разряд С записывается 0). Это позволяет проверять состояние любого разряда числа и выполнять условные переходы в программах.

Ниже приведена программа 3.1 маскирования отдельных разрядов числа, записываемого в аккумулятор. Результат помещается в регистр С.


Программа 3.1


Адрес

КОД

Метка

Мнемокод

Комментарий

8000

3Е СD

CNT

MVI A,CD H

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

8002

E6 23




ANI 23 H

Выполнить логическую операцию

8004

4F




MOV C,A

Записать результат в регистр С

8005

76




HLT

Остановка МП


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

Ниже приведена программа 3.2 определения 1 в пятом разряде числа, формируемого в регистре В. Программа использует маскирование числа и условный переход.


Программа 3.2


Адрес

Машин-ный код

Метка

Мнемокод

Комментарий

8000

04

WAIT

INR B

Сформировать число в регистре В

8001

78




MOV A,B

Переписать число в аккумулятор

8002

Е6 20




ANI 20 H

Проверить состояние пятого разряда числа

8004

СА 00 80




JZ WAIT

Идти на WAIT, если в пятом разряде был 0

8007

76




HLT

Окончить выполнение программы


Рассмотренная программа имела всего лишь один цикл. Программа 3.3 ожидания появления 1 во втором и пятом разрядах числа, формируемого в регистре В, содержит два вложенных друг в друга цикла.

Программа 3.3


Адрес

Машин-ный код

Метка

Мнемокод

Комментарий

8000

04

WAIT1

INR B

Сформировать число в регистре В

8001

78




MOV A,B

Переписать число в аккумулятор

8002

Е6 04




ANI 04 H

Выключен ли второй переключатель?

8004

СА 0022




JZ WAIT1

Если нет, сформировать следующее число

8007

OE FF




MVI C,FF H

Если да, записать в регистр С единицы

8009

78




MOV A,B

Восстановить число

800А

E6 20




ANI 20 H

Выключен ли пятый переключатель?

800С

CA 00 80




JZ WAIT1

Если нет, сформировать следующее число

800F

16 FF




MVI D,FF H

Если да, записать единицу в регистр D

8010

76




HLT

Окончить выполнение программы



ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ


ЗАДАНИЕ 1. Исследовать программу 3.1.


Порядок выполнения задания следующий:

1. Ввести в оперативную память микро-ЭВМ, программу 3.1.

2. Осуществить пуск программы и исследовать результат ее выполнения по числу, записанному в регистре С.

3. Исследовать выполнение программы 3.1 в режиме трассировки,

4. Заменить в программе 3.1 двухбайтную команду ANI на однобайтные ANA . XRA . ORA <А> и исследовать результаты выполнения по числу, записываемому в регистр С.

5. Исследовать выполнение модифицированной программы 3.1 в режиме трассировки.

ЗАДАНИЕ 2. Исследовать программу 3.2.


Порядок выполнения задания следующий:

1. Ввести в оперативную память микро-ЭВМ программу 3.2.

2. Осуществить многократный запуск программы с помощью команды МОНИТОРА с точками разрыва. Убедиться в том, что микро-ЭВМ реагирует (прекращает выполнение программы) лишь нате числа в регистре В, которые содержат 1 в пятом разряде. Проконтролировать наличие 1 в разряде регистра признаков после прекращения выполнения программы.

3. Исследовать выполнение программы 3.2 в режиме трассировки.

4. Видоизменить программу 3.2 таким образом, чтобы микро-ЭВМ прекращала выполнение программы при наличии 0 в пятом разряде и 1 во всех остальных разрядах исследуемого числа.

5. Исследовать выполнение модернизированной программы 3.2 в режиме трассировки.


ЗАДАНИЕ 3. Исследовать программу 3.3.


Порядок выполнения задания следующий:

1. Ввести в оперативную намять микро-ЭВМ программу 3.3.

2. Осуществить многократный запуск программы . Убедиться в том, что при наличии 1 лишь во втором разряде числа, формируемого в регистре В, в регистре С содержатся единицы во всех разрядах. Проконтролировать наличие единиц во всех разрядах регистров С и D, если во втором и в пятом разрядах числа, формируемого в регистре В, содержатся единицы.

3. Изучить особенности выполнения программы 3.3 в режиме трассировки.


ЗАДАНИЕ 4. Разработать и исследовать программу 3.4.


Порядок выполнения задания следующий:

1. Составить программу 3.4 зашей единиц во все разряды регистра С, если число, формируемое в регистре В, больше 3.

2. Ввести в оперативную память микро-ЭВМ программу 3.4 и осуществить ее многократный запуск . Ознакомиться с изменением содержимого программно - доступных регистров.

3. Исследовать выполнение программы 3.4 в режиме трассировки.


ЗАДАНИЕ 5. Разработать и исследовать программу 3.5.


Порядок выполнения задания следующий:

1. Составить программу записи единиц во все разряды регистра С, если число, формируемое в регистре В, больше 3, но меньше 8.

2. Ввести в оперативную память микро-ЭВМ программу 3.5 и осуществить ее многократный запуск. Ознакомиться с изменением содержимого программно - доступных регистров.

3. Исследовать выполнение программы 3.5 в режиме трассировки.


СОДЕРЖАНИЕ ОТЧЕТА


Отчет должен содержать:

1. Полный перечень команд логических операций для микропроцессора КР580ИК80.

2. Полный перечень команд передачи управления по условию для МП КР580ИК80.

3. Результаты исследования программ 3.1-3.3, в том числе содержимое используемых программно-доступных мониторов.

4. Тексты программ 3.4 и 3.5, а также результаты их исследования.


ЗАДАНИЯ ДЛЯ САМОПРОВЕРКИ


1. При выполнении каких команд, приведенных в программе 3.1, задействуются разряды регистра признаков МП?

2. По каким условиям записывается 1 в каждый из разрядов регистра признаков?


Лабораторная работа № 4


^ Подпрограмма и стек


Цель работы: исследование особенностей записи и обращения к подпрограммам; изучение методов использования стека при создании программ.


Введение


Память микро-ЭВМ, построенной на основе, микропроцессорного комплекта серии К580, может иметь не более 216=б5536 однобайтных ячеек. Учитывая ограниченные возможности памяти, нужно стремиться к сокращению длины разрабатываемых программ. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, оформляются в виде подпрограмм - последовательностей команд, выполнение которых может быть вызвано из любого места так называемой основной программы произвольное количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работа подпрограммы, называются входными параметрами. Результаты вычислений, передаваемые по окончании работы подпрограммы в основную программу, называются выходным параметрами.

Для вызова подпрограмм и возврата из них используются команда CALL2>1>, RET.

Команда CALL2>1> загружает в программный счетчик микропроцессора содержимое байтов <А2> и <А1> , записанных по соседним адресам памяти вслед за кодом CD команды CALL. Содержимое байта <А2> заносится в младший байт PCL программного счетчика, а третий бант <А1> команды - в старший байт РСН программного счетчика; при этом МП автоматически сохраняет в стеке адрес основной программы, к которому она будет обращаться после выполнения подпрограммы.

Стек – специально организованная область ОЗУ, используемая для временного хранения данных и адресов. Число, записанное в стек последним, извлекается из него первым.

Команда RET помещает в программный счетчик двухбайтовое число, записанное в стеке последним.

Именно с этого адреса и будет осуществляться дальнейшее выполнение основной программы. Поэтому любая подпрограмма должна кончаться командой RЕT.

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

Существует также команды условного вызова подпрограмм и возврата из них. Они позволяют вызвать подпрограмму и возвратиться из нее по определенному состоянию заданных разрядов регистра признаков (аналогично командам условных переходов) без использования дополнительных команд. Все команды условного вызова подпрограммы – трехбайтные, причем во втором и третьем байтах сообщается начальный адрес подпрограммы. Команда вызова подпрограмм и возврата из них используют стек и внутренний регистр SP микропроцессора для адресации к стеку.

Помимо команд вызова подпрограмм и возврата из них со стеком можно обмениваться информацией с помощью команд PUSH (записать в стек содержимое нары R регистров микропроцессора) и POP (записать данные из стека в пару R регистров МП). Эти команды являются однобайтными, и в них содержится указание пары регистров R.

При занесении в стек содержимого пары регистров или программного счетчика по адресу (SP-1) записывается содержимое старшего из регистров указанной пары или старший байт РСН программного счетчика, а по адресу (SP-2) - содержимое младшего из регистров указанной пары или младшего байта PCL программного счетчика.

При записи данных из стека в пару регистров или программный счетчик в младший регистр пары или в PCL заносится число из ячейки по адресу, указанному в указателе стека SP, а в старший peгистр пары или в РСН -число, записанное по адресу SP+1. В результате выполнения команды содержимое указатели стека SP увеличивается на 2. Данные в памяти не изменяются, а лишь происходит их чтение и увеличение содержимого SP.

Таким образом, при записи данных, адреса стека растут от больших к меньшим, а указатель стека SP всегда содержит адрес стека, по которому записано последнее число.

При разработке программ необходимо первоначально назначать область стека, записывая в SP адрес с помощью команды^ SPHL или команды LXI SP
За счет изменения входных параметров можно влиять на конечный результат выполнения подпрограмм. Рассмотрим это на примере подпрограммы 4.2 регулируемой временной задержки.


Алгоритм работы простой подпрограммы временной задержки приведен на рис. 4.1.


Общее время задержки вычисляется по формуле

T=t1+(t2+t3+t4)N+t5

где t1, t2, t3, t4, t5 – длительность выполнения команд, входящих в подпрограмму временной задержки;

N – число, первоначально записанное в счетчике, в качестве которого используется регистр ^ В.

Команда NOP используется для увеличения времени выполнения цикла, а следовательно, и общей задержки. Вместо команды NOP может быть использована любая последовательность команд, выполнение которых не изменяет содержимого регистров микропроцессора. Время записи числа N в регистр В и возврата из подпрограммы t1+t5 фиксировано и в цикл не входит. Уникальная задержка для приведенной подпрограммы определяется при N=01 Н и равна t1+t2+t3+t4+t5.Максимальная задержка имеет место при N=00 Н и вычисляется по формуле Т= t1+(t2+t3+t4)256+t5

Программа 4.2 состоит из двух подпрограмм: DEL В и DEL A.

Подпрограмма^ DEL В осуществляет регулируемую временную задержку, и ее входным параметром является двухбайтное число, записанное в паре регистров В,С. Это число и определяет длительность задержки в миллисекундах. Частным случаем подпрограммы DEL В является подпрограмма DEL А, осуществляющая фиксированную задержку в 1 мс и не имеющая входных параметров. Таким образом, если необходимо иметь в программе фиксированную задержку в 1 мс, то можно обращаться с помощью команды CALL к подпрограмме DEL А При необходимости получения определенной заданной временной задержки в программе следует записать соответствующее число в регистры В и С, а затем вызвать подпрограмму DEL В.


Программа 4.2


Адрес

Машин-ный код

Метка

Мнемокод

Комментарий

8000

C5

DEL A

PUSH B

Сохранить в стеке содержимое регистров

В и С

8001

01 0100




LXI B, 0001H

Установить длительность 1мс

8004

C3 0880




JMP DEL 1




8007

C5

DEL B

PUSH B

Сохранить в стеке содержимое регистров

В и С

8008

F5

DEL 1

PUSH PSW

Сохранить в стеке содержимое регистра признаков

8009

AF




XRA A

Очистить аккумулятор

800А

D5




PUSH D

Сохранить в стеке содержимое регистров

D и E

800В

01




LXI B,TIME

Указать величину задержки в мс

800Е

1647

DEL 2

MVI D,47

Загрузить счетчик заде-ржки величиной в 1мс

8010

15

DEL 3

DCR D

Уменьшить содержимое счетчика на 1

8011

C2 1080




JNZ DEL 3

Если не нуль, продолжить

8014

0B




DCX B

Уменьшить на 1 содержимое счетчика длительности

8015

B8




CMP B

Если регистр В не обнулен,

8016

C2 0E80




JNZ DEL 2

то продолжать

8019

B9




CMP C

Если регистр С не обнулен,

801А

C2 0E80




JNZ DEL 2

то продолжать

801D

D1




POP D

Восстановить содержимое регистров

D и E

801E

F1




POP PSW

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

801F

C1




POP B

Восстановить содержимое регистров

В и С

8020

09




RET

Возвратиться из подпрограммы


Программа 4.3 предназначена для определения номера самого младшего,содержащего нуль разряда 8-битового числа, формиркемого в регистре С.


Программа 4.3


Адрес

Машин-ный код

Метка

Мнемокод

Комментарий

8800

OC

WAIT C

INR C

Увеличить С на единицу

8001

79




MOV A,C

Переписать исследуемое число в аккумулятор

8002

FE FF




CPI FF H

Содержит ли 0 какой-либо разряд числа?

8004

CA 00 80




JZ WAIT C

Если нет, то ждать

8007

CD 00 81




CALL IDSW

Если да, то вызвать подпро-грамму IDSW определения самого младшего, содержа-щего нуль числа

800A

00




NOP

Окончить вывполнение программы

8100

06 FF

IDSW

MVI B,FF H

Записать в регистр В число

8102

04

SRCH

INR B

Увеличить содержимое региста В на 1

8103

1F




RAR

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

8104

DA 02 81




JC SRCH

Если С=1, то продолжать

8107

C9




RET

Возврат из подпрограммы



ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ


ЗАДАНИЕ 1. Исследовать процесс выполнения команд вызова и возврата из подпрограммы, а также команд работы со стеком.

Порядок выполнения задания следующий:

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

2. Занести программу 4.1 по командам, используя режим трассировки. После выполнения каждой команды проверить содержимое всех регистров микропроцессора.

3. Занести в программно-доступные регистры числовые значения.

4. Заменить в программе 4.1 команду POP PSW на команду NOP и проследить, как будет выполняться программа. Объяснить происшедшие изменения.


задание 2. Исследовать подпрограмму 4.2 регулируемой временной задержки.


Порядок выполнения задания следующий:

1. Составить программу, вызывающую подпрограмму 4.2.

2. Ввести ее в микро
еще рефераты
Еще работы по разное