Вопрос № 116060: Здравствуйте, господа эксперты. Помогите пожалуста "чайнику" (мне) разобраться кое с чем. Ассемблер изучаю недавно и впервые в своей жизни. Надо вычислить сумму элементов имеющих нечетные значения для одномерного массива, состоящего из 10 ц...
Вопрос № 116.060
Здравствуйте, господа эксперты. Помогите пожалуста "чайнику" (мне) разобраться кое с чем. Ассемблер изучаю недавно и впервые в своей жизни. Надо вычислить сумму элементов имеющих нечетные значения для одномерного массива, состоящего из 10 целых чисел в диапазоне от -10...10. Даже не знаю с чего начать написание алгоритма. Буду признательна за любую помощь и информацию. Спасибо.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Другова Елена Аркадьевна!
Алгоритм такой:
mov cx,10 ;десять элементов
mov si,offset massiv ;настраиваемся на массив
cld ;регистр SI будет увеличиватся
xor bx,bx ;в этом регистре будет сумма
LoopSumma: ;метка цикла суммирования
lodsb ;читаем очередной элемент в регистр AL
push ax ;сохраняем в стеке регистр АХ
shr al,1 ;сдвигаем вправо на один бит, в CF будет младший бит, для нечетного числа он будет равен 1
pop ax ;востанавливаем регистр
jnc noSumma ;проверяем флаг CF,
add bl,al ;суммируем нечетные числа
noSumma: loop LoopSumma ;цикл суммирования
ps:вопросы задавайте в мини-форум
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал) Украина, Киев Тел.: +380958380164 Адрес: Украина г.Киев ---- Ответ отправлен: 26.12.2007, 17:57 Оценка за ответ: 5