当前位置: 代码迷 >> 汇编语言 >> cpuid 授命只获取了CPU序列号一部分
  详细解决方案

cpuid 授命只获取了CPU序列号一部分

热度:5663   发布时间:2013-02-26 00:00:00.0
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下载手册啊,里面会有很详细的说明的了
------其他解决方案--------------------------------------------------------
引用:
用eax=3的方法取序列号,仅用于Pentium III处理器。
处理器序列号(PSN)在从Pentium 4之后的处理器上不再支持。

在eax=1的情况下执行cpuid指令,可以在EDX寄存器的bit 18检测处理器是否支持序列号功能。

我这是AMD的CPU,请问如何获取序列号呀
------其他解决方案--------------------------------------------------------
AMD的处理器,不知道。你咋不早说。