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

//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;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值