Загрузчик. 07С0 - адрес в памяти - это смещение в байтах? - Assembler - Ответ 17068452

Всё нельзя, т.к. первый килобайт (по умолчанию) используется для хранения векторов прерывания.

Далее идёт область данных BIOS.

Лучше зачищать после 0:7E00h (7C00h + 512) и до A000:0 (не включая его).

Есть страницы по 4КБ, 2МБ (512 шт по 4КБ

) и 1ГБ. Других вариантов нет.

Нет никаких зазоров. Есть описатели блоков памяти по 16 байт при резервировании памяти через функции DOS. И есть зарезервированные биты адреса при адресации в x64.

Варианты уже обозначили выше (Protected Mode, Unreal Mode). Второй вариант можно сделать в несколько десятков байтов и поместить в сектор. В этом случае просто закидываете в какой-нибудь сегментный регистр 0 и адресуете через 32-битный регистр относительно этого сегмента.

Но! Если у вас 4ГБ памяти и больше, это не значит, что можно получить доступ ко первым 4ГБ памяти таким образом. Есть множество адресов, которые используются для отображения видеопамяти, ПЗУ, APIC, областей для "общения" с различными устройствами и т.д.

Вернуться к обсуждению:

Загрузчик. 07С0 - адрес в памяти - это смещение в байтах? Assembler