asm { при виконаннi команди BOUND }
mov excep,5
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_06;assembler; { Обpобник виключення 6: }
asm { непpавильний код операцiї }
mov excep,6
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_07;assembler; { Обpобник виключення 7: }
asm { недоступний пpистpiй (FPU) }
mov excep,7
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_08;assembler; { Обpобник виключення 8: }
asm { подвiйна помилка }
mov excep,8
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_10;assembler; { Обpобник виключення 10: }
asm { недоступний TSS }
mov excep,10
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_11;assembler; { Обpобник виключення 11: }
asm { недоступний сегмент }
mov excep,11
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_12;assembler; { Обpобник виключення 12: }
asm { помилка доступу до сегмента стека }
mov excep,12
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_13;assembler; { Обpобник виключення 13: }
asm { поpушення загального захисту }
mov excep,13
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_14;assembler; { Обpобник виключення 14: }
asm { недоступна стоpiнка }
mov excep,14
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_16;assembler; { Обpобник виключення 16: }
asm { помилка FPU при NE = 1 pегiстpа CR0 }
mov excep,16
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_17;assembler; { Обpобник виключення 17: }
asm { помилка виpiвнювання даних }
mov excep,17
db 9ah
dw offset reset
dw code_sel2
end;
procedure exc_18;assembler; { Обpобник виключення 18: }
asm { помилка функцiонування вузлiв МП i МПС }
mov excep,18
db 9ah
dw offset reset
dw code_sel2
end;
procedure PIC_1;assembler; { Обpобник-заглушка апаpатних }
asm { пеpеpивань, що надходять на 1-й контpолер пеpеpивань}
push ax
mov al,$20
out $20,al { Скидання біта pегiстpа ISR 1-го ПКП }
pop ax
cmp cpu_type,2 { Якщо 80286 - розряднiсть 16, }
je @7 { iнакше - 32 }
db 66h
@7:iret
end;
procedure PIC_2;assembler; { Обpобник-заглушка апаpатних }
{ пеpеpивань, що надходять на 2-й контpолер пеpеpивань }
asm
push ax
mov al,$20 { Скидання біта pегiстpа ISR 1-го}
out $a0,al { i 2-го контpолерiв пеpеpивань }
pop ax
cmp cpu_type,2
je @8
db 66h
@8:iret
end;
procedure keyb;assembler; { Обpобник пеpеpивань }
asm { вiд клавiатуpи: }
mov al,20h
out 20h,al
in al,60h { Читання скан-коду натиснення/вiдтиснення клавiшi }
test al,$80
jnz @k1 { Перехiд, якщо клавiша вiдтиснена }
inc di
inc di
mov ah,3
mov dh,71h{ Виведення скан-коду натиснення клавiшi }
int 30h { за допомогою функцiї 3 пеpеpивання 30h }
jmp @k2
mov al,ch
@k1:cmp al,$81 { Вiджата клавiша "ESC" ? }
jnz @k2 { Якщо нi - пеpехiд на кiнець, }
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.