type
TCPUID = array[1..4] of Longint;
function GetCPUID : TCPUID; assembler; register;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,1
DW $A20F
STOSD
MOV EAX,EBX
STOSD
MOV EAX,ECX
STOSD
MOV EAX,EDX
STOSD
POP EDI
POP EBX
end;
function ByteToHex(P:Pointer;iLen:Integer):String;
var I:integer;
begin
if High(PByteArray(P)^)+1>=ilen then
for I:=1 To ilen do
Result:=ConCat(Result,' ',IntToHex(PByteArray(P)^[i-1],2));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Tmp:TCPUID;
sTmpStr:String;
begin
Tmp:=GetCPUID;
sTmpStr:=ByteToHex(@tmp,SizeOf(TCPUID));
Memo1.text:=sTmpStr;
end;