Пишем программу начальной загрузки компьютера
[Назад ]
[↑]
[Вперед]

Собираемся ...

"Дама сдавала в багаж,
Диван, чемодан,саквояж..."


С.Я.Маршак

Как известно,  чем меньше с собой нужно везти вещей,  тем легче собраться в путь,  да и ехать менее обременительно. Обсудим необходимый в дороге минимум.  Мы хотим написать программу,  затем перевести ее в исполняемый код и записать на дискету,  с которой и будет загружаться компьютер.

Чтобы написать программу, нужен карандаш, листок бумаги и немного знаний или жгучее желание это сделать :-).  В качестве карандаша и бумаги подойдет любой текстовый редактор, например, Notepad для MS Windows. Однако, лучше подобрать специализированный редактор с подсветкой синтаксиса и другими удобными при программировании свойствами.

Наша программа будет написана на языке Assembler. Поэтому выбираем подходящий компилятор, который способен выдавать результат в виде бинарного файла, готового к переносу в загрузочный сектор дискеты.
При разработке примеров для нашей задачи вначале использовался свободно распространяемый компилятор NASM - Netwide Assembler с простым и четким синтаксисом и с минимальным количеством директив и умолчаний.  После довольно длительного затишья развитие этого компилятора снова активизировалось (в основном для Linux). Последняя версия: 2.06rc10 - 7.04.2009 г.
Развивается также другой компилятор с похожим синтаксисом и возможностью генерировать бинарные файлы: FASM (Flat ASseMbler, автор Tomasz Grysztar). Когда для этого компилятора была разработана интегрированная среда под Win32 с довольно удобным текстовым редактором, все примеры были переписаны под этот компилятор (практически заменены только отличающиеся директивы). При работе использовалась следующая версия FASM. (version 1.51 for Win32 GUI (interface 0.91) [06-02-2004]). Последняя версия компилятора на сайте разработчика 1.67.38 от 26.03.2009 Есть также версии этого компилятора для DOS, console Win32 и Linux.

После того, как программа написана, откомпилирована и получен бинарный файл, его нужно записать в загрузочный сектор дискеты (первый сектор на нулевой дорожке нулевого цилиндра). Специальных средств для этого нет (по крайней мере в продуктах небезызвестной фирмы). Можно воспользоваться командой "w" программы "debug" в MS DOS и Windows, или приспособить другие программы, например DiskEdit из пакета Norton Utilites или DiskProbe из пакета Windows NT SDK.
Правильнее, однако, написать свою - понятную, надежную и бесплатную :-) программу. Эта программа (wrboot.exe) написана на языке FASM и работает в среде MS DOS или Console Win32.

Теперь о дискете, на которой будет располагаться наш программный шедевр. Дискета обычная 3,5", предварительно форматированная программой FORMAT. Правда,после записи на нее нашего загрузчика, любая ОС скажет, что дискета не форматирована :-). Позже станет понятно почему.

Не обязательно, но желательно взять с собой какой-нибудь, пусть даже 286, компьютер для проведения первых экспериментов и отладки нашей программы. Ведь чтобы загрузиться с дискеты на рабочем компьютере, надо закончить текущий сеанс, а после эксперимента снова перезагрузить систему, чтобы усовершенствовать наше творение. Если это Windows NT, 2000 или XP, то быстро надорвешься. А так, переставил дискету из одного дисковода в другой и нажимай RESET.

Вот,пожалуй и все на первые дни пути. Чего не хватит, будем изыскивать по мере возможности.


[Назад] [↑]  [Вперед]
Hosted by uCoz