protected mode isr
Posted: Mon Oct 13, 2008 10:15 am
Hi, im sing the code neon corrected to go into protected. After i put some apic code referencing vector 1 - keyboard to generate a interrupt, and finally a isr who write on screen.
The code is without error but dont print on the screen. Any ideias?
bits 16
org 0x7c00
jmp main
main:
mov ax, word 0x0000
mov ds, ax
mov ax, word isr
mov [2008], word ax
mov [2010], word 0x8
mov [2012], word 1000111000000000b ; interrupt descriptor
mov [2014], word 0x0000
mov [2016], word 255
mov [2018], word 2000
mov [2020], word 0
mov [528], word 0xffff
mov [530], word 0x0000
mov [532], byte 0x00
mov [533], byte 0x9a
mov [534], byte 0xcf
mov [535], byte 0x00
mov [536], word 0xffff
mov [538], word 0x0000
mov [540], byte 0x00
mov [541], byte 0x92
mov [542], byte 0xcf
mov [543], byte 0x00
mov [1000], word 23
mov [1002], word 520
mov [1004], word 0x0000
cli
lgdt [1000]
mov eax,cr0
or al,0x01
mov cr0,eax
jmp 8:pm
jmp $
bits 32
pm:
mov ax, 8*2
mov ds,ax
lidt [2016]
mov eax, 0x12
mov [0xfec00000], dword eax
mov [0xfec00010], dword 0x00000001 ;apic
mov eax, 0x13
mov [0xfec00000], dword eax ;apic -
mov [0xfec00010], dword 0x00000000
jmp $
isr:
mov [0xb8000], byte 'A'
mov [0xb8001], byte 0x17
The code is without error but dont print on the screen. Any ideias?
bits 16
org 0x7c00
jmp main
main:
mov ax, word 0x0000
mov ds, ax
mov ax, word isr
mov [2008], word ax
mov [2010], word 0x8
mov [2012], word 1000111000000000b ; interrupt descriptor
mov [2014], word 0x0000
mov [2016], word 255
mov [2018], word 2000
mov [2020], word 0
mov [528], word 0xffff
mov [530], word 0x0000
mov [532], byte 0x00
mov [533], byte 0x9a
mov [534], byte 0xcf
mov [535], byte 0x00
mov [536], word 0xffff
mov [538], word 0x0000
mov [540], byte 0x00
mov [541], byte 0x92
mov [542], byte 0xcf
mov [543], byte 0x00
mov [1000], word 23
mov [1002], word 520
mov [1004], word 0x0000
cli
lgdt [1000]
mov eax,cr0
or al,0x01
mov cr0,eax
jmp 8:pm
jmp $
bits 32
pm:
mov ax, 8*2
mov ds,ax
lidt [2016]
mov eax, 0x12
mov [0xfec00000], dword eax
mov [0xfec00010], dword 0x00000001 ;apic
mov eax, 0x13
mov [0xfec00000], dword eax ;apic -
mov [0xfec00010], dword 0x00000000
jmp $
isr:
mov [0xb8000], byte 'A'
mov [0xb8001], byte 0x17