1. Заголовок или название темы должно быть информативным 2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора. 5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM! 6. Проверяйте программы перед тем, как выложить их на форум!!
Массивы..., Найти и вывести индекс первого четного элемента массива, кратный числ
Тут не сложно ведь, идешь по массиву, делишь на 6 и сравниваешь остаток с нулем.. Как только получишь равенство, вычисляешь индекс исходя из смещения.. Но это если я все правильно поняла, потому что "четный кратный 6" немного смущает.. разве может быть еще и "нечетный кратный шести" ?
Тут не сложно ведь, идешь по массиву, делишь на 6 и сравниваешь остаток с нулем.. Как только получишь равенство, вычисляешь индекс исходя из смещения.. Но это если я все правильно поняла, потому что "четный кратный 6" немного смущает.. разве может быть еще и "нечетный кратный шести" ?
По логике я понимаю как это сделать, а вот как это написать в коде, я не знаю
div DIVISOR ; делим на 6 test ah, 0fh ; проверяем остаток на 0 jz found ; ноль? Значит, нашли то, что надо
inc esi dec ecx .endw
; а вот если мы здесь, значит, нет такого элемента, ; который делится на 6 нацело. Выведи соотв. сообщение ; самостоятельно, и выходи из процедуры
found: print chr$('first index = ') xor eax, eax ; вычисляем индекс, для чего от текущего mov eax, esi ; значения esi отнимаем смещение начала массива sub eax, edi print str$ (eax) ret main EndP end start
Говорю сразу: программа проверена, отработала, никаких ошибок или предупреждений не выдает, выводит правильный ответ. Это на случай, если тебе тоже захочется что-нибудь поменять, а потом заявить, что не сработало...