Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов. Каждый массив задается двумя параметрами: адресом первого элемента и длиной.
Очевидно, в программе трижды необходимо выполнить поиск максимального элемента массива, поэтому следует написать соответствующую подпрограмму.
Параметры в подпрограмму будем передавать через регистры: R1 — начальный адрес массива, R2 — длина массива.
Рассмотрим конкретную реализацию этой задачи. Пусть первый массив начинается с адреса 085 и имеет длину 14 элементов, второй— 100 и 4, третий— 110 и 9. Программа будет состоять из основной части и подпрограммы. Основная программа задает параметры подпрограмме, вызывает ее и сохраняет результаты работы подпрограммы в рабочих ячейках. Затем осуществляет вычисление среднего арифметического и выводит результат на устройство вывода. В качестве рабочих ячеек используются регистры общего назначения R6 и R7— для хранения максимальных элементов массивов. Подпрограмма получает параметры через регистры R1 (начальный адрес массива) и R2 (длина массива). Эти регистры используются подпрограммой в качестве регистра текущего адреса и счетчика цикла соответственно. Кроме того, R3 используется для хранения текущего максимума, a R4 — для временного хранения текущего элемента. Подпрограмма возвращает результат через аккумулятор. В табл. 9.9 приведен текст основной программы и подпрограммы. Обратите внимание, цикл в подпрограмме организован с помощью команды JRNZ, а модификация текущего адреса— средствами постинкрементной адресации.
Таблица 9.9. Программа примера 4
Команда | Примечание |
Основная программа | |
RD #85 | Загрузка |
WR R1 | Параметров |
RD #14 | Первого |
WR R2 | Массива |
CALL M | Вызов подпрограммы |
WR R6 | Сохранение результата |
RD #100 | Загрузка |
WR R1 | Параметров |
RD #4 | Второго |
WR R2 | Массива |
CALL M | Вызов подпрограммы |
WR R7 | Сохранение результата |
RD #110 | Загрузка |
WR R1 | Параметров |
RD #9 | Третьего |
WR R2 | Массива |
CALL M | Вызов подпрограммы |
ADD R7 | Вычисление |
ADD R6 | Среднего |
DIV #3 | арифметического |
OUT | Вывод результата |
Подпрограмма MAX | |
HLT | Стоп |
M: RD @R1 | Загрузка |
WR R3 | первого элемента в R3 |
L2: RD @R1+ | Чтение элемента и модификация адреса |
WR R4 | Сравнение |
SUB R3 | и замена, |
JS L1 | если R3 < R4 |
MOV R3, R4 | |
L1: JRNZ R2, L2 | Цикл |
RD R3 | Чтение результата в Асс |
RET | Возврат |
Дата публикования: 2014-11-28; Прочитано: 575 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!