Файл: Исследование выполнения логических операций.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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=A1A16+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

Последовательность команд будет выглядеть следующим образом:



  1. Размещаем данные в соответствующих регистрах;

  2. Заносим адрес ячейки памяти в регистровую пару H;

  3. Заносим данные в ячейку памяти;

  4. Выполняем логическое И регистра А с константы 1A с помощью команды ANI 1A;

  5. Выполняем сумму по модулю два регистра А с ячейкой памяти M с помощью команды XRA M;

  6. Выполняем логическое ИЛИ регистра А с регистром B с помощью ORA B;

  7. Делаем логическое И регистра А с регистром C с помощью команды ANA C;

  8. Записываем результат в регистр D c помощью MOV D, A.


Расположение логических команд в системе команд микропроцессора KR580BM80.


Рисунок 1. Расположение логических команд.

Ввела данные в регистры и провела необходимые перемещения для начала выполнения логических операций.


Рисунок 2. Загрузка данных в регистры.

По завершению выполнения логических операций получила результат.



Рисунок 3. Результат D = 08.

Все значения в регистрах на каждом шаге выполнения программы соответствуют расчетным в таблице 2. Следовательно программа написана и выполнена успешно.

Таблица 3. Индивидуальные задания для программирования логических операций над шестнадцатиразрядными числами.

Номер варианта

Функции алгебры логики

Данные

11

DE=HLvBC^DE

E769 BC14 A1D7

  1. Таблица 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

Порядок выполнения

  1. Загружаем регистровые пары данными

  2. Выполняем логические операции для нижних байтов. Будем работать с регистрами C, E и L
    Загружаем L в А с помощью команды MOV A, L

  3. Делаем логическое ИЛИ регистров А и C с помощью команды ORA C

  4. Делаем логическое И регистров А и E с помощью команды ANA E

  5. Записываем результат A в регистр L с помощью команды MOV L, A

  6. Теперь работаем с высокими байтами, т.е. с регистрами B, D, H
    Загружаем H в А с помощью команды MOV A, H

  7. Делаем логическое ИЛИ регистров А и B с помощью команды ORA B

  8. Делаем логическое И регистров А и D с помощью команды ANA D

  9. Записываем результат 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

Порядок действий

  1. Запишем в регистры данные

  2. Сделаем сравнение регистра А с регистром B с помощью CMP B

  3. Сделаем сравнение регистра А с ячейкой памяти M с помощью CMP M

  4. Сделаем сравнение регистра А с константой K с помощью CPI C0