Організація роботи мiкропроцесора в захищеному режимi, страница 23

           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';