⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpuid.pas

📁 参照上兴、鸽子等源码编写编写出来的。 编译环境:Delphi7+SP+DP+indy9等控件
💻 PAS
字号:
Unit CPUID;

{***********************************************
*      这个模块是用来获取CPU序列号,调用方式: *
* 在上层程序的uses子句中含CPUID模块,用函数   *
*调用 CPUID.GetCPUVendor 获得CPU的制造商名称; *
*调用  CPUID.GetCPUInfo       得到CPU的序列号. *
*************************************************}

interface

uses 
 SysUtils;

type
 TCPUID = array[1..4] of Longint; 
 TVendor = array [0..11] of char; 

 function GetCPUID: TCPUID; assembler; register; 
 function GetCPUVendor: TVendor; assembler; register;
 function GetCPUInfo: string;

implementation 


Function GetCPUID: TCPUID; assembler; register; 
asm 
 PUSH    EBX         {Save affected register} 
 PUSH    EDI 
 MOV     EDI,EAX     {@Resukt} 
 MOV     EAX,1 
 DW      $A20F       {CPUID Command} 
 STOSD                {CPUID[1]} 
 MOV     EAX,EBX 
 STOSD               {CPUID[2]} 
 MOV     EAX,ECX 
 STOSD               {CPUID[3]} 
 MOV     EAX,EDX 
 STOSD               {CPUID[4]} 
 POP     EDI          {Restore registers} 
 POP     EBX 
end; 

Function GetCPUVendor: TVendor; assembler; register;
asm 
 PUSH    EBX          {Save affected register} 
 PUSH    EDI 
 MOV     EDI,EAX      {@Result (TVendor)}
MOV     EAX,0 
 DW      $A20F        {CPUID Command} 
 MOV     EAX,EBX 
 XCHG    EBX,ECX     {save ECX result} 
 MOV      ECX,4 
@1: 
 STOSB 
 SHR     EAX,8 
 LOOP    @1 
 MOV     EAX,EDX 
 MOV      ECX,4 
@2: 
 STOSB 
 SHR     EAX,8 
 LOOP    @2 
 MOV     EAX,EBX 
 MOV      ECX,4 
@3: 
 STOSB 
 SHR     EAX,8 
 LOOP    @3 
 POP     EDI          {Restore registers} 
 POP     EBX 
end; 

Function GetCPUInfo: string; 
var 
 CPUID: TCPUID; 
 I: Integer; 
begin
 for I := Low(CPUID) to High(CPUID) do
     CPUID[I] := -1;
 CPUID := GetCPUID;
 Result :=  IntToHex(CPUID[1], 8) + IntToHex(CPUID[2], 8)
            + IntToHex(CPUID[3], 8) 
            + IntToHex(CPUID[4], 8); 
end; 

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -