ЛР3_Овчинкина_Е.П._группа_ИВТ-б-з-201_Системное_программирование. Исследование выполнения логических операций
Скачать 1.71 Mb.
|
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФГАОУ ВО «Крымский федеральный университет имени В. И. Вернадского» Физико-технический институт Кафедра компьютерной инженерии и моделирования Лабораторная работа №3 по курсу «Системное программирование» на тему: «Исследование выполнения логических операций»
Лабораторная работа № 3 Тема: Исследование выполнения логических операций. Цель работы: 1. Практически закрепить знание теоретических сведений о программировании логических операций микропроцессорами. 2. Изучить команды МП КР580ВМ80А для выполнения логических операций. 3. Привить практические навыки написания и выполнения программ для программирования логических операций в машинных кодах для микропроцессора. Ход работы: Вариант 11. Задание: Напишите в табличном виде программу, реализующую функцию алгебры логики согласно индивидуальному заданию и составьте ее блок-схему. Решите задачу аналитически, выполняя логические операции в том порядке, который указывает заданная ФАЛ с учетом принятого приоритета. Введите разработанную программу в память УМК и выполните ее в пошаговом режиме. Теоретические сведения: Все операции логики выполняются с двумя операндами, один из которых всегда находится в аккумуляторе, а результат операции сохраняется в аккумуляторе. Операции сдвига выполняются только над операндами, которые находятся в аккумуляторе, а из всех имеющихся флагов используются только флаги знака Z и переноса CY. Различают два типа команд сдвига: сдвиг циклический и сдвиг с переносом. Примером команды первого типа является команда RLC (сдвиг циклический по левую сторону), если содержимое аккумулятора сдвигается по левую сторону на один разряд. При этом устанавливается в состоянии бита старшего разряда аккумулятора А7, бит младшего разряда аккумулятора А0 и бит переноса CY. Блок-схема функции алгебры логики согласно индивидуальному заданию. Таблица 2. Индивидуальное задание.
Таблица 2. Таблица программы, реализующей заданную функцию алгебры логики.
Операции «*» и «^» это побитовое логическое И между двумя числами (AND). Знак «+» - это сумма по модулю 2 или операция XOR. V - это операция ИЛИ между двумя числами (OR). A = 23 M = 6B B = 86 C = 08 Последовательность команд будет выглядеть следующим образом: Размещаем данные в соответствующих регистрах; Заносим адрес ячейки памяти в регистровую пару H; Заносим данные в ячейку памяти; Выполняем логическое И регистра А с константы 1A с помощью команды ANI 1A; Выполняем сумму по модулю два регистра А с ячейкой памяти M с помощью команды XRA M; Выполняем логическое ИЛИ регистра А с регистром B с помощью ORA B; Делаем логическое И регистра А с регистром C с помощью команды ANA C; Записываем результат в регистр D c помощью MOV D, A. Расположение логических команд в системе команд микропроцессора KR580BM80. Рисунок 1. Расположение логических команд. Ввела данные в регистры и провела необходимые перемещения для начала выполнения логических операций. Рисунок 2. Загрузка данных в регистры. По завершению выполнения логических операций получила результат. Рисунок 3. Результат D = 08. Все значения в регистрах на каждом шаге выполнения программы соответствуют расчетным в таблице 2. Следовательно программа написана и выполнена успешно. Таблица 3. Индивидуальные задания для программирования логических операций над шестнадцатиразрядными числами.
Таблица 4. Таблица программы по индивидуальному заданию задания для программирования логических операций над шестнадцатиразрядными числами.
HL = E769 BC = BC14 DE = A1D7 Порядок выполнения Загружаем регистровые пары данными Выполняем логические операции для нижних байтов. Будем работать с регистрами C, E и L Загружаем L в А с помощью команды MOV A, L Делаем логическое ИЛИ регистров А и C с помощью команды ORA C Делаем логическое И регистров А и E с помощью команды ANA E Записываем результат A в регистр L с помощью команды MOV L, A Теперь работаем с высокими байтами, т.е. с регистрами B, D, H Загружаем H в А с помощью команды MOV A, H Делаем логическое ИЛИ регистров А и B с помощью команды ORA B Делаем логическое И регистров А и D с помощью команды ANA D Записываем результат A в регистр В с помощью команды MOV B, A Рисунок 4. Результат: DE = A155. Программа выполнена в соответствии с расчетом в таблице 4. Таблица 5. Индивидуальные задания для программирования для программирования операций сравнения двоичных чисел.
Таблица 6. Таблица программы для программирования операций сравнения двоичных чисел.
Таблица 7. Таблица сравнения двоичных чисел.
Расположение логических команд в системе команд микропроцессора KR580BM80. Рисунок 5. Расположение логических команд В этом задании сравнила регистр А с регистром B, с ячейкой памяти M и с константой K. В качестве исходных данных взяла данные из задания 2, разместив их по своему усмотрению в аккумуляторе, заданных регистре и ячейке памяти, во втором байте команды В регистр А запишем 69 В регистр HL запишем адрес 9B4 В регистр M запишем 69 В регистр H запишем 14 Число K будет D7 Порядок действий Запишем в регистры данные Сделаем сравнение регистра А с регистром B с помощью CMP B Сделаем сравнение регистра А с ячейкой памяти M с помощью CMP M Сделаем сравнение регистра А с константой K с помощью CPI C0 Получила результат сравнения А с H. Рисунок 6. Результат сравнения А с H. Результат сравнения А с M Рисунок 7. Результат сравнения А с M Получила результат сравнения А с D716 8. Результат сравнения А с D716 Вывод: в процессе выполнения лабораторной работы я применила на практике знания, полученные из теоретического материала. На практике закрепила знание теоретических сведений о программировании логических операций микропроцессорами, изучила команды МП КР580ВМ80А для выполнения логических операций и получила практические навыки написания и выполнения программ для программирования логических операций в машинных кодах для микропроцессора. |