Было бы очень полезно, если бы вы упомянули, над какой ОС вы работаете.
Допустим, что это Windows 32Bit, тогда, если вы точно знаете физический адрес, вам все равно нужно связать PTE с ним. Вы не можете просто позвонить на этот конкретный адрес, так как вы находитесь в защищенном режиме, а у вас есть виртуальный адрес. Вы можете сопоставить физическое с виртуальным, но это сложно.
Если вы хотите посмотреть, можете ли вы посмотреть, что находится по этому адресу, используйте WinDBG и выполните:
!dd <address>
Это отобразит DWORD по указанному вами физическому адресу.
Перевод с физического на виртуальный язык прост, когда вы знаете, что делать (смотреть на CR3 вам не поможет:)
Теперь, если вы используете другую ОС, это другая история, потому что PTE отображается по-разному.
Кроме того, как упоминалось ранее, вы не можете просто позвонить в BIOS, поскольку на самом деле это 16-битный, а не 32-битный.
В защищенном режиме (в i386 и, возможно, позже) была особая техника, в которой вы могли использовать vx86 или что-то в этом роде, но я забыл точный термин. Это было выполнимо, но очень дорого, потому что требовало переключения задач и прочего.
Если вам нужно разработать драйвер диска, то специалисты по оборудованию в вашей группе должны быть в состоянии предоставить вам доступные порты, чтобы вы могли совершать IO-вызовы на устройство, исключая необходимость доступа к BIOS. 1014 *