- •Глава 8
- •8.3.2. Способы адресации
- •8.5. Интерфейс пользователя
- •8.6. Внешние устройства
- •8.6.1. Контроллер клавиатуры
- •8.6.2. Дисплей
- •8.6.3. Блок таймеров
- •8.6.4. Тоногенератор
- •8.7. Подсистема прерываний
- •8.8. Программная модель кэш-памяти
- •8.9. Вспомогательные таблицы
- •Глава 9
- •9.1. Лабораторная работа № 1. Архитектура эвм и система команд
- •9.1.1. Общие положения
- •9.1.2. Пример 1
- •9.1.3. Задание 1
- •9.1.4. Содержание отчета
- •9.1.5. Контрольные вопросы
- •9.2. Лабораторная работа №2. Программирование разветвляющегося процесса
- •9.2.1. Пример 2
- •9.2.2. Задание 2
- •9.2.3. Содержание отчета
- •9.2.4. Контрольные вопросы
- •9.3. Лабораторная работа № 3. Программирование цикла с переадресацией
- •9.3.1. Пример з
- •9.3.2. Задание 3
- •9.4. Лабораторная работа № 4. Подпрограммы и стек
- •9.4.1. Пример 4
- •9.4.2. Задание 4
- •9.4.3. Содержание отчета
- •9.4.4. Контрольные вопросы
- •9.5. Лабораторная работа № 5. Командный цикл процессора
- •9.5.1. Задание 5.1
- •9.5.2. Задание 5.2
- •9.5.3. Контрольные вопросы
- •9.6. Лабораторная работа № 6. Программирование внешних устройств
- •9.6.1. Задание 6
- •9.6.2. Задания повышенной сложности
- •9.6.3. Порядок выполнения работы
- •9.6.4. Содержание отчета
- •9.6.5. Контрольные вопросы
- •9.7. Лабораторная работа № 7. Принципы работы кэш-памяти
- •9.7.1. Задание 7
- •9.7.2. Порядок выполнения работы
- •9.7.3. Содержание отчета
- •9.7.4. Контрольные вопросы
- •9.8. Лабораторная работа № 8. Алгоритмы замещения строк кэш-памяти
- •9.8.1. Задание 8
- •9.8.2. Порядок выполнения работы
- •9.8.3. Содержание отчета
- •9.8.4. Контрольные вопросы
9.3.2. Задание 3
Написать программу определения заданной характеристики последова тельности чисел Сх, С2,..., Сп . Варианты заданий приведены в табл. 9.8.
Записать программу в мнемокодах, введя ее в поле окна Текст программы.
Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов.
Загрузить в ОЗУ необходимые константы и исходные данные.
Отладить программу.
Таблица 9.8. Варианты задания 3
|
|
Номер варианта |
Характеристика последовательности чисел С,, Сг ,..., С„ |
1 |
Количество четных чисел |
2 |
Номер минимального числа |
3 |
Произведение всех чисел |
4 |
Номер первого отрицательного числа |
5 |
Количество чисел, равных С, |
6 |
Количество отрицательных чисел |
7 |
Максимальное отрицательное число |
8 |
Номер первого положительного числа |
9 |
Минимальное положительное число |
10 |
Номер максимального числа |
11 |
Количество нечетных чисел |
12 |
Количество чисел, меньших С, |
13 |
Разность сумм четных и нечетных элементов массивов |
14 |
Отношение сумм четных и нечетных элементов массивов |
Примечание. Под четными (нечетными) элементами массивов понимаются элементы массивов, имеющие четные (нечетные) индексы. Четные числа—элементы массивов, делящиеся без остатка на 2.
9.3.3. Содержание отчета
Формулировка варианта задания.
Граф-схема алгоритма решения задачи.
Распределение памяти (размещение в ОЗУ переменных, программы и не обходимых констант).
Программа.
Значения исходных данных и результата выполнения программы.
9.3.4. Контрольные вопросы
Как организовать цикл в программе?
Что такое параметр цикла?
Как поведет себя программа, приведенная в табл. 9.7, если в ней будет от сутствовать команда wr 31 по адресу 014?
Как поведет себя программа, приведенная в табл. 9.7, если метка Ml будет поставлена по адресу 005? 007?
9.4. Лабораторная работа № 4. Подпрограммы и стек
В программировании часто встречаются ситуации, когда одинаковые действия необходимо выполнять многократно в разных частях программы (например, вычисление функции sin л). При этом с целью экономии памяти не следует многократно повторять одну и ту же последовательность команд — достаточно один раз написать так называемую подпрограмму (в терминах языков высокого уровня — процедуру) и обеспечить правильный вызов этой подпрограммы и возврат в точку вызова по завершению подпрограммы.
Для вызова подпрограммы необходимо указать ее начальный адрес в памяти и передать (если необходимо) параметры — те исходные данные, с которыми будут выполняться предусмотренные в подпрограмме действия. Адрес подпрограммы указывается в команде вызова call, а параметры могут передаваться через определенные ячейки памяти, регистры или стек.
Возврат в точку вызова обеспечивается сохранением адреса текущей команды (содержимого регистра PC) при вызове и использованием в конце подпрограммы команды возврата ret, которая возвращает сохраненное значение адреса возврата в PC.
Для реализации механизма вложенных подпрограмм (возможность вызова подпрограммы из другой подпрограммы и т. д.) адреса возврата целесообразно сохранять в стеке. Стек ("магазин") — особым образом организованная безадресная память, доступ к которой осуществляется через единственную ячейку, называемую верхушкой стека. При записи слово помещается в верхушку стека, предварительно все находящиеся в нем слова смещаются вниз на одну позицию; при чтении извлекается содержимое верхушки стека (оно при этом из стека исчезает), а все оставшиеся слова смещаются вверх на одну позицию. Такой механизм напоминает действие магазина стрелкового оружия (отсюда и второе название). В программировании называют такую дисциплину обслуживания LIFO (Last In First Out, последним пришел — первым вышел) в отличие от дисциплины типа очередь — FIFO (First In First Out, первым пришел — первым вышел).
В обычных ОЗУ нет возможности перемещать слова между ячейками, поэтому при организации стека перемещается не массив слов относительно неподвижной верхушки, а верхушка относительно неподвижного массива. Под стек отводится некоторая область ОЗУ, причем адрес верхушки хранится в специальном регистре процессора — указателе стека SP.
В стек можно поместить содержимое регистра общего назначения по команде push или извлечь содержимое верхушки в регистр общего назначения по команде pop. Кроме того, по команде вызова подпрограммы call значение программного счетчика PC (адрес следующей команды) помещается в верхушку стека, а по команде ret содержимое верхушки стека извлекается в PC. При каждом обращении в стек указатель SP автоматически модифицируется.
В большинстве ЭВМ стек "растет" в сторону меньших адресов, поэтому перед каждой записью содержимое SP уменьшается на 1, а после каждого извлечения содержимое SP увеличивается на 1. Таким образом, SP всегда указывает на верхушку стека.
Цель настоящей лабораторной работы — изучение организации программ с использованием подпрограмм. Кроме того, в процессе организации циклов мы будем использовать новые возможности системы команд модели ЭВМ, которые позволяют работать с новым классом памяти — сверхоперативной (регистры общего назначения — РОН). В реальных ЭВМ доступ в РОН занимает значительно меньшее время, чем в ОЗУ; кроме того, команды обращения с регистрами короче команд обращения к памяти. Поэтому в РОН размещаются наиболее часто используемые в программе данные, промежуточные результаты, счетчики циклов, косвенные адреса и т. п.
В системе команд учебной ЭВМ для работы с РОН используются специальные команды, мнемоники которых совпадают с мнемониками соответствующих команд для работы с ОЗУ, но в адресной части содержат символы регистров RO—R9.
Кроме обычных способов адресации (прямой и косвенной) в регистровых командах используются два новых — постинкрементная и преддекрементная (см. табл. 8.5). Кроме того, к регистровым относится команда организации цикла JRNZ R,M. По этой команде содержимое указанного в команде регистра уменьшается на 1, и если в результате вычитания содержимого регистра не равно 0, то управление передается на метку м. Эту команду следует ставить в конце тела цикла, метку м — в первой команде тела цикла, а в регистр R помещать число повторений цикла.
