您的位置:首页 > 编程语言 > Delphi

Delphi通过汇编获取CPUID

2013-01-17 21:21 169 查看
据说CPUID不唯一,同一个系列的CPU其CPUID相同?没研究清楚。

做这个的最初是想做个根据机器码生成注册码的一个注册应用程序,所以找到了这个方法:还不错,分享一下:

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 TRegisterFrm.GetComputerSeries: string;
var
  I: Integer;
  nNum: Longint;
  CPUID: TCPUID;
begin
  Result := '';
  CPUID := GetCPUID;
  Result := IntToHex(CPUID[1] , 8) + IntToHex(CPUID[2] , 8) + IntToHex(CPUID[3]
  , 8) + IntToHex(CPUID[4] , 8);
end;


当然需要声明这样一个类型:

type
   TCPUID = array[1..4] of Longint;
   TVendor = array [0..11] of char;
   function GetCPUID: TCPUID; assembler; register;


完整的代码就暂时不贴出来了,等完成了一起整到下载吧。有想看的可以联系我O(∩_∩)O

共同学习,共同成长
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: