Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2011, 07:46   #1
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию асм (с%о)

как проверить число на четность в асме?
какой оператор деления по модулю
Ислам вне форума Ответить с цитированием
Старый 21.05.2011, 08:15   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

всё проще. Если число обычное положительное целое, тогда достаточно проверить младший бит числа. Если там - 1 - значит число НЕ ЧЁТНОЕ, если 0 - чётное.

выделить бит можно через
AND Число, 1
ПереходЕслиНОль - число чётное
иначе число нечётное
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.05.2011, 08:22   #3
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию

Цитата:
число обычное положительное
а если не известно? числа вводятся пользователем...

иеще кусочек можно к-ой-нибудь для наглядности?

Последний раз редактировалось Ислам; 21.05.2011 в 08:29.
Ислам вне форума Ответить с цитированием
Старый 21.05.2011, 08:42   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> кусочек можно к-ой-нибудь для наглядности?

Код:
and eax, 1
на выходе EAX==1, если число нечётное, и ==0, если чётное
работает для положительных и отрицательных, записанных в дополнительном коде

> какой оператор деления по модулю

команда div сохраняет остаток от деления в регистре (E)DX
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 21.05.2011, 08:54   #5
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию

Цитата:
_asm
{
lea esi,mas
mov edi,0
mov x,0

k1:
mov eax,[esi+4*edi]
and [esi+4*edi],0
je k3
and [esi+4*edi],1
jmp k2
jmp k

k2:
inc edi
jmp k1
jmp k
k3:
inc x
inc edi
jmp k2
}
k: printf("\n\n_asm: Кол-во четных чисел=%d",x);

Исходный массив={1,2,3,4,5,6,7,8,9,10}

Выкидывает и говорит: "ЭВМ.exe привело в действие точку остановка" что это значит? И еще,код правильный?
Ислам вне форума Ответить с цитированием
Старый 21.05.2011, 09:03   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> код правильный?

1) где условие выхода из цикла?

2) and [esi+4*edi],0

это типа проверка на чётность? смотрите, попадёте в "шедевры форума" )

3) это что за ерунда:

jmp k1
jmp k
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 21.05.2011 в 09:11.
veniside вне форума Ответить с цитированием
Старый 21.05.2011, 09:09   #7
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию

Цитата:
где условие выхода из цикла?
я это понял уже..но не пойму как это записать...

Цитата:
смотрите, попадёте в "шедевры форума"
=)))))
Ислам вне форума Ответить с цитированием
Старый 21.05.2011, 09:11   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

весь код можно упростить:

Код:
lea esi, mas
sub edx, edx
mov ecx, 10

loophere:
mov eax, [esi]
and eax, 1
add edx, eax
add esi, 4
loop loophere
на выходе EDX содержит количество нечётных элементов, соответсвенно 10 - EDХ = количество чётных.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линк c++ и асм Farrel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 12.05.2011 16:19
асм под линукс pufystyj Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 14.02.2011 10:22
Работа с сопроцессором асм. vlad_zasranec Помощь студентам 5 20.12.2010 07:46
Перевод из асм в с++ Flay Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 18.09.2010 21:05