私はシステムが本当に上のすべてのかわいいグラフィックの下でどのように動作するかについてもっと学びたいと思っています。だから私は現在、起動時にBIOSがロードする512バイトのメモリを使用しています。私が推測するように、実際にブートローダと呼ぶことはできません。とにかく、私は割り込みベクトルを置き換えているが、それに問題がある。 interupt 09h(キーボード)を交換すると、正しく機能し、キーを押すと「Memory messing」が出力されます。しかし、それから何も。その後、キーを押すたびに何もしません。私は私のハンドラから何かが欠けていた場合、システムがクラッシュしたりした場合、私は知らないが、ここではコードです:リアルモード、割り込みベクタの置き換えクラッシュ
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
これは、それを修正しました。負荷ありがとう。 – Dave