Как прочитать аппаратный ввод с помощью emu8086 - PullRequest
2 голосов
/ 16 июня 2019

Я пытаюсь сделать ассемблерный код, который читает, сколько аппаратных устройств подключено к ПК / ноутбуку, и определяет, какие они? возможно ли использовать emu8086?

Я много искал, но не смог найти что-то, что читает все подключенные аппаратные устройства, так что на самом деле я еще ничего не пробовал

например, если к моему компьютеру подключены внешняя мышь и микрофон, я хочу, чтобы на выходе было подключено 2 устройства, а это мышь и микрофон.

1 Ответ

2 голосов
/ 17 июня 2019

EMU8086 не поддерживает сквозной доступ к реальному оборудованию для гостевого кода, выполняемого на эмулируемом ПК 8086.

Из того, что я прочитал, он даже не полностью эмулирует аппаратное обеспечение ПК.для этой виртуальной гостевой машины (например, прерывания по таймеру или клавиатуры), в основном это просто int 21h DOS и int 10h и некоторые другие интерфейсы вызова BIOS.

Это игрушечный эмулятор для обучения, а не для написания реальных программ.Есть некоторые вещи, которые вы просто не можете с этим сделать.


Если вы хотите поговорить, чтобы аппаратное обеспечение на вашем рабочем столе делало что-нибудь, лучше всего написать программу, которая работает под вашим собственнымОС (Linux, Windows, OS X и т. Д.) И выполняет системные вызовы для доступа к ней через драйверы ядра.

Или напишите собственную ОС / загрузчик и загрузите ее, чтобы она могла напрямую обращаться к реальному оборудованию.

Или используйте BOCHS, которая полностью эмулирует PC-совместимую систему с некоторыми аппаратными устройствами, такими как карта Soundblaster.(С точки зрения хост-ОС, под которой вы запускаете BOCHS, это просто еще одна программа, которая использует обычные системные вызовы для воспроизведения / записи звука. Из внутри гостевой системы, которую эмулирует BOCHS, ваш код имеет прямойаппаратный доступ к звуковой карте.)

DOSBox - еще один полезный эмулятор, но он предназначен для игр, а не для полной точной эмуляции всего на ПК.Он не поддерживает все , например, недавний ответ SO говорит, что не поддерживает некоторые функции BIOS int 1Ah RTC .

...