Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турчин Д.Е. АЭВМиС. Практикум 2012 (ИТ).doc
Скачиваний:
92
Добавлен:
10.05.2015
Размер:
1.31 Mб
Скачать

3.4.3. Последовательность выполнения работы

Данная лабораторная работа предполагает выполнение следующих этапов:

1) Написать программу определения заданной характеристики последовательности чисел С1, С2, … , Сn.

2) Записать программу в мнемокодах, введя ее в поле окна Текст программы.

3) Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов.

4) Загрузить в ОЗУ необходимые константы и исходные данные.

5) Отладить программу.

6) Оформить и защитить отчет по лабораторной работе.

3.4.4. Варианты заданий

Составить и отладить программу учебной ЭВМ для решения следующей задачи.

Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода среднее арифметическое параметров этих массивов. Варианты заданий приведены в таблице 3.9.

Таблица 3.9

Варианты задания

Номер варианта

Характеристика последовательности

чисел С1, С2, … , Сn

1

Максимальное отрицательное число

2

Количество чисел, равных введенному в IR

3

Минимальное положительное число

4

Количество нечетных чисел

5

Разность сумм четных и нечетных элементов массивов

6

Количество чисел, меньших введенного в IR

7

Количество четных чисел

8

Отношение сумм четных и нечетных элементов массивов

9

Номер последнего отрицательного числа

10

Произведение всех нечетных чисел

11

Отношение сумм отрицательных и положительных чисел

12

Номер последнего положительного числа

13

Номер минимального числа

14

Номер максимального числа

В процессе организации циклов необходимо применять регистры общего назначения (РОН) для размещения наиболее часто используемых в программе данных (промежуточных результатов, счетчиков циклов, косвенных адресов и т. п.). В реальных ЭВМ доступ в РОН занимает значительно меньшее время, чем в ОЗУ; кроме того, команды обращения с регистрами короче команд обращения к памяти.

Кроме обычных способов адресации (прямой и косвенной) рекомендуется использовать два новых – постинкрементная и предекрементная (см. табл. 2.2). Кроме того, к регистровым командам относится команда организации цикла JRNZ R…,L. По этой команде содержимое указанного в команде регистра R… уменьшается на 1, и если в результате вычитания содержимое регистра R… не равно 0, то управление передается на метку L.

3.4.5. Пример выполнения работы

Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов. Каждый массив задается двумя параметрами: адресом первого элемента и длиной. Пусть первый массив начинается с адреса 080 и имеет длину 8 элементов, второй 090 и 6, третий 100 и 7.

Поскольку в программе трижды необходимо выполнить поиск максимального элемента массива, то следует написать соответствующую подпрограмму. Параметры в подпрограмму будут передаваться через регистры общего назначения: R1 – начальный адрес массива, R2 – длина массива. Эти регистры используются подпрограммой в качестве регистра текущего адреса и счетчика цикла соответственно. Для хранения максимальных элементов массивов служат регистры R5, R6 и R7. Кроме того, R3 используется для хранения текущего максимума, а R4 – для временного хранения текущего элемента.

Программа будет состоять из основной части и подпрограммы. Основная программа задает параметры подпрограмме, вызывает ее и сохраняет результаты работы подпрограммы в рабочих ячейках. Затем осуществляет вычисление среднего арифметического и выводит результат на устройство вывода. Подпрограмма возвращает результат через аккумулятор.

Текст основной программы и подпрограммы приведен в табл. 3.10. Модификация текущего адреса в подпрограмме организована средствами индексной адресации с постинкрементом.

Таблица 3.10

Текст основной программы и подпрограммы с комментариями

Адрес

Команда

Примечание

Основная программа

000

RD #80

Загрузка параметров первого массива

001

WR R1

002

RD #8

003

WR R2

004

CALL M

Вызов подпрограммы

005

WR R5

Сохранение результата

006

RD #90

Загрузка параметров второго массива

007

WR R1

008

RD #6

009

WR R2

010

CALL M

Вызов подпрограммы

011

WR R6

Сохранение результата

012

RD #100

Загрузка параметров третьего массива

013

WR R1

014

RD #7

015

WR R2

016

CALL M

Вызов подпрограммы

017

WR R7

Сохранение результата

018

ADD R5

Вычисление среднего арифметического

019

ADD R6

020

DIV #3

021

OUT

Вывод результата

022

HLT

Стоп

Подпрограмма M

023

M: RD @R1

Загрузка первого элемента в R3

024

WR R3

025

L2: RD @R1+

Чтение элемента и модификация адреса

026

WR R4

Сравнение и замена, если R3<R4

027

SUB R3

028

JS L1

029

MOV R3,R4

030

L1: JRNZ R2,L2

Цикл

031

RD R3

Чтение результата в Acc

032

RET

Возврат