Thursday, 29.06.2017, 02:14
| RSS

Engineer M DevelopmentMA

Главная » 2009 » February » 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 байт. Вот и все, больших успехов вам.
 
Категория: Lessons | Просмотров: 5176 | Добавил: admin | Рейтинг: 5.0/6 |
Всего комментариев: 9
9  
как записать на диск правильно и запустить?
То что в BIN надо компилировать я понял, но у меня не запускается

8  
Спасибо, что интересуетесь инфой.
За информацией, пишите на

7  
Народ пароль к оси сначала пустой, просто нажмите Enter biggrin потом можете поставить свой cool

6  
Спасибо Анатолий, с помощью вас, появился особый смысл учить ассемблер. Буду писать свою ОС smile

5  
А пароль на оси какой? Не могу найти!

4  
А пароль на оси какой?

3  
А не мог бы описать как ее собрать и записать на диск?? Ато что-то никак не получается!! Зарание спасибо. Достаточно интересная и познавательная темка!! happy

2  
Ругать не будем biggrin

1  
Если что - ругайте.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта
Разделы новостей
Concept Software [2]
Programs are planned or under construction.
Software [10]
Release Software
Lessons [12]
About Me [1]
Infa about yourself, documents, certificates ...
Documentation [4]
Documentation of projects
Календарь новостей
«  February 2009  »
SuMoTuWeThFrSa
1234567
891011121314
15161718192021
22232425262728
Поиск
Друзья сайта
Статистика
Copyright Macarov Anatoli © 2017
Free website builderuCoz