ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 57
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГАОУ ВО «Крымский федеральный университет имени В. И. Вернадского»
Физико-технический институт
Кафедра компьютерной инженерии и моделирования
Лабораторная работа №3
по курсу «Системное программирование»
на тему: «Исследование выполнения логических операций»
| Выполнила: студентка 3 курса группы ИВТ-б-з-201 Овчинкина Е.П. |
| Проверил: доцент кафедры компьютерной инженерии и моделирования Ислямов Р.И. |
Симферополь, 2022 | |
Лабораторная работа № 3
Тема: Исследование выполнения логических операций.
Цель работы:
1. Практически закрепить знание теоретических сведений о программировании логических операций микропроцессорами.
2. Изучить команды МП КР580ВМ80А для выполнения логических операций.
3. Привить практические навыки написания и выполнения программ для программирования логических операций в машинных кодах для микропроцессора.
Ход работы:
Вариант 11.
Задание:
Напишите в табличном виде программу, реализующую функцию алгебры логики согласно индивидуальному заданию и составьте ее блок-схему. Решите задачу аналитически, выполняя логические операции в том порядке, который указывает заданная ФАЛ с учетом принятого приоритета. Введите разработанную программу в память УМК и выполните ее в пошаговом режиме.
Теоретические сведения:
Все операции логики выполняются с двумя операндами, один из которых всегда находится в аккумуляторе, а результат операции сохраняется в аккумуляторе. Операции сдвига выполняются только над операндами, которые находятся в аккумуляторе, а из всех имеющихся флагов используются только флаги знака Z и переноса CY. Различают два типа команд сдвига: сдвиг циклический и сдвиг с переносом.
Примером команды первого типа является команда RLC (сдвиг циклический по левую сторону), если содержимое аккумулятора сдвигается по левую сторону на один разряд. При этом устанавливается в состоянии бита старшего разряда аккумулятора А7, бит младшего разряда аккумулятора А0 и бит переноса CY.
Блок-схема функции алгебры логики согласно индивидуальному заданию.
Таблица 2. Индивидуальное задание.
Номер варианта | Функции алгебры логики | Адрес ячейки памяти | Данные |
11 | D=A1A16+MvB^C | 9A4 | 23 6B 86 8 |
Таблица 2. Таблица программы, реализующей заданную функцию алгебры логики.
Адрес | Мнемоника команды | Код команды | Комментарий |
800 | MVI A, 23 | 3E 23 | Загрузка числа 2316 в аккумулятор |
802 | MVI B, 86 | 06 86 | Загрузка числа 8616 в регистр B |
804 | MVI C, 08 | 0E 08 | Загрузка числа 0816 в регистр С |
806 | LXI H, 9A4 | 21 A4 09 | Загрузка регистровой пары Н адресом ячейки памяти М |
808 | MVI M, 6B | 36 6B | Загрузка числа 6B16 в ячейку памяти М |
80B | ANI 1A | E6 1A | логическое И, над содержимым аккумулятора |
80D | XRA M | AE | Сложение по модулю 2 содержимого аккумулятора и ячейки памяти М. |
80E | ORA B | B0 | Логическое сложение содержимого аккумулятора А с содержимым регистра В |
80F | ANA C | A1 | Логическое умножение |
810 | MOV D, A | 57 A | Загрузка содержимого регистра D в аккумулятор |
Операции «*» и «^» это побитовое логическое И между двумя числами (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. Индивидуальные задания для программирования логических операций над шестнадцатиразрядными числами.
Номер варианта | Функции алгебры логики | Данные |
11 | DE=HLvBC^DE | E769 BC14 A1D7 |
-
Таблица 4. Таблица программы по индивидуальному заданию задания
для программирования логических операций над шестнадцатиразрядными числами.
Адрес | Мнемоника команды | Код команды | Комментарий |
800 | LXI B, BC14 | 01 14 BC | Загрузка числа BC1416 в регистр B |
803 | LXI D, A1D7 | 11 D7 A1 | Загрузка числа A1D716 в регистр D |
809 | LXI H, E769 | 21 69 E7 | Загрузка числа E769 16 в регистр H |
80A | MOV A, L | 7D | Загрузка содержимого регистра L в аккумулятор |
80B | ORA C | B1 | Логическое сложение содержимого аккумулятора с содержимым регистра C |
80C | ANA E | A3 | Логическое умножение |
80D | MOV E, A | 5F | Перемещение содержимого аккумулятора в регистр E |
80E | MOV A, H | 7C | Перемещение содержимого регистра H в аккумулятор |
80F | ORA B | B0 | Логическое сложение содержимого аккумулятора с содержимым регистра B |
810 | ANA D | A2 | Логическое умножение |
811 | MOV D, A | 57 | Перемещение содержимого аккумулятора в регистр D |
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. Индивидуальные задания для программирования для программирования операций сравнения двоичных чисел.
Номер варианта | Регистр | Адрес ячейки памяти M |
11 | H | 9B4 |
Таблица 6. Таблица программы для программирования операций сравнения двоичных чисел.
Адрес | Мнемоника команды | Код команды | Комментарий |
800 | MVI A, 69 | 3E 69 | Загрузка аккумулятора |
802 | LXI H, 9B4 | 21 B4 09 | Загрузка регистровой пары HL |
805 | MVI M, 69 | 36 69 | Загрузка ячейки памяти M |
807 | MVI H, 14 | 26 14 | Загрузка регистра H |
809 | CMP H | BC | Сравнение значений в аккумуляторе и в регистре |
80A | CMP D7 | BA D7 | Сравнение значений в аккумуляторе и в регистре |
80B | LXI H, 9B4 | 21 B4 09 | Загрузка регистровой пары HL |
80C | CMP M | BE | Сравнение значений в аккумуляторе и в ячейке памяти |
Таблица 7. Таблица сравнения двоичных чисел.
Адрес | Мнемокод команды | Код команды | Результат решения | |||||||
аналитически | Программно | |||||||||
P | S | Z | CY | P | S | Z | CY | |||
809 | CMP M | BE | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
80A | CPI 5 | FE 5 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
80C | CMP B | B8 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
Расположение логических команд в системе команд микропроцессора KR580BM80.
Рисунок 5. Расположение логических команд
В этом задании сравнила регистр А с регистром B, с ячейкой памяти M и с константой K. В качестве исходных данных взяла данные из задания 2, разместив их по своему усмотрению в аккумуляторе, заданных регистре и ячейке памяти, во втором байте команды
В регистр А запишем 69
В регистр HL запишем адрес 9B4
В регистр M запишем 69
В регистр H запишем 14
Число K будет D7
Порядок действий
-
Запишем в регистры данные -
Сделаем сравнение регистра А с регистром B с помощью CMP B -
Сделаем сравнение регистра А с ячейкой памяти M с помощью CMP M -
Сделаем сравнение регистра А с константой K с помощью CPI C0