首页 > 程序设计 > 找到一个读cpu串号的代码,delphi的,记录一下(申明是人家的代码)

找到一个读cpu串号的代码,delphi的,记录一下(申明是人家的代码)

2012年12月30日

unit 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;
S: TVendor;
begin
for I := Low(CPUID) to High(CPUID) do
CPUID[I] := -1;

CPUID := GetCPUID;

S := GetCPUVendor;

Result := S + IntToHex(CPUID[1], 8) + IntToHex(CPUID[2], 8)
+ IntToHex(CPUID[3], 8)
+ IntToHex(CPUID[4], 8);
end;

end.

程序设计 浏览17 次

本文的评论功能被关闭了.