![]() |
|
|
![]()
|
|
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
Про прерывание в WinXP мне объяснили. Еще вопрос. В ассемблерной вставке почему-то не получается не то, что записать, а просто ПРОЧИТАТЬ то , что находится по адресу видеопамяти с 0B800h. То же с байтом клавиатуры. Я же даже ничего не изменяю.
Эти данные по другим адресам или...? А программа запущенная не из среды, выдает ошибку, в среде - зависание. Буду рад ответам. Заранее спасибо. -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| setty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 8.6.2006 Где: Украина Репутация: нет Всего: нет |
возможно проблема в том что винда тебя фиг пустит напрямую к видеопамяти. тут работать приходится немного не так как под досом, юзать надобно соответствующие API, а если хочеш прерываниями то придёца на ring0 кодить
|
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
Дайте ссылку, плз, где про это почитать, как зайти в этот ring-0 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| setty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 8.6.2006 Где: Украина Репутация: нет Всего: нет |
инфу, если не найдёш я те ночью скину (как и тот исходник). Это довольно интересная но между тем довольно тяжолая тема, сам я несилён в этом. Могу лиш посоветовать на первых порах не парится с этим, практически любой вопрос сводится к тому какой набор nativ APIs тебе необходимо использовать. Ты можеш писать символы в консоль, устанавливать позицию курсора, задавать цвет и фон символов, устанавливать заголовок консоли, создавать и удалять консоли, перенаправлять ввод/вывод и все это риализуется в usermode посредством родных апи. Добавлю ктомуже что под Windows запустить код в ring0 доволно проблематично. Прийдётся писать драйвер. Хотя есть технологии перехода из в 3го в 0е однако они требуют знания предмета.
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
Kuvaldis, ты можешь написать конкретно что тебе нужно сделать и в какой оси?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
какой вы бред несете
зачем там ринг0 ? в винде есть и direct draw и direct 3D и openGL рисуй нехочу п.с. поиск по форуму рулит -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| setty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 8.6.2006 Где: Украина Репутация: нет Всего: нет |
ну спрашивал человек про прерывания и видеопамять...
|
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: нет Всего: 62 |
Kuvaldis, как вариант, пиши под ДОС что хочешь, а запускать будешь в DosBox.
|
|||
|
||||
| setty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 8.6.2006 Где: Украина Репутация: нет Всего: нет |
я тоже задавал помнится подобные вопросы когда с доса на виндозу перешол програмить... понимаю как поначалу все может выглядеть дико, такчто, Kuvaldis, если чё обращайся...
а вапще туторы икселиона те в помощ ) |
|||
|
||||
| sgi1981 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 1 Всего: 10 |
В общем используйте АПИ-функцию SetDIBitsToDevice.
Сначала я приведу цитату, а потом свое мнение. Цитата со страницы http://vsokovikov.narod.ru/Msdn_api/Global...itstodevice.htm
Из страницы http://doc.mpv.ru/steps/mfc/detail/30.html
А мое мнение таково, я не нашел более быстрого способа передавать изображение в WINDOWS-прикладной программе. Использовать эту функцию нужно таким образом. Вначале запишем структуру BITMAPINFO. В блоке памяти (массиве) запишем определенным образом двойные слова. Каждое двойное слово кодирует пиксел. Потом выводим этот массив на экран (можно в любую прямоугольную область экрана). И для оформления массива пикселов лучше программировать на Assembler с использованием инструкций расширений SSE, SSE2 АЛУ процессора. А вот моя демонстрационная программа, демонстрирующая возможности функции SetDIBitsToDevice. После запуска программы - поведите мышкой в разные стороны и убедитесь в том, что постороенное на весь экран изображение вообще не отстает от мыши ! Затем нажмите кнопку мыши и посмотрите на эффект. Выход из программы - клавиша ESC. Компонентов на форме не нужно.
Это сообщение отредактировал(а) sgi1981 - 31.7.2006, 11:55 -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
||||||||
|
|||||||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
sgi1981,
а не быстрее будет через директдрав пИсать ? тоесть рисую в бекбуфере а потом копирую в примари сурфейс -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| sgi1981 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 1 Всего: 10 |
Ну а я же и рисую в буфере !
И для тех кто не понял, объясню - в данном случае masim - это указатель на буффер.
Ну а я что делаю ? Разве я не копирую буффер в память видеоадаптера ?
Здесь копирование из буффера делает функция SetDIBitsToDevice Это сообщение отредактировал(а) sgi1981 - 18.8.2006, 07:37 -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
||||||||
|
|||||||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| sgi1981 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 1 Всего: 10 |
Понимаешь. В твоем случае данные на самом деле данные не копируются из БЭКБУФФЕРа в ПРИМАРИСУРФЕЙС, а просто обе страницы видеопамяти меняются ролями. Видеоадаптер переключает адрес отображаемой части видеопамяти с одного значения на другое, и данные для передачи на монитор берутся просто уже из другого адреса. Если процессор непосредственно обращается к видеопамяти видеоконтроллера и пишет туда данные при выполнении написанных тобой инструкций - то действительно, такой путь наиболее быстрый ! А я и хотел узнать как так сделать, и ты подсказал. Но из тех пяти строчек кода понятна только часть сути, поскольку для того, чтобы они работали нужно ещё описание чего-то... В общем нужно будет книгу по DirectX искать. -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
||||
|
|||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
![]()
|
| Правила форума "Asm для Windows/DOS" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |