|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.02.2016, 19:58 | #11 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Это всё зависит от компилятора, транслятора, линкера.
Вам надо собрать COM файл без включения сторонних библиотек. Читаете, думаете, пробовать. Далее делаете простой загрузчик COM или EXE-MZ и запуск как описано у Абеля в главе 22.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
29.02.2016, 20:03 | #12 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Вот к примеру туторил близкий к вашей задаче:
https://habrahabr.ru/post/173705/
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
29.02.2016, 20:07 | #13 |
Форумчанин
Регистрация: 25.01.2016
Сообщений: 105
|
Хорошо, тогда буду писать и ядро на ассемблере
|
02.03.2016, 22:27 | #14 | |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
timcryt, советую писать сразу нормальный загрузчик, чтоб он нёс в себе хоть-какую-то информацию, типа что происходит на данный момент. Но это уже на-усмотрение...
Чтоб иметь чёткую картинку, сначала разберёмся с адресами: Цитата:
1. Сбросить в нуль все сегментные регистры (ES/DS/SS). 2. Если код загрузчика будет юзать стек, то надо с ним определиться и указать в регистре(SP). Если стек загрузчику не нужен, то этот пункт можно пропустить. 3. Вывести мессагу, что бут-сектор на месте, и что приступаем к загрузке ОС. 4. При чтении оски с дискеты (INT-13h), нужно повторять операцию чтения пару/раз, т.к. с первого раза флоп может не считать сектор, а мы будем косить на криво/написаный код ОС. Это типичные задачи примитивного загрузчика. Вот собственно его код на FASM'е: Загрузчик в бут-секторе дискеты: Код:
Запомним, что он передаёт управление на адрес 600h. Теперь нужно записать этот загрузчик в бут дискеты...
Нашедшего выход - затаптывают первым..
|
|
02.03.2016, 22:28 | #15 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Запись загрузчика на дискету
Для записи подойдёт любой HEX-редактор, который может работать с дисками. Я использовал HxD. Открываю в нём флоп и полученый бинарник. В окне бинарника копирую весь код в буфер, и установив в окне флопа курсор в ноль, жму [Ctrl+B]. Оставшееся пространство до адреса 200h забиваю нулями и вставляю в конце сектора сигнатуру 55АА. Всё! Наш лоадер благополучно расположился на дискете! Жмём [Ctrl+S] и флоп начинает мучительно записывать изменения на диск. Через 2-3 минуты можно протестить загрузчик в боевых условиях, загрузившись под эмулятором или из-под чистого доса (int-13 однако). У меня стоит "Microsoft Virtual PC", который прекрассно отрабатываем дисковый сервис. Теперь сама ОС.. Я не буду ничё мудрить, а просто выведу мигающее сообщение, что ОС благополучно загружена. Это сообщение будет означать, что мы всё сделали правильно и нигде не напортачили.. Код:
Загружаемся с дискеты и радуемся жизни!
Нашедшего выход - затаптывают первым..
|
03.03.2016, 06:29 | #16 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Он нужен БИОСу. Мягкие диски имеют такую вещь, как низкоуровневое форматирование. Поэтому БИОС считывает её логическую структуру с первого сектора. Если её выкинуть, то биос не сможет правильно читать диски. А также обязательным является признак загрузчика 55AAh. Если его нет, то БИОС просит вставить другой диск. Вы просто несможете загрузиться. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 03.03.2016 в 07:14. |
||
03.03.2016, 08:14 | #17 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..биосу он по-барабану. Он нужен файловой системе.
Бивису нужна только загрузочная сигнатура и всё. А чё там дальше - пусть разбирается ОС.
Нашедшего выход - затаптывают первым..
|
03.03.2016, 08:23 | #18 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
После компиляции загрузчика получаем такой сектор, который можно записать на дискету и загрузиться с неё. В дампе только загрузчик, а остальное забито нулями и вставлена загрузочная сигнатура:
Код:
Нашедшего выход - затаптывают первым..
|
03.03.2016, 10:01 | #19 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
биосу нужна лишь загрузочная метка. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
20.03.2016, 18:45 | #20 |
Новичок
Джуниор
Регистрация: 20.03.2016
Сообщений: 5
|
Добрый вечер.
Нужна помощь специалиста. Есть 2 программы с расширением .s19 Нужно немного изменить. За деньги. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помощь в разработке! | Шибанов Антон | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 10 | 20.05.2015 12:11 |
Предложение по разработке российской ОС | VAST | Свободное общение | 39 | 12.05.2010 08:41 |
Проблемы при разработке | Ivan_32 | Свободное общение | 8 | 13.04.2010 12:45 |
помогите в разработке | shkipper | Общие вопросы по Java, Java SE, Kotlin | 5 | 08.04.2009 02:32 |