失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何读取电脑CPU序列号 主板BIOS 硬盘的序列号

如何读取电脑CPU序列号 主板BIOS 硬盘的序列号

时间:2021-12-04 19:16:39

相关推荐

如何读取电脑CPU序列号 主板BIOS 硬盘的序列号

如何读取电脑CPU序列号、主板BIOS、硬盘的序列号

(-09-11 09:01:41)转载▼

原讨论链接:/expert/topicview1.asp?id=2740166

关注

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

如何读取硬盘的序列号

----硬盘的序列号只能采用对硬盘控制器直接操作的方式进行读取,也就是说只能采用

CPU的I/O指令操作硬盘控制器,读取的方法如下面的C语言程序所示:

staticintWaitIde()

{

intal;

while((al=inp(0x1F7))>=0x80);

returnal;

}

staticvoidReadIDE()

{

intal;

inti;

WORDpw[256];

WaitIde();

outp(0x1F6,0xA0);

al=WaitIde();

if((al&0x50)!=0x50)return;

outp(0x1F6,0xA0);

outp(0x1F7,0xEC);

al=WaitIde();

if((al&0x58)!=0x58)return;

for(i=0;i<256;i++)

pw[i]=inpw(0x1F0);

}

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

怎样用程序取得CPU信息

用CPUID令(码:0FHA2H,持CPUID令,有emit了)下CPU

Intel486的CPU,

CyrixM1的CPU,

AMDAm486的CPU

----(1)取CPUOEM串,断CPU

----让EAX=0,用CPUID

----Inel的CPU回:

EBX:756E6547H'Genu'

EDX:49656E69H'ineI'

ECX:6C65746EH'ntel'

EBX,EDX,ECX成"GenuineIntel",的Intel。

Cyrix的CPU回:

EBX:43797269H

EDX:78496E73H

ECX:74656164H

"CyrixInstead","Cyrix替"。

AMD的CPU回:

EBX:41757468H

EDX:656E7469H

ECX:63414D44H

"AuthenticAMD",的AMD。

----在Windows98中,击"脑",择"性-规"见CPUOEM串。

----(2)CPU几86,持MMX

----让EAX=1,用CPUID

----EAX8到11几86

3-386

4-i486

5-Pentium

6-PentiumProPentiumII

2-DualProcessors

EDX第0位:无FPU

----EDX第23位:CPU持IAMMX,那57令,吧,看Windows的"令,闭"吧。

----(3)否P6

----让EAX=1,用CPUID

----果AL=1,是PentiumPro或PentiumII

----(4)测AMD的CPU

----让EAX=80000001H,用CPUID

----果EAX=51H,是AMDK5

----果EAX=66H,是K6

----K7志,到K7了。

----EDX第0位:有FPU(没FPU的K5,K6?)

----EDX第23位,CPU持MMX,

----下:是C++Builder序,的"心"息。于DLL中,便使VB道"心"息。

//------CPUIDInstructionDemoProgram------------

#include<conio.h>

#include<iostream.h>

#pragmahdrstop

//------------------------------------------------

#pragmainline

#pragmaargsused

intmain(intargc,char**argv)

{

charOEMString[13];

intiEAXValue,iEBXValue,iECXValue,iEDXValue;

_asm{

moveax,0

cpuid

movDWORDPTROEMString,ebx

movDWORDPTROEMString+4,edx

movDWORDPTROEMString+8,ecx

movBYTEPTROEMString+12,0

}

cout<<"ThisCPU'sOEMStringis:"<<OEMString<<endl;

_asm{

moveax,1

cpuid

moviEAXValue,eax

moviEBXValue,ebx

moviECXValue,ecx

moviEDXValue,edx

}

if(iEDXValue&0x800000)

cout<<"ThisisMMXCPU"<<endl;

else

cout<<"NoneMMXSupport."<<endl;

intiCPUFamily=(0xf00&iEAXValue)>>8;

cout<<"CPUFamilyis:"<<iCPUFamily<<endl;

_asm{

moveax,2

CPUID

}

if(_AL==1)

cout<<"PentiumProorPentiumIIFound";

getch();

return0;

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

char szCPUID[129]={NULL};

char szTmp[33]={NULL};

unsignedlongs1=0,

s2=0;

_asm

{

moveax,01h

xoredx,edx

cpuid

movs1,edx

movs2,eax

}

sprintf(szTmp,"%08X%08X",s1,s2);

strcpy(szCPUID,szTmp);

_asm

{

moveax,03h

xorecx,ecx

xoredx,edx

cpuid

movs1,edx

movs2,ecx

}

sprintf(szTmp,"%08X%08X",s1,s2);

strcat(szCPUID,szTmp);

strcpy(CpuId,szCPUID);

returnCpuId;

///

//AMI的序列号地址在0x000FF478

//Award的序列号地址在0x000FEC71

//而Phoenix的序列号不太明确,可能是0x000f6577、0x000f7196、0x000f7550中的一个,

PCHARbname,bcopy,bdat

来自/s/blog_638ea1960100knt9.html

如果觉得《如何读取电脑CPU序列号 主板BIOS 硬盘的序列号》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。