Методические указания к выполнению лабораторных работ по курсу «Микропроцессорная техника»
Вид материала | Методические указания |
Маскирование данных и организация условных переходов Подпрограмма и стек SPHL или команды LXI SP |
- Методические указания к выполнению лабораторных работ по курсу «вычислительная техника, 640.55kb.
- Методические указания к выполнению лабораторных работ для студентов, обучающихся, 99.32kb.
- Методические указания к проведению лабораторных работ. Специальность 23. 01. 02 «Автоматизированные, 1178.37kb.
- Методические указания к выполнению лабораторных и курсовых работ иркутск 2007, 728.75kb.
- Методические указания по выполнению лабораторных работ по курсу «Механические и физические, 114.99kb.
- Методические указания к выполнению kjrcobou и дипломной работ по курсу, 884.73kb.
- Методические указания к проведению лабораторных работ по курсу «Электрические машины, 393.83kb.
- Выписка из рабочей программы и методические указания к выполнению лабораторных работ, 347.39kb.
- Методические указания к выполнению курсовой работы «Разработка приложений, предназначенных, 348.71kb.
- Методические указания к выполнению лабораторных работ по дисциплине «Интеллектуальные, 653.36kb.
Маскирование данных и организация условных переходов
Цель работы: Изучение программных способов маскирования данных иорганизация условных переходов в программах для микроЭВМ
Введение
Организация условных переходов в микро-ЭВМ осуществляется с помощью регистра признаков МП.
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
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
При занесении в стек содержимого пары регистров или программного счетчика по адресу (SP-1) записывается содержимое старшего из регистров указанной пары или старший байт РСН программного счетчика, а по адресу (SP-2) - содержимое младшего из регистров указанной пары или младшего байта PCL программного счетчика.
При записи данных из стека в пару регистров или программный счетчик в младший регистр пары или в PCL заносится число из ячейки по адресу, указанному в указателе стека SP, а в старший peгистр пары или в РСН -число, записанное по адресу SP+1. В результате выполнения команды содержимое указатели стека SP увеличивается на 2. Данные в памяти не изменяются, а лишь происходит их чтение и увеличение содержимого SP.
Таким образом, при записи данных, адреса стека растут от больших к меньшим, а указатель стека SP всегда содержит адрес стека, по которому записано последнее число.
При разработке программ необходимо первоначально назначать область стека, записывая в SP адрес с помощью команды SPHL или команды LXI SP <А2><А1>.
При включении микро-ЭВМ МОНИТОР автоматически загружает в указатель стека. Все операции со стеком должны быть сбалансированы, т.е. каждая подпрограмма должна содержать равное количество команд PUSH
Как правило, в начале каждой подпрограммы сохраняют в стеке содержимое всех задействованных при ее выполнении регистров. Для этого применяется команда PUSH
Программа 4.1 иллюстрирует использование команд вызова подпрограмм и возвращения из них, а также команд работы со стеком.
Программа 4.1
Адрес | Машин-ный код | Метка | Мнемокод | Комментарий |
8000 | 31 10 80 | | LXI SP,8010 | Записать в указатель стека адрес 8010Н |
8003 | CD 00 81 | | CALL STDY | Вызвать подпрограмму |
8006 | 00 | | NOP | Прекратить выполнение программы |
8100 | E5 | STDY | PUSH PSW | Записать в стек содержимое регистра признаков |
8101 | C5 | | PUSH B | Записать в стек содержимое регистров В и С |
8102 | D5 | | PUSH D | Записать в стек содержимое регистров D и E |
8103 | E5 | | PUSH H | Записать в стек содержимое регистров H и L |
8104 | 3E 05 | | MVI A,05 H | Записать в регистр А число 5 |
8106 | 47 | | MOV B,A | Записать в регистр В содержимое регистра А |
8107 | 87 | | ADD A | Удвоить содержимое аккумулятора |
8108 | 5F | | MOV E,A | Записать в регистр Е содержимое регистра А |
8109 | 67 | | MOV H,A | Записать в регистр Н содержимое регистра А |
810А | E1 | | POP H | Записать числа из стека в регистры Н и L |
810В | D1 | | POP D | Записать числа из стека в регистры D и E |
810С | C1 | | POP B | Записать числа из стека в регистры В иС |
810D | F1 | | POP PSW | Извлечь изстека содержимое регистра признаков |
810E | C9 | | RET | Возврат из подпрограммы |