Смекни!
smekni.com

DOS-extender для компилятора Borland C++ (стр. 7 из 7)

; -----------------------------------------------------------

; Готовим структуру для загрузки регистра IDTR

; Прототип для вызова функции:

; void load_idtr(unsigned long idt_ptr, word idt_size);

; -----------------------------------------------------------

PROC _load_idtr NEAR

push bp

mov bp,sp

mov ax,[bp+4] ; мл. слово адреса IDT

mov dx,[bp+6] ; ст. слово адреса IDT

mov bx, OFFSET idtr

; Запоминаем адрес IDTR в структуре

mov [(idtr_struc bx).idt_low], ax

mov [(idtr_struc bx).idt_hi], dl

; Получаем предел IDT и запоминаем его в структуре

mov ax, [bp+8]

mov [(idtr_struc bx).idt_len], ax

pop bp

ret

ENDP _load_idtr

; ----------------------------------

; Установка контроллера прерываний

; ----------------------------------

PROC set_int_ctrlr NEAR

mov al, 11

out dx, al

jmp SHORT $+2

mov al, ah

inc dx

out dx, al

jmp SHORT $+2

mov al, 4

out dx, al

jmp SHORT $+2

mov al, 1

out dx, al

jmp SHORT $+2

mov al, 0ffh

out dx, al

dec dx

ret

ENDP set_int_ctrlr

; --------------------------

; Выдача звукового сигнала

; --------------------------

PROC _beep NEAR

push ax bx cx

in al,KBD_PORT_B

push ax

mov cx,80

beep0:

push cx

and al,11111100b

out KBD_PORT_B,al

mov cx,60

idle1:

loop idle1

or al,00000010b

out KBD_PORT_B,al

mov cx,60

idle2:

loop idle2

pop cx

loop beep0

pop ax

out KBD_PORT_B,al

pop cx bx ax

ret

ENDP _beep

; -------------------------------

; Задержка выполнения программы

; -------------------------------

PROC _pause NEAR

push cx

mov cx,10

ploop0:

push cx

xor cx,cx

ploop1:

loop ploop1

pop cx

loop ploop0

pop cx

ret

ENDP _pause

; -----------------------

; Размаскирование прерываний

; -----------------------

PROC _enable_interrupt NEAR

in al, INT_MASK_PORT

and al, 0fch

out INT_MASK_PORT, al

sti

ret

ENDP _enable_interrupt

end

5. Выводы.

Процессоры семейства Intelx86 реализуют необходимые средства для организации мультизадачных ОС с разделением адресного пространства и виртуальной памяти.

В процессе написания данного курсового проекта мной были изучена организация работы защищенного режима процессоров 80286, адресация ими свыше 1 Мб памяти, работа с прерываниями в защищенном режиме процессора, организация мультизадачных операционных систем.