n3m1z1d4 OS
Пятница, 01.11.2024, 06:28
Меню сайта
Категории каталога
n3m1z1d4 [2]
Кодинг под n3m1z1d'у и все остальное, что к ней относится =)!
Наш опрос
Разработка Операционной Системы - это
Всего ответов: 44
Начало » Статьи » n3m1z1d4 » n3m1z1d4

Основы кодинга под немизиду
Первое, что я хочю сказать про Немизиду, это то, что она создана для кодэров на асме( от нуболв - для нубов =)!). Поэтому из уважения к себе подобным я создаю и встраиваю в ядро все самое основное, для того, что бы программист чувствовал себя комфортно, даже того более, по некоторым параметрам мои функции намного удобнее чем в были в Dos'e.
Итак, в данный момент времени немизида 16-и битная, но это не надолго ;)! В ближайшее время она будет 32-ух битной и работать соответственно в защищенном режиме. Функционал от этого не обеднеет, и программы не придется переписывать с нуля!
Апи немизиды размещаются в 0xff прерывании. То есть для того, что бы вызвать какую-либо функцию нужно положить в al, ее номер, заполнить все параметры и вызвать прерывание 0xff. Видите как все просто =)!
Вот таблица функций, которые уже существуют и более-менее работают ;):

_reboot equ 0
_get_char equ 1
_printf equ 2
_find_file equ 3
_exec equ 4
_find_first equ 5
_color equ 6
_setcursor equ 7
_gets equ 8
_cls equ 9
_getcursor equ 0xa
_setminmaxcolline equ 0xb

Для удобства кодинга советую создать инклуд и с этой информацие и вставить ее в свой сорец. Слово "equ" означает синоним(эквивалент), это значит, что для того, что бы вывести что-либо на экран достаточно написать:

mov al,_printf
mov bx,data
int 0xff
data db 'h3ll0 w0rld =)!',0

Фасм ( а я рекомендую юзать фасм, поскольку он лучший, и именно на нем я пишу немизиду :)!) заменит _printf на 2. Это горазда проще чем запоминать номера, правда? Для остальных функций все аналогично. Вот минимальная прога, которая бы использовала все функции немизиды.

;start_offset equ здесь мутим адрес, скоторого будет начинатся наша прога.
include 'sysint.inc' обьявление констант, что бы не переписывать ;).
use16

xor al,al;перезагрузка компа
int 0xff

mov al,_printf ;выводим приветствие
mob bx,hi
int 0xff

mov al,_find_file ;ищет определенный файл
mov bx,file_name ;имя файла
int 0xff

mov al,_exec
mov bx,file_name; запускает программу
int 0xff

xor bx,bx
_find_next:
mov al,_find_first
int 0xff
or al,al
jz _end
inc bx
mov si,ax
mov di,file_name
call strcmp; функция которая сравнивает строки нужна
jmp _find_next
_end:

mov al,_color
mov cl,[textcolor]
mov ch,[bgcolor]
int 0xff

mov al,_setcursor
mov bl,[col]
mov bh,[line]
int 0xff

mov al,_gets
mov cx,maxbuffer
mov bx,buffer
int 0xff

mov al,_cls
int 0xff

mov al,_getcursor
int 0xff
;в al столбик
;в ah рядок

mov al,_setminmaxcolline ;устанавливаем границы экрана для записи
mov bl,[mincol] ;ядерными функциями
mov cl,[maxcol]
mov bh,[minline]
mov ch,[maxline]
int 0xff

;дальше нужно обьявить все переменные...

Для начала все :).

Категория: n3m1z1d4 | Добавил: 3n3m1 (01.04.2007) | Автор: mn3m0n1c 3n3m1
Просмотров: 809 | Рейтинг: 0.0 |

Форма входа
Поиск по каталогу
Друзья сайта
Copyright [mn3m0n1c 3n3m1] © 2007 Хостинг от uCoz