Продолжение...
При дальнейшей разработке оказалось, что большое по размеру ядро не запускалась. Пришлось позаимствовать бутер у своего коллеги по цеху (типок по группе), так что вуаля ("Вуаля" — (франц."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 байт. Вот и все, больших успехов вам.