Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 550
от 19.09.2006, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 350, Экспертов: 37
В номере:Вопросов: 8, Ответов: 10


Вопрос № 55336: Доброго времени суток уважаемые эксперты. Как создать какой-нибудь контрол чтобы там отображать текст, и не путаться с другим. Поясняю: Контрол для отображения текста из файла, другое это там кнопки добавит что-то, закрасить. Заранее благ...
Вопрос № 55337: Здравствуйте уважаемые эксперты. Подскажите самую низкую(что бы не на кого не ссылалась, и ни кого больше не использовала) API функцию вывода текста. Чтобы было побыстрее. Заранее благодарю, уважаемые эксперты. ...
Вопрос № 55339: Здравствуйте уважаемые эксперты. Вот API функции в GDI на каком языке написаны на асме или на С++. Спасибо. ...
Вопрос № 55340: Здравствуйте уважаемые эксперты. Что быстрее выполняется сложение или вычитание, и как вообще проверить скорость выполнения инструкции. Спасибо. ...
Вопрос № 55341: Доброго времени суток уважаемые эксперты. Как сделать резидентную программу в вин32. И вообще можно ли это делать, если да то что она будет перехватывать. Спасибо. ...
Вопрос № 55363: Здравствуйте ЭКСПЕРТЫ! Попробовал написать программу, кот. должна выводить аргументы командной строки в окне MessageBox, или текст "Отсутствуют", если аргументов нет. Результат: 1) При запуске с аргументами - аргументы выводятся...
Вопрос № 55385: Здравствуйте, уважаемые Эксперты. Подскажите пожалуйста: 1) в какой dll находится Internet Explorer (элемент управления) и как его использовать? Если возможно спримерами или ссылками на исходники на ассемблере, си (WinApi). 2) Кусо...
Вопрос № 55436: Доброго времени суток уважаемые эксперты. Читал недавно ГУКа «Аппаратные средства IBM PC», так вот там сказано, что 2D(3D)акселератор, это графический сопроцессор расположенный на самой видеокарте. Я подумал, что там может есть тоже свои собствен...

Вопрос № 55.336
Доброго времени суток уважаемые эксперты.
Как создать какой-нибудь контрол чтобы там отображать текст, и не путаться с другим. Поясняю:
Контрол для отображения текста из файла, другое это там кнопки добавит что-то, закрасить.
Заранее благодарю, уважаемые эксперты.
Отправлен: 13.09.2006, 20:06
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: n0name
Здравствуйте, ENS!
Контролы создаются через CreateWindow, класс указываешь тот который тебе нужен. список есть в MSDN.
Для кнопкаи например класс "BUTTON".
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 13.09.2006, 21:37


Вопрос № 55.337
Здравствуйте уважаемые эксперты.
Подскажите самую низкую(что бы не на кого не ссылалась, и ни кого больше не использовала) API функцию вывода текста. Чтобы было побыстрее.
Заранее благодарю, уважаемые эксперты.
Отправлен: 13.09.2006, 20:07
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: n0name
Здравствуйте, ENS!
DrawText => DrawTextEx => ExtTextOut => NtGdiExtTextOut
Значит тебе нужна недокументированная функция NtGdiExtTextOut.
Но тк ExtTextOut всего оболочка к вызову NtGdiExtTextOut, то можешь смело использовать ExtTextOut. Тем более что вызов NtGdiExtTextOut хотя и возможен, но проблематичен.
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 13.09.2006, 21:49


Вопрос № 55.339
Здравствуйте уважаемые эксперты.
Вот API функции в GDI на каком языке написаны на асме или на С++.
Спасибо.
Отправлен: 13.09.2006, 20:08
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: n0name
Здравствуйте, ENS!
Ответить на это могут только программисты MS, однако глядя на дизасм листинг склоняюсь к С++.
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 13.09.2006, 21:50


Вопрос № 55.340
Здравствуйте уважаемые эксперты.
Что быстрее выполняется сложение или вычитание, и как вообще проверить скорость выполнения инструкции.
Спасибо.
Отправлен: 13.09.2006, 20:08
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: n0name
Здравствуйте, ENS!
Есть специальные таблицы с количеством тактов на операцию. Однако точно сказать как долго будет выполнятся инструкция сложно. Так как это время зависит от многих факторов.
А сложение и вычитание выполняются одинаковое количество тактов.
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 13.09.2006, 21:55

