
Лабораторна робота №3
Тема «Команди арифметичних і логічних операцій».
Мета роботи: Отримати навики обробки масиву кодів, розташованих в адресному просторі: CSEG, DSEG і XSEG.
В результаті виконання роботи студент повинен:
- знати команди арифметичних і логічних операцій, способи читання кодів в адресних просторах CSEG, DSEG і XSEG;
- вміти програмувати і відладжувати задачі обробки масиву кодів за допомогою команд арифметичних і логічних операцій.
Завдання до лабораторної роботи
Нехай в пам'яті програм починаючи з комірки ADR2, розташована таблиця кодів довжиною N ( Xi, i=1,2...,N, формат - байт).
Записати в кодах МК К1816ВЕ51 програму, яка виконує обчислення заданої функції над цими кодами. Результат обчислень розмістити в регістрі R3 і R4. Програма повинна починатися з комірки ADR1. Варіанти завдань наведено в табл. 3. У варіантах завдань 14, 15, 30 рекомендується читання поточного коду виконувати за допомогою інкременту регістра DPTR і скидання акумулятора А.
Зміст звіту:
- тема, мета і завдання по лабораторній роботі;
- алгоритм дій у вигляді блок-схеми;
- розрахунок початкових умов;
- текст програми з поясненням;
- висновки по роботі.
Контрольні питання і завдання
1. Які дії виконують команди арифметичних операцій?
2. Які дії виконують команди циклічного зсуву?
3. Які дії виконують команди логічних операцій?
4. Чи є такі логічні операції, що виконуються тільки з використанням акумулятора?
5. С якими числами працює АЛУ МК51?
6. Як виконуються операції складання і віднімання з урахуванням знака операнда?
7. Де і як розташовується результат виконання операції ділення і множення?
8. Написати програму знаходження суми кожного другого коду блоку даних розташованих в DSEG, XSEG,CSEG, за адресою ADR0 завдовжки N байтів.
9. Який код знаходитиметься в акумуляторі в результаті виконання програми:
MOV А #95
MOV R1 #4C
AAD A,@R1
10. Написати програму очищення комірок в пам'яті DSEG, XSEG, починаючи з ADR0 до ADR1.
11. Який логічний простір використовується для зберігання даних, що не змінюються при виконанні програми?
Таблиця 3 Варіанти завдань до лабораторної роботи
Номер |
ADR1 |
ADR2 |
N |
Функція F |
01 |
714 |
431, CSEG |
E |
Сума(XiXn)/N |
02 |
62F |
541, XSEG |
F |
Max(Xi)/N |
3 |
345 |
25, DSEG |
А |
Min(Xi)/N |
04 |
53E |
621, CSEG |
D |
(Кіль-ть непарних кодів)/X1 |
05 |
44A |
711, XSEG |
C |
Сума(Xi>X5) OR X1 |
06 |
355 |
12, DSEG |
B |
Max(Xi з Xi.7=0) OR X1 |
07 |
266 |
236, CSEG |
А |
(Кільть парних кодів)/Xn |
08 |
177 |
345, XSEG |
6 |
Min(Xi з Xi.7=1) OR X1 |
09 |
78A |
45, DSEG |
7 |
(Кіль-ть за Min(Xi)) OR N |
10 |
69D |
568, CSEG |
F |
Сума(Xi з парними кодами) AND X1 |
11 |
5AF |
677, XSEG |
E |
Max(Xi з парними індексами) AND X1 |
12 |
4BA |
71, DSEG |
5 |
Min(Xi з непарними індексами) AND X1 |
13 |
3C9 |
231, CSEG |
6 |
Сума(Xi X1)OR Xn |
14 |
2D8 |
3A1, XSEG |
7 |
Max(Xi) і ADR Max |
15 |
1E4 |
4B, DSEG |
8 |
Min(Xi) і ADR Min |
16 |
7F5 |
5C2, CSEG |
8 |
(Max(Xi) - Min(Xi)) OR X1 |
17 |
6E6 |
6D2, XSEG |
9 |
Сума(XiX1) XOR X1 |
18 |
5A1 |
6E, DSEG |
F |
Max(Xi) XOR X1 |
19 |
4D3 |
1F2, CSEG |
А |
Min(Xi) XOR X1 |
20 |
3C8 |
2E2, XSEG |
B |
Сума(Xi з парними індексами) AND Xn |
21 |
26F |
4D, DSEG |
З |
Max(Xi) AND Xn,Xiпарне |
22 |
4BE |
782, CSEG |
D |
Min(Xi) AND Xn,Xiнепарне |
23 |
3CA |
232, XSEG |
E |
(Кіль-ть Xi > X1) OR Xn |
24 |
2D3 |
32, DSEG |
F |
Суму(Xi < X1) OR X1 |
25 |
1E7 |
4B2, CSEG |
8 |
Кіль-ть кодів за Max(Xi) |
26 |
7F3 |
5C2, XSEG |
8 |
(Кіль-ть Xi)=0 AND Xn, Хі парне |
27 |
6E5 |
5D, DSEG |
9 |
Сума(Xi) OR Xn, Хі непарне |
28 |
4C9 |
331, CSEG |
A |
Кільть (Xi з Хі.7=0) OR Xn |
29 |
1D8 |
4A1, XSEG |
7 |
Кільть (Xi з Хі.7=1) OR Xn |
30 |
3E4 |
52, DSEG |
9 |
ADR Max(Xi) |