I have homework to write assembly code for checking if number is odd or even. I have this code
code_seg SEGMENT
ASSUME cs:code_seg, ds:data_seg;
mov
A (small) integer can be expressed in binary as b3 b2 b1 b0:
b3 * 2^3 + b2 * 2^2 + b1 * 2^1 + b0 * 2^0 =
b3 * 8 + b2 * 4 + b1 * 2 + b0 * 1
where all bn values are either zero or one.
The only way to get an odd number is if the least significant bit (b0) is 1.
AND’ing a value with 1 (in binary, 0001) masks off all bits except the least significant bit (b0) ...
b3 b2 b1 b0
binary-AND 0 0 0 1
-- -- -- --
0 0 0 b0
... giving a zero value if the least significant bit was zero (an even number), or a non-zero value (specifically 1) if the least significant bit was one (an odd number).