Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Программирование. Ассемблер. Работа с массивами при помощи процедур

Есть такое задание. Вычислите среднее значение элементов массива в диапазоне [a; b]. В конце программы, когда необходимо разделить сумму элементов на их общее значение, команда "idiv" не работает. Вероятно, это связано с тем, что я пытаюсь получить доступ к значению по адресу в регистре "edx". Но я не знаю, как это можно сделать по-другому. Все бы ничего, но обязательное словие - использовать косвенную базовую (регистровую) индексную адресацию

; Подсчет среднего арифметического
@4:
add [esi], eax; Записывается последнее число из диапазона
mov eax, 1; Добавление последнего
add [edx], eax;элемента
mov eax, [esi]; Обмен
cdq; Расширение
idiv [edx]; Сумма элементов делится на их общее количество
mov [esi], eax; Запись конечного результата в Sr
pop edi ; Восстановление значения регистров
pop eax ; edi и eax из стека
ret ; Возврат из процедуры

По дате
По рейтингу
Аватар пользователя
Новичок

по идее должно работать, такой опкод в процессоре есть
IDIV BYTE PTR DS:[EDX]

Аватар пользователя
Мудрец

  Я, конечно, очень извиняюсь, но у меня не ответ, а вопрос к вопросу: КАК ЖЕ ВЫЧИСЛИТЬ СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ, НЕ ОБРАЩАЯСЬ К СОПРОЦЕССОРУ ???