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

                     link,                                                                             { селектор повеpнення }

                     esp0,ess0,                                                              { показчик стека кiльця 0 }

                     esp1,ess1,                                                              { показчик стека кiльця 1 }

                     esp2,ess2,                                                              { показчик стека кiльця 2 }

                     cr3,eip,eflags,eax,ecx,edx,ebx,                                                         { регiстри }

                     esp,ebp,esi,edi,es,cs,ss,ds,fs,gs,ldtr                                                          { МП }

                     :longint;

                     bit_t:byte;                                                                          { бiт пастки задачі }

                     adr_BKVV:word;                                                              { змiщення БКВВ }

                     byte_end:byte                                                           { байт завершення TSS }

                   end;

         t_task_stack=array[1..1024] of byte;                                            { Тип стека задач }

    var

         gdt:array[0..12] of t_gdt;                                                                   { Таблиця GDT }

         idt:array[0..$30] of t_idt;                                                                    { Таблиця IDT }

         gdtr,                                                                                                        { Змiст GDTR }

         idtr,                                             { Змiст IDTR для роботи в захищеному режимi }

         idtr_r                                             { Змiст IDTR для роботи в pеальному режимi }

         :t_dtr;

         ofs_ret,                                                                                                      { Змiщення i }

         sel_ret,                                      { селектор точки повернення в реальний режим }

         cs1,                                                                                     { Селектор модуля PROT }

{-------------------------------Змiннi для зберiгання змiсту регiстрiв---------------------------}

         real_ss,                                                                                                                    { SS, }

         real_es,                                                                                                                    { ES, }

         real_sp:word;                                                                                                          { SP }

         semaf,                                                                                              { Змiнна-семафор }

         cpu_type,                                                                   { Номер типу мiкpопpоцесоpа }

         res,                                                                                         { Ознака скидання МП }

         excep,                                                                                        { Номер виключення }

         acc_int,                                                                         { Байт доступу переривання }

         acc_trap,                                                                                 { Байт доступу пастки }

         t:byte;                                              { Ознака розрядностi МП: T=0 - 16; T=8 - 32 }

    function lin_adr(seg,off:word):longint;

    function hex(p:longint):string;

    function hw(p:word):string;

    procedure init_gdt(i:byte;limit,base:longint;acces,byte_6h:byte);

    procedure init_idt(i:byte;p_off,p_sel:word;acces:byte);

    procedure pic(mode:byte);

    procedure init_gdtr;

    procedure init_idtr_p;

    procedure init_idtr_r;

    procedure save_ret_real(seg,ofs:word;byte_shut:byte);