Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Asm с дискеты, Почти создание ОС 
:(
    Опции темы
Felt
Дата 7.5.2005, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.6.2004

Репутация: нет
Всего: нет



Привет народ.
Я хочу поместить программу на асемблере на дискету и выполнить ее при загрузке компа с дискеты. Можно ли написать и проверить такую прогу из под Windows, а потом как-нибудь переписать программу, оставив только двоичый код, необходимый для загрузки компа (ведь в экзешнике хранятся еще и заголовки и другая муть)? Можно ли написать такую прогу на FASM, ну или в крайнем случае на MASM32. Как?
Каким образом можно скопировать созданную программу на дискету (желательно код на Delphi, хотя и на C++ тоже сойдет)?

Извините за ламерские вопросы, просто я мало что знаю об асме, а мне нужно просто написать некоторую полезную инфу при запуске компьютера с дискеты, т. е. никаких событий, связанных с работой мыши или клавиатуры там не будет.
PM MAIL   Вверх
D0lphin
Дата 7.5.2005, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 7.5.2005
Где: Кемерово

Репутация: нет
Всего: нет



Гхм, постараюсь ответить... smile

Зачем тебе exe-шник? Можно сделать так:
В fasm пишешь что тебе надо, ну пусть для определенности:

start:
mov ax, 0xb800
mov es, ax
mov [es:0x0], dword 0x1F291F3A
loop1:
jmp loop1

Компилишь, получаешь бинарник. С помощью RawWrite переписываешь на дискету, запускаешь VirtualPC....и улыбаешься smile

Все так? ;)
PM MAIL ICQ   Вверх
Guest
Дата 7.5.2005, 08:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











но ведь файл, который создает fasm привязан к конкретной ОС (DOS, Windows). А в том случае если я запускаюсь при включении компа, ОС еще не загружена. Получается что моя прога - это аналог ОС. Нужно чтобы там располагались только код без заголовков. И потом, чтобы запустить такую прогу BIOS смотрит на какой то адрес, т. е. прежде чем запускать, он сначала считывает с определенного места диска инфу, а потом запускает. Так вот откуда он ее считывает и что там нужно разместить.
  Вверх
D0lphin
Дата 7.5.2005, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 7.5.2005
Где: Кемерово

Репутация: нет
Всего: нет



Ты бы сначала попробовал, что-ли...
Фасм создает бинарник, т.е. просто двоичные инструкции процессору. Единственное к чему они привязаны это х86 архитектура. Как я написал выше - все работает. Если уж тебе так интересно, то после проверки биосом подключенного оборудования управление передается процедуре начальной загрузки с дисков. Она загружает первый сектор с нулевой дорожки нулевой головки, размещая его в памяти по адресу 7С00h, и передавая управление после загрузки сектора по этому же адресу. Ответственность за дальнейшую загрузку компьютера ложится на код, содержащийся в этом секторе. Вот. Понятно?

PM MAIL ICQ   Вверх
Sardar
Дата 7.5.2005, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Только еще нужно учесть что проц не в "защищённом режиме", менеджера памяти(страницы) еще нет, прерывания не обрабатываються, т.е. вообще ничего нет... smile
Зачем такой изврат, не проще ли под DOS'ом загрузиться?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Chingachguk
Дата 8.5.2005, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Как правильно указал D0lphin, при загрузке компа BIOS может смотреть на то, можно ли грузить с дискеты так называемый BOOT-сектор.

Это настраивается в BIOS setup, если надо, чтобы BIOS смотрел дисковод, ну или - для извращенцев - руками CMOS править ;)

Далее. Когда ты делаешь "sys a:", то записывается прежде всего тот самый boot-сектор, он должен быть в определенном формате:

первый код - jmp, обходящий таблицу
в конце - маркер dw 55AAh

Подробнее - см. любой бут-вирус, статьи по этому поводу, книга Коваля "как написать компьютерный вирус" и проч.

Если ты записал в нужный сектор дискеты все в верном формате, то BIOS загрузит твой бут в 0000:7C00 и далее... на твое усмотрение.

Например, досовский BOOT далее считывает несколько секторов в область чуть ниже себя и отдает им управление. Те он работает на уровне кусков кода, которые хранятся в некоторых секторах дискеты.

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

Весь такой код должен быть перемещаемым, те он должен уметь работать будучи загруженным с любого адреса. Для этого обычно пишут в формате *.com, те обычный файл, в начале идет вычисление текущего адреса:

call GetOfs
pop si ; si= offset "pop si"






--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Chingachguk
Дата 8.5.2005, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Отладка кода под "Windows".

Конечно, можно написать смело свой код и засунуть его в BOOT дискеты. Но вот для отладки придется с нее загрузиться, а это долго, особенно если отлаживается сложный алгоритм, который работает после старта boot.

Я использовал так называемый "загрузчик", это простая прога, которая читает с файла содержимое сектора (512 байт) по адресу cs:7c00 и передает ему управление. Те она как бы имитирует действия BIOS. Для примера выдерни из системной дискеты boot в такой файл и посмотри в отладчике, как он себя ведет. Старайся написать что-то подобное его действиям, но там много лишнего, так как - уже говорил - его основная задача это загрузка DOS.

Это сообщение отредактировал(а) Chingachguk - 8.5.2005, 00:50

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  Mbrtrace.asm


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.