05.06.2019, 11:04
общий
это ответ
Здравствуйте, luxv99!
Вот Вам программка. Массивы надо разместить по следующим адресам:
5 байт, начиная с40, 4 байта, начиная с 50, и 5 байт, начиная с 60
Результат в регистре OUT
[code lang=asm h=200];Даны три массива чисел. Три массива в памяти заданы начальными адресами и длинами.
;Вычислить и вывести на устройство вывода среднее арифметическое произведения всех элементов
RD #3 ;количество массивов и номеров минимальных значений
WR R4 ;(для подсчета среднего арифметического)
RD #40 ;загрузка начального адреса первого массива
WR R0 ;в регистр R0
RD #5 ;загрузка длины массива в регистр R2
WR R2
CALL PR ;ищем призведение элементов массива
WR R3 ;накапливаем сумму для среднего арифметического
RD #50 ;загрузка начального адреса второго массива
WR R0 ;в регистр R0
RD #4 ;загрузка длины массива в регистр R2
WR R2
CALL PR ;ищем призведение элементов массива
ADD R3 ;накапливаем сумму для среднего арифметического
WR R3
RD #60 ;загрузка начального адреса второго массива
WR R0 ;в регистр R0
RD #5 ;загрузка длины массива в регистр R2
WR R2
CALL PR ;ищем призведение элементов массива
ADD R3 ;накапливаем сумму для среднего арифметического
DIV R4 ;делим на количество
OUT ;выводим среднее арифметическое
HLT ;останов
;ищем произведения массива по адресу в R0, длина в R2
;результат в A
PR:RD #1 ;начальное значение произведения
WR R9 ;будем накапливать в R9
LOOP:RD @R0+ ;читаем очередной элемент в A, R0=R0+1
MUL R9 ;A=A*R9
WR R9 ;сохраним в R9
NEXT:JRNZ R2,LOOP ;по всем элементам массива
RET
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен