assembly check if number is even

前端 未结 3 1654
小蘑菇
小蘑菇 2020-12-19 17:16

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         


        
3条回答
  •  感动是毒
    2020-12-19 17:53

    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).

提交回复
热议问题