Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2012 КОНТРОЛЬНАЯ РАБОТА ПО АрхПК / ЛабораторныйПрактикумПоАрхПК для ЗО

.pdf
Скачиваний:
66
Добавлен:
29.05.2015
Размер:
1.18 Mб
Скачать

44

Рисунок 24 – Косвенно регистровая адресация

5.Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов;

6.Занести в ОЗУ необходимые константы и исходные данные. Отладить программу, выполнив программу в режиме Шаг;

7.Зафиксировать значения исходных данных и результата выполнения программы, таблица 12 .

Таблица 12 – Исходные данные и результат выполнения программы

 

Адрес

 

 

 

Исходные данные

 

 

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

040

 

 

 

 

000001

 

 

 

 

 

 

041

 

 

 

 

000002

 

 

 

 

 

 

042

 

 

 

 

000003

 

 

 

 

 

 

043

 

 

 

 

000004

 

 

 

 

 

 

044

 

 

 

 

000005

 

 

 

 

000055

 

045

 

 

 

 

000006

 

 

 

 

 

 

046

 

 

 

 

000007

 

 

 

 

 

 

047

 

 

 

 

000008

 

 

 

 

 

 

048

 

 

 

 

000009

 

 

 

 

 

 

049

 

 

 

 

000010

 

 

 

 

 

 

 

 

 

Таблица 13Варианты задания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Характеристика последовательности

 

№ Вар.

 

 

Характеристика последовательности

 

 

 

Вар.

 

 

чисел С1, С2 , …, Сn

 

 

 

 

чисел С1, С2 , …, Сn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

Количество четных чисел

 

 

 

16

 

 

Сумма нечетных чисел

 

2

 

 

Номер минимального числа

 

 

 

17

 

 

Количество чисел, больших С1

 

3

 

 

Произведение всех чисел

 

 

 

18

 

 

Сумма положительных чисел

 

4

 

 

Номер первого отрицательного числа

 

 

19

 

 

Количество чисел, равных С5

 

5

 

 

Количество чисел, равных С1

 

 

 

20

 

 

Максимальное положительное число

 

6

 

 

Количество отрицательных чисел

 

 

 

21

 

 

Количество положительных чисел

 

7

 

 

Максимальное отрицательное число

 

 

22

 

 

Сумма отрицательных чисел

 

8

 

 

Номер первого положительного числа

 

 

23

 

 

Количество чисел

 

9

 

 

Минимальное положительное число

 

 

24

 

 

Количество чисел, не равных С1

 

10

 

 

Номер максимального числа

 

 

 

25

 

 

Произведение отрицательных чисел

 

11

 

 

Количество нечетных чисел

 

 

 

26

 

 

Минимальное отрицательное число

 

12

 

 

Количество чисел, меньших С1

 

 

 

27

 

 

Разность чисел С5 и С1

 

13

 

 

Разность сумм четных и нечетных

 

 

 

28

 

 

Номер минимального положительного

 

 

 

элементов массивов

 

 

 

 

 

числа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

45

 

 

 

 

14

Отношение сумм четных и нечетных

29

Номер максимального отрицательного

элементов массивов

числа

 

 

15

Сумма четных чисел

30

Произведение чисел, больших С1

Примечание. Под четными (нечетными) элементами массивов понимаются элементы массивов, имеющие четные (нечетные) индексы. Четные числа элементы массивов, делящиеся без остатка на 2.

Форма и содержание отчета

1)Титульный лист;

2)Формулировка варианта задания:

3)Граф-схема алгоритма решения задачи;

4)Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант);

5)Программа, в форме таблицы 2.14;

6)Значения исходных данных и результата выполнения программы, в форме таблицы 2.17.

Контрольные вопросы

1)Как работает механизм косвенной адресации?

2)Как работает механизм косвенно-регистровой адресации?

3)Как поведет себя программа, приведенная в табл. 2.14, если в ней будет отсутствовать команда wr 31 по адресу 014?

4)Как поведет себя программа, приведенная в табл. 2.14, если метка М1 будет поставлена по адресу 005? 007? [2].

Рекомендуемая литература

1.Майоров С.А, Кириллов В.А, Приблуда А.А. Введение в микроЭВМ. Л.: Машиностроение. Ленингр. отд-ние, 1988. – 304с.

2.Жмакин А.П. Архитектура ЭВМ.-СПб.: БХВ-Петербург, 2006. -320 с.

46

3. Таненбаум Э. Т18 Архитектура компьютера. 5-е изд. — СПб.: Питер, 2007. — 844 с.

47

Лабораторная работа № 5

Тема: подпрограммы и стек Цель: изучение команд обращения к подпрограмме и исследование

порядка функционирования ЭВМ при выполнении комплекса взаимосвязанных программ;

Техническое обеспечение: персональный компьютер, программная модель учебной ЭВМ;

Термины и понятия: стек, подпрограмма, адрес возврата, параметры

Стек. Подпрограмма

В программировании часто встречаются ситуации, когда одинаковые действия необходимо выполнять многократно в разных частях программы. В таких случаях повторяющиеся части программы выделяют в подпрограмму.

Подпрограмма это группа команд, которая решает определенную задачу и которую можно вызвать из разных мест программы. В языках высокого уровня также используют термин «процедура». Для вызова подпрограммы необходимо указать ее начальный адрес в памяти и передать (если необходимо) параметры (аргументы) - те исходные данные, с которыми будут выполняться предусмотренные в подпрограмме действия.

Когда подпрограмма заканчивает решение задачи, она должна вернуться к оператору, расположенному в программе следом за оператором вызова подпрограммы. Адрес оператора, к которому возвращается подпрограмма, называется адресом возврата. Адрес возврата может помещаться в одном из трех мест: в памяти, в регистре или в стеке.

Стек ("магазин") - особым образом организованная безадресная память, доступ к которой осуществляется через единственную ячейку, называемую верхушкой стека.

При записи в стек содержимого регистра общего назначения (push) все ранее записанные слова сдвигаются на одну ячейку вниз, а новое слово

48

помещается на вершину стека. При чтении из стека в РОН (pop) извлекается содержимое верхушки стека, а все оставшиеся слова смещаются вверх на одну позицию вверх. В программировании называют такую дисциплину обслуживания LIFO (Last In First Out), последним пришел первым вышел).

Вобычных ОЗУ нет возможности перемещать слова между ячейками,

поэтому при организации стека перемещается не массив слов относительно неподвижной верхушки, а верхушка относительно неподвижного массива. Под стек отводится некоторая область ОЗУ, причём адрес верхушки хранится в специальном регистре процессора указателе стека SP.

По команде вызова подпрограммы CALL, значение программного счётчика PC (адрес следующей команды) помещается верхушку стека. а по команде RET содержимое верхушки стека извлекается в PC. При каждом обращении в стек указатель SP автоматически модифицируется. В большинстве ЭВМ стек «растёт» в сторону меньших адресов, потому перед каждой записью содержимое SP уменьшается на 1, а после каждого извлечения увеличивается на

1.Таким образом, SP всегда указывает на верхушку стека.

Вданной лабораторной работе для хранения данных, необходимых для решения задачи используются регистры общего назначения процессора (РОН) рисунок . В реальных ЭВМ доступ в РОН занимает значительно меньшее время, чем в ОЗУ. Кроме того, команды обращения с регистрами короче команд обращения к памяти. В системе команд учебной ЭВМ для работы с РОН

используются команды, мнемоники которых

совпадают с мнемониками

соответствующих команд для работы с ОЗУ, но в адресной части содержат символы регистров R0 - R9.

49

Рисунок 25 – Пример размещения данных в РОН

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

Задание. Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода (OR) среднее арифметическое характеристик этих массивов. Характеристики массивов определяются заданием к предыдущей лабораторной работе (см. таблицу 13). Соответствие между номерами вариантов заданий 4 и 5 устанавливается по таблице 14. Начальные адреса и длины для массивов:

Первый массив начальный адрес 85, длина 10;

Второй массив начальный адрес 100, длина 5;

Третий массив начальный адрес 110, длина 6.

Пример. Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов (максимальный элемент массива это его характеристика).

1. Программа передаёт параметры подпрограмме - начальный адрес и длину массива, вызывает ее и сохраняет результаты работы подпрограммы (среднее арифметическое) в рабочих ячейках, выводит результат на устройство вывода (OR). В качестве рабочих ячеек используются регистры общего назначения.

Подпрограмма получает параметры через регистры: R1 - начальный адрес массива;

50

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 – счётчик команд

51

SP – указатель стека

CR – регистр команды

CR[ADR] – трёхразрядное поле ADR регистра CR;

5

 

Да

 

Нет

 

 

 

 

 

6

Рисунок 26 – Блок-схема основной программы и блок-схема

подпрограммы

52

4.Распределение памяти: Программа - ячейки 000-03;

Первый массив начальный адрес 085, длина-10; Второй массив начальный адрес 100, длина-5; Третий массив начальный адрес 110, длина-6.

5.Последовательность шагов, реализующих алгоритм программы:

а) занесение в регистр R3 первого элемента массива по адресу, записанному в регистре R1 (условно принимается за текущий максимум) и увеличение значения этого адреса на 1 (средствами постинкрементной адресации). Команда L2: RD

@R1+

б) занесение в регистр R4 второго элемента массива по адресу, записанному в регистре R1 и увеличение значения этого адреса на 1 (средствами постинкрементной адресации).

в) сравнение 1 элемента массива (R3) со вторым элементом (R4/Acc ). Команда JS L1. Если результат (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

 

 

 

 

 

 

 

 

 

 

53

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

 

Форма и содержание отчета

1)Титульный лист;

2)Формулировка варианта задания;

3)Блок-схема алгоритма основной программы;

4)Блок-схема алгоритма подпрограммы;

5)Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант);

6)Тексты программы и подпрограммы в форме таблицы 2.18;

7)Значения исходных данных и результата выполнения программы, в форме таблицы 2.20.

Контрольные вопросы