Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »
webaristan
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1628
Дата выхода:28.09.2016, 09:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:30 / 11
Вопросов / ответов:1 / 1

Консультация # 189809: Здравствуйте! У меня возникли сложности с таким вопросом: Три массива в памяти заданы начальными адресами и длинами. Вычис- лить и вывести на устройство вывода среднее арифметическое парамет- ров этих массивов.Параметр массивов это номер максимального числа,размер массива n = 10; ниже представил код что я написал,но не могу правильн...

Консультация # 189809:

Здравствуйте! У меня возникли сложности с таким вопросом:

Три массива в памяти заданы начальными адресами и длинами. Вычис-
лить и вывести на устройство вывода среднее арифметическое парамет-
ров этих массивов.Параметр массивов это номер максимального числа,размер массива n = 10;
ниже представил код что я написал,но не могу правильно написать условие выполнение подпрограммы помогите :)

Дата отправки: 23.09.2016, 09:20
Вопрос задал: KORSAJan (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, freeflowmc!
Подробные комментарии в коде smile

Код (Assembler) :: выделить код
;Три массива в памяти заданы начальными адресами и длинами. 
;Вычислить и вывести на устройство вывода среднее арифметическое 
;параметров этих массивов.Параметр массивов это номер максимального числа,размер массива n = 10;
RD #85
WR R1
RD #10
WR R2
CALL M
WR R6 ;сохраним первый индекс максимального
RD #100
WR R1
RD #10
WR R2
CALL M
ADD R6 ;сложим с предыдущим!
WR R6 ;сохраним там же
RD #110
WR R1
RD #10
WR R2
CALL M
ADD R6 ;сложим с суммой первых двух
DIV #3
OUT
HLT
;п/п вычисления индекса максимального элемента
M:MOV R4,R1 ;сохраним адрес массива, надо для вычисления индекса
RD @R1+ ;читаем первого
MOV R0,R1 ;сохраним адрес ЗА первым, как индекс максимального
WR R3 ;здесь будет значение максимального элемента
JRNZ R2,L1 ;вот таким "хитрым"" способом уменьшим счетчик R2 на 1
L1:RD @R1+ ;читаем очередного текущего
WR R7 ;сохраним для будущего
SUB R3 ;проверяем больше ли текущий максимального
JZ L3 ;равного обходим
JS L3 ;меньше - обходим
MOV R0,R1 ;для большего сохраним адрес ЗА значением
RD R7 ;сохраненное значение текущего
WR R3 ;будет новым максимальным
L3: JRNZ R2,L1 ;по всем элементам
RD R0 ;адрес ЗА максимальным
SUB R4 ;отняв сохраненный адрес начала, получим индекс ЗА максимальным (или счет с 1)
SBI #1 ;отняв 1, получим индекс, считая с 0!.
RET ;Если надо считать номер первого, как 1, то предыдущую команду убрать!

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 23.09.2016, 11:44

5
нет комментария
-----
Дата оценки: 26.09.2016, 10:04

Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное