Консультация № 198888
11.06.2020, 09:16
0.00 руб.
0 6 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:




Составить программу с подпрограммой, которая считает количество чисел, меньших первого числа массива, в трёх массивах и складывает их результаты.

Программа
RD #40 Первый массив
WR R1
RD #8
WR R2
CALL M Вызов подпрограммы
WR R6 Сохранение результата
RD #50
WR R1 Второй массив
RD #8
WR R2
CALL M Вызов подпрограммы
WR R7 Сохр результата
RD #60 третий массив
WR R1
RD #8
CALL M Вызов подпрограммы
WR R8 сохр результата
ADD R6 Сложение результатов
ADD R7
ADD R8
OUT


HLT




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


M: RD @R1
WR R3 1 элемент
WR R9 кол-во искомых чисел
X2: RD @R1+
SUB R3
JNS X3
RD R9 если очередной элемент массива больше первого, то пропуск
ADD #1 увеличение счетчика искомых чисел
WR R9
X3: RD R2 уменьшение кол-во не просмотренных элементов
SUB #1
WR R2
SUB #0 если не все просмотрены продожлишь
JO X2
RD R9 загрузка в аккумулятор кол-во найденных чисел
RET

Но тут где-то ошибкa. напишите пожалуйста как нужно.

Обсуждение

давно
Посетитель
404186
10
11.06.2020, 09:17
общий
Это comp model если что
давно
Старший Модератор
31795
6196
11.06.2020, 11:42
общий
Адресаты:
1)
Сравниваем:
[code lang=asm]RD #40 Первый массив
WR R1
RD #8
WR R2
CALL M Вызов подпрограммы[/code]
и
[code lang=asm]RD #60 третий массив
WR R1
RD #8
CALL M Вызов подпрограммы[/code]

2)
[code lang=asm]M: RD @R1
WR R3 1 элемент
WR R9 кол-во искомых чисел[/code]
Чему будет равно R9, после выполнения этого кода, и чему он должен быть равен.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404186
10
11.06.2020, 11:54
общий
Адресаты:
ТУТ ОШИБКА В ПРОГРАММЕ Я НЕ ПОНИМАЮ КАК ИСПРАВИТЬ. УЖЕ 6 ЧАСОВ ГОЛОВУ ЛОМАЮ. В Р9 БУДЕТ 1 ЭЛЕМЕНТ
давно
Посетитель
404186
10
11.06.2020, 11:57
общий
11.06.2020, 11:58
Адресаты:
можете мне написать пожалуйста подпрограмму которая из 3 массивов. будет определять кол-во чисел меньше 1 элемента массива и занести их в регистры r1 r2 r3
давно
Старший Модератор
31795
6196
11.06.2020, 12:15
общий
Адресаты:
Сделайте скан СМ-память или выложите первые 100 байт, вместе с массивами.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
12.06.2020, 19:31
общий
это ответ
Здравствуйте, mmaxim0!

Цитата: mmaxim0
Но тут где-то ошибкa.

Ошибка в не правильном копировании примера №4 из книги Жмакина.
[code lang=asm];Программа
RD #40; Первый массив
WR R1
RD #4
WR R2
CALL M; Вызов подпрограммы
WR R5; Сохранение результата
RD #50
WR R1; Второй массив
RD #5
WR R2
CALL M; Вызов подпрограммы
ADD R5
WR R5; Сохр результата
RD #60; третий массив
WR R1
RD #6;
WR R2
CALL M; Вызов подпрограммы
ADD R5; Сложение результатов
OUT
HLT
;Подпрограмма
M:RD #0
WR R4
RD @R1
WR R3; 1 элемент
;WR R9; кол-во искомых чисел
X2: RD @R1+
SUB R3
JNS X3
RD R4; если очередной элемент массива больше первого, то пропуск
ADD #1; увеличение счетчика искомых чисел
WR R4
X3: JRNZ R2,X2
RD R4; загрузка в аккумулятор кол-во найденных чисел
RET[/code]
При таких входных данных:

Дает правильные результаты.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа