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

                  4: s:='Pentium III модель 8';

6:s:='Мобильный Pentium III-M модель 8';

 7:s:='Мобильный Celeron модель 8';

end;

            $A:s:='Pentium III Xeon модель A';

          $B:s:='Pentium III Xeon модель B';

             else unknown:=true

            end;

    $F:  case model of

                   0: begin

                          s:='0.18-мікронний ';

                          case brand of

                              8: s:=s+'Pentium 4';

                              9: s:=s+'Pentium 4';

                            $B: s:=s+'Xeon';

                           end;

                      end;

                   1: begin

                           s:='0.18-мікронний ';

                           case brand of

                              8: s :=s+'Pentium 4';

                              9: s:=s+'Pentium 4';

                            $A: s:=s+'Celeron';

                           $B: if sn_3<$F13 then s:=s+'Xeon MP'

                                   else s:=s+'Xeon';

                           $C: s:=s+'Xeon MP';

                          $E: s:=s+'Xeon';

                         end;

                      end;

                  2: begin

                         s:='0.13-мікронний ';

                         case brand of

                            8: s:=s+'Pentium 4';

                            9: s:=s+'Pentium 4';

                          $A: s:=s+'Celeron';

                         $B: if sn_3<$F13 then s:=s+'Xeon MP'

                                   else s:=s+'Xeon';

                          $C: s:=s+'Xeon MP';

                         $E: if sn_3<$F13 then s:=s+'Xeon'

                                   else s:=s+'мобильный Pentium 4-M';

                         $F: s:=s+'мобильный Celeron';

                        end;

                      end  else  unknown:=true

            end;

                else unknown:=true

          end;

          for i:=1 to 12 do write(vend[i]);

          if not unknown then writeln(s)

          else writeln('МП сiмейства - ',cpu_type,  ' моделі - ',model);

{-----------Визначення застосування в МП бренд-строки фірми виготовника---------}

        asm

   db 66h,0b8h

dd 80000000h                    { MOV EAX,80000000h }

 db 0fh,0a2h                                 { CPUID }

 db 66h

     mov word ptr max_inp,ax

          end;

          if max_inp>$80000000 then begin

{------------Визначення бренд-строки (Brand-string)фірми виготовника---------------}

            asm

   db 66h,0b8h                   { MOV EAX,80000002h }

dd 80000002h

db 0fh,0a2h                               { CPUID }

db 66h

 mov  ss:[bp+offset brand_str],ax  { В масив brand_str з регістрів EAX, }

db 66h

mov ss:[bp+offset brand_str+4],bx              { EBX, }

db 66h

mov ss:[bp+offset brand_str+8],cx            { ECX }

db 66h              

mov ss:[bp+offset brand_str+12],dx   {  та EDX заноситься бренд-строка }

                             { Продовження формування бренд-строки при EAX=800000003h:}

               db 66h,0b8h

               dd 80000003h                        { MOV EAX,80000003h }

               db 0fh,0a2h                                { CPUID }

               db 66h

               mov  ss:[bp+offset brand_str+16],ax         

               db 66h                                             

               mov ss:[bp+offset brand_str+20],bx                    

               db 66h                          

               mov ss:[bp+offset brand_str+24],cx              

               db 66h                           

               mov ss:[bp+offset brand_str+28],dx              

                            { Продовження формування бренд-строки при EAX=800000004h:}

               db 66h,0b8h                     

               dd 80000004h{ MOV EAX,80000004h }

               db 0fh,0a2h                                { CPUID }

               db 66h

               mov  ss:[bp+offset brand_str+32],ax