|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
Своя ОС для чайника09.01.2010, 22:16. Показов 35590. Ответов 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 для чайника
Интеграл для чайника Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|