рдкреЗрдЬрд┐рдВрдЧ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕реАрдЦрдирд╛

рдирдорд╕реНрддреЗред рдЖрдЬ рд╣рдо рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп рдореЗрдВ рдкреЗрдЬрд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВрдЧреЗ, рд╣рдо рдЗрдВрдЯрд░рдкреНрдЯ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рд╣рдо рдХрдИ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рд╕реЗ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред


1) рдкреЗрдЬрд┐рдВрдЧред
рд╕рднреА, рд╢рд╛рдпрдж, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрджрдореА рдореЗрдВ рдЕрдлрд╡рд╛рд╣ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреЗрдЬрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИред рд╣рдо 1 рдПрдордмреА рд╕реЗ рдкрд░реЗ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА 4 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд░реИрдо рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдкрдиреЗ рдорд╛рдореВрд▓реА рд╢рд┐рд▓реНрдк рдореЗрдВ 4 рдЬреАрдмреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдЪреВрдВрдХрд┐ рд╕рднреА рдореЗрдВ рдЗрддрдиреА рд░реИрдо рдирд╣реАрдВ рд╣реИ)ред 32MB рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ (рдареАрдХ рд╣реИ, рдпрд╣ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рд╕рдкрдирд╛)ред рдЗрд╕рд▓рд┐рдП, рд╣рдо 4K рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рддреЛ, рдЕрдм рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - 1024 рдкреГрд╖реНрдареЛрдВ рдХрд╛ рд╡рд░реНрдгрди 4 рдПрдордмреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ 1024 * 8 рдкреГрд╖реНрдареЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ 8 рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ 1 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдкреГрд╖реНрда рд╕рдорд╛рди рд╣реЛрдВрдЧреЗ, рдЕрд░реНрдерд╛рдд рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рднреМрддрд┐рдХ рдкрддреЗ рд╕рдорд╛рди рд╣реИрдВред рдЕрдм, рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рдЬрд╝рд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬрд╝ рдмрдирд╛рдПрдЧрд╛ред

set_pages:

.set_cat:
mov edi,100000h;
mov eax,101007h;

mov cx,8 ;8*4=32

.fill_cat_usef: ;
stosd
add eax,1000h
loop .fill_cat_usef

mov cx,1016 ;
xor eax,eax

rep stosd

mov eax,00000007h
mov ecx,1024*8;32Mb

.fill_page_table: ;
stosd
add eax,1000h
loop .fill_page_table

;End;
mov eax,00100000h;1 Mb; cr3
mov cr3,eax
mov eax,cr0
or eax,80000000h

mov cr0,eax

ret


рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рд╕реЗ рдХреНрдпреЛрдВ рдкрд░реЗрд╢рд╛рди рд╣реЛ? рдФрд░ рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЖрдк 1000h рдХреЗ рдЧреБрдгрдХреЛрдВ рд╡рд╛рд▓реЗ рдкрддреЛрдВ рдкрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рдЬреИрд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

реи) рд╡реНрдпрд╡рдзрд╛рдиред
рдФрд░ рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рд╕рд╛рде рдкреАрдПрдо рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдЖрд░рдПрдо рдореЗрдВ 4 рдмрд╛рдЗрдЯ рдЗрдВрдЯрд░рдкреНрдЯ рд╡реИрдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИрдВред рдЙрдирдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдЧреЗрдЯреНрд╕ (рд╡реЗ рдЕрдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ), рдЯреНрд░реИрдк рдЧреЗрдЯреНрд╕ , рдЯрд╛рд╕реНрдХ рдЧреЗрдЯреНрд╕ - рдЖрдИрдбреАрдЯреА рдореЗрдВ рд╕реНрдерд┐рдд 64-рдмрд┐рдЯ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЖ рдЧрдИрдВ ред рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдЫрд╡рд┐

