Операционная система на assembler 2 часть - 9 Февраля 2009 - Персональный сайт Макаров Анатолий /// Macarov Anatoli

Суббота, 04.09.2010, 23:22
| RSS

Student M Development

Главная » 2009 » Февраль » 9 » Операционная система на assembler 2 часть
Операционная система на assembler 2 часть
22:57
 Продолжение...
 

При дальнейшей разработке оказалось, что большое по размеру ядро не запускалась. Пришлось позаимствовать бутер у своего коллеги по цеху (типок по группе), так что вуаля ("Вуаля" — (франц."voila") в переводе означает «вот так вот!»):

 

  name "loader"

; this is a very basic example of a tiny operating system.

; directive to create boot file:

   #make_boot#

; this is an os loader only!

; it can be loaded at the first sector of a floppy disk:

;   cylinder: 0

;   sector: 1

;   head: 0

; boot record is loaded at 0000:7c00

org 7c00h

; skip the data and function declaration section:

jmp start

;==== data section =====================

; welcome message:

msg  db "Welcome to Makar OS A 1.5", 0Dh,0Ah,

     db "loading...",0Dh,0Ah, 0

;======================================

start:

push    cs   ; make sure ds=cs

pop     ds

; initialize the stack:

mov     ax, 07c0h

mov     ss, ax

mov     sp, 03feh ; top of the stack.

; set data segment:

push    cs

pop     ds

; set default video mode 80x25:

mov     ah, 00h

mov     al, 03h

int     10h

; print welcome message:

lea     si, msg

call    print_string

;===================================

; load the kernel at 1000h:0100h

; 10 sectors starting at:

;   cylinder: 0

;   sector: 2

;   head: 0

; bios passes drive number in dl,

; so it's not changed:

mov     ah, 02h ; read function.

mov     al, 10  ; sectors to read.

mov     ch, 0   ; cylinder.

mov     cl, 2   ; sector.

mov     dh, 0   ; head.

; dl not changed! - drive number.

; es:bx points to receiving

;  data buffer:

mov     bx, 1000h  

mov     es, bx

mov     bx, 0

; read!

int     13h

;===================================

; pass control to kernel:

jmp     1000h:0000h

;===========================================

print_string proc near

push    ax      ; store registers...

push    si      ;

next_char:     

        mov     al, [si]

        cmp     al, 0

        jz      printed

        inc     si

        mov     ah, 0eh ; teletype function.

        int     10h

        jmp     next_char

printed:

pop     si      ; re-store registers...

pop     ax      ;

ret

print_string endp

 

В дальнейшим это все вы компилируете, я для этого использовал редактор AsmEdit. Полученный bin файл записывал с помощью утилиты writebin (http://www.emu8086.com/dr/asm2html/assembler_source_code/writebin.asm.html) на дискету. Кстати, данная ссылка принадлежит программе emu8086, честно говоря, на ней не все потестиш, но можно хороший результат получить.

            В ниже приведенном архиве приводится полная версия ОС виде каждой лабораторной работы, там к новому добавлению имеется описание. Что же она выполняет? Отвечаю: В ОС присутствует меню , окно About – виде посимвольного вывода и название системы. Выполняет перезагрузку (reboot) с запросом на изъятия дискеты, при каждой загрузке выполняется проверка пароля, который динамически можно изменять и хранится на дискете. Присутствует конвертор из символа в ASCII код, позаимствовал с www.wasm.ru (можно чего хорошего найти). Есть блокнот, который сохраняет данные на дискете в размере 512 байт. Вот и все, больших успехов вам.
 
Категория: Уроки | Просмотров: 959 | Добавил: admin | Рейтинг: 0.0/0 |
Всего комментариев: 5
0  
5 SHURIK   (11.07.2010 17:16)
А не мог бы описать как ее собрать и записать на диск?? Ато что-то никак не получается!! Зарание спасибо. Достаточно интересная и познавательная темка!! happy

0  
4 yuliksmy   (17.02.2010 01:01)
re

0  
3 SimTiko   (22.01.2010 15:05)
Ругать не будем biggrin

0  
2 zimylika   (10.01.2010 05:28)
Привет! Заходи на портал http://zimka.ru там есть музыка, фильмы, игры, программы все бесплатно.... Порно нет всяких всплывающих банеров тоже нет =) Кстати переодически раздают семизначный icq бесплатно)

0  
1 mas   (11.02.2009 00:15)
Если что - ругайте.

Имя *:
Email:
Код *:
Меню сайта
Разделы новостей
Концепт программы [1]
Программы только планируются или в разработке.
Программы [3]
Готовый продукт
Документация [4]
Документы проектов.
Уроки [4]
О себе [1]
Инфа о себе, документы, сертификаты...
Календарь новостей
«  Февраль 2009  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
232425262728
Поиск
Друзья сайта
Статистика
Copyright Macarov Anatoli © 2010
Бесплатный конструктор сайтов - uCoz