您的位置:首页 > 其它

【语言-汇编】 判断处理器 (操作系统的)位数

2016-05-26 11:05 357 查看
//32位系统示例  依次左移
//10000000000000000000000000000001 80000001          -1
//10000000000000000000000000000010 80000002          -2
//10000000000000000000000000000100 80000004          -4
//10000000000000000000000000001000 80000008          -8
//10000000000000000000000000010000 80000010         -16
//10000000000000000000000000100000 80000020         -32
//10000000000000000000000001000000 80000040         -64
//10000000000000000000000010000000 80000080        -128
//10000000000000000000000100000000 80000100        -256
//10000000000000000000001000000000 80000200        -512
//10000000000000000000010000000000 80000400       -1024
//10000000000000000000100000000000 80000800       -2048
//10000000000000000001000000000000 80001000       -4096
//10000000000000000010000000000000 80002000       -8192
//10000000000000000100000000000000 80004000      -16384
//10000000000000001000000000000000 80008000      -32768
//10000000000000010000000000000000 80010000      -65536
//10000000000000100000000000000000 80020000     -131072
//10000000000001000000000000000000 80040000     -262144
//10000000000010000000000000000000 80080000     -524288
//10000000000100000000000000000000 80100000    -1048576
//10000000001000000000000000000000 80200000    -2097152
//10000000010000000000000000000000 80400000    -4194304
//10000000100000000000000000000000 80800000    -8388608
//10000001000000000000000000000000 81000000   -16777216
//10000010000000000000000000000000 82000000   -33554432
//10000100000000000000000000000000 84000000   -67108864
//10001000000000000000000000000000 88000000  -134217728
//10010000000000000000000000000000 90000000  -268435456
//10100000000000000000000000000000 A0000000  -536870912
//11000000000000000000000000000000 C0000000 -1073741824
//10000000000000000000000000000000 80000000 -2147483648
//00000000000000000000000000000000 00000000 0
int GetSystemBit()
{
int i=0;
int x=0;
double a=0;
__asm  //将-1 连续左移直到为 0
{
mov eax,-1; //将-1赋值给eax
start:
cmp eax,0;  //判断 eax - 0 ?= 0
je end;   //以上两个值相等则跳转end
shl eax,1;  //左移一位

mov ecx,i;  //将i赋值给ecx
inc ecx;	//将ecx增加1
mov i,ecx;  //将ecx赋值给i
jmp start;  //跳转到  start
end:
mov x,eax;
}
CString str;
str.Format(_T("\n%d  %d Bits System\n"),i,x);
OutputDebugString(str);
return i;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: