Но как мне поставить стадию 2 на 0x8000 ...
К сожалению, я не использую "masm", но другие ассемблеры.Но я ожидаю, что вам придется изменить [org 0x7e00]
на [org 0x8000]
.
... и связать stage1 и stage2 для совместной работы?
Это не тактак просто, как вы думаете:
BIOS загрузит один сектор (510 байт плюс 2 байта 0xAA55
) в память в 0x7C00.При использовании обычного BIOS нет возможности загрузить больше данных!
Код в этих 510 байтах («этап 1») должен загрузить «состояние 2» в память:для этого можно использовать функции ah=2
или ah=0x42
из int 0x13
.
Если у вас есть собственный формат дискеты, это довольно просто:
Вы храните «stage 2» ввторой сектор дискеты и загрузите второй сектор.
Если вы хотите загрузить «этап 2» из файловой системы (например, из файла с диска, отформатированного в FAT), это более сложно.