
- •Программирование логических операций
- •Программирование логических операций
- •1. Цель и содержание работы
- •2. Задание для домашней подготовки
- •3. Контрольные вопросы
- •4. Программное моделирование
- •5. Лабораторные задания
- •6. Содержание отчета
- •Библиографический список
- •Команды арифметических операций
- •Команды логических операций
- •Команды операций с битами
- •Команды передачи управления
5. Лабораторные задания
Задание № 1
Разработайте на языке Аассемблера микропроцессора КР580ВМ80 программу моделирования функции F1 (табл.1) методом создания в памяти полной таблицы истинности. Входные переменные введите из ячейки оперативной памяти, например 87F0h. Выходную переменную (функцию F1) выведите в младший разряд ячейки оперативной памяти, например 87F1h.
Введите программу в микроЭВМ. Проверьте правильность работы программы, задавая поочередно в ячейке памяти входные наборы, на которых функция F1 принимает единичные и нулевые значения.
Определите количество машинных тактов в программе моделирования функции F1.
Примечание.
В таблице 1 единичные наборы входных переменных представлены десятичной цифрой соответствующей двоичному коду. Например, функция F1 принимает единичное значение, когда все четыре переменные имеют нулевое значение, т.е. 0000. В таблице 1 этот двоичный четырех битный код представлен десятичной цифрой 0.
Выбор варианта осуществляется по последней цифре зачетной книжки или указывается преподавателем.
Задание№2
Разработайте на языке Ассемблера микропроцессора КР580ВМ80 программу моделирования функции F1 и F2 (табл.1) методом создания в памяти двух массивов: массива 1 входных наборов, на которых функции F1 или F2 принимают единичные значения, и массива 2 выходных значений этих функций. Входные переменные введите из ячейки оперативной памяти, например, 87F2h. Выходные переменные (функции F1 и F2) выведите соответственно в нулевой и первый разряды ячейки оперативной памяти, например 87F3h.
Введите программу в микроЭВМ. Проверьте правильность работы программы, задавая поочередно в ячейке памяти входные наборы, на которых функции F1 или F2 принимают единичные и нулевые значения.
Определите минимальное и максимальное количество машинных тактов в программе моделирования функций F1 и F2 и сравните время выполнения данной программы и программы моделирования в задании 1.
Таблица 1
Единичные наборы функций F1 или F2
№ п/п |
Функция F1.
|
Функция F2.
|
№ п/п |
Функция F1.
|
Функция F2.
|
1 |
0,1,3,5,7,12 |
0,3,4,5,11 |
17 |
0,1,2,3,12,14 |
3,7,12,13 |
2 |
1,2,6,7,11,13 |
3,5,7,11,13 |
18 |
1,4,6,8,11,13,15 |
0,1,3,4,8 |
3 |
2,3,5,8,10,14 |
2,4,8,9,10 |
19 |
2,4,6,8,12,14,15 |
8,10,12,13 |
4 |
3,4,5,6,7,8,9 |
1,3,9,11,12 |
20 |
0,4,5,7,11,12,13 |
3,4,7,8,9 |
5 |
1,4,5,7,9,10,15 |
0,1,5,6,9 |
21 |
7,8,9,10,11,12,14 |
5,7,8,10,1 |
6 |
6,7,8,9,10,11,12 |
4,6,8,11,14 |
22 |
3,4,6,8,11,12,13 |
6,8,9,11 |
7 |
5,6,7,8,9,10,11 |
3,5,9,12,13 |
23 |
1,2,3,5,7,8,9,14 |
0,1,3,4,5, |
8 |
7,8,9,10,11,12,1 |
0,1,5,7,10 |
24 |
0,1,2,3,9,10,11, |
1,4,5,9,11 |
9 |
8,9,10,11,13,14 |
2,4,9,11,12 |
25 |
2,4,8,12,13,15 |
0,2,6,8,12 |
10 |
2,3,4,5,6,7,9,15 |
4,6,8,9,15 |
26 |
6,7,8,9,10,11,13 |
0,4,6,7,11 |
11 |
0,1,2,3,4,5,6,15 |
5,6,11,10,13 |
27 |
7,8,9,11,12,13,14 |
2,5,7,9,15 |
12 |
3,4,5,6,10,12,14 |
1,3,4,9,12 |
28 |
1,4,7,10,11,12,15 |
9,10,11,14 |
13 |
8,9,10,11,12,13 |
6,7,8,11,14 |
29 |
5,7,9,10,11,12,13 |
4,5,6,7,9 |
14 |
0,2,3,4,6,8,15 |
4,5,6,8,14 |
30 |
2,3,6,9,11,13,15 |
1,2,4,6,9 |
15 |
2,4,6,8,10,12,14 |
0,2,6,10,15 |
31 |
4,5,6,11,12,14,15 |
0,1,2,4,6 |
16 |
1,3,5,7,9,11,13 |
7,8,9,11,13 |
32 |
8,9,10,11,12,13,1 |
1,7,8,9,13 |
h 7 6 5 4 3 2 1 00000000000h |
g |
f |
e |
d |
c |
b |
a |
7 6 5 4 3 2 1 0
Рис. 1
Таблица 2
№ Логическая
функция 1 Y
= (a
b)(c
h)(d
f)(e
g) 2 Y
= (a
b)(c
h)(d
f)(e
g) 3 Y
= (a
c)(d
h)(g
e)(b
f) 4 Y
= (a
c)(d
h)(g
e)(b
f) 5 Y
= (a
d)(e
c)(b
h)(g
f) 6 Y
= (a
d)(e
c)(b
h)(g
f) 7 Y
= (a
e)(d
f)(b
g)(c
h) 8 Y
= (a
e)(d
f)(b
g)(c
h) 9 Y
= (a
f)(e
g)(b
h)(c
d) 10 Y
= (a
f)(e
g)(b
h)(c
d)
Примечание: Чертой
под идентификатором переменной
обозначено логическое отрицание.
Задание № 3
Разработайте на языке Ассемблера микропроцессора КР580ВМ80А программу, моделирующую заданную преподавателем логическую функцию Y (табл. 2). Входные переменные разместите в регистре В микропроцессора, как показано на рис. 1. Выходную переменную выведите в младший разряд аккумулятора, т.е. если Y = 0, то содержимое аккумулятора (А) = 00h, а если Y = 1, то (А) = =01h. Исходные данные сохраните.
Введите программу в микроЭВМ. Проверьте правильность работы программы.
Поскольку логическая функция Y представляет собой конъюнкцию дизъюнкций, то Y = =0, если хотя бы одна из дизъюнкций равна нулю. Следовательно, алгоритм решения задачи сводится к последовательной проверке дизъюнкций на равенство нулю. При обнаружении первой дизъюнкции, равной нулю, в аккумулятор надо вывести число 00h и завершить программу. Если же окажется, что ни одна из дизъюнкций не равна нулю, то перед завершением программы
необходимо вывести в аккумулятор число 01h.
Задание № 4
Разработайте на языке ассемблера микропроцессора КР580ВМ80А программу, моделирующую заданную преподавателем логическую функцию Z (табл. 3). Входные переменные разместите в регистре В микропроцессора, как показано на рисунке 1. Выходную переменную выведите в младший разряд аккумулятора. Исходные данные сохраните.
Таблица
3
№ Логическая
функция 1 Z
= (a
b)
(c
h)
(d
f)
(e
g) 2 Z
= (a
b)
(c
h)
(d
f)
(e
g) 3 Z
= (a
c)
(d
h)
(g
e)
(b
f) 4 Z
= (a
c)
(d
h)
(g
e)
(b
f) 5 Z
= (a
d)
(e
c)
(b
h)
(g
f) 6 Z
= (a
d)
(e
c)
(b
h)
(g
f) 7 Z
= (a
e)
(d
f)
(b
g)
(c
h) 8 Z
= (a
e)
(d
f)
(b
g)
(c
h) 9 Z
= (a
f)
(e
g)
(b
h)
(c
d) 10 Z
= (a
f)
(e
g)
(b
h)
(c
d)
Примечание: Чертой
под идентификатором переменной
обозначено логическое отрицание
Логическая функция Z представляет собой дизъюнкцию конъюнкций, поэтому Z = 1, если хотя бы одна из конъюнкций равна единице. Следовательно, алгоритм решения задачи сводится к последовательной проверке конъюнкций на равенство единице. При обнаружении первой конъюнкции, равной единице, в аккумулятор надо вывести число 01h и завершить программу. Если же окажется, что ни одна из конъюнкций не равна единице, то перед завершением программы необходимо вывести в аккумулятор число 00h.
Задание № 5
В соответствии с заданиями 1-4 составите программы моделирования ФАЛ в системе команд микроконтроллеров семейства КМ1816ВЕ51. Входные переменные вводите через порт Р1. Значения логических функций, полученные при моделировании, выведите в порт Р2.
Проведите сравнительный анализ программ моделирования ФАЛ в системе команд МП К580ВМ80 и микроконтроллера КМ1816ВЕ51.
Примечание.
В приложении приведена система команд микроконтроллера КМ1816ВЕ51.
Разработку программ и их отладку можно выполнить в интегрированной среде разработки программного обеспечения – Pro View фирмы Franklin Software Inc. или на Aссемблере микроконтроллера КМ1816ВЕ51 ( на Aссемблере ASM51).