mov edx,[]
and edx,80000001h
jns short xx
dec edx
or edx,0FFFFFFFEh
inc edx
xx:
...
先送数到某个寄存器中,位运算保存寄存器的首位和末位(此时可能的值为-1,0,1),若为负数,jns不跳转。正数或者0跳转。
dec edx 这里对edx减1操作,结果必然为0x80000000(或者0x7fffffff,当edx为偶数时)
or edx,0FFFFFFFEh 此时的edx值有2种可能0xFFFFFFFE(另一种是edx为偶数时,其值为0xfffffff)
inc edx ; 对edx加1后,变为0xFFFFFFFF为-1(或者为0,当edx为偶数时)