--------------------------------------------------------------------------------Unit CPUid; Interface Type TCpuType = (cpu8086, cpu286, cpu386, cpu486, cpuPentium); Function CpuType : TCpuType; Function CpuTypeString : String; Implementation Uses SysUtils; Function CpuType : TCpuType; ASSEMBLER; Asm // 8086 CPU 检测 push ds pushf pop bx mov ax, 0fffh and ax, bx push ax popf pushf pop ax and ax, 0f000h cmp ax, 0f000h mov ax, cpu8086 je @@End_CpuType // 80286 CPU检测 or bx, 0f000h push bx popf pushf pop ax and ax, 0f000h mov ax, cpu286 jz @@End_CpuType // 386 CPU 检测db 66h pushf db 66h pop ax db 66h mov cx, ax db 66h xor ax, 0h dw 0004h db 66h push ax db 66h popf db 66h pushf db 66h pop ax db 66h xor ax, cx mov ax, cpu386 je @@End_CpuType // 486 CPU 检测db 66h pushf db 66h pop ax db 66h mov cx, ax db 66h xor ax, 0h dw 0020h db 66h push ax db 66h popf db 66h pushf db 66h pop ax db 66h xor ax, cx mov ax, cpu486 je @@End_CpuType // Pentium CPU 检测db 66h mov ax, 1 dw 0 db 66h db 0Fh db 0a2h db 66h and ax, 0F00H dw 0 db 66h shr ax, 8 sub ax, 1 @@End_CpuType: pop ds End; Function CpuTypeString : String; Var Kind : TCpuType; Begin Kind := CpuType; Case Kind Of cpu8086 : Result := '8086'; cpu286 : Result := '286'; cpu386 : Result := '386'; cpu486 : Result := '486'; cpuPentium : Result := 'Pentium'; Else Result := Format ('P%d', [Ord (kind)]); End; End; End.
Function CpuTypeString : String; Implementation Uses
SysUtils; Function CpuType : TCpuType; ASSEMBLER;
Asm
// 8086 CPU 检测
push ds
pushf
pop bx
mov ax, 0fffh
and ax, bx
push ax
popf
pushf
pop ax
and ax, 0f000h
cmp ax, 0f000h
mov ax, cpu8086
je @@End_CpuType // 80286 CPU检测 or bx, 0f000h
push bx
popf
pushf
pop ax
and ax, 0f000h
mov ax, cpu286
jz @@End_CpuType // 386 CPU 检测db 66h
pushf
db 66h
pop ax
db 66h
mov cx, ax
db 66h
xor ax, 0h
dw 0004h
db 66h
push ax
db 66h
popf
db 66h
pushf
db 66h
pop ax
db 66h
xor ax, cx
mov ax, cpu386
je @@End_CpuType // 486 CPU 检测db 66h
pushf
db 66h
pop ax
db 66h
mov cx, ax
db 66h
xor ax, 0h
dw 0020h
db 66h
push ax
db 66h
popf
db 66h
pushf
db 66h
pop ax
db 66h
xor ax, cx
mov ax, cpu486
je @@End_CpuType // Pentium CPU 检测db 66h
mov ax, 1
dw 0
db 66h
db 0Fh
db 0a2h
db 66h
and ax, 0F00H
dw 0
db 66h
shr ax, 8
sub ax, 1 @@End_CpuType: pop ds End; Function CpuTypeString : String; Var Kind : TCpuType; Begin Kind := CpuType; Case Kind Of cpu8086 : Result := '8086';
cpu286 : Result := '286';
cpu386 : Result := '386';
cpu486 : Result := '486';
cpuPentium : Result := 'Pentium'; Else Result := Format ('P%d', [Ord (kind)]); End; End; End.
你把这个下载下去,可以自己看一看代码;
它有硬盘的ID获取,有网卡的MAC获取,有CUPID的获取......
看完了再说,OK?