OSDev http://osdev.su/ |
|
IRQ & VESA http://osdev.su/viewtopic.php?f=6&t=702 |
Страница 1 из 1 |
Автор: | scuter [ 02 мар 2013, 20:48 ] |
Заголовок сообщения: | IRQ & VESA |
случий просто анегдотический, написал 2-е функции которая рисует квадраты, запихнул их в прерывание клавиатуры, при запуске почему то срабатывает 1-ая(simb_prb) функция, а вторая(vesa_box) при нажатии клавишь IRQ Код: IRQ2: push ax in al,60h ; AL содержит скан-код клавиатуры, но в ; этом примере он не сохраняется - ; обработчик IRQ 1 работает как заглушка. in al,61H mov ah,al or al,80h out 61H,al xchg ah,al out 61H,al mov eax, 3 call simb_prb mov eax, 2 call vesa_box mov al,20h out 20h,al pop ax IRETD FUNCTION Код: simb_prb:
imul eax, 30 mov ebx, eax mov eax, 100 xor edx, edx mov dx , [vbe_mode.XResolution] imul eax, edx add eax, ebx imul eax, 3 add eax, [vbe_mode.PhysBasePtr] mov edi, eax mov ecx, 20 simb_prb_agn: mov ebx, ecx mov al, 99h mov ecx, 60 rep stosb xor eax, eax mov ax, [vbe_mode.XResolution] imul eax, 3 add edi, eax sub edi, 60 mov ecx, ebx loop simb_prb_agn ret vesa_box: ; y*W+x ; 20*W+50*a imul eax, 30 mov ebx, eax mov eax, 20 xor edx, edx mov dx , [vbe_mode.XResolution] imul eax, edx add eax, ebx imul eax, 3 add eax, [vbe_mode.PhysBasePtr] mov edi, eax mov ecx, 20 vesa_box_agn: mov ebx, ecx mov al, 99h mov ecx, 60 rep stosb xor eax, eax mov ax, [vbe_mode.XResolution] imul eax, 3 add edi, eax sub edi, 60 mov ecx, ebx loop vesa_box_agn RET |
Автор: | phantom-84 [ 02 мар 2013, 21:25 ] |
Заголовок сообщения: | Re: IRQ & VESA |
А кто оригинальные значения регистров будет сохранять/восстанавливать? |
Автор: | pavia [ 02 мар 2013, 21:39 ] |
Заголовок сообщения: | Re: IRQ & VESA |
Любой ОСе писатель знает что прерывания должны быть короткими. Да бы не повесить всю систему. Так что надо включить прерывания. Да и отлаживать легче. Так как внутри прерывания мы сможем ловить исключения. Так что советую использовать. STI ; ENABLE INTERRUPTS |
Автор: | pavia [ 02 мар 2013, 21:46 ] |
Заголовок сообщения: | Re: IRQ & VESA |
Код: in al,61H mov ah,al or al,80h out 61H,al Это код от XT машин. А насколько мне известно они VESA не поддерживают. Так что этот код лишний. Я бы сказал неправильный. Цитата: IRQ2: ; обработчик IRQ 1 работает как заглушка. Ты уж определись 1 или 2? Код: call simb_prb Прежде чем что-то вызывать или читать не плохо настроить сегментные регистры. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |