Первое, что я хочю сказать про Немизиду, это то, что она создана для кодэров на асме( от нуболв - для нубов =)!). Поэтому из уважения к себе подобным я создаю и встраиваю в ядро все самое основное, для того, что бы программист чувствовал себя комфортно, даже того более, по некоторым параметрам мои функции намного удобнее чем в были в 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 ;дальше нужно обьявить все переменные... Для начала все :).
|