рдпрд╣рд╛рдБ, рдЦреЗрддреЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИ (рдЙрди рд╕рднреА рдХреЗ рдмрд╛рдж рд╕реЗ рдЬреЛ рд╣рдо рд╕реЗрдЧрдореЗрдВрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдорд┐рд▓реЗ рдереЗ)ред рд╣рдо рдХреЗрд╡рд▓ рдЕрдм рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдкреНрдЯ рдЧреЗрдЯреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЖрдИрдбреАрдЯреА рдХреЛ рдкреАрдПрдо рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдврдХреНрдХрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрдИрдбреАрдЯреАрдЖрд░ рд░рдЬрд┐рд╕реНрдЯрд░ (рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ GDTR рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ) рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдСрдлрд╕реЗрдЯ рдХрд░реЗрдВред рд╡реИрд╕реЗ, IDT рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рд╣реИ (рдорд╛рди рд▓реАрдЬрд┐рдП, GDT рдХрд╛ рдПрдВрдЯреАрдкреЛрдб, рдЬреЛ рдЕрднреА рд▓реАрдирд┐рдпрд░ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╣реИ), рдпрд╛рдиреА рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдиреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреАрдПрдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 4K рдореЗрдореЛрд░реА, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд рдЖрдИрдбреАрдЯреА рд╣реИ рдФрд░ рдкреАрдПрдо рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдХреБрдЫ рдФрд░ рдиреЛрдЯ: рдЗрдВрдЯреЗрд▓ рдЖрд░рдХреНрд╖рд┐рдд 0-31 рдмрд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рд▓рдЧрд╛рдиреЗ рд╣реЛрдВрдЧреЗред рдЙрдирдореЗрдВ рд╕реЗ, 0 (#DE) рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рддреНрд░реБрдЯрд┐, #GP рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдЕрдкрд╡рд╛рдж, рдФрд░ рдЕрдиреНрдп рдХрдо рдордЬрд╝реЗрджрд╛рд░ рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрддреЗ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЖрдИрдЖрд░рдХреНрдпреВ 0 рдХреЛ 32 рд╡реЗрдВ рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдВ, рдЖрджрд┐ред рдореБрдЭреЗ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ i8259a рдЪрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдЖрдк рдПрдкреАрдЖрдИрд╕реА - рдПрдбрд╡рд╛рдВрд╕реНрдб рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдЗрдВрдЯрд░рдкреНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣реИрдВрдбрд▓ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рдЗрд╕рдХрд╛ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рдЙрдард╛рдирд╛ рд╣реИ (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛, рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рдирд╢реАрд▓рддрд╛, рдЖрджрд┐)ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рднреА рдХреЛ рдпрд╛рдж рд╣реЛрдЧрд╛ рдХрд┐ ICW ( рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓ рд╡рд░реНрдб ) рдФрд░ OCW ( рдСрдкрд░реЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓ рд╡рд░реНрдб ) рдХреНрдпрд╛ рд╣реИрдВ? рдЖрдЗрдП рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рджреВрдВрдЧрд╛):
ICW:
1) рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ред
2) рдЖрдзрд╛рд░ рдкрддреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг (рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛)ред
3) рд╕рдВрдЪрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВред
4) рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред
OCW:
1) рдорд╛рд╕реНрдХ рдЖрдИрдПрдордЖрд░ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрдиред
2) рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкреНрд░рдмрдВрдзрдиред
3) рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдгред

рдЖрд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

Init_PIC:
mov al,11h;ICW1 тАУ ,
out 20h,al;
out 0A0h,al;

mov al,20h;ICW2; ( ! RAM)
out 21h,al;
mov al,28h;
out 0A1h,al

mov al,04h;ICW3 тАУ IRQ2
out 21h,al
mov al,02h
out 0A1h,al

mov al,11h;ICW4 тАУ Pentium
out 21h,al
mov al,01h
out 0A1h,al
ret


рдЕрдм рдЖрдИрдбреАрдЯреА рдмрдирд╛рдПрдВ :

IDT:
dd 0,0; 0
dd 0,0 ; 1
dd 0,0
dd 0,0 ; 3
;тАж. !
dd 0,0 ; 12
dw GP_handler and 0FFFFh,08h, 1000111000000000b, GP_handler shr 16 ; 13 #GP
dd 0,0 ; 14
;тАж. . dup' ,
; dd 0,0
dd 0,0 ; 30
dd 0,0 ; 31; Intel ;gate'
dw timer and 0FFFFh, 08h, 1000111000000000b, timer shr 16 ; IRQ 0 -
dw keyboard and 0FFFFh , 08h, 1000111000000000b, keyboard shr 16 ; IRQ 1 - - ;
dd 0,0;IRQ2
dd 0,0;IRQ3
dd 0,0;IRQ4
dd 0,0;IRQ5
dd 0,0;IRQ6

label IDT_size at $-IDT

IDTR dw IDT_size-1
dd IDT+10000h


