Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 556
от 03.06.2003, 02:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3347 Отправлено ответов: 9819 Активность: 293.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Дмитрий Статус: Опытный Общий рейтинг: 137.41 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 151.28 URL: Программирование [Подробней >>] |
[MozgC] Статус: Опытный Общий рейтинг: 171.57 [Подробней >>] |
Ramzes Статус: Профессиональный Общий рейтинг: 126.91 URL: Microsoft homepage [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.14 [Подробней >>] |
Lynx Статус: Опытный Общий рейтинг: 130.74 Телефон: (8442) 750522 [Подробней >>] |
Pin Статус: Опытный Общий рейтинг: 121.83 URL: My HOMEPAGE [Подробней >>] |
Vdr Статус: Доверительный Общий рейтинг: 109.54 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3296. Всем привет! Как сделать эффект 25-го кадра? Объясняю популярно, как я это понимаю, хотя что-то може... (ответов: 3)
Вопрос № 3297. Здравствуйте эксперты. Уделите немного внимания. Я вот пишу свою ОС и меня интересует вопрос использ... (ответов: 3)
Вопрос № 3298. Доброе время суток, Bob Johnson! Это, конечно, хорошо, но! В описании ловушки типа WH_JOURNALRECORD ... (ответов: 1)
Вопрос № 3299. Здравствуйте, господа эксперты! У меня тут возникла проблемма. Даже не проблема, а просьба: Я написа... (ответов: 2)
Вопрос № 3300. Добрый день ув.Эксперты. Какой АПИ ф-цией можно получить значение ключа в реестре? Если можно с при... (ответов: 5)
Вопрос № 3301. Just test, never mind.... (ответов: 1)
Вопрос № 3302. Здрасте, не подскажете как сломать программу на Delphi, а то стандартные бряки не работают !... (ответов: 5)
Вопрос № 3303. Привет экспертам! Скажите пожалуйста как вывести на экран надпись, хочу с этого начать учить ассемб... (ответов: 6)
Вопросов: 8, ответов: 26
Вопрос № 3296 |
Всем привет!
Как сделать эффект 25-го кадра?
Объясняю популярно, как я это понимаю, хотя что-то может понимаю не так :)
Но в идиале следующее... есть область видеопамяти данные с которой выводятся на экран, строим кадр с текстом и в определённые моменты кидаем его в эту область, информация выводится на экран и затирается следующим кадром. Т.е. это должно работать и на обычном рабочем столе системы и в прогах и в играх не мешая рабочему процессу.
Ну или хотя бы в отдельном окне... написано одно, а через определёные промежутки времени вставляется нужный кадр, который сразу затирается следующим.
Возникают вопросы:
1) Можно ли организовать работу с видеопамятью;
2) Как узнать или расчитать время вывода одного кадра;
3) Как перехватить обратный ход луча или начало прорисовки, чтобы вывести необходимую информацию.
Всё это под Win32.
Спасибо!
Вопрос отправлен: 28.05.2003, 21:03
Отправитель: Alex
[Следующий вопрос >>] [Список вопросов]
Отвечает Дмитрий
Доброе время суток, Alex!
Самое интересное, что теоретически это можно сделать. Просто надо выводить картинку раз в секунду на время, меньшее зрительной инерции глаза (где-то 0,04 сек.). Но скорее всего это не возымеет должного действия. Так как во-первых, придется тебе править всю подсистему видеовывода. А как ты уже догадался на всех компах она, можно сказать, разная! Вряд ли у твоего соседа стоят те-же дрова на видеокарту, та-же версия DirectX и та-же операционка! Во-вторых разные люди по-разному внушаемы. Сомневаюсь, что большинство "подсядут" на эту затею. А для наиболее впечатлительных существуют менее сложные методы воздействия. Но это уже психология, это не в эту рассылку. В общем я думаю, тебе надоест это быстрее, чем ты начнешь свою работу по зомбированию граждан (Ужас!).
Ответ отправлен: 29.05.2003, 08:11
Отправитель: Дмитрий
Отвечает Bob Johnson
Добрый день, Alex!
Все, что ты написал - полный бред. На самом деле нет никакого 25-кадра. Это придумали всякие там журналисты, чтобы было о чем поговорить. 1/25 секунды - достаточно большое время, за него человеческий глаз успеет заметить, что что-то мелькнуло (т.е. это не будет прямо так незаметно). И вообще, почему ты думаешь его назвали именно 25-м, а не 40-м или 100-м? Да потому, что пошло это еще из пленочного кино, где было 24 кадра в секунду. Соответственно, если у тебя на компьютере стоит частота обновления 85 Гц, то тебе надо делать не 25-й, а 86-й кадр. Далее:
> есть область видеопамяти данные с которой выводятся на экран
Есть, она называется Frame Buffer.
> информация выводится на экран и затирается следующим кадром
Для этого надо, чтобы этот следующий кадр кто-то нарисовал и также записал в видеопамять...
> Т.е. это должно работать и на обычном рабочем столе системы и в прогах и в играх не мешая рабочему процессу.
Так можно сделать только с использованием работы с драйверами напрямую. В реальности в видеобуфере находится текущее изображение. И пока никто его не затрет новым, оно будет там и будет выводиться на экран.
Если же ты его затрешь, то надо будет и самому восстанавливать.
> 1) Можно ли организовать работу с видеопамятью;
Так как ты хочешь - только через драйвер видеокарты.
> 2) Как узнать или расчитать время вывода одного кадра;
А что тут непонятного? Если 25-й - то 1/25 секунды.
> 3) Как перехватить обратный ход луча или начало прорисовки, чтобы вывести необходимую информацию.
Вообще непонятно что...
В общем можешь сделать так - просто создать приложение в котором будет окно и текст. Вывести его на экран и через 1/25 секунды убрать. Затем повторять и все такое. Через несколько секунд ты поймешь, что это не то, что тебе нужно...
P.S. Если бы это было так реально, это давно бы уже сделали...
Ответ отправлен: 29.05.2003, 05:08
Отправитель: Bob Johnson
Отвечает [MozgC]
Может лучше потратит время на чтонить получше чем заниматься такой ерундой? =)
У меня друг делал такое давно, если у него осталось, я тебе пошлю исходник. Но я помню как мы от души посмеялись, так как это все чушь =)
Ответ отправлен: 28.05.2003, 21:25
Отправитель: [MozgC]
Вопрос № 3297 |
Здравствуйте эксперты. Уделите немного внимания.
Я вот пишу свою ОС и меня интересует вопрос использования режима виртуального 8086. Если сможете скиньте русский мануал.
PS. Мне понравилось содержание книги с сайта SASM.NAROD.RU, но там она не закончена. Уважаемые эксперты(и просто читатели), please, если кто имеет полную версию - скиньте на мыло. Буду ужасно благодарен!
Вопрос отправлен: 28.05.2003, 23:15
Отправитель: Pin (pinman@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ramzes
Доброе время суток, Pin!
Русского мануала нигде не встречал, но есть очень хороший мануал на сайте Intel. Там три тома спецификации процессоров Pentium, и в 3-ем томе подробно описан режим VM 86
Ответ отправлен: 30.05.2003, 13:06
Отправитель: Ramzes
Отвечает Дмитрий
Добрый день, Pin!
Попробуй найти в Инете книжку Фроловых по защищенному режиму процессоров. Если не найдешь - пиши мылом (demetrius2003@mail.ru), у меня где-то была, поищу. Также смотри мыло, выслал описание 486 на русском. Надеюсь пригодится. Удачи!
Ответ отправлен: 30.05.2003, 06:13
Отправитель: Дмитрий
Отвечает Bob Johnson
АБВГДЕЖЗИЙКЛМНОПРСТ
Ответ отправлен: 29.05.2003, 03:50
Отправитель: Bob Johnson
Вопрос № 3298 |
Доброе время суток, Bob Johnson!
Это, конечно, хорошо, но!
В описании ловушки типа WH_JOURNALRECORD написано
следующее:
"A Win32 JournalRecordProc hook procedure does not need to live in a dynamic-link library. A Win32 JournalRecordProc hook procedure can live in the application itself...the JournalRecordProc and JournalPlaybackProc hook procedures are always called in the context of the thread that set the hook."
Позволь узнать как ВЫ трактуете эту фразу?
С уважением, Евгений.
Вопрос отправлен: 29.05.2003, 13:15
Отправитель: Evgen
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Evgen!
> Позволь узнать как ВЫ трактуете эту фразу?
Именно так, как написано. Но причем здесь WH_JOURNALRECORD? Пусть он может находиться и в приложении, изначально-то вопрос был про WH_KEYBOARD... А вот про него что-то ничего подобного я не вижу. А проблема с разными контекстами вызова хука действительно существует и отлаживать такие приложения достаточно сложно.
Ответ отправлен: 29.05.2003, 20:11
Отправитель: Bob Johnson
Вопрос № 3299 |
Здравствуйте, господа эксперты!
У меня тут возникла проблемма. Даже не проблема, а просьба: Я написал реализацию потокового шифра RC4 на асме, но мне кажется, что она может занимать меньше чем она занимает. Короче мне надо сократить её до минимума. Не могли бы вы посмотреть и высказать свои мнения по этому поводу?
Приложение:
Вопрос отправлен: 29.05.2003, 13:42
Отправитель: Lynx (Lynx@vlink.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Lynx!
На первый взгляд достаточно красиво. Только зачем ты постоянно пишешь "Byte ptr ds:" - сегмент ds и так привлекается при адресации по bx. А "Byte ptr" можно опустить, потому что ты явно указываешь 8-разрядные регистры.
Если тебе надо сокращать программу по занимаемому объему, то имей ввиду, что работа с 8-разрядными регистрами чаще занимает по 2 байта на команду, в то время как при работе с 16-ти разрядными есть команды и по 1 байту. Но видимо тебе это сильно не поможет, т.к. тебе именно нужно работать с байтами.
Ответ отправлен: 29.05.2003, 20:14
Отправитель: Bob Johnson
Отвечает Дмитрий
Здравствуйте, Lynx!
Написано классно, насколько я разбираюсь в криптографии. Но по-моему надо обратить внимание не на сокращение размеров до минимума, а на саму реализацию. Лучше протестить процедурки лишний раз, чем тратить время на их укорачивание. Лучше пусть программка будет свободна от багов и мелких недочетов.
Ответ отправлен: 30.05.2003, 10:11
Отправитель: Дмитрий
Вопрос № 3300 |
Добрый день ув.Эксперты.
Какой АПИ ф-цией можно получить
значение ключа в реестре?
Если можно с примером.
Спасибо.
Вопрос отправлен: 29.05.2003, 18:18
Отправитель: pAcU (pacu@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает [MozgC]
по-моему RegQueryValue
Ответ отправлен: 29.05.2003, 19:27
Отправитель: [MozgC]
Отвечает vitya
Добрый день, pAcU!
без примера
RegOpenKeyEx - открываешь ключ
RegQueryValueEx - читаешь значение
RegCloseKey - закрываешь ключ.
Ответ отправлен: 30.05.2003, 08:39
Отправитель: vitya
Отвечает Lynx
Приветствую Вас, pAcU!
Есть описания этой функции, только на англицком (но там всё понятно) и для VB (перевести на любой другой язык как 2 байта переслать).
-----------------------------------------------------------
RegQueryValueEx
Declare Function RegQueryValueEx& Lib "advapi32.dll" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
lpType As Long, lpData As Any, lpcbData As Long)
Description
Retrieves a value for a key.
Parameter Type/Description
hKey Long—Handle of an open key or one of the standard key names (see chapter text).
lpValueName String—The name of the value to retrieve.
lpReserved Long—Not used, set to zero.
lpType Long—A variable to load with the type of data retrieved (refer to the chapter text).
lpData Any—A buffer to load with the value specified.
lpcbData Long—A variable that should be loaded with the length of the lpData buffer. On return it is set to the number of bytes actually loaded into the buffer.
Return Value
Long—Zero (ERROR_SUCCESS) on success. All other values indicate an error code.
Platform
Windows 95, Windows NT
-----------------------------------------------------------
RegQueryValue
Declare Function RegQueryValue& Lib "advapi32.dll" Alias "RegQueryValueA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, _
lpcbValue As Long)
Description
Retrieves the default (unnamed) value for the specified key or subkey.
hKey Long—Handle of an open key or one of the standard key names (see chapter text).
lpSubKey String—Subkey for which to retrieve a value. May be vbNullString to retrieve the value for hKey.
lpValue String—A string to load with the value for the specified key.
lpcbValue Long—A variable that should be loaded with the length of the lpValue buffer. On return it is set to the number of bytes actually loaded into the buffer.
Return Value
Long—Zero (ERROR_SUCCESS) on success. All other values indicate an error code.
Platform
Windows 95, Windows NT, Win16
Comments
Win32 Applications should use RegQueryValueEx. lpValue is defined as a string to maintain compatibility with Win16 (under which values are always strings).
Ответ отправлен: 29.05.2003, 18:52
Отправитель: Lynx
Отвечает Ramzes
Добрый день, pAcU!
LONG RegQueryValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
LPDWORD lpReserved, // reserved
LPDWORD lpType, // type buffer
LPBYTE lpData, // data buffer
LPDWORD lpcbData // size of data buffer
);
описание функции посмотри в MSDN
Ответ отправлен: 30.05.2003, 13:57
Отправитель: Ramzes
Отвечает Bob Johnson
Здравствуйте, pAcU!
Вначале ты открываешь ключ с помощью RegOpenKeyEx, затем уже считываешь нужное значение с помощью RegQueryValueEx. В конеце следует закрыть ключ с помощью RegCloseKey.
Пример, я думаю, сам сможешь написать.
* EMan1.1: --
Ответ отправлен: 29.05.2003, 21:31
Отправитель: Bob Johnson
Вопрос № 3301 |
Just test, never mind.
Вопрос отправлен: 30.05.2003, 00:13
Отправитель: Bob Johnson2 (somewho@nowhere.com)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, Bob Johnson2!
Ответ отправлен: 30.05.2003, 00:41
Отправитель: Bob Johnson
Вопрос № 3302 |
Здрасте, не подскажете как сломать программу на Delphi, а то стандартные бряки не работают !
Вопрос отправлен: 30.05.2003, 02:31
Отправитель: GosuProger
[Следующий вопрос >>] [Список вопросов]
Отвечает Lynx
Здравствуйте, GosuProger!
В каком смысле не работают??? Если ты ставишь бряк на какую нить функцию типа 'skjhfkuh', то конечно не работают, потому, что нет такой функции в API. Но я всё таки предполагаю, что ты, начитавшись мануалов ставишь на GetWindowTextA, GetDlgItem... Только для того, что бы отладчик их видел надо указать ему на их наличие (!!!). Скорее всего ты пользуешься SoftIce, тогда в файл winice.dat раскоментируй следущие строки:
EXP=c:windowssystemkernel32.dll
EXP=c:windowssystemuser32.dll
EXP=c:windowssystemgdi32.dll
В следущий раз описывай проблему точнее (что и при каких условиях происходит), а то приходиться гадать.
Ответ отправлен: 30.05.2003, 15:06
Отправитель: Lynx
Отвечает Дмитрий
Добрый день, GosuProger!
Посмотри через любую ковырялку (скажем dumpbin) какие функции у тебя экспортируются-импортируются. Ты ставишь стандартные бряки, а на самом деле прога может просто не вызывает эти функции. И еще. Можно перехватывать не обращения к функциям, а сообщения-мессаги, пересылаемые меж Виндой и прогой. Так надежнее, потому-что это дело уже не зависит от типа применяемой библиотеки. Удачи!
P.S. Проверь настройку отладчика!
Ответ отправлен: 30.05.2003, 06:26
Отправитель: Дмитрий
Отвечает Pin
Здравствуйте, GosuProger!
А что за программа?
Ответ отправлен: 30.05.2003, 17:50
Отправитель: Pin
Отвечает [MozgC]
Скачай DeDe, анализируй код процедуры, потом попади в тело проги с помощью например drawtexta, и ставь бряк уже на адрес.
Ответ отправлен: 30.05.2003, 02:44
Отправитель: [MozgC]
Отвечает Bob Johnson
Здравствуйте, GosuProger!
Руками. А как ты еще хотел? Как спросил, так и ответил.
* EMan1.1: --==** Eternal power **==--
Ответ отправлен: 30.05.2003, 02:46
Отправитель: Bob Johnson
Вопрос № 3303 |
Привет экспертам!
Скажите пожалуйста как вывести на экран надпись, хочу с этого начать учить ассемблер. Заранее спасибо.
Вопрос отправлен: 30.05.2003, 02:33
Отправитель: HelloWorld
[Следующий вопрос >>] [Список вопросов]
Отвечает Lynx
Здравствуйте, HelloWorld!
Ну самый простой для начинающих способ - это int 21h. Делаешь так(под DOS):
...
mov ah, 09h
mov dx, offset String
int 21h
...
Strind db 'Hello, World!!! $'
Можно ещё напрямую в видеобуфер, но если ты новичок, то не забивай себе голову. А вобще, лучше изучать книжки, потому, что каждый раз задавать вопросы - замучаешься. :)
Ответ отправлен: 30.05.2003, 15:05
Отправитель: Lynx
Отвечает Дмитрий
Доброе время суток, HelloWorld!
Программку поместил в приложение. Закомментировал каждую строчку, надеюсь будет понятно. Удачи!
Приложение:
Ответ отправлен: 30.05.2003, 12:10
Отправитель: Дмитрий
Отвечает [MozgC]
Надо внимательнее смотреть примеры в TASM'e
.MODEL small
.STACK 100h
.DATA
HelloMessage DB 'Hello, world',13,10,'$'
.CODE
mov ax,@data
mov ds,ax ;set DS to point to the data segment
mov ax,[hellomessage]
mov ah,4ch ;DOS terminate program function
int 21h ;terminate the program
END
Ответ отправлен: 30.05.2003, 02:44
Отправитель: [MozgC]
Отвечает Bob Johnson
Приветствую Вас, HelloWorld!
Почитай-ка ты книгу "Зубкова" и рассылку О. Калашникова. Там есть это и многое другое, что тебе будет полезно при изучении асма. Скачать можно с моей страницы: bobjohnson.nm.ru
* EMan1.1: --==** Eternal power **==--
Ответ отправлен: 30.05.2003, 02:46
Отправитель: Bob Johnson
Отвечает Pin
Здравствуйте, HelloWorld!
seg1 SEGMENT use16
org 100h
begin:
mov dx,offset msg
int 21h
int 20h
msg db "Ваше сообщение$"
seg1 ends
end begin
Ответ отправлен: 31.05.2003, 00:02
Отправитель: Pin
Отвечает Vdr
Добрый день, HelloWorld!
Смотри приложение.
Удачи.
Приложение:
Ответ отправлен: 02.06.2003, 09:55
Отправитель: Vdr
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (38) C / C++ (31) Perl (5) Builder / Delphi (14) Pascal (28) Basic / VBA (12) Java / JavaScript (11) PHP (7) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (38) Windows NT/2000/XP (31) "Железо" (29) Поиск информации (16) |
Администратору Windows NT/2000/XP (15) Linux / Unix (9) |
Юристу Гражданское право (5) Семейное право (2) Трудовое право (3) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А. |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||