Проверка на чет/нечет? - 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:
- это метка, которая будет выполнена, если число четное
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д