gpt4 book ai didi

assembly - 实模式,中断向量替换崩溃

转载 作者:行者123 更新时间:2023-12-04 14:37:17 24 4
gpt4 key购买 nike

我正在尝试更多地了解系统如何在顶部所有漂亮的图形下真正工作。因此,我目前正在使用 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

最佳答案

自从我处理键盘中断以来已经有很长一段时间了,但我认为您实际上缺少的是处理键盘硬件,因此它会清除中断条件并准备好生成另一个中断。

就像是:

         in     al, 60h     ; Read input buffer 

可能就是它所需要的。

如果我有机会,我会看看我写键盘驱动程序时是否有任何旧笔记或代码。

关于assembly - 实模式,中断向量替换崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com