首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

cpuid 指令只获取了CPU序列号一部分,该怎么解决

2013-01-26 
cpuid 指令只获取了CPU序列号一部分WORD CPUID[6] {0}DWORD deax,debx,decx,dedx_asm{mov eax,1cpuidm

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下载手册啊,里面会有很详细的说明的了

热点排行