¡¡ÀûÓÃÀûÓÃCPUID »ã±àÖ¸Á»úÆ÷Â룺0FH A2H, Èç¹ûÄãµÄ±àÒëÆ÷²»Ö§³ÖCPUID Ö¸Áî
£¬Ö»ÓÐemit »úÆ÷ÂëÁË£©
£¬ ¸ÃÖ¸Áî¿ÉÒÔ±»ÈçÏÂCPUʶ±ð£º
¡¡¡¡Intel 486 ÒÔÉϵÄCPU,
¡¡¡¡Cyrix M1 ÒÔÉϵÄCPU,
¡¡¡¡AMD Am486 ÒÔÉϵÄCPU
¡¡¡
¡£¨1£© È¡CPU OEM ×Ö·û´®£¬ ÅжÏ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ÖУ¬ÓÃÓÒ¼üµ¥»÷"ÎҵĵçÄÔ"£¬Ñ¡Ôñ" ÊôÐÔ- ³£¹æ"ÔÚ¼ÆËã»úÃèÊö ´¦¾Í¿É¿´¼ûCPU OEM ×Ö·û´®¡£
¡¡¡¡£¨2£©CPU µ½µ×ÊǼ¸86, ÊÇ·ñÖ§³ÖMMX
¡¡¡¡ÏÈÈÃEAX=1£¬ÔÙµ÷ÓÃCPUID
¡¡¡¡EAXµÄ8µ½11λ¾Í±íÃ÷ÊǼ¸86
¡¡¡¡3 - 386
¡¡¡¡4 - i486
¡¡¡¡5 - Pentium
¡¡¡¡6 - Pentium Pro Pentium II
¡¡¡¡2 - Dual Processors
¡¡¡¡EDX µÄµÚ0λ£ºÓÐÎÞFPU
¡¡¡¡EDXµÄµÚ23λ£ºCPUÊÇ·ñÖ§³ÖIA MMX,ºÜÖØÒª°¡ £¡Èç¹ûÄãÏëÓÃÄÇ57ÌõÐÂÔöµÄÖ¸ ÁÏȼì²éÕâһλ°É£¬·ñÔò¾ÍµÈ×Å¿´Windows µÄ"¸Ã³ÌÐòÖ´ÐÐÁË·Ç·¨Ö¸Á½«±»¹Ø ±Õ" °É¡£
¡¡¡¡£¨3£© רÃżì²âÊÇ·ñP6¼Ü¹¹
¡¡¡¡ÏÈÈÃEAX=1£¬ÔÙµ÷ÓÃCPUID
¡¡¡¡Èç¹ûAL=1,¾ÍÊÇPentium Pro »òPentium II
¡¡¡¡£¨4£© רÃżì²âAMDµÄCPUÐÅÏ¢
¡¡¡¡ÏÈÈÃEAX=80000001H£¬ÔÙµ÷ÓÃCPUID
¡¡¡¡Èç¹ûEAX=51H, ÊÇAMD K5
¡¡¡¡Èç ¹ûEAX=66H, ÊÇK6
¡¡¡¡EDXµÚ0 λ£º ÊÇ·ñÓÐFPU£¨ ¶àÓàµÄ £¡ËÓùýûFPUµÄK5,K6?£©
¡¡¡¡EDX µÚ23 룬CPUÊÇ·ñÖ§³ÖMMX,
¡¡¡¡³ÌÐòÈçÏ£º
¡¡¡¡//------CPUID Instruction Demo Program------------
¡¡¡¡#include
¡¡¡¡#include
¡¡¡¡#pragma hdrstop
¡¡¡¡//------------------------------------------------
¡¡¡¡#pragma inline
¡¡¡¡#pragma argsused
¡¡¡¡int main£¨int argc, char **argv£©
¡¡¡¡{
¡¡¡¡char OEMString[13];
¡¡¡¡int iEAXValue,iEBXValue,iECXValue,iEDXValue;
¡¡¡¡_asm {
¡¡¡¡mov eax,0
¡¡¡¡cpuid
¡¡¡¡mov DWORD PTR OEMString,ebx
¡¡¡¡mov DWORD PTR OEMString+4,edx
¡¡¡¡mov DWORD PTR OEMString+8,ecx
¡¡¡¡mov BYTE PTR OEMString+12,0
¡¡¡¡}
¡¡¡¡cout< < "This CPU 's OEM String is:"< < OEMString< < endl;
¡¡¡¡_asm {
¡¡¡¡mov eax,1
¡¡¡¡cpuid
¡¡¡¡mov iEAXValue,eax
¡¡¡¡mov iEBXValue,ebx
¡¡¡¡mov iECXValue,ecx
¡¡¡¡mov iEDXValue,edx
¡¡¡¡}
¡¡¡¡if£¨iEDXValue&0x800000£©
¡¡¡¡cout < < "This is MMX CPU"< < endl;
¡¡¡¡else
¡¡¡¡cout < < "None MMX Support."< < endl;
¡¡¡¡int iCPUFamily=£¨0xf00 & iEAXValue£© > >8;
¡¡¡¡cout < < "CPU Family is:"< < iCPUFamily< < endl;
¡¡¡¡_asm{
¡¡¡¡mov eax,2
¡¡¡¡CPUID
¡¡¡¡}
¡¡¡¡if£¨_AL==1£©
¡¡¡¡cout < < "Pentium Pro or Pentium II Found";
¡¡¡¡getch£¨£©£»
¡¡¡¡return 0;
¡¡¡¡}