рддреЛ, рд╣рдо рдХреНрдпреЛрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдБ 'and'y рдФрд░ shr'y? - рдЖрдк рдкреВрдЫреЗрдВред рдпрд╣рд╛рдБ рдХреА рдЪрд╛рд▓ рд╣реИ: рд╣рдо рд╕рднреА рдХреЛрдб рдХреЛ рдореВрд▓ рдХреЗ рдкреАрдЫреЗ PM (рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХреЛрдб рджреЗрдЦреЗрдВ) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ... рдпрд╣рд╛рдБ рдХреА рдЪрд╛рд▓: рд╣рдо 2 рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ 32-рдмрд┐рдЯ рдкрддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХреЗрд╡рд▓ рдкрддрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рджреБрдИ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЗрд╕ рджреЛрд╣рд░реЗ рд╢рдмреНрдж рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ред
рдЕрдм рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рдЧреЗрдЯреЛрдВ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдХрдИ рд╢реВрдиреНрдп рдХреНрдпреЛрдВ рд╣реИрдВ? рдФрд░ рдпрд╣рд╛рдВ рдХреНрдпреЛрдВ - рдЖрдкрдХреЛ рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред #GP рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рдПрдХ рдЧреЗрдЯ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдвреВрдВрдврдиреЗ рдкрд░, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреБрдЦреНрдпрд╛рдд рд╕рд╛рдорд╛рдиреНрдп рд╕реБрд░рдХреНрд╖рд╛ рджреЛрд╖ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░реБрдХрд╛рд╡рдЯ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдЬреЛ рдХреБрдЫ рднреА рд╡реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдзрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдПрдХ рдИрдУрдЖрдИ рд╕рдВрдХреЗрдд рднреЗрдЬреЗрдВ - рдЕрдВрддрд░рд╛рдпрди рдХрд╛ рдЕрд╡рд░реЛрдз (рд╣рдордиреЗ PIC, рд╕рд╣реА рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ?)ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

mov al, 20h
out 20h, al


рдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯрд╛рдЗрдорд░ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦреЗрдВ:

timer:
push ax
mov al, 20h
out 20h, al
pop ax
jmp int_EOI

int_EOI: ; Master' Slave' EOI
push ax
mov al,20h
out 20h,al
out 0a0h,al
pop ax
iretd ;


int_EOI рд╕рднреА рдмрд╛рдзрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдареАрдХ рд╣реИ, рдЕрдм рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред рдЬрдм рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рд╕реНрдЯреИрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЫрд╡рд┐

рдпрд╣рд╛рдВ, рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ error_code рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдмрд╛рдХреА рдХреЛ iretd рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рд╕рд╛рдордЧреНрд░реА рдЕрднреА рднреА рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рдордиреЗ рд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╕рдВрд░рдЪрдирд╛ error_code:

рдЫрд╡рд┐

рдЬрд╣рд╛рдВ:
1) EXT - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдлрд▓рддрд╛ рдпрд╛ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рд╣реБрдИред
2) рдЖрдИрдбреАрдЯреА - рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░, рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХреНрд╖реЗрддреНрд░ рдЖрдИрдбреАрдЯреА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
3) рдЯреАрдЖрдИ - рдЬрдм рдЖрдИрдбреАрдЯреА рдмрд┐рдЯ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЬреАрдбреАрдЯреА рдпрд╛ рдПрд▓рдбреАрдЯреА рдореЗрдВ рд╣рд┐рдЪрдХреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
4) рд╕реЗрдЧрдореЗрдВрдЯ рд╕реЗрд▓реЗрдХреНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ - рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдирдВрдмрд░ ( рдЬреАрдбреАрдЯреА рдФрд░ рдПрд▓рдбреАрдЯреА рдореЗрдВ ) рдпрд╛ рдЖрдИрдбреАрдЯреА рдореЗрдВ рдЧреЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдЗрдВрдбреЗрдХреНрд╕ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрдм рд╣рдорд╛рд░рд╛ рд╢рд┐рд▓реНрдк рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдХреЛрдб рдмрдирд╛рддреЗ рд╣реИрдВред рдореИрдВ рдзреЛрдЦрд╛ рджреВрдБрдЧрд╛: рдЖрдкрдХреЛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛ред рдХрд╛рд░реНрдп рдХреЛрдб рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рдЪреБрдХреЗ рд╣реИрдВред
рдореИрдВ рдХреБрдЫ 'рд╕реБрдЭрд╛рд╡' рджреВрдВрдЧрд╛:
1) org'a рдХреЛ IDT рд╕реНрдерд┐рддрд┐ (GDT рдХреЗ рд╕рд╛рде рдХрдо)ред
2) PM рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ IDTR рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
3) рдмрд╛рдзрд┐рдд рд╣реИрдВрдбрд▓рд░ org рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред
4) рдЯреЗрдХреНрд╕реНрдЯ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреЛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
5) рдкреАрдПрдо рдореЗрдВ рдкреАрдЖрдИрд╕реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рди рднреВрд▓реЗрдВ!
6) рдкреЗрдЬрд┐рдВрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреАрдПрдо рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рдФрд░ рдлрд┐рд░ рднреА, рдХреНрд▓рд╛рдЙрдбрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦреЗрдВред

рдпрджрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рддрдХ
**** рд╕реБрдзрд╛рд░ ****
Set_pages рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╣рд▓реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ 1 рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп 8. рдХреЛрдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред

Source: https://habr.com/ru/post/In119058/


All Articles