获得CPU的信息

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

/*

* 用汇编获得CPU信息

eax=0 调用cpuid

ebx,edx,ecx 返回cpu的oem信息

eax=0 调用cpuid

eax 的8--11位表明是几86

3--------386

4--------486

5--------Pentium

6--------Pentium pro Pentium II

2--------Dual Processors

检测是否是p6购架

eax=1 cpuid

如果al=1,是Pentium pro Pentium II

amd cpu

eax = 80000001 cpuid

---------------------

eax=51h AMD k5

eax =66h k6

*/

#include<iostream>

#include<conio.h>

#pragma hdrstop

//#pragma inline

//#pragma argsused

using namespace std;

int main()

{

char OemStr[13];

int eaxValue,ebxValue,ecxValue,edxValue;

_asm

{

mov eax,0

cpuid

mov DWORD PTR OemStr,ebx

mov DWORD PTR OemStr+4,edx

mov DWORD PTR OemStr+8,ecx

mov BYTE PTR OemStr+12,0

}

cout<<"This cpu's OEM string is: "<<OemStr<<endl;

_asm

{

mov eax,1

cpuid

mov eaxValue,eax

mov ebxValue,ebx

mov ecxValue,ecx

mov edxValue,edx

}

if(edxValue & 0x800000 )

{

cout<<"This is MMX CPU"<<endl;

}

else

{

cout<<"Not MMX Support"<<endl;

}

int cpuFamily =(0xf00 & eaxValue) >>8;

cout<<"CPU Family is:"<<cpuFamily<<endl;

int alvalue;

_asm

{

mov eax,2

CPUID

mov byte ptr alvalue,al

}

if(alvalue==1)

{

cout<<"Pentium pro or Pentium II Found"<<endl;

}

getch();

return 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有