
- •Лабораторная работа № 2 команды передачи управления, организация циклов, арифметических, логических, битовых операции
- •2. Команды передачи управления.
- •3. Арифметико-логические операции
- •4. Команды работы с битовыми данными
- •5. Задание по лабораторной работе
- •Внимание! Не забывайте о приоритетах логических операций!!!
5. Задание по лабораторной работе
Пусть в памяти программ, начиная с ячейки ADR2, расположена таблица кодов Z длиной N.
записать в кодах МК программу, которая выполняет пересылку данного массива в RAM, начиная с адреса ADR3. Программа должна начинаться с ячейки ADR1;
после пересылки массива вычислить значение функции F1, исходными данными для которой являются элементы исходного массива;
вычислить значение битовой функции F2, исходными данными для которой являются разряды значения функции F1. Результат поместить в бит с порядковым номером, который соответствует номеру варианта.
Таблица 5.1. Таблица вариантов заданий
НОМЕР |
ADR1 |
ADR2 |
N |
ADR3 |
1 |
62F |
541 |
F |
23 |
2 |
53E |
621 |
D |
45 |
3 |
44A |
711 |
C |
56 |
4 |
355 |
121 |
B |
48 |
5 |
266 |
236 |
A |
3D |
6 |
177 |
345 |
6 |
4F |
7 |
78A |
454 |
7 |
3A |
8 |
69D |
568 |
F |
4C |
9 |
5AF |
677 |
E |
44 |
10 |
4BA |
781 |
5 |
23 |
11 |
3C9 |
231 |
6 |
18 |
12 |
2D8 |
3A1 |
7 |
4C |
13 |
1E4 |
4B2 |
8 |
6C |
14 |
7F5 |
5C2 |
8 |
6F |
15 |
6E6 |
6D2 |
9 |
3A |
16 |
5A1 |
7E2 |
F |
4A |
17 |
4D3 |
1F2 |
A |
5B |
18 |
3C8 |
2E2 |
B |
3B |
19 |
26F |
3D2 |
C |
4B |
20 |
4BE |
782 |
D |
39 |
21 |
3CA |
232 |
E |
47 |
22 |
2D3 |
3A2 |
F |
65 |
23 |
1E7 |
4B2 |
8 |
33 |
24 |
7F3 |
5C2 |
8 |
3D |
25 |
6E5 |
6D2 |
9 |
55 |
26 |
5AD |
7E4 |
C |
3E |
27 |
4D2 |
2E1 |
E |
37 |
28 |
714 |
431 |
E |
4F |
29 |
15F |
5D3 |
F |
3F |
30 |
3C6 |
623 |
9 |
5C |
Коды данных соответствуют ASCII-символам фамилии, имени и отчества студента.
Таблица 5.2. Алгоритм вычисления функции F1
Вид функции F2 для вычисления определяется следующим образом. Значение F1 имеет формат (поразрядно)
X7 |
X6 |
X5 |
X4 |
X3 |
X2 |
X1 |
X0 |
F2 = (X7) OP1 (X6) OP2 (X5) OP3 (X4) OP4 (X3) OP5 (X2) OP6 (X1) OP7 (X0),
где OPi - булева операция, находится в таблице 5.3.
Таблица 5.3. Таблица операций
Z |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
OP1 |
|
|
|
|
|
|
|
|
|
|
OP2 |
|
|
|
|
|
|
|
|
|
|
OP3 |
|
|
|
|
|
|
|
|
|
|
OP4 |
|
|
|
|
|
|
|
|
|
|
OP5 |
|
|
|
|
|
|
|
|
|
|
OP6 |
|
|
|
|
|
|
|
|
|
|
OP6 |
|
|
|
|
|
|
|
|
|
|
/\ - операция И
\/ - операция ИЛИ
+ - операция ИСКЛЮЧАЮЩЕЕ ИЛИ
6. СОДЕРЖАНИЕ ОТЧЕТА:
определение варианта задания по лабораторной работе:
для табл. 5.1.: N – выдается преподавателем;
для табл. 5.2.: левая часть: (N*3) mod 10;
правая часть: (N*7) mod 10;
для табл. 5.3.: (N*13) mod 10;
задание по лабораторной работе;
подробная блок-схема алгоритма решения поставленной задачи;
контрольный просчет;
текст программы с подробными комментариями.
7. ФРАГМЕНТЫ ВЫПОЛНЕНИЯ ЗАДАНИЯ
В памяти команд с адреса ADR1 расположено N кодов. Необходимо переписать их в память данных, начиная с адреса ADR2.
Текст программы:
MET1: MOV PSW, #00 ; Выбор банка Bank0
… MOV DPTR, <ADR1 – 1> ; Указатель на память программы
… MOV R0, <ADR2 + N – 1> ; Указатель на память данных
… MOV R1, <N> ; Количество элементов массива
MET2: MOV A, R1 ; Индекс текущего элемента массива
… MOVC A, @A+DPTR ; Получение элемента в А
… MOV @R0, A ; Пересылка в память данных
… DEC R0 ; Уменьшение индекса
… DJNZ R1, MET2 ; Организация цикла
… NOP
Пусть в памяти данных, начиная с ячейки ADR1, расположен массив кодов длиной N. Необходимо вычислить сумму четных значений элементов этого массива, результат поместить в ячейки RAM с адресами ADR2, ADR2+1 (старший и младший байты соответственно).
Текст программы:
MET1: MOV PSW, #00 ; Выбор банка Bank0
… MOV R2, <N> ; Количество элементов массива
… MOV R0, <ADR1> ; Указатель на память данных
… CLR A ; Очистка А
… MOV R3, A ; Очистка младшей части суммы
… MOV R4, A ; Очистка старшей части суммы
MET2: MOV A, @R0 ; Получение первого элемента
… JB A.0, MET3 ; Если младший бит = 0, число четное
… ADD A, R3 ; Подсчет суммы
… MOV R3, A ; Сохранение младшей части суммы
… JNC MET3 ; Если не было переноса след. элемент
… INC R4 ; Инкремент старшей части суммы
MET3: INC R0 ; Сдвиг указателя на след. элемент
… DJNZ R2, MET2 ; Организация цикла
… MOV <ADR2>, R4 ; Сохранение старшей
… MOV <ADR2 + 1>, R3 ; и младшей частей результата
Пусть в DSEG, в ячейке ADR1 расположен код CODE. Записать в кодах МК Intel 8051 программу, которая выполняет вычисление заданной булевой функции F=X4 ~X3 X0 над этими кодами. Результат вычислений должен быть записан по адресу ADR2 пространства BSEG.