Отвечает: mix_mix
Здравствуйте, ENS!
Здесь, даже не глядя на таблицы, можно сказать, что выполняться будет одинаково по времени, потому, что вычитать процессор не умеет, он только складывет:
sub eax, 0ABh
эквивалентно
add eax, 0FFFFFF55h
Ответ отправил: mix_mix (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 21:01


Вопрос № 55.341
Доброго времени суток уважаемые эксперты.
Как сделать резидентную программу в вин32. И вообще можно ли это делать, если да то что она будет перехватывать.
Спасибо.
Отправлен: 13.09.2006, 20:09
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: mix_mix
Здравствуйте, ENS!
Т.к. вин32 работает в protected mode, все программы работают по-разному.
Все простые приложения в RING3, а драйвера и ядро системы в RING0 (нулевой уровень защиты).
В ринг3 можно перехватывать все функции виндовс, которые она предоставляет всем программам, правда сделать это можно очень извращенным способом, еще в ринг3 можно перехватывать нажатия клавиш клавиатуры, движения мыши etc., но этот метод очень не совершеннен.
Выйдя в ринг0 (путем написания драйвера и последующей загрузки его в систему, или путем использования некомпетентности Microsoft, то есть использования различных "дыр" в безопасности системы) можно очень легко перехватывать функции KiSystemService, ядерные функции, обрабатывать прерывания etc. Это наилучший способ, но он достаточно сложный, так что рекомендую начать в заданной последовательности:
http://www.wasm.ru/article.php?article=1001024
http://www.wasm.ru/article.php?article=apihook_1
http://www.wasm.ru/article.php?article=apihook_2
http://www.wasm.ru/article.php?article=apihook_3
Ответ отправил: mix_mix (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 21:15


Вопрос № 55.363
Здравствуйте ЭКСПЕРТЫ!
Попробовал написать программу, кот. должна выводить аргументы командной строки в окне MessageBox, или текст "Отсутствуют", если аргументов нет.
Результат:
1) При запуске с аргументами - аргументы выводятся.
2) При запуске без аргументов появляется MessageBox, но без текста "Отсутствуют".
При запуске под отладчиком (Olly) - текст выводится.
Вопрос. В чем дело?
Заранее спасибо.

Приложение:

Отправлен: 13.09.2006, 22:36
Вопрос задал: Юpий (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Юpий!
Некорректно построен поиск параметров.
1) Рассматривается только случай, когда имя программы заключено в кавычки.
Это неверно, если имена папок не содержит пробелов, то путь будет без кавычек.
2) Неверное предположение о том, что если нет параметров, то конечный нуль будет сразу за именем программы, перед нулем может быть пробел.
Что, кстати у тебя и наблюдается: твой отладчик формирует команду запуска без пробела - и ты попадаешь на метку "no", запускаешь саму по себе, ОСь вставляет пробел - попадаешь на "get", а там нуль, т.е. пустая строка!
Вставь следующий анализ, и заработает (случай с кавычками).
get:
add eax,2
cmp byte ptr [eax],0 ;!!!!!!
je no ;!!!!!!
push 0 ; Выводим
Для полноты картины надо еще добавить анализ случая без кавычек...
Удачи!
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 14.09.2006, 19:13
Оценка за ответ: 5


Вопрос № 55.385
Здравствуйте, уважаемые Эксперты.
Подскажите пожалуйста:
1) в какой dll находится Internet Explorer (элемент управления) и как его использовать?
Если возможно спримерами или ссылками на исходники на ассемблере, си (WinApi).
2) Кусок кода из книги "Network Programming for Microsoft Windows":
Index = WSAWaitForMultipleEvents(EventTotal,EventArray, FALSE, WSA_INFINITE, FALSE);
WSAEnumNetworkEvents(SocketArray[Index - WSA_WAIT_EVENT_0],
EventArray[Index - WSA_WAIT_EVENT_0],&NetworkEvents);

При компиляции в MASM строки:
(1) mov eax,Index
(2) sub eax,WSA_WAIT_EVENT_0
выдаёт ошибку:
(2) : error A2206: missing operator in expression

В WINDOWS.INC написано:
WSA_WAIT_EVENT_0 equ ((DWORD)0)
Как это исправить и что значит ((DWORD)0)?

3) как узнать сколько и какие параметры принимает функция из dll (в наличии только сама dll)
и как её использовать в своей программе.

С уважением MrGreen.
Отправлен: 14.09.2006, 06:19
Вопрос задал: MrGreen (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: n0name
Здравствуйте, MrGreen!
2) WSA_WAIT_EVENT_0 equ 0
3) Только с помощью анализа дизассемблерного листинга.
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 14.09.2006, 11:51


Вопрос № 55.436
Доброго времени суток уважаемые эксперты.
Читал недавно ГУКа «Аппаратные средства IBM PC», так вот там сказано, что 2D(3D)акселератор, это графический сопроцессор расположенный на самой видеокарте. Я подумал, что там может есть тоже свои собственные инструкции(по аналогии с FPU). Так если это так где можно прочитать о них поподробнее.
Спасибо.
Отправлен: 14.09.2006, 14:21
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: n0name
Здравствуйте, ENS!
Своих инструкций нет, кроме того работа с акселератором не стандартихирована, и код написанный для одного может не работать для другого. Если всё таки хочешь изучить материал, то посмотри на сайтах Ati/amd, nvidia, intel.
Например:
http://developer.nvidia.com
Ответ отправил: n0name (статус: 4-ый класс)
Ответ отправлен: 14.09.2006, 14:43

Отвечает: Mihasic
Здравствуйте, ENS!
На сколько я знаю, эти инструкции не стандартизированны, да и программировать под тот контроллер означает - создавать собственную версию прошивки для видеоадаптера. По этому документации не видел. А вот чтобы писать эффективный код взаимодействия с видеоадаптером, необходимо обратится к разработчикам данного устройства. Но это нужно лишь при разработке собственного драйвера, когда требуется обращаться напрямую к аппаратуре. В большинтсве случаев в этом нет необходимости. А если таки есть - к разработчикам устройства.
Ответ отправил: Mihasic (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 15:01


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное