Реферат: Методические указания к выполнению лабораторных работ по курсу «Микропроцессорная техника»
Министерство образования Украины
Днепропетровский национальный университет
Кафедра радиоэлектроники
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К
ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ
ПО КУРСУ
«Микропроцессорная техника»
Днепропетровск
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
3А
Код команды 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
7Е
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. Ввести ее в микро
еще рефераты
Еще работы по разное
Реферат по разное
Методические указания для разработки курса дистанционного обучения Раздел I
17 Сентября 2013
Реферат по разное
Лабораторный комплекс для изучения микропроцессорных приборов метран 900 Казьмин В. П., Паньшин Г. Л
17 Сентября 2013
Реферат по разное
Методические указания к лабораторным работам по курсу «эву и системы»
17 Сентября 2013
Реферат по разное
Методические указания к работе студентов на практическом занятии модуль
17 Сентября 2013