Sistemlerin gerçekten en güzel grafiklerin altında nasıl çalıştığı hakkında daha fazla bilgi almaya çalışıyorum. Bu yüzden şu anda, BIOS'un başlangıçta yüklediği 512baytlık bellekle oynuyorum, tahmin ettiğim anda gerçekten bir bootloader olarak adlandırılamıyorum. Her neyse, bir kesinti vektörünü değiştiriyorum ama onunla ilgili sorunlar yaşıyorum. 09h (klavye) geçişini değiştirdikten sonra, tuşa basıldığında 'Memory messing' tuşuna basılır. Ama sonra hiçbir şey. Her tuş basışından sonra hiçbir şey yapmaz. Benim işleyicisinden şey eksik sistem çökmesini veya eğer bilmiyorum, burada kod:Gerçek Mod, Kesintisiz vektör değiştirme Çöküntüsü
jmp start
times 100 db 0 ; Cleared space for stack
start:
xor ax, ax
mov ax, start
sub ax, 80
mov sp, ax
mov al, 0x09 ; Interupt number
mov bl, 4
mul bl
mov bx, ax
xor ax, ax
mov es, ax
mov [es:bx], word prints ; My interupt handler
add bx, 2
mov [es:bx], word 0x00
bloader:
jmp bloader
prints:
cli
push ax
push bx
push si
mov si, msg ; Message to print
mov bl, 0x07
mov bh, 0x00
printnb:
lodsb ; Grab byte from message
cmp al, 0 ; End of message
je printf
mov ah, 0x0E
int 0x10 ; Print byte
jmp printnb
printf:
mov al, 0x20
out 0x20, al ; Inform interupt controller interupt has been handled
pop si
pop bx
pop ax
sti
iret ; Interupt return
msg db "Memory messing",0
times 510 - ($ - $$) db 0
dw 0xAA55
Bu düzelttim. Bir yük teşekkürler. – Dave