69,373
社区成员
发帖
与我相关
我的任务
分享
//传入数字 ,结果是从最左边那个 1 以右边为基础从0开始的索引,如 传 0x110 返回 8 ,如果没有1,返回-1 ;
int BSI_L2R (int num)
{
int ret;
_asm{
mov ecx,num
xor eax,eax
bsr eax,ecx
jnz exitfun
or eax,0FFFFFFFFH
exitfun:
mov ret,eax
}
return ret;
}
.386p
.model flat,stdcall
.code
BSI_L2R proc uses ecx,num
mov ecx,num
xor eax,eax
bsr eax,ecx
jnz @F
or eax,0FFFFFFFFH
@@:
ret
BSI_L2R endp
end
extern "C" int __stdcall BSI_L2R(int num);
int pos = BSI_L2R(0x110);