assembly - 如何使用emu8086读取硬件输入
问题描述
我正在尝试编写一个汇编代码来读取连接到 pc/笔记本电脑的硬件设备数量并确定它们是什么?可以使用emu8086吗?
我已经搜索了很多,但找不到可以读取所有连接的硬件设备的东西,所以我实际上还没有尝试过任何东西
例如,如果外部鼠标和麦克风连接到我的电脑,我希望输出连接 2 个设备,它们是鼠标和麦克风。
解决方案
EMU8086 不支持在模拟 8086 PC 内运行的访客代码对真实硬件的直通访问。
从我所读到的,它甚至没有完全模拟该虚拟客户机的 PC 硬件(例如定时器中断或键盘中断),主要是int 21h
DOSint 10h
和一些其他 BIOS 调用接口。
它是一个用于教学的玩具模拟器,而不是编写真正的程序。有些事情你根本无法用它来做。
如果你想让桌面上的硬件做任何事情,最好的办法是编写一个在你的操作系统(Linux、Windows、OS X 或其他)下本机运行的程序,并通过内核进行系统调用以访问它司机。
或者编写您自己的操作系统/引导加载程序并启动它,以便它可以直接访问真实硬件。
或者使用 BOCHS,它完全模拟带有一些硬件设备(如 Soundblaster 卡)的 PC 兼容系统。(从您运行 BOCHS 的主机操作系统的角度来看,它只是另一个使用正常系统调用来播放/录制声音的程序。从BOCHS 模拟的客户系统内部,您的代码可以直接硬件访问声卡.)
DOSBox 是另一个有用的模拟器,但它的目标是游戏,而不是完全忠实地模拟 PC 中的所有内容。它不支持一切,例如最近的 SO 回答说它不支持某些 BIOS int 1Ah
RTC 功能。
推荐阅读
- python - 按行索引分组的条形图
- angular - Webpack 忽略源目录中的文件
- javascript - 要求、导出和控制台字段的 Javascript eslint 错误
- android - 程序类型已经存在:org.hamcrest.CoreMatchers
- ruby-on-rails - 如何以 Ruby on Rails 守护进程的方式查看服务器日志?
- python - 将 tkinter Filedialog 与 json.dump 结合使用
- javascript - 用文件提交反应表单
- vb.net - sql 过程返回 1 但 vb.net 得到 0
- sql-server - 传递表类型以选择存储过程并使用 LIKE
- php - Laravel 使用请求获取 POSTed 数据