Цитата(piz2383 @ Jul 6 2009, 23:18)

А как на Си написать, так что бы нулевой вектор все таки был на адресс C00?
Это Вам зачем? Поскольку Вы ввели загрузчик искусственно, то и поддержку "двух" нулевых векторов прийдется обеспечивать Вам самому. Сам я делам следующим образом:
1. Загрузчик распологается в верхних адресах. Нулевой вертор автоматически (в программе на Си) содержит команду jmp на начало загрузчика.
2. При старте по подаче питания управление передаётся загрузчику.
3. Загрузчик определяет (например, по к-либо ноге) загружать ему в память приложение или передать уже загруженному приложению управление.
4. Если загружать приложение, то загрузчик считывает и записывает в память приложение, при этом "защищает" нулевой вектор - иначе он (загрузчик) не получит управление никогда. Загрузчик должен контролировать - куда производится запись прикладной программы и команду по нулевому адресу не заносить, но "выкусить" из команды и запомнить (записать) у себя адрес перехода (начало приложения) для последующего старта приложения.
5. Если загружать приложение не нужно - передаётся управление на начало приложения по ранее сохранённому адресу.