如何获得CPU的ID号,比如intel cpu(10分)

  • 主题发起人 主题发起人 zwhhwz
  • 开始时间 开始时间
unit CPUID;

interface

type
TCPUID = array[1..4] of Longint;
TCPUVendor = array[0..11] of Char;

function GetCPUID: TCPUID; assembler; register;
function GetCPUVendor: TCPUVendor; assembler; register;

implementation

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: TCPUVendor; 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;

end.
 
网上找到的,经测试可用
 
李颖大侠:
你好!
现在忙些什么?
 
吃饭、睡觉、洗澡、闲逛
实在无聊了也写写程序
哈哈哈!开玩笑开玩笑!

还能忙什么,写程序换钱花,如此而已。。。
 
李颖大侠:
近日,我在论坛上总看到有朋友问一条SQL语句能完成的东西(Select),
有时是不是不太可能啊!你说Delphi中的SQL语言是不是有很多限制,比如
没有VBA中的象IIF()这样的函数?
 
感谢大侠!
 
不用谢,网上找到的,copy一下而已,赚你10分就算是体力劳动吧。。。

其实当初我找这个就是为了用CPUID来加密的,现在已经用到TDBBackup里去了,
也不知道原作者是谁,应该是个高手,
你注意到没有,关键的一条指令不是用汇编写的
而直接是二进制代码,我想大概是没公开的指令吧?
 
>> 你说Delphi中的SQL语言是不是有很多限制,比如没有VBA中的象IIF()这样的函数?
什么意思? SQL不是Delphi的, BDE只是一堆接口程序,
最终还是把SQL发到DB Server上执行的
当然了,本地文件型数据库dBase、Paradox本来是不支持SQL的
BDE自己搞了个什么Local SQL来解释实现了,功能很弱,支持的函数很少,
不过马马乎乎可以用了

VBA中的IIF()是干什么的东西?输入什么,输出什么?
 

Similar threads

后退
顶部