|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
Своя ОС для чайника09.01.2010, 22:16. Показов 35774. Ответов 81
Хочу написать свою ОС на асме. Самую простую. Единственное, что она должна уметь: загружаться с неё, открывать файлы (проводник) пускай консольный или еще какой. Но нужно, чтобы скажем если установлены некоторые программы, то с этой ОС можно было бы найти екзешник и его запустить. Если и это сложно, то хотя бы чтобы по нажатию клавиши открывалась любая заведомо установленная программа. Нашел-написал это MyOS.rar Я не претендую написать полноценную ОС. Просто пример.
Там в архиве готовая ОС. Но я не могу разобраться как её скомпилировать.
0
|
|
| 09.01.2010, 22:16 | |
|
Ответы с готовыми решениями:
81
ДК для чайника QT для чайника |
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||
| 10.01.2010, 00:35 | ||
|
Иными словами, я так полагаю можно ограничится программами-процедурами, которые встроить прямо в ядро, а если потребуется что-то записывать на диск, то некоторое подобие файловой системы. Компилироваться, по идее, код должен как обычная com программа, правда в начале кода, который в архиве, стоит .model small... Кроме того, т.к. загрузчик биоса поместит код по аддресу 0000:7c00, то должна быть директива org 7c00h в начале кода.
2
|
||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
| 10.01.2010, 00:43 [ТС] | |
|
А сделать просто возможность открытия экзешника по его пути? Это тоже надо с форматом разбираться, да? И еще выделение памяти и еще файловая система? Ну вот в том архиве должна быть рабочая ОС. Как мне её на дискету записать? И что она умеет? (Я читал тот текстовик долго, но насчет работы её с файловой системой ничго не понял)
Скажем открыть сапера (winmine.exe) - это очень сложно?
0
|
|
|
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
|
|
| 10.01.2010, 00:46 | |
|
Возмите за основу:
http://ru.wikipedia.org/wiki/KolibriOS http://www.kolibrios.org/ она тоже на ассемлере (говорят)
1
|
|
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||||
| 10.01.2010, 00:51 | ||||
), либо просто редактором типа WinHex'a.
1
|
||||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
| 10.01.2010, 00:51 [ТС] | |
|
Это сложно. И я же не претендую написать хорошую ОС. Нужно как-бы пример. Ну вот самое простое, что можно сделать за 2-3 недели. Если с файловой системой работа на асме сложная может как-то чистый С использовать?
0
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||
| 10.01.2010, 00:56 [ТС] | ||
![]() Ну вот а экзешник досовский сложно запустить?
0
|
||
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||
| 10.01.2010, 01:01 | ||
|
Вам придется разбираться с его MZ заголовком... Но это еще ничего. Хуже всего, что придется делать свои аналоги для функций доса (хотя бы даже int 21h), которые эта программа вызывает, а их очень даже не мало может быть. Единственное, что реально, это попробовать запускать com программу, вами же и написанную, у которой заранее известно, что используется.
Либо, делать программы специально для вашей ОС, что вроде как правильнее ![]()
1
|
||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
| 10.01.2010, 01:18 [ТС] | |
|
Хорошо. Остановимся на варианте использовать чьё-то. Допустим тот файл асмовский из архива не компилируется. Говорит D:\5.asm(1) : error A2088: END directive required at end of file
Причем если я добавляю в конце END ничего не меняется.( Как вариант можно попробовать заюзать C# http://www.sharpos.org/doku.php Но пока достаточно того исходника.
0
|
|
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||||||
| 10.01.2010, 01:27 | ||||||
|
Впринципе, у меня скомпилировалось масмом, после того, как я поправил все вызовы вроде
Но запускать не буду...
1
|
||||||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
| 10.01.2010, 01:36 [ТС] | |
|
А можете кинуть исходник и екзешник? Я попробую на дискету записать и попробовать.
Добавлено через 27 секунд Я вроде все поисправлял, но оно не видит конец файла.
0
|
|
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
| 10.01.2010, 01:44 | |
|
вот.
1
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
| 10.01.2010, 02:03 [ТС] | |
|
Спасибо. Нужно перебирать код. Не загрузилось ничего. Кстати там можно не .com а ехе использовать?
0
|
|
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||
| 10.01.2010, 02:08 | ||
|
Наверно еще стоит сказать, что биос грузит в память только 1 сектор т.е. 512 байт. Остальное нужно догружать в вашем коде с помощью int 13h.
1
|
||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||||||||
| 10.01.2010, 02:38 [ТС] | ||||||||||||
|
Спасибо за помощь. Итак САМОЕ простое. Загрузиться из нашей ОС и вывести на экран буковку А:
загрузочный сектор
Но не выводит(Для создания исполняемых файлов вам нужно выполнить следующие команды:
Он вообще ни масмом ни тасмом это не компилирует.
0
|
||||||||||||
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
| 10.01.2010, 03:35 | |
|
1
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||
| 10.01.2010, 11:51 [ТС] | |||||||
|
Выдрал у Пирогова кусок кода (http://lib.mexmat.ru/books/15302 стр. 246) Не знаю почему, но он ничего не читает. Просто грузится винда.
С дискеты загрузится и вывести "Здравствуй мир".
0
|
|||||||
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||||||||
| 10.01.2010, 12:08 | ||||||||
|
Это вообще к чему ?? Какой-то екзешник...
Есть вот такая заготовка...
1
|
||||||||
|
|
|
| 10.01.2010, 12:15 | |
|
galileopro, чисто для информации. Операционную систему писать можно и на Си, просто те участки, которые нельзя выразить языком, будут написаны на ассемблерных вставках или в виде чистого ассемблерного файла. Ну и может быть советы:
1. Прежде, чем пытаться запускать какие-либо приложения (управляющий терминал - это тоже приложение), нужно сначала ось оживить - чтобы она научилась делать хоть какие-то действия (печатать на экран как минимум) 2. Начни с простого - загрузиться в твою ОС и напечатать hello world. Этот пункт у тебя по сути дела заработал. Т.е. ты научился хоть как-то стартовать сою ось и хоть что-то с ней сделать 3. Далее предположи, что твоя ось занимает несколько килобайт. А потому тебе нужно в загрузочном секторе сформировать код, который прочтёт ядро твоей оси с диска, скопирует его в память и передаст на него управление 4. Сформируй внутри своего ядра некую точку входа или процедуру, которая бы работала аналогично printf'у в минимально необходимом объёме и с максимально простым интерфейсом. Добейся того, чтобы у тебя "экран" работал как нормальный терминал: т.е. в нём нормально работали переносы строк, прокрутка текста вверх по достижении нижнего края экрана. Без этой функции ты скорее всего не сможешь ничего отладить, т.к. никакие отладчики не будут доступны Это самые минимально необходимые шаги. Если ты их не выполнишь, то двигаться дальше смысла нет
4
|
|
| 10.01.2010, 12:15 | |
|
Помогаю со студенческими работами здесь
20
Литература для чайника для понимания VCL Atoi для чайника Assembler для чайника
Интеграл для чайника Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|