1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

вывод данных на экран и звук

Тема в разделе "WASM.BEGINNERS", создана пользователем Necromancer13, 31 окт 2007.

  1. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    научится программировать и писать собственную ос...
     
  2. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    я просто подумал, что это в любой ос так - по какому-то адресу заношу данные и они отображаются...
     
  3. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    я вроде понял;)

    это нашел в википедии:

    значит данные заносятся в видеопамять и от этого появляются на мониторе?
     
  4. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Ты можешь хоть на минутку остановиться и задуматься - хотя бы о том, что форточки, например, писали несколько сотен профессионалов с общим окладом миллионов 30 гринов в год.
    Здесь ничем помочь не могу, вот если захочешь заняться постройкой Боинга-747, могу подсказать откуда начинать копать...
     
  5. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    да... WINDOWS писали много человек...
    но Menuet OS написана ведь одним человеком!
     
  6. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    меня вообще интересует работа с аппаратурой...
    буду я искать информацию об написании оперативных систем, учиться, читать, и, надеюсь, когда-то напишу=)
     
  7. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    мне не надо к ней какаие-то приложения, игры, программы...
    просто научиться работать с железом... ;)
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.326
    Адрес:
    Fryazino
    Necromancer13
    Да вывод там идет в видео память. Для того чтобы понять как там все работает начни читать доки на VESA.
    В зависимости от видео режима данные представляются по разному.

    План действий такой. Получить список видео режимов выбрать нужный установить. ЭТа часть делается через прерывания. Дальше идет вывод пикселей в видео память.
    Адресс либы A0000h и работа с банками. Или в линейный буфер, который опять таки определяется через прерывания VESA.
    Опять таки читаем Фроловых. А официальную документацию найдешь на сайте VESA.org файл vbe3.pdf

    А вот игры под виндоус программируются используя OpenGL и DirectX, а они аппоратно ускорены. Но доки на видео карты закрыты. Так что тут только дизассемблирование драйверов.
     
  9. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.116
    Адрес:
    Russia
    Necromancer13
    Еще найди в сети "Программирование на аппаратном уровне" автор Кулаков

    И не делай поспешных выводов на счет виндовс. Когда погрузишься изучать ядро - тогда и прийдет просветление. И поймешь почему не надо было делать эти выводы...
     
  10. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    Pavia:
    ну в своей ОС я ведь не могу вызывать прерывания?..

    ___________________________________________________


    TermoSINteZ:

    ты о чем?

    да.. я тоже надеюсь, что когда погружусь изучать ядро оно прийдет... только вот не знаю, когда начать его изучать... еще рано мне, наверно...
     
  11. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.326
    Адрес:
    Fryazino
    Necromancer13
    Прерывания вызывать можно. Ты можешь вызывать как собственные прерывания так и прерывания биоса.
     
  12. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    ясно=)
    я даже видел где-то на форуме, что тебя спрашивали о биосе, сводится ли все в апи функциях к вызову прерываний биоса:)

    и ты вроде сказал, что оно все сводится к портам... а я о портах почти ничего не знаю...
     
  13. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3. include '%fasminc%\win32a.inc'
    4. start:
    5.         invoke  MessageBox,0,0,0,0
    6.         int 16h
    7.         invoke  ExitProcess,0
    8. data import
    9.      library user32,'user32.dll',\
    10.              kernel32,'kernel32.dll'
    11.      import user32,MessageBox,'MessageBoxA'
    12.      import kernel32,ExitProcess,'ExitProcess'
    13. end data
    прерывание BIOS - 16h - программа "вылетает" при его вызове...
     
  14. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.825
    откуда у тебя биос прерывания в винде GUI приложении ?
     
  15. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    Я думал, что и в GUI приложении можно вызывать прерывание BIOS...
     
  16. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    читаю вот Зубкова, компилирую пример... :

    Код (Text):
    1.         org        100h           ; Начало СОМ-файла
    2. start:
    3.         mov        ah,0           ; инициализировать порт
    4.         mov        al,11100011b   ; 9600/8n1
    5.         mov        dx,1           ; порт COM2
    6.         int        14h
    7.  
    8. main_loop:
    9.         mov        ah,2
    10.         int        14h            ; получить байт от модема,
    11.         test       ah,ah          ; если что-нибудь получено,
    12.         jnz        no_input
    13.         int        29h            ; вывести его на экран
    14. no_input:                         ; иначе:
    15.         mov        ah,1
    16.         int        16h            ; проверить, была ли нажата клавиша,
    17.         jz         main_loop      ; если да:
    18.         mov        ah,8
    19.         int        21h            ; считать ее код (без отображения на экране),
    20.         test       al,al          ; если это нерасширенный ASCII-код,
    21.         jnz        send_char      ; перейти к посылке его в модем,
    22.         int        21h            ; иначе - получить расширенный ASCII-код,
    23.         cmp        al,2Dh         ; если это Alt-X,
    24.         jne        send_char
    25.         ret                       ; завершить программу
    26. send_char:
    27.         mov        ah, 1
    28.         int        14h            ; послать введенный символ в модем
    29.         jmp short main_loop       ; продолжить основной цикл
    а оно мне: "Не удалось открыть порт com2", почему это так?:dntknw:
     
  17. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    Necromancer13
    В MenuetOS/KolibriOS графический режим настраивается через прерывания BIOS в реальном режиме через VESA. После чего получается адрес буфера и в него записываются пиксели в защищенном режиме. Кроме того, есть программа, которая за счет записи в порты видеокарты (изменяя частоты разверток) может поменять графический режим, но в очень ограниченных пределах.
     
  18. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.116
    Адрес:
    Russia
    Necromancer13
    Не путай DOS и Windows. Это совершенно разные вещи.
    И самое главное отличее - Dos работает в реальном режиме где все порты и прерывания биос доступны,
    а Windows в защищенном режиме. Там все работает по другому. Чтоб получить доступ к портам надо разрешать их в карте ввода вывода (IO MAP). И прерывания биоса ты там не вызовешь - все таблица векторов изменена. И вообще там все по другому. Windows не для того писали, чтоб все ее валили при запуске своей первой программы. Не надо туда тебе пока лезть.
    Разберись с досом. Потом попробуй написать загрузчик, инизиализировать VESA для начала.
     
  19. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.326
    Адрес:
    Fryazino
    Necromancer13
    В виндоусе ты можешь пользоваться только виндоусовскеми прерываниями на прямую. А для вызова BIOS прерываний тебе придеться извращаться с настройкой VM86. А это уже совершенно другой уровень.

    Либо занят, либо отсутствует порт.
     
  20. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    ЗАБЛУЖДЕНИЕ!!! Плохо знаешь суть небольшой, но истории, фактические вклады в проекте, альтернативы решения автору... и т.п.
    Вот тебе 2-в одном тут и звук и драйвера и ссылки (см.форум) на доки в том числе по моим работам со звуком
    http://board.kolibrios.org/viewtopic.php?f=3&t=317
    + отечественная альтернативная мутация ядра этой системы на сегодня + ДОКи, ссылки общение...!
    Советую всем кто пытается начинать "нечто такое" ОБЯЗАТЕЛЬНО хотябы побывать, ну и попробовать для впечатления можно (или даже нужно) :)