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


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


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


Введение


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

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 однобайтных ячеек. Учитывая ограниченные возможности памяти, нужно стремиться к сокращению длины разрабатываемых программ. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, оформляются в виде подпрограмм - последовательностей команд, выполнение которых может быть вызвано из любого места так называемой основной программы произвольное количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работа подпрограммы, называются входными параметрами. Результаты вычислений, передаваемые по окончании работы подпрограммы в основную программу, называются выходным параметрами.

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

Команда CALL загружает в программный счетчик микропроцессора содержимое байтов <А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 <��2><А1>.

При включении микро-ЭВМ МОНИТОР автоматически загружает в указатель стека. Все операции со стеком должны быть сбалансированы, т.е. каждая подпрограмма должна содержать равное количество команд PUSH и POP . В противном случае выполнение команды RET в конце подпрограммы приведет к записи в программный счетчик случайного числа из стека. Адрес возврата в основную программу будет потерян, что приедет к нарушению последовательности ее выполнения.

Как правило, в начале каждой подпрограммы сохраняют в стеке содержимое всех задействованных при ее выполнении регистров. Для этого применяется команда PUSH . В конце подпрограммы восстановление содержимою регистров осуществляется с помощью команд POP. Восстановление содержимого должно осуществляться в обратной последовательности по отношению к их записи в стек.

Программа 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

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

1845428270929804.html
1845530094988512.html
1845687366894220.html
1845742166235442.html
1845833828300195.html