2012 КОНТРОЛЬНАЯ РАБОТА ПО АрхПК / ЛабораторныйПрактикумПоАрхПК для ЗО
.pdf44
Рисунок 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.
Контрольные вопросы