![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов. Каждый массив задается двумя параметрами: адресом первого элемента и длиной.
Очевидно, в программе трижды необходимо выполнить поиск максимального элемента массива, поэтому следует написать соответствующую подпрограмму.
Параметры в подпрограмму будем передавать через регистры: 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; Прочитано: 602 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
