首页 > 解决方案 > 如何使用emu8086读取硬件输入

问题描述

我正在尝试编写一个汇编代码来读取连接到 pc/笔记本电脑的硬件设备数量并确定它们是什么?可以使用emu8086吗?

我已经搜索了很多,但找不到可以读取所有连接的硬件设备的东西,所以我实际上还没有尝试过任何东西

例如,如果外部鼠标和麦克风连接到我的电脑,我希望输出连接 2 个设备,它们是鼠标和麦克风。

标签: assemblyemu8086

解决方案


EMU8086 不支持在模拟 8086 PC 内运行的访客代码对真实硬件的直通访问。

从我所读到的,它甚至没有完全模拟该虚拟客户机的 PC 硬件(例如定时器中断或键盘中断),主要是int 21hDOSint 10h和一些其他 BIOS 调用接口。

它是一个用于教学的玩具模拟器,而不是编写真正的程序。有些事情你根本无法用它来做。


如果你想让桌面上的硬件做任何事情,最好的办法是编写一个在你的操作系统(Linux、Windows、OS X 或其他)下本机运行的程序,并通过内核进行系统调用以访问它司机。

或者编写您自己的操作系统/引导加载程序并启动它,以便它可以直接访问真实硬件。

或者使用 BOCHS,它完全模拟带有一些硬件设备(如 Soundblaster 卡)的 PC 兼容系统。(从您运行 BOCHS 的主机操作系统的角度来看,它只是另一个使用正常系统调用来播放/录制声音的程序。从BOCHS 模拟的客户系统内部,您的代码可以直接硬件访问声卡.)

DOSBox 是另一个有用的模拟器,但它的目标是游戏,而不是完全忠实地模拟 PC 中的所有内容。它不支持一切,例如最近的 SO 回答说它不支持某些 BIOS int 1AhRTC 功能


推荐阅读