- •Содержание
- •Лабораторный практикум Введение
- •Лабораторная работа №1
- •Общие положения
- •Структура учебной эвм
- •Состав процессора учебной эвм
- •Регистры состояния
- •Оперативное запоминающее устройство
- •Исполнение команд
- •Порядок выполнения работы
- •Форма и содержание отчета
- •Общие сведения о форматах команд
- •Система команд
- •Способы адресации
- •Система операций
- •Порядок выполнения работы
- •Форма и содержание отчета
- •Рекомендуемая литература
- •Лабораторная работа № 3
- •Команды условной передачи управления
- •Порядок выполнения работы
- •Форма и содержание отчета
- •Контрольные вопросы
- •Форма и содержание отчета
- •Порядок выполнения работы
- •Форма и содержание отчета
- •Приложение Типы адресации, их коды и обозначения
Порядок выполнения работы
Задание.Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода (OR) среднее арифметическоехарактеристикэтих массивов.Характеристикимассивов определяются заданием к предыдущей лабораторной работе (см. таблицу 13). Соответствие между номерами вариантов заданий 4 и 5 устанавливаетсяпо таблице14. Начальные адреса и длины для массивов:
Первый массив – начальный адрес 85, длина 10;
Второй массив – начальный адрес 100, длина 5;
Третий массив – начальный адрес 110, длина 6.
Пример. Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов (максимальный элемент массива – это его характеристика).
1. Программа передаёт параметры подпрограмме - начальный адрес и длину массива, вызывает ее и сохраняет результаты работы подпрограммы (среднее арифметическое) в рабочих ячейках, выводит результат на устройство вывода (OR). В качестве рабочих ячеек используются регистры общего назначения.
Подпрограммаполучает параметры через регистры:
R1- начальный адрес массива;
R2- длина массива.
В подпрограмме эти регистры используются в качестве регистра текущего адреса элементов массива (R1) и счетчика циклов подпрограммы (R2).
R3 – используется для хранения текущего максимума (Cimax , изначально за максимум принимается первый элемент массива);
R4– используется для временного хранения текущего элемента массива;
R6– используется для хранения итогового максимального элемента первого массива;
R7 – используется для хранения итогового максимального элемента второго массива;
Подпрограмма возвращает результат через аккумулятор (Асс). Цикл в подпрограмме организован с помощью команды JRNZ, а модификация текущего адреса элемента массива - средствами постинкрементной адресации.
2. Блок схема алгоритма основной программы, рисунок под буквой а:
Cimax – максимальный элемент массива: после выполнения подпрограммы, максимальный элемент первого массива передается вR6, второго – вR7. Максимальный элемент третьего массива, после выполнения подпрограммы находится в аккумуляторе. Далее, к нему последовательно прибавляется содержимоеR6 иR7. После операции сложение, следует операция деления, т.е. находится среднее арифметическое. Результат выводится на устройство выводаOR.
3. Блок схема алгоритма подпрограммы, рисунок, б:
Сi – текущий элемент массива.
Используемые в программе команды:
13 |
JS |
Переход, если отрицательно |
if Асc < 0 then PC ← CR[ADR] | |
17 |
JRNZ |
Цикл |
DEC(R); if R > 0 then PC ← CR[ADR] | |
19 |
CALL |
Вызов подпрограммы |
DEC(SP); M(SP) ← PC; PC ← CR(ADR) | |
24 |
SUB |
Вычитание |
Acc ← Acc - DD | |
30 |
MOV |
Пересылка |
Rl ← R2 | |
34 |
SUB |
Вычитание |
Acc ← Acc - R* |
PC – счётчик команд
SP – указатель стека
CR – регистр команды
CR[ADR] – трёхразрядное поле ADR регистра CR;
Рисунок 26 –Блок-схема основной программы и блок-схема подпрограммы
4. Распределение памяти:
Программа - ячейки 000-03;
Первый массив – начальный адрес 085, длина-10;
Второй массив – начальный адрес 100, длина-5;
Третий массив –начальный адрес 110, длина-6.
5. Последовательность шагов, реализующих алгоритм программы:
а) занесение в регистр R3 первого элемента массива по адресу, записанному в регистре R1 (условно принимается за текущий максимум) и увеличение значения этого адреса на 1 (средствами постинкрементной адресации). Командаl2: rd @r1+
б) занесение в регистр R4 второго элемента массива по адресу, записанному в регистре R1 и увеличение значения этого адреса на 1 (средствами постинкрементной адресации).
в) сравнение 1 элемента массива (R3) со вторым элементом (R4/Acc). КомандаJSL1. Если результат (Acc) < 0, то первый элемент (R3) > второго (R4), и значение регистраR3 (предполагаемый максимум) не изменяется. ИначеR3R4.
г) уменьшение на 1 значения регистра R2 (количество элементов массива) и проверка: если R2>0, переход на метку L2 (запись в R4 следующего элемента массива), иначе чтение в аккамулятор значения регистра R3 (max) и возврат в программу. КомандаJRNZ R2, L2.
6.Записать значения исходных данных и результат выполнения программы: Max1 = 14;Max2= 4;Max3= 3; Результат = 7.
Первый массив |
Второй массив |
Третий массив | |||
Ai |
Ci |
Ai |
Ci |
Ai |
Ci |
085 |
000005 |
100 |
000001 |
110 |
000001 |
086 |
000005 |
101 |
000002 |
111 |
000002 |
087 |
000005 |
102 |
000003 |
112 |
000003 |
088 |
000001 |
103 |
000004 |
113 |
000001 |
089 |
000001 |
104 |
000002 |
114 |
000002 |
090 |
000001 |
|
|
115 |
000000 |
091 |
000002 |
|
|
|
|
092 |
000002 |
|
|
|
|
093 |
000009 |
|
|
|
|
094 |
000014 |
|
|
|
|
Таблица 14– Соответствие между номерами заданий
Номер варианта л/р № 5 |
Номер строки в таблице |
Номер варианта л/р № 5 |
Номер строки в таблице |
1 |
4 |
16 |
1 |
2 |
8 |
17 |
5 |
3 |
12 |
18 |
9 |
4 |
16 |
19 |
13 |
5 |
20 |
20 |
17 |
6 |
24 |
21 |
21 |
7 |
28 |
22 |
25 |
8 |
30 |
23 |
29 |
9 |
27 |
24 |
26 |
10 |
23 |
25 |
22 |
11 |
19 |
26 |
18 |
12 |
15 |
27 |
14 |
13 |
11 |
28 |
10 |
14 |
7 |
29 |
6 |
15 |
3 |
30 |
2 |