Определить среднее значение элементов массива - Assembler (224373)
Формулировка задачи:
Определить среднее значение элементов массива А(I) и В(I). Определение среднего значения оформить в виде подпрограммы.I= 1,2,..,10.
Только начинаю изучение assembler'a, может кто написать примерный код, чтобы я имел примерное представление с чего начать в данной задаче Заранее спасибо
Решение задачи: «Определить среднее значение элементов массива»
textual
Листинг программы
mov esi,mas ; адрес массива mov ecx,mas_siz ; число элементов массива call naprimer ; подпрограмма подсчёта proc naprimer ; подпрограмма cld ; направление lodsb ; первый элемент mov ah,al ; сам себе среднее dec ecx ; счётчик минус один @@: ; начало цикла lodsb ; очередной элемент add ah,al ; сложить со средним rcr ; поделить пополам loop @r ; проверить счётчик ret endp
Объяснение кода листинга программы
- Вначале, в основной программе, инициализируются две переменные: esi и ecx.
- Переменная esi содержит адрес массива, а переменная ecx содержит количество элементов в массиве (его размер).
- Затем вызывается подпрограмма naprimer, которая будет вычислять среднее значение.
- В подпрограмме naprimer первым делом устанавливается направление выполнения команд (cld).
- Затем происходит загрузка первого элемента массива в регистр ah.
- Вторым шагом значение регистра ah копируется в регистр al.
- Делается уменьшение счётчика на единицу (dec ecx).
- Далее происходит загрузка очередного элемента массива в регистр ah.
- Значение регистра ah добавляется к значению регистра al.
- Происходит деление полученной суммы пополам (rcr).
- Затем проверяется счётчик (loop @r). Если он не равен нулю, то выполнение команд в подпрограмме продолжается.
- В основной программе после вызова подпрограммы naprimer, в переменной al будет храниться среднее значение элементов массива.