Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Feb 25, 2020 6:45 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 166 posts ]  Go to page 1 2 3 4 512 Next
Author Message
 Post subject: Начинающий
PostPosted: Sun Jun 22, 2008 1:59 pm 
Offline

Joined: Wed Jun 18, 2008 12:38 pm
Posts: 17
Здраствуйте уважаемые кодеры и кодерши, я только начинаю осваивать Ассемблер и начинаю делать программы маленькие типа Hello Word!
вот собственно код программы
Code:
CSEG segment
 org 100h

begin:

   mov ah, 9
   mov dx, offset message

   int 21h

   int 20h

  message db 'Hello world!$'

CSEG ends

end Begin


Перепишите его под колибри чтобы я разу понял в чем отличие между данным кодом и таким же кодом под KolibriOS

А и кстати опишите процесс написания такой же программы прямо в KolibriOS если такое возможно, если можно по пунктам

ЕСЛИ КОНЕЧНО ВАМ НЕ ТРУДНО!!!
Если я неправильно изложил идею напишите в ЛС


Top
   
 Post subject: Re: Начинающий
PostPosted: Sun Jun 22, 2008 3:47 pm 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
1. посмотри эту тему. viewtopic.php?f=9&t=426
2. В большинстве случаев разрабтка программ для Коос ведется из под виндовс, т.к. это удобно, в коос не так развит сервис. Нет некоторых возможностей, которые есть в виндовс. После отладки программы на эмуляторе, окончательная проверка на реальной системе.
3. поставсь себе svn клиент http://kolibrios.org:3000/i-want-svn , далее путь programms\develop\examples\ или так http://www.kolibrios.org/?p=SVN&kind=di ... p/examples
тут располжены примеры простых программа под коос на подобии Hello World. Обучаться ты должен самостоятельно посмотри примеры программ в этой папке.

Code:
;заголовок приложения
use32                      ; транслятор, использующий 32 разрядных команды
    org 0x0                ; базовый адрес кода, всегда 0x0
    db 'MENUET01'       ; идентификатор исполняемого файла (8 байт)
    dd 0x1           ; версия формата заголовка исполняемого файла
    dd start         ; адрес, на который система передаёт управление
                       ; после загрузки приложения в память
    dd i_end        ; размер приложения
    dd i_end        ; Объем используемой памяти, для стека отведем 0х100 байт
    dd i_end+0x100 ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
    dd 0x0,0x0                ; указатель на строку с параметрами.
                 ;    если после запуска неравно нулю, приложение было
                 ;    запущено с параметрами из командной строки

                 ;    указатель на строку, в которую записан путь,
                 ;    откуда запущено приложение
;Область кода
align 4
start:                          ;Точка входа в программу
        mov  eax,40          ;установить маску для ожидаемых событий
        mov  ebx,0x25        ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
        int 0x40
red_win:
        call draw_window     ;первоначально необходимо нарисовать окно
still:                       ;основной обработчик
        mov  eax,10          ;Ожидать события
        int 0x40            ;ожидать событие в течение 2 миллисекунд
 
        cmp al,0x1    ;если изменилось положение окна
        jz  red_win
        cmp al,0x3    ;если нажата кнопка то перейти
        jz  button
        jmp still    ;если ничего из перечисленного то снова в цикл
button:
         or eax,-1       ;в eax,-1 - 5 ,байтов у нас же только 3  выйти
         int 0x40         ;далее выполняется выход из программы

draw_window:                ;рисование окна приложения
    mov eax,12                ;в регистр внести значение = 12
    mov ebx,1                 ;присвоить 1
    int 0x40

    xor  eax,eax              ;обнулить eax
    mov  ebx,50*65536+180     ;[координата по оси x]*65536 + [размер по оси x]
    mov  ecx,30*65536+100     ;[координата по оси y]*65536 + [размер по оси y]
    mov  edx,0xb3AABBCC        ; color of work area RRGGBB,8->color gl
    mov  edi,hed
    int 0x40                 ;нарисовать окно приложения
       
    mov eax,12                ;Функция 12 - начать/закончить перерисовку окна.
    mov ebx,2                 ;Подфункция 2 - закончить перерисовку окна.
    int 0x40
    ret

hed db 'Hello World',0        ;заголовок приложения
align 16
rb 0x100 ; резерв памяти для стека.
i_end:


Last edited by <Lrz> on Sun Mar 22, 2009 7:45 am, edited 1 time in total.

Top
   
 Post subject: Re: Начинающий
PostPosted: Sun Jun 22, 2008 4:11 pm 
Offline

Joined: Wed Jun 18, 2008 12:38 pm
Posts: 17
Могу ли я писать на асме ,а потом чтобы кто нибудь эту программу ну точнее код портировал на операционную систему колибри, если возможно можно аську или мыло данного человека, Просто понимаете нет документации по созданию пограмм для колибри ,так как я посмотрел самый простой пример создание сообщение Hello Word ,код был раза в 4 больше моего если кто может взятся и объеснить начинающему по какому принципу строится программа на ассемблере в данной операционной системе и попросту объяснить основы то я буду очень блвгодарен


Top
   
 Post subject: Re: Начинающий
PostPosted: Sun Jun 22, 2008 5:17 pm 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
Я вижу некоторое недопонимание...
Самое лучше образование - это самообразование.Тут ни кто не будет учить тебя, строить с тобой уроки, разбирать что-либо. Т.к. все как правило работают или учаться, и просто не до тебя. Итак, тебе нужно найти самоучитель для Доса, и поразбираться с ним на ассемблере. там все чуть проще. Может для этих целей подойти книжка по ассмеблеру Калашникова (была замечена тут http://www.cwer.ru/assembler_eto_prosto ). после того как ты освоишь 30 уроков от самого 0 до написания оболочки аля нортон коммандер, тебе многие вещи станут более понятны... ;)


Top
   
 Post subject: Re: Начинающий
PostPosted: Sun Jun 22, 2008 5:21 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5083
Ассемблер хорошо, а Си-- тоже неплохо :)
Там всё куда проще. Если интересно, брать тут download/file.php?id=242
Там с примерами и маньюалом.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Начинающий
PostPosted: Sun Jun 22, 2008 10:21 pm 
Offline
User avatar

Joined: Thu Mar 29, 2007 3:02 am
Posts: 249
никогда не пробовал писать под Виндой, пишу свой код исключительно в Колибри...
Автор, код длиннее, потому, что в Досе, ты только выводишь функцией стоку на экран, а тут ты ещё и рисуешь окно, формируешь поток, определяешь реакцию проги на мышь, клаву, и проч... оживляешь кнопку с крестиком..;) сам код вывода текста на экран помещается в одну строчку кода всего, и при , этом обладает намного большей функциональностью, чем досовский код... стукни в Асю, вечерами иногда там бываю, поговорим...:)

_________________
*****:
;дух машины, мой бубен сильнее твоей тупости

*****:


Top
   
 Post subject: Re: Начинающий
PostPosted: Wed Jun 25, 2008 3:08 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Code:
include 'macros.inc'
include 'debug.inc'
MEOS_APP_START
CODE
   print 'Hello world!'
   mcall -1
DATA
UDATA
MEOS_APP_END


Ребята, не сбивайте человека полумерками, ассемблер - отлично, C/C++ - хорошо, C-- только людей пугать.


Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 2:17 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 814
После просмотра программ: checkbox, radiobutton, editbox мне пришла идея создавать коды для этих (и возможно других) элементов управления, используя графический интерфейс.
Я пишу программу на BC++5.02 (извините за старье) для Win. Эта программа создает fasm код для Kolibri (на основе ранее введенных кусков кода, но некоторые части генерируются автоматом).
Возможно мне будет нужна помощь. Если кому интересно пишите (исходники пока не ложу в связи с сыростью програмки).
Привожу экран программы, пока ели как генерируется код для элементов check_box:


Attachments:
kol_fasm.gif
kol_fasm.gif [ 32.87 KiB | Viewed 9689 times ]
Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 9:37 am 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
Если по компонентам, то это скорее всего ко мне )). А какие компоненты еще существуют у тебя? Можно более подробно?


Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 10:37 am 
Offline

Joined: Thu Jan 26, 2006 8:47 pm
Posts: 284
тоже когда то делал контролы...TButton, TCheckBox, TProgressBar, TRadioButton, TStatusBar и малые зачатки TWebBrowser


Attachments:
viewer.rar [20.42 KiB]
Downloaded 288 times
Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 12:13 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 814
<Lrz>
Quote:
А какие компоненты еще существуют у тебя? Можно более подробно?

Существует пока только check_box, но в ближайшее время хочу добавить edit и option.
Идея программы такова: есть разные блоки (текстовые, блоки элементов, структур, переменных, ...). Из этих блоков создается как-бы макет программки. При запуске можно редактировать этот макет (добавлять, удалять контролы, менять их свойства ...). Потом каждый блок по своим правилам обрабатывается и в результате получается рабочий код программы.
Т. е. получается что-то наподобие AppExpert (для BC++) или MFC AppWizard (VC++). А дальше программист сам дописывает нужные ему действия, и тут связь файлов *.asm с моей программой прерывается.
Veliant
Очень интересно будет посмотреть твои примеры, может их я тоже когда-нибудь добавлю к себе. (А пока программа находиться на начальной стадии разработки и про включение многих элементов речь пока не идет)


Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 12:19 pm 
Offline

Joined: Wed Mar 26, 2008 12:44 pm
Posts: 231
IgorA wrote:
Идея программы такова: есть разные блоки (текстовые, блоки элементов, структур, переменных, ...). Из этих блоков создается как-бы макет программки. При запуске можно редактировать этот макет (добавлять, удалять контролы, менять их свойства ...). Потом каждый блок по своим правилам обрабатывается и в результате получается рабочий код программы.

Очень похоже на то, как это делается в HiAsm (прошу не считать это рекламой, хотя и выглядит именно так) :)
Может объеденим усилия?


Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 12:45 pm 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
Все компоненты включены в библиотеку box_lib.obj, как я понял, ей уже присвоен статус системной, т.е. имеет смысл сделать поддержку библиотеки, и работать в дальнейшем с ней. А вообще, что-то подобное в свое время писал мистификатор, нужно поднять ссылки, у него была программа Denvy на Delphi написана /* поправьте меня если я ошибся с названием */.


Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 5:12 pm 
Offline
User avatar

Joined: Tue Jan 24, 2006 8:50 am
Posts: 249
<Lrz>,
ты прав... но там вроде альфа(или бета) версия... мистификатор пропал...

тут забирать: Denvy.7z
тема: viewtopic.php?f=9&t=352


Top
   
 Post subject: Re: Начинающий
PostPosted: Tue Nov 18, 2008 6:44 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 814
s1n
посмотрел ту программку, что-то похожее делаю и я
Quote:
компоненты включены в библиотеку box_lib.obj

если что-то будет включено в систему, то я его включу
Выдам пробный экземпляр моей программки:


Attachments:
kol_edit.7z [237.04 KiB]
Downloaded 297 times
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 166 posts ]  Go to page 1 2 3 4 512 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited