Защищенный режим процессоров Intel


Пример мультизадачного монитора - часть 11


слово адреса 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


Начало  Назад  Вперед