 
        
        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.
Контрольные вопросы
