Биос Прерывает на ассемблере - PullRequest
0 голосов
/ 08 мая 2019

Пожалуйста, кто-нибудь подскажет, как вызывать прерывание на ассемблере с помощью NASM на 32-битной архитектуре. Я пробую много раз, но результат не желателен.в Linux "ошибка дампа ядра", а в windows ничего не происходит на CMD.Я немного прочел, что в 32-битном пользовательском приложении выполняется на уровне кольца 3, а ядро ​​и драйвер запускаются на уровне кольца 1. Если кто-то знает, как это сделать на уровне пользователя.Я следую за кем-то на вашей трубке, он очень хорошо работает с Visual Stdio с C ++ или C (со встроенным и внешним файлом сборки), но когда я вызываю любое прерывание во внешнем или встроенном файле, Visual Studio сообщает об ошибке нарушения расположения памяти

32-битная архитектура Intel (уровень кольца)

1 Ответ

0 голосов
/ 08 мая 2019

Чтобы использовать прерывание BIOS:

  • убедитесь, что BIOS существует и все состояние, от которого он зависит, не было изменено. Если компьютер загружен с UEFI, BIOS не существует. Если операционная система запущена, то она обнуляет состояние (например, конфигурация микросхемы PIC, конфигурация PIT, пространство конфигурации PCI, область данных BIOS, IVT, ...), от которой зависит BIOS.

  • убедитесь, что вы находитесь в реальном режиме или аналогичны. Если ваш код 32-битный, вам нужно переключиться обратно в реальный режим, или настроить задачу virtual8086 (и ее монитор), или использовать какой-то эмулятор (например, для интерпретации кода BIOS вместо его непосредственного выполнения).

Обратите внимание, что есть некоторые особые случаи (например, старый API "Advanced Power Management", который был заменен ACPI, VESA BIOS Extensions), где интерфейс защищенного режима предоставляется в качестве (иногда необязательной) альтернативы. Они в основном болезненны (например, включают настройку специальных дескрипторов для «16-битного защищенного режима» и копирование в них двоичных двоичных объектов) и почти никогда не стоят хлопот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...