Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диспетчер загрузки ОС 
:(
    Опции темы
Fant87
Дата 18.10.2010, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, возник вопрос о написании диспетчера загрузки ОС на TASM.
Смысл такой:
1) Вставляем флешку, на которой находится наша программа
2) В биосе выбираем загрузку с флешки
3) Запускается меню выбора того, что загрузить (ОС с винчестера или что нибудь еще), пути для запуска можно прописывать сразу.
подскажите пожалуйста какую либо литературу по этому вопросу или может кто-то уже это делал и поделится исходником.
PM MAIL   Вверх
iff
Дата 18.10.2010, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Цитата

1) Вставляем флешку, на которой находится наша программа
2) В биосе выбираем загрузку с флешки

Когда мы в БИОСе выбираем загрузку с флэшки, то загружается соответственна ОС, которая записана на флешке, в ее "загрузочном секторе". Для этого ненужен никакой диспетчер ОС - для этого нужен БИОС (который понимает флешки) и сама флеш-карта, на которой записана ОС.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Fant87
Дата 18.10.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я наверно не так объяснил.
Наверно вы знаете комплекс для "реанимации"  PC :Live CD или Live USB, так вот при выборе загрузки с флешки или диска, она сначало выводит список того, что можно загрузить, а именно: непосредственно винду с диска или с HDD, так же можно выбрать запуск каких либо программ. Еще пример, при установке Windows, на некоторых сборках тоже делают выбор что запустить, установку windows или какую нибудь программу. Так вот мне и надо, что бы при загрузке флешки было меню выбора запуска установленной на  HDD Windows либо каких-то программ. Я больше не знаю как объяснить.
PM MAIL   Вверх
iff
Дата 24.10.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Цитата(Fant87 @  18.10.2010,  23:00 Найти цитируемый пост)
выбрать запуск каких либо программ

Эти программы написаны я так понимаю под ДОС. Значит тогда вам нужно будет писать ДОС-совместимую операционную систему...  smile 
Или взять флешку, средствами виндовс сделать из нею загрузочный диск MS-DOS, далее записать на неё те программы, которые будут выбираться из меню, затем пишем диспетчер загрузки, а в файл AUTOEXEC.BAT последними строками дописываем:
Код

:disp
DISPETCH.EXE
goto disp

Что-бы пользователь имел дело только с диспетчером.

А теперь самое главное как же его написать:
1) Что каксается организации вывода меню на экран, то с этим проблем не будет. Я даже видел исходник такой программы где-то. Там применюются в основном ф-ции прерываний 10h и 16h.
2) Загрузка программы. Для этого используйте ф-цию 4Bh прерывания int 21h
3) Выполнить загрузку с какого либо диска. с этим посложнее... Вот например int 19h выполняет загрузку ОС, но по-моему с только с диска, который был выбран для загрузки в БИОС.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Logree
Дата 24.10.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не нужно так заморачиваться:

LiLo
GRUB



--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
iff
Дата 24.10.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Это всё конечно хорошо, но человек хочет сам написать  smile 


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Fant87
Дата 24.10.2010, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, мне надо самому написать, просто это тема курсового проекта. 
На счет меню, нету сложности, я уже его практически реализовал, сложность составляет только с запуском выбранной ОС. 
PM MAIL   Вверх
iff
Дата 24.10.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



А с запуском программы из меню нет сложности? Т.е. программа написана "под BIOS", в том смысле что в ней не используются сервисы ДОС?

Это сообщение отредактировал(а) iff - 24.10.2010, 19:15


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Fant87
Дата 26.10.2010, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Эх, узнал я как надо и оказалось, все мои наработки можно выкинуть.
Нужно:
1) Написать код с помощью функций BIOS, который будет перекидывать на адрес в файловой системе, где загрузчик ОС
2) Записать этот код в загрузочный сектор флешки
Нужно теперь разобраться, как найти адрес загрузчика ОС.
Ну а чтобы протестировать, надо понять, как записать в загрузочный сектор
Преподаватель сказал:
код просмотреть через редактор, найти где начинается код функций, скопировать эти 0-и и 1, а потом как-то записать их в загр. сектор. Но вроде на СИ я видел такое.
PM MAIL   Вверх
iff
Дата 26.10.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Где загрузчик?
В загрузочной записи. В ней данные со смещением 00h содержат инструкцию перехода к загрузчику, сам же загрузчик начинается со смещения 3Eh и может продолжаться до 1FFh.
Т.е. фактически вам нужно перейти к выполнению команд записанных с адресом 00 (смещение команды, передающей управле6ние загрузчику).

Загрузочная запись находится в самом начале диска (сторона 0, дорожка 0, сектор 1).

Но вам нужно будет сначало загрузочную запись прочитать в оперативную память, регистр cs преровнять к тому сигменту оперативной памяти, куда считали запись, а регистр ip преровнять н 0000.

НО. думаю что в БИОС есть уже прерывание и функции которые могут выполнить загрузку ОС с како-го либо диска и вам не придется все писать самим.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Fant87
Дата 28.10.2010, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, есть прерывания, выполняющие загрузку, но как оказалось, мне до них еще далеко. Пробовал вывести обычное сообщение при загрузке, но для этого надо перевести как минимум в bin, а это чего-то не получается утилита exe2bin пишет, что не удается преобразовать файл, пробовал смотреть другие топики, та все примеры на nasm, а он сразу в bin кодирует. Может подскажете, что мне сделать, чтобы всё таки как-то запустить код написанный на TASM или может ошибка в коде и поэтому exe2bin ругается.
Вот код:
Код

.Model TINY
code SEGMENT
 ASSUME cs:code
ORG 7C00h
begin:

mov ah, 0eh
mov al, 'B'
int 10h
mov ah,00h
int 16h

mov AX,4c00h
int 21h
code ENDS
end begin


Думаю есть еще варианты, как записать загрузочный в загрузочный сектор, но понятных объяснений я нигде так и не нашел.
PM MAIL   Вверх
Logree
Дата 28.10.2010, 04:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1. при написание загрузщика у вас НЕТ ПРЕРЫВАНИЙ DOS!!! откуда там ему взяться?

2. 
Код

При использовании команды exe2bin имеют место следующие ограничения: 
    входной файл должен быть в корректном .exe формате, полученном после компоновки и не должен быть упакованным; 
    резидентная или действующая (код и данные) часть файла не должны превышать объема в 64Кб; 
    в файле не должно быть сегмента stack.


почитайте любую тему по "напсанию собственной оси" + про MBR.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
iff
Дата 29.10.2010, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



TASM может сразу компилировать в COM. Для этого укажите параметро /t линкеру.
Цитата(Logree @  28.10.2010,  04:57 Найти цитируемый пост)
при написание загрузщика у вас НЕТ ПРЕРЫВАНИЙ DOS!!! откуда там ему взяться?

Да. Но вот еще есть другой вопрос
Цитата(Fant87 @  18.10.2010,  23:00 Найти цитируемый пост)
Так вот мне и надо, что бы при загрузке флешки было меню выбора запуска установленной на  HDD Windows либо каких-то программ

Эти программы тогда тоже не должны использовать прерываний DOS и других сервисов DOS. Более того вам придется ещё писать довольно сложный загрузчик (для загрузки EXE)



--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Logree
Дата 29.10.2010, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



автору нужно уточнить тему у преподавателя... что это за "остальные программы" под чем  они должны запускаться и т д.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
Fant87
Дата 29.10.2010, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я всё уточнил, программы запускать не надо, необходимо только запустить диспетчер и выбрать какую ОС грузить. С запуском маленькой программы (выводящей букву) я справился. Вот только возникают вопросы:
1) Как сделать, чтобы загрузчик запустил еще один загрузчик с флешки, так как мне кажется, что если делать интерфейс, то не поместится в 512 байт
2) Как сделать выбор загрузки ОС, а именно:
 можно ли,чтобы BIOS нашел все ОС на дисках и потом как-то это вывести или как-то управлять вызовом ОС, а именно выбором диска поиска загрузочного сектора. Еще преподаватель сказал, что можно грузить адреса загрузчиков из файла, ток вот как это сделать и где взять эти адреса я не пойму.
Я пока нашел только 2-а вроде подходящий прерывания:
1) int 18h - оно продолжает поиск загрузчиков на других носителя, но она не подходит, так как может надо выбрать не следующий диск, а последний например.
2) int 19h -это вроде подходит, только я не нашел описания как им пользоваться, нашел только то, что если после прерывания не находит загрузочный сектор, то вызывает int 18.

Вот что получилось при попытке записаться в загр сектор:
Код

.model     tiny             
.code                        
org        0              
start:      
    mov ah,0eh
    mov al,'A' 
    int        10h  
    mov ah,00h
    int 16h
    int 18h
end        start 

Получается при загрузке выводится А, потом идет ожидания нажатия любой клавиши, а далее загрузка с другого носителя.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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