MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> The Real Hello World

Название:The Real Hello World
Просмотров:66
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:В этой статье мы напишем... собственную мини-ОС. Да да, создадим свою собственную операционную систему. Правда система будет грузиться с дискеты и выводить знакомое Hello World.

Часть полного текста документа:

The Real Hello World
    В этой статье мы напишем... собственную мини-ОС. Да да, создадим свою собственную операционную систему. Правда система будет грузиться с дискеты и выводить знакомое Hello World, но согласитесь, это произведет впечатление и на вас, и на ваших друзей. Ведь именно Вы создадите СВОЮ
    мини-ОС. 1. Идея (hello.c)
    Изучение нового языка программирования начинается, как правило, с написания простенькой программы, выводящей на экран краткое приветствие типа "Hello World!". Например, для C это будет выглядить приблизительно так.
    main()
    {
    printf("Hello World!\n");
    }
    Показательно, но совершенно не интересно. Программа, конечно работает, режим защищенный, но ведь для ее функционирования требуется ЦЕЛАЯ операционная система. А что если написать такой "Hello World", для которого ничего не надо. Вставляем дискетку в компьютер, загружаемся с нее и ..."Hello World". Можно даже прокричать это приветствие из защищенного режима.
    Сказано - сделано. С чего бы начать?.. Набраться знаний, конечно. Для этого очень хорошо полазить в исходниках Linux и Thix. Первая система всем хорошо знакома, вторая менее известна, но не менее полезна.
    Подучились? ... Понятно, что сперва надо написать загрузочный сектор для нашей мини-опрерационки (а ведь это именно мини-операционка). Поскольку процессор грузится в 16-разрядном режиме, то для созджания загрузочного сектора используется ассемблер и линковщик из пакета bin86. Можно, конечно, поискать еще что-нибудь, но оба наших примера используют именно его и мы тоже пойдет по стопам учителей. Синтаксис этого ассемблера немколько странноватый, совмещающий черты, характерные и для Intel и для AT&T (за подробностями направляйтесь в Linux-Assembly-HOWTO), но после пары недель мучений можно привыкнуть. 2. Загрузочный сектор (boot.S)
    Сознательно не буду приводить листингов программ. Так станут понятней основные идеи, да и вам будет намного приятней, если все напишите своими руками.
    Для начала определимся с основными константами.
    START_HEAD = 0 - Головка привода, которою будем использовать.
    START_TRACK = 0 - Дорожка, откуда начнем чтение.
    START_SECTOR = 2 - Сектор, начиная с которого будем считывать наше ядрышко.
    SYSSIZE = 10 - Размер ядра в секторах (каждый сектор содержит 512 байт)
    FLOPPY_ID = 0 - Идентификатор привода. 0 - для первого, 1 - для второго
    HEADS = 2 - Количество головок привода.
    SECTORS = 18 - Количество дорожек на дискете. Для формата 1.44 Mb это количество равно 18.
    В процессе загрузки будет происходить следующее. Загрузчик BIOS считает первый сектор дискеты, положит его по адресу 0000:0x7c00 и передаст туда управление. Мы его получим и для начала переместим себя пониже по адресу 0000:0x600, перейдем туда и спокойно продолжим работу. Собственно вся наша работа будет состоять из загрузки ядра (сектора 2 - 12 первой дорожки дискеты) по адресу 0x100:0000, переходу в защищенный режим и скачку на первые строки ядра. В связи с этим еще несколько констант:
    BOOTSEG = 0x7c00 - Сюда поместит загрузочный сектор BIOS.
    INITSEG = 0x600 - Сюда его переместим мы.
    SYSSEG = 0x100 - А здесь приятно расположится наше ядро.
    DATA_ARB = 0x92 - Определитель сегмента данных для дескриптора
    CODE_ARB = 0x9A - Определитель сегмента кода для дескриптора.
    Первым делом произведем перемещение самих себя в более приемлемое место.
    cli
    xor ax, ax
    mov ss, ax
    mov sp, #BOOTSEG
    mov si, sp
    mov ds, ax
    mov es, ax
    sti
    cld
    mov di, #INITSEG
    mov cx, #0x100
    repnz
    movsw
    jmpi go, #0 ; прыжок в новое местоположение
    загрузочного сектора на метку go
    Теперь необходимо настроить как следует сегменты для данных (es, ds) и для стека. ............






Похожие работы:

Название:Усадьба Марьино: вековые традиции и современная функция
Просмотров:274
Описание: Андрей Ильин Дворцово-парковый ансамбль усадьбы Марьино, которому в сентябре 2011 года исполнится 200 лет, стал одним из последних шедевров великого русского зодчего А. Н. Воронихина. Вместе с И. Ф. Колодиным, С. П. Лук

Название:Организация как функция менеджмента на примере ЗАО "Ростовская сотовая связь"
Просмотров:279
Описание: Содержание Введение 1. Теоретические аспекты организации как функции менеджмента 1.1 Определение организации 1.2 Понятие организационной структуры 2. Организация управления на примере ЗАО «Ростовская Со

Название:Развитие реального сектора экономики Приднестровской Молдавской Республики
Просмотров:282
Описание: Развитие реального сектора экономики Приднестровской Молдавской РеспубликиТирасполь 2011 СОДЕРЖАНИЕ   1. Промышленность 2. Сельское хозяйство 3. Транспорт и связь 4. Потребительский рынок 5. Цены и тар

Название:Имитационное моделирование показателей мобильного бюджетирования предприятий ремонтного сектора вагонного хозяйства
Просмотров:551
Описание: Тема: «Имитационное моделирование показателей мобильного бюджетирования предприятий ремонтного сектора вагонного хозяйства» Содержание гибкое бюджетирование система упр

Название:Аналитическая теория чисел. L-функция Дирихле
Просмотров:239
Описание: Содержание Введение §1. Характеры Дирихле и L-функции Дирихле §2. Функция θ(x ,χ), её функциональное уравнение §3. Аналитическое продолжение L-функции Дирихле на комплексную плоскость §4. Функциональн

 
     

Вечно с вами © MaterStudiorum.ru