使用键盘驱动程序重新启动计算机如何工作?
How does rebooting a computer with a keyboard driver work?
我刚从这个波兰语教程学习内核编程 - https://pl.wikibooks.org/wiki/Pisanie_OS
它在那里说键盘驱动程序有很多用途,包括重新启动计算机。这是一个代码:
reset:
call kbd
mov al,0xfe
out 0x64,al
kbd0:
jmp short $+2
in al,60h
kbd: jmp short $+2
in al,64h
test al,1
jnz kbd0
test al,2
jnz kbd
ret
我不明白这段代码。有人可以给我解释一下吗?
8086 处理器有一个复位引脚。置位时,这会将处理器重置为其初始状态。该引脚连接到键盘控制器;如果您要求键盘控制器向上拉复位引脚然后向下拉(这是您发布的代码所做的),处理器将被复位。
现代 x86 处理器的工作方式与此略有不同,键盘控制器不再是一个单独的芯片。但是同样的方法还是导致南桥产生复位信号,重启电脑。
我刚从这个波兰语教程学习内核编程 - https://pl.wikibooks.org/wiki/Pisanie_OS 它在那里说键盘驱动程序有很多用途,包括重新启动计算机。这是一个代码:
reset:
call kbd
mov al,0xfe
out 0x64,al
kbd0:
jmp short $+2
in al,60h
kbd: jmp short $+2
in al,64h
test al,1
jnz kbd0
test al,2
jnz kbd
ret
我不明白这段代码。有人可以给我解释一下吗?
8086 处理器有一个复位引脚。置位时,这会将处理器重置为其初始状态。该引脚连接到键盘控制器;如果您要求键盘控制器向上拉复位引脚然后向下拉(这是您发布的代码所做的),处理器将被复位。
现代 x86 处理器的工作方式与此略有不同,键盘控制器不再是一个单独的芯片。但是同样的方法还是导致南桥产生复位信号,重启电脑。