我的代码如下,请高手指教:type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char;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;
procedure TfmLogin.sbtOkClick(Sender: TObject);
var  jqm:string;
    CPUID : TCPUID;
begin
    for I := Low(CPUID) to High(CPUID)  do CPUID[I] := -1;
      begin
          CPUID := GetCPUID;
          jqm:= copy(inttostr(CPUID[1]+CPUID[2]+CPUID[3])+copy(inttostr(CPUID[4]),0,3),0,6);
      end;
end;