Як дізнатися серійний номер процесора?
Люди підкажіть як дізнатися серійний номер ЦП з під Делфі!
CPUID (див. Док-цію Intel на їх сайті)
> Snake7 (14.07.03 18:35)
> Як дізнатися серійний номер ЦП з під Делфі!
Запитати у самого процесора: У asm вставці виконайте інструкцію CPUID (опкод 0Fh 0Ah). Не забудьте перевірити чи підтримує процесор цю команду, спробуйте встановити прапор ID в 1 (біт 21 в регістрі EFLAGS) - якщо це виходить, значить, команда CPUID підтримується. У EAX до виклику CPUID має бути 03h, в регістрах ECX, EDX після виконання інструкції буде серійний номер процесора, але наскільки я знаю (точно не впевнений), серійний номер є тільки на процесорах PENTIUM III. Исходника у мене природно немає, писАть - бажання теж.
CPUID це не серійний номер процесора, а ідентифікаційний номер моделі.
щось я не бачу в мануалі у Інтелу мікрологікі для initial EAX = 3
може, мануал відображає тільки сумісний мікрокод всього сімейства Пнів.
Operation
CASE (EAX) OF
EAX = 0:
EAX ¬ highest input value understood by CPUID; (* 2 for Pentium ® Pro processor *)
EBX ¬ Vendor identification string;
EDX ¬ Vendor identification string;
ECX ¬ Vendor identification string;
BREAK;
EAX = 1:
EAX [3: 0] ¬ Stepping ID;
EAX [7: 4] ¬ Model;
EAX [11: 8] ¬ Family;
EAX [13:12] ¬ Processor type;
EAX [31:12] ¬ Reserved;
EBX ¬ Reserved; ECX ¬ Reserved;
EDX ¬ Feature flags; (* Refer to Figure 3-27 *)
BREAK;
EAX = 2:
EAX ¬ Cache and TLB information;
EBX ¬ Cache and TLB information;
ECX ¬ Cache and TLB information;
EDX ¬ Cache and TLB information;
BREAK;
DEFAULT: (* EAX> highest value recognized by CPUID *)
EAX ¬ reserved, undefined;
EBX ¬ reserved, undefined;
ECX ¬ reserved, undefined;
EDX ¬ reserved, undefined;
BREAK;
ESAC;
Що є - ідентифікаційний номер моделі?
Ось спеціально подивився:
А до чого тут це? Яке це має відношення до серійного номеру процесора?
Var Pentium: Boolean;
Begin
Asm
mov al, 1
mov byte ptr @, 90h
@: Dec ax
( "You need at least iPentium processor!" # 7)
Var Pentium: Boolean;
Begin
Asm
mov al, 1
mov byte ptr @, 90h
@: Dec ax
mov Pentium, al
End;
If not Pentium then WriteLn ( "You need at least iPentium processor!" # 7)
else WriteLn ( "Your processor serial number is" ", GetCPUSerialNumber," "")
End.
NightAngel # 032; (15.07.03 19:09)
Я не звернув внимение на ECX / EDX. раніше CPUID не мав інформації про серійний номер процесора.
дивно)
значить. мануал у мене не найсвіжіший чи що.
ось цей (начебто той же самий, судячи з назви і року):
Дякуємо.
Мабуть, прогавив я момент поновлення)