Консультация № 189362
14.05.2016, 14:18
0.00 руб.
1 12 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Здравствуйте, помогите пожалуйста!

Выполнить следующий пример.
Изучить алгоритм работы программы вычисления суммы элементов массива чисел С1, С2,..., Сn. Исходными данными в этой задаче являются:
- п — количество суммируемых чисел
- С1, С2, .., Сп — массив суммируемых чисел.
Заметим, что должно выполняться условие п > 1, т. к. алгоритм предусматривает, по крайней мере, одно суммирование. Кроме того, предполагается, что суммируемые числа записаны в ОЗУ подряд, т. е. в ячейки памяти с последовательными адресами. Результатом является сумма S.
Рассмотрим программу для вычисления суммы со следующими конкретными параметрами:
- число элементов массива— 10;
- элементы массива расположены в ячейках ОЗУ по адресам 040, 041, 042,..., 049.
Используемые для решения задачи промежуточные переменные имеют следующий смысл:
- Аi — адрес числа Сi, i {1, 2,..., 10};
- ОЗУ(Ai) — число по адресу Ai,
- S —текущая сумма;
к — счетчик цикла, определяющий число повторений.
Распределение памяти таково. Программу разместим в ячейках ОЗУ, начиная с адреса 000, примерная оценка объема программы — 20 команд; промежуточные переменные:
- Аi — в ячейке ОЗУ с адресом 030;
- к — по адресу 031;
- S — по адресу 032.
Граф-схема алгоритма (ГСА) программы, показана на рис. 2, текст программы с комментариями приведен в табл. 3.
4. Разработатhttps://rfpro.ru/upload/10140ь программу определения заданной характеристики последовательности чисел C1, С2,..., Сп , n <=10.
4.1.ВЫЧИСЛИТЬ ПРОИЗВЕДЕНИЕ ВСЕХ ЧИСЕЛ ПОСЛЕДОВАТЕЛЬНОСТИ
4.2. Записать программу в мнемокодах, введя ее в поле окна Текст программы.
4.3. Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов.
4.4. Загрузить в ОЗУ необходимые константы и исходные данные.
4.5. Отладить программу.
данные в прикл. файле.
Прикрепленные файлы:
fe8fd704b5e1eee4eae22074e3a46cd9571bc848.docx

Обсуждение

давно
Посетитель
7438
7205
14.05.2016, 15:41
общий
Адресаты:
Не сказали самого главного: CompModel
Только не понял, в доке есть программа, что требуется-то?
Не можете набрать ее в виде текстового файла да загрузить в CompModel?
Объясните конкретно, в чем требуется помощь?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400318
25
14.05.2016, 16:37
общий
14.05.2016, 16:40
CompModel - да
на сколько я понимаю, из примера, код этот нужно написать с условием вычислить произведение всех чисел последовательности. Я сама не сильна в этом программе.
Об авторе:
С уважением, Леся!
давно
Посетитель
7438
7205
14.05.2016, 16:41
общий
Адресаты:
Ладушки, по свободе сделаю. Посмотрю, что там есть, что надо подправить...
Да и пару слов скажу что и как оно работает...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400318
25
14.05.2016, 16:43
общий
Хорошо, спасибо большое, буду ждать.
Об авторе:
С уважением, Леся!
давно
Посетитель
7438
7205
14.05.2016, 20:53
общий
это ответ
Здравствуйте, lileay!
Вот подправленная программа, умножающая числа массива, начиная с адреса 040
Запишите, начиная с адреса 040 десять двоек и получите 210 = 1024
Имейте в виду, что задавать большие числа не стоит, чтобы не было переполнения.
Будут вопросы - милости просим в мини-форум
[code lang=asm h=200]
RD #40 ;Загрузка начального адреса массива 040 в ячейку 030
WR 30
RD #10 ;Загрузка параметра цикла к = 10 в ячейку 031
WR 31
RD #1 ;Загрузка начального значения произведения S = 1 в ячейку 032
WR 32
Ml:RD @30 ;получение очередного элемента по адресу из ячейки 30
MUL 32 ;Умножение очередного элемента массива на текущее произведение
WR 32 ;сохранение его там же
RD 30 ;Модификация текущего адреса массива (переход к следующему адресу)
ADI #1
WR 30
RD 31 ;Уменьшение счетчика (параметра цикла) на 1
SBI #1
WR 31
JNZ Ml ;Проверка параметра цикла и переход при к 0
RD 32 ;Вывод результата
OUT
HLT ;Стоп
[/code]
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400318
25
14.05.2016, 23:44
общий
спасибо большое, но у меня еще вопрос (ы):
начиная с адреса 040 в моем понятии, это когда точка останов. начинает прописывать с адреса 040, а как это понимать?
Об авторе:
С уважением, Леся!
давно
Посетитель
7438
7205
15.05.2016, 00:10
общий
Адресаты:
Витееватый у Вас вопрос
Попробую объяснить...
Программа так написана, что ожидает, что данные находятся по адресу 040 (первые две команды и команда на строке 7)
Поэтому их там и надо размещать.
Данные размещаются за программой, которая заканчивается раньше этого адреса.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400318
25
15.05.2016, 00:25
общий
т.е ожидает что начнется с адреса 040, но работать будет с адреса 000?!!
Об авторе:
С уважением, Леся!
давно
Посетитель
7438
7205
15.05.2016, 00:35
общий
Адресаты:
Сама программа работает с адреса 0
А данные должны быть размещены с адреса 40
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400318
25
15.05.2016, 00:41
общий
спс) вы уж извините, если для вас мои вопросы кажутся бестолковыми, я только разбираюсь с программой, мне ни кто ни чего раньше не объяснял, разбираюсь по ходу действий.
Об авторе:
С уважением, Леся!
давно
Посетитель
400318
25
15.05.2016, 00:42
общий
еще вопросов у меня будет много)
Об авторе:
С уважением, Леся!
давно
Посетитель
7438
7205
15.05.2016, 00:51
общий
Адресаты:
Мне нравится Ваше желание разобраться...
Я полностью в Вашем распоряжении...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа