and ax,0f00h
db 0c1h,0e8h,8 { Зсув в AX на 8 розрядiв праворуч }
mov cpu_type, al { В AL - номер сiмейства МП }
mov ax,cx
and ax,3000h
db 0c1h,0e8h,12 { Зсув в AX на 12 розрядiв праворуч }
mov typ, al { В AL - номер типу МП }
cmp par,1
jz @end_cpuid
db 66h,0b8h { MOV EAX,2 }
dd 2 { Установка параметра CPUID = 2 }
db 0fh,0a2h { CPUID }
db 66h
mov ss:[bp+offset data-cach],ax { В регiстрах EAX, }
db 66h { EBX, ECX }
mov ss:[bp+offset data-cach+4],bx { i EDX - }
db 66h { інформацiя про }
mov ss:[bp+offset data-cach+8],cx { кеш-пам'ять МП, }
db 66h { яка заноситься в масив }
mov ss:[bp+offset data-cach+12],dx { data-cach }
@end_cpuid:
end;
s:='';
clrscr;
if id_flag=0 then begin { Визначення типу МП }
case cpu_type of { без застосування команди CPUID }
0:s:='i8086';
2:s:='i80286';
3:s:='i80386';
4:s:='i486';
end;
writeln(s);
end else begin
brand:=EBX_; { Значення Brand ID}
for i:=1 to 4 do { Визначення дескриптора }
for j:=1 to 4 do { кеша другого рiвня }
if data_cach[i,4] and 128=0 then
if (data_cach[i,j]=$41) or
(data_cach[i,j]=$42) or
(data_cach[i,j]=$43) or
(data_cach[i,j]=$44) or
(data_cach[i,j]=$45) then begin
desc_L2:=data_cach[i,j];
break
end;
case cpu_type of
4:case model of
0,1:if typ=0 then s:='i486 DX'
else s:='iDX4 OverDrive';
2:s:='i486 SX';
3:s:='iDX2';
4:s:='iSL';
5:s:='iSX2 OverDrive';
8:s:='iDX4';
9:s:='AMD DX4';
14:s:='Am5x86 в режимі WT';
15:s:='Am5x86 в режимі WB';
end;
5:if vend='GenuineIntel' then
case model of
1:if typ=0 then s:='Pentium (60,66)' else s:='Pentium OverDrive (60,66)';
2:if typ=0 then s:='Pentium (75..200)' else s:='Pentium OverDrive (75..133)';
3:s:='Pentium OverDrive для 486';
end else if vend='AuthenticAMD' then
case model of
0:s:='AMD-K-PR75,90,100';
1:s:='AMD-K-PR120,133';
2:s:='AMD-K-PR120,166';
end;
6:case model of
1:s:='Pentium Pro';
3:if typ=0 then s:='Pentium II модель 3'
else s:='Pentium II OverDrive';
5:case desc_L2 of
$41:s:='Celeron модель 5';
$43:s:='Pentium II модель 5 ';
$44:s:='Pentium II Xeon';
end;
6:s:='Celeron модель 6';
7:case desc_L2 of
$43: s:='Pentium III';
$44,$45:s:='Pentium III Xeon';
end;
8: case brand of
1: s:='Celeron модель 8';
2: s:='Pentium III модель 8';
3: if sn_3=$6B1 then s:='Celeron модель 8'
else s:='Pentium III Xeon модель 8';
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.