可以给出代码吗?
另外,取Intel CPU的序列号与CPU的类型、功能特性有没有关系?
对于不太旧的CPU,会不会出现有的能取,有的不能取的问题?
谢谢!
好象只有PIII有唯一号,
而且这个功能能被BOIS禁止
PII肯定没,P4应该也没
在保护模式下使用CPUID
486以上,CPUID.
下面的可以取得CPU家族,比如是INTEL的,EBX:EDX:ECX返回GenuineIntel
xor eax,eax
cpuid
下面的可以取得CPU序列号的高32位,如果edx低18位是1说明该CPU支持序列号。
mov eax,01h
xor edx,edx
cpuid
下面可以取得CPU序列号的低64位,在EDX:ECX
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
好象只有Piii支持序列号,我在P4上试过,不支持
好象只有PIII有序列号
网上的代码,测试了一下,还成。
#include <stdio.h>
#include <conio.h>
void main(int argc,char **argv)
{
unsigned long s1,s2;
unsigned char vendor_id[]="------------";
asm xor eax,eax
asm cpuid
asm mov dword ptr vendor_id,ebx
asm mov dword ptr vendor_id[+4],edx
asm mov dword ptr vendor_id[+8],ecx
printf("%s-",vendor_id);
asm mov eax,01h
asm xor edx,edx
asm cpuid
asm mov s1,edx
asm mov s2,eax
printf("%08X\n%08X-",s1,s2);
asm mov eax,03h
asm xor ecx,ecx
asm xor edx,edx
asm cpuid
asm mov s1,edx
asm mov s2,ecx
printf("%08X-%08X\n",s1,s2);
}
推荐看看AMD CPU的资料上所说,我手上没有Intel的白皮书。http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/20734.pdf