Хотя можно переключаться между защищенным режимом и реальным режимом, почти наверняка не , что вы хотели бы сделать.Вот как все было сделано на 286 (довольно неуклюже, так как он намеренно не поддерживал переключение из режима защиты обратно в реальный режим и т.д.).Однако, начиная с 386, они добавили режим V86, который может запускаться как задача в защищенном режиме.
Если вы хотите использовать BIOS из защищенного режима, это почти наверняка способ сделать что-то.Вы можете в основном создать задачу V86, переключиться на нее, чтобы использовать BIOS, а затем переключиться обратно на другую задачу для выполнения кода защищенного режима.
Если вы хотите поиграть с этим, вы можете взглянуть на DJGPP , который является расширителем DOS (в основном, программа, как я только что описал, чтобы обрабатывать переключение в / из задачи V86 по мере необходимости для обработки дискового ввода-вывода и тому подобное) вместе с портомдовольно старая версия gcc, так что вы можете написать код, который на нем работает.
Коммерческий рынок для расширителей DOS в настоящее время практически мертв, поэтому по крайней мере один ранее коммерческий расширитель DOS ( HX )теперь доступно как открытый исходный код.Если вы собираетесь поиграть с этим, вы, вероятно, захотите использовать его с компилятором OpenWatcom .
Редактировать: насколько вы читаете файл размером более 1 МБ(например), это просто, но неуклюже: считывайте данные порциями, и когда вы закончите чтение, вы либо переназначаете память, либо копируете содержимое, чтобы получить то, что вы прочитали, туда, где вы действительно хотите, затемпрочитайте другой фрагмент.
Что касается разговоров с аппаратным обеспечением: многое зависит от того, хотите ли вы что-то, что работает в некоторой степени, или хотите ли вы в полной мере воспользоваться имеющимся оборудованием.Простое использование базовых портов IDE позволит вам общаться практически с любым жестким диском, который не является действительно древним - но получить максимальную отдачу от аппаратного обеспечения - это немного больше работы.Диски IDE / ATAPI использовали около полудюжины различных режимов DMA, каждый из которых должен быть настроен немного по-своему.Многие из них достаточно взрослые, и вам, вероятно, наплевать на них, поэтому вы можете напрямую поддерживать только пару новейших версий, а во всем остальном использовать базовые (не DMA) передачи.