Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012 КОНТРОЛЬНАЯ РАБОТА ПО АрхПК / ЛабораторныйПрактикумПоАрхПК для ЗО.doc
Скачиваний:
126
Добавлен:
29.05.2015
Размер:
2.42 Mб
Скачать

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

Задание.Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода (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 (предполагаемый максимум) не изменяется. ИначеR3R4.

г) уменьшение на 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