cpuid 指令只获取了CPU序列号一部分
WORD CPUID[6] = {0};
DWORD deax,debx,decx,dedx;
_asm{
mov eax,1
cpuid
mov deax,eax
}
memcpy(CPUID,&deax,4);//这时eax的值是正确的
_asm{
mov eax,3
cpuid
mov decx,ecx
mov dedx,edx//这里执行后ecx,edx均为0
}
memcpy(CPUID + 4,&decx,4);
memcpy(CPUID + 8,&dedx,4);
大家帮帮忙,我只是想获取CPU的序列号
[解决办法]
用eax=3的方法取序列号,仅用于Pentium III处理器。
处理器序列号(PSN)在从Pentium 4之后的处理器上不再支持。
在eax=1的情况下执行cpuid指令,可以在EDX寄存器的bit 18检测处理器是否支持序列号功能。
[解决办法]
上AMD下载手册啊,里面会有很详细的说明的了