Assembly 带QEMU的内存中的0x98FA2未知函数

Assembly 带QEMU的内存中的0x98FA2未知函数,assembly,x86,reverse-engineering,qemu,osdev,Assembly,X86,Reverse Engineering,Qemu,Osdev,我正在调试一个32位操作系统,为此我使用QEMU+GDB 我试图找出代码在哪一时刻生成INT 16来获取键盘缓冲区 我隔离了执行此操作的函数,但我无法理解它是如何执行的 当EAX指向0x98FA2时(它跳到此地址),有一个时刻执行调用DWORD PTR[EAX] 这里的想法是,这不是一个与操作系统相对应的内存,我不知道为什么这个代码在这个内存点上 我在0x98FA2上放置了一个观察点,以发现谁在这里编写代码。令我惊讶的是,QEMU bios,从0x5b开始,bios正在写入这个字节 有人能告诉我

我正在调试一个32位操作系统,为此我使用QEMU+GDB

我试图找出代码在哪一时刻生成INT 16来获取键盘缓冲区

我隔离了执行此操作的函数,但我无法理解它是如何执行的

当EAX指向0x98FA2时(它跳到此地址),有一个时刻执行调用DWORD PTR[EAX]

这里的想法是,这不是一个与操作系统相对应的内存,我不知道为什么这个代码在这个内存点上

我在0x98FA2上放置了一个观察点,以发现谁在这里编写代码。令我惊讶的是,QEMU bios,从0x5b开始,bios正在写入这个字节


有人能告诉我方向吗?

好吧,如果IVT位于地址0,那么
int 16h
的中断向量将是地址58h..5Bh处的DWORD。32位操作系统可能不使用BIOS进行键盘读写,因为在32位保护模式下BIOS中断不可用。他们必须切换回真实模式,然后再切换回没有意义的保护模式。32位操作系统通常初始化键盘控制器,然后直接读写字符(大多数操作系统都设置了自己的中断处理程序和循环键盘缓冲区)。QEMU在来宾系统中运行的BIOS的源代码是免费提供的,因此查看它比反向工程更快……正如@MichaelPetch所指出的,操作系统似乎有一些功能,可以实现与键盘和tty对话的功能。我不明白的是它到底是如何工作的,你有什么参考资料可以让我得到更多关于这些控制器如何工作的信息吗?并获得信息。