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

Tuesday, 07.02.2012, 02:08
| 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 байт. Вот и все, больших успехов вам.
 
Категория: Уроки | Просмотров: 1887 | Добавил: admin | Рейтинг: 5.0/5 |
Всего комментариев: 10
0  
10 OLEG   (12.09.2011 11:52)
как записать на диск правильно и запустить?
То что в BIN надо компилировать я понял, но у меня не запускается

0  
9 DeDMakar   (06.02.2011 12:54)
Спасибо, что интересуетесь инфой.
За информацией, пишите на

0  
8 жека   (15.01.2011 17:00)
Народ пароль к оси сначала пустой, просто нажмите Enter biggrin потом можете поставить свой cool

0  
7 Вадим   (07.01.2011 15:44)
Спасибо Анатолий, с помощью вас, появился особый смысл учить ассемблер. Буду писать свою ОС smile

0  
6 Артур   (15.11.2010 13:14)
А пароль на оси какой? Не могу найти!

0  
5 Артур   (15.11.2010 13:13)
А пароль на оси какой?

0  
4 SHURIK   (11.07.2010 17:16)
А не мог бы описать как ее собрать и записать на диск?? Ато что-то никак не получается!! Зарание спасибо. Достаточно интересная и познавательная темка!! happy

0  
3 yuliksmy   (17.02.2010 01:01)
re

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

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

Name *:
Email:
Code *:
Меню сайта
Разделы новостей
Концепт программы [1]
Программы только планируются или в разработке.
Программы [8]
Готовый продукт
Документация [4]
Документы проектов.
Уроки [5]
О себе [1]
Инфа о себе, документы, сертификаты...
Календарь новостей
«  February 2009  »
SuMoTuWeThFrSa
1234567
891011121314
15161718192021
22232425262728
Поиск
Друзья сайта
Статистика
Copyright Macarov Anatoli © 2012
Free site builder - uCoz