Проверка на чет/нечет? - Assembler
Формулировка задачи:
Как проверить число 5 на его четность/нечетность?
К примеру:
в регистр eax засовываю число 5(нечет)
т.е
xor eax,eax
mov eax,5 - как узнать чет это число или нечет?
Раньше думал мол можно так:
сравниваю его
cmp eax,eax
и проверяю на нечетность т.е
jnp result
;else
jmp start
но оно работает не так :/ (проверяет на нечетность число ЕДИНИЧНЫХ бит.)
Решение задачи: «Проверка на чет/нечет?»
textual
Листинг программы
mov eax,5 test eax,1 jz even odd: ;действие, если число нечетное jmp exit even: ;действие, если число четное
Объяснение кода листинга программы
mov eax,5- в переменную EAX записывается число 5test eax,1- в EAX происходит побитовое И с 1, результат сохраняется в CF (флаг результата)jz even- если CF=1 (то есть результат побитового И с 1 равен 0), то выполняется переход на метку evenodd:- это метка, которая будет выполнена, если число нечетноеjmp exit- происходит переход на метку exiteven:- это метка, которая будет выполнена, если число четное