MCA*_*MCA 2 c++ x86 assembly visual-studio-2010
我正在使用Visual Studio 2010专业版,我刚刚在调试模式中检查过BSF无法正常工作我尝试了很多组合,但没有一个能够工作!
__asm
{
mov ebx, 0ffffffh;
bsf ecx, ebx;
};
Run Code Online (Sandbox Code Playgroud)
上面的代码至少给了我一些结果,但我在ecx寄存器上得到0(我使用64位win7,应用程序是32位)
以下是英特尔关于BSF的说法:
在源操作数(第二个操作数)中搜索最低有效位设置位(1位).如果找到最低有效1位,则其位索引存储在目标操作数(第一个操作数)中.源操作数可以是寄存器或存储器位置; 目标操作数是一个寄存器.位索引是源操作数的位0的无符号偏移量.如果源操作数的内容为0,则目标操作数的内容未定义.
有人有什么想法吗?谢谢你们...
pax*_*blo 15
您将被ecx设置为0,因为值中最低有效(最少?)的1位0xffffff 是位0.二进制数是0000 .... 1111 1111 1111 1111 1111 1111.
换句话说,您看到的结果是正确的.
如果你试试它0xfc(例如二进制1111 1100),你应该得到2.这是因为最低有效位在二进制数的最右边位置:
Hex F C
Binary 1111 1100
Bit# 7654 3210
^
|
+-- rightmost (least significant) 1-bit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |