• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

嵌入汇编检测CPU的型号_Delphi

Delphi 搞代码 3年前 (2018-08-09) 101次浏览 已收录 0个评论

Unit CPUid;

Interface

Type

tcpuType = (cpu8086, cpu286, cpu386, cpu486, cpuPentium);

Function CpuType : TCpuType;
Function CpuTypeString : String;

http://www.gaodaima.com/?p=65794嵌入汇编检测CPU的型号_Delphi

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. 

欢迎大家阅读《嵌入汇编检测CPU的型号_Delphi,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址