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

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 712
от 17.04.2004, 13:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 5156
Отправлено ответов: 14186
Активность: 275.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Pawel
Статус: Профессиональный
Общий рейтинг: 156.15
[Подробней >>]
Acid Burn
Статус: Начальный
Общий рейтинг: 139.28
[Подробней >>]
Foamplast
Статус: Опытный
Общий рейтинг: 152.68
URL: мой личный сайт
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 109.89
[Подробней >>]
ZagSer168
Статус: Начальный
Общий рейтинг: 104.32
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 133.37
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
Portnov
Статус: Профессиональный
Общий рейтинг: 106.11
URL: Мой сайтик...
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 117.7
[Подробней >>]
SedHg
Статус: Опытный
Общий рейтинг: 111.84
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 5136. Доброго времени суток! Дайте, плииз, ссылочку на досевый компилятор с поддержкой ммх и sse. Спасибо.... (ответов: 3)
Вопрос № 5137. День добрый уважаемые эксперты! Подскажите плиз как избавиться от переходов для оптимизации в тако... (ответов: 6)
Вопрос № 5138. Приветик всем!! Помогите разобраться вот в чем... под WinXP/9x 1. как узнать существует данный ката... (ответов: 3)
Вопрос № 5139. Здравствуйте. (winxp-masm612)(ml.exe 2_.asm /AT) При компиляции(или компоновке) (исходник в приложен... (ответов: 4)
Вопрос № 5140. Здравствуйте. Вобщем без таблицы импорта программа под виндой не запускается. Вроде логично. А если... (ответов: 2)
Вопрос № 5141. Уважаемы эксперты, подскажите пожалуйста в чём может быть дело в следующем случаи. Есть у меня учебн... (ответов: 3)
Вопрос № 5142. Здравствуйте дорогие эксперты! Вот у меня такой вопрос возник: Как в WDM драйвере (для WIN98) отлови... (ответов: 1)
Вопрос № 5144. Здраствуйте. У меня masm32 выдает ошибку: menu.rc<1> error A2044 invalid character in file ... menu.... (ответов: 3)

Вопросов: 8, ответов: 25


 Вопрос № 5136

Доброго времени суток!
Дайте, плииз, ссылочку на досевый компилятор с поддержкой ммх и sse.
Спасибо.



Вопрос отправлен: 12.04.2004, 20:17
Отправитель: sasha

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, sasha!
Fasm
http://flatassembler.net/


Ответ отправлен: 12.04.2004, 21:28
Отправитель: Pawel


Отвечает Acid Burn

Здравствуйте, sasha!
Качай TASM с WASM.RU! Он умеет работать со всем! Но если ты не поклонник борланда, то качай софт от МЕЛКОСОФТА с того же сайта


Ответ отправлен: 14.04.2004, 15:16
Отправитель: Acid Burn


Отвечает Foamplast

Здравствуйте, sasha!
http://nasm.sourceforge.net


Ответ отправлен: 15.04.2004, 08:47
Отправитель: Foamplast


 Вопрос № 5137

День добрый уважаемые эксперты!
Подскажите плиз как избавиться от переходов
для оптимизации в такой задачке:
if(eax=b) then eax=1(или любое не нулевое значение) else eax=0.
Нужно для формирования значения функции.
У меня получилось так см. приложение.
Это наверно не оптимально будет.


Приложение:


Вопрос отправлен: 12.04.2004, 20:24
Отправитель: 1

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Приветствую Вас, 1!
По мойму по другому нельзя.
По коду можно перемещать ся только переходами.
Без них не получется.

Ответ отправлен: 12.04.2004, 21:31
Отправитель: Pawel


Отвечает Dark_Lord

Здравствуйте, 1!
cmp eax,[b]
sete al
В следствии чего, если еах=b, то al=1

Ответ отправлен: 12.04.2004, 22:04
Отправитель: Dark_Lord


Отвечает ZagSer168

Здравствуйте, 1!
Также возможно реализовать так:
cmp eax,[b]
sete al
and eax,1
ret


Ответ отправлен: 13.04.2004, 00:52
Отправитель: ZagSer168


Отвечает Евгений Иванов

cmp eax, [b]
setz al
and eax, 15
Бывай.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 13.04.2004, 20:04
Отправитель: Евгений Иванов


Отвечает Portnov

Приветствую Вас, 1!
ВО, по-моему, быстрее некуда:
...
xor eax,[b]
not eax
ret
XOR от двух чисел равен нулю тогда и только тогда, когда эти числа равны.

Ответ отправлен: 14.04.2004, 11:02
Отправитель: Portnov


Отвечает Foamplast

Доброе время суток, 1!
Cmp Eax, [b]
Sete Al
And Eax, 0FFh


Ответ отправлен: 15.04.2004, 08:47
Отправитель: Foamplast


 Вопрос № 5138

Приветик всем!!
Помогите разобраться вот в чем...
под WinXP/9x
1. как узнать существует данный каталог или нет?
2. есть такой контрол SysDateTimePick32 как узнать когда юзер ввел дату, какие надо обрабатывать сообщения?
Вем огромное спасибо кто решился мне помочь!



Вопрос отправлен: 12.04.2004, 20:59
Отправитель: Agny (agny@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Здравствуйте, Agny!
Пусти поиск файла с параметрами искать каталоги.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 13.04.2004, 20:04
Отправитель: Евгений Иванов


Отвечает Acid Burn

Добрый день, Agny!
В ВИНДАХ существует такая функция прерывания 21 как проверка каталога!!!Посмотри в книге Зубкова "АССЕМБЛЕР ДЛЯ ДОС,ВИНДОС,УНИХ"там все хорошо написано


Ответ отправлен: 14.04.2004, 15:20
Отправитель: Acid Burn


Отвечает Foamplast

Приветствую Вас, Agny!
1. См. функцию SearchPath
2. DTN_DATETIMECHANGE и вообще смотри соответствующий раздел в MSDN.


Ответ отправлен: 15.04.2004, 08:49
Отправитель: Foamplast


 Вопрос № 5139

Здравствуйте.
(winxp-masm612)(ml.exe 2_.asm /AT)
При компиляции(или компоновке) (исходник в приложении) выводятся ошибки:
2_.asm(12) : error A2085: instruction or register not accepted in current CPU mode
2_.asm(23) : error A2085: instruction or register not accepted in current CPU mode
Стоило мне переименовать Str в Stri как всё заработало. А под ДОС, вероятно, всё и так работает.
1.Почему это слово запрещено?(Оно что зарезервировано?)
2.Какие ещё слова запрещены?
3.Указывается код ошибки (A2085). Есть ли документация с разъяснением значения ошибок?


Приложение:


Вопрос отправлен: 13.04.2004, 01:16
Отправитель: EG

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Здравствуйте, EG!
1) Это инструкция 286+ процессора. Она запрещена по синтаксису MASM, т.к. по умолчанию используются только инструкции 8086/88. Для разрешения ее использования нужна строка
.286
в начале программы. В вашем случае, нельзя называть переменные зарезервированными словами.
2) Все инструкции процессора + директивы ассемблера.
3) Например, MSDN. Вот что там говорится:
A2085: instruction or register not accepted in current CPU mode
The error occurs because the default assembly mode is 8086. The .186, .286, .286p, .386, or .386p directive must be placed in the source code prior to any instructions that require those modes.
In addition, MASM 6.0 supports 80486 instructions.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 13.04.2004, 05:46
Отправитель: _vt


Отвечает Евгений Иванов

Добрый день, EG!
STR - это команда процессора и поэтому она зарезервирована. :))
Она записывает регистр задачи в 16-битный регистр основного назначения.
Удачи!
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 13.04.2004, 20:05
Отправитель: Евгений Иванов


Отвечает Acid Burn

Приветствую Вас, EG!
Вполне возможно, что первоначальный вариант имени перемменной используется процессором как команда! И он выдалсообщение о том что в указаном типе процессора этакоманда не используется!


Ответ отправлен: 14.04.2004, 14:56
Отправитель: Acid Burn


Отвечает Foamplast

Доброе время суток, EG!
1. Да, Str - это название команды (как Mov или Int) и поэтому используется специфически.
2. Специальным образом испольуются наименования команд, регистров и директив ассемблера. Возможно в MASM что-то ещё, поэтому подробнее смотрите документацию по masm, они там жутко любят плодить заверзервированные слова.
3. Документация обычно прилагается к ассемблеру.


Ответ отправлен: 15.04.2004, 08:49
Отправитель: Foamplast


 Вопрос № 5140


Здравствуйте.
Вобщем без таблицы импорта программа под виндой не запускается.
Вроде логично. А если я сам хочу заполнить таблицу импорта? Вот встраиваю блок защиты в прогу.
там всё зашифровано. Блок при запуске расшифровывает и заполняет импорт. Поскольку загрузчику
винды нужна таблица импорта, возникает вопрос, КАКУЮ таблицу ему подсунуть в качестве заглушки?
Загрузчику явно не простое наличие таблицы нужно, а именно определённые ДЛЛ с определёнными
функциями. Так какие же ДЛЛ и функии?



Вопрос отправлен: 13.04.2004, 01:18
Отправитель: ПАПА

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Здравствуйте, ПАПА!
Загрузчику не нужна таблица!
Она нужна тебе, чтобы работали функции, нужные для распаковки.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 13.04.2004, 20:05
Отправитель: Евгений Иванов


Отвечает Foamplast

Доброе время суток, ПАПА!
1. Абсолютно любую таблицу, с любыми функциями из любых библиотек (проверено на Win2000). Советую ExitProcess().
2. Дело в том, что с точки зрения разработчиков ОС, блок защиты может не справиться с какой-либо из задач (например, по причине нехватки памяти), тогда этот блок должен сообщить пользователю об ошибке и корректно завершить процесс. А для этого и понадобятся функции! Поэтому обычно нормальные загрузчики проверяют файлы на корректность перед запуском. В критерии проверки входят проверка наличия необходимых полей и структур (секции кода, точки входа и т.п) и осмысленности этих полей (например, точка входа должна находиться в пределах какой-либо секции кода).
Срого говоря, ЛЮБОЙ файл должен импортировать по меньшей мере ExitProcess() и ещё что-либо для ввода или вывода (либо GetProcAddress() для определения адресов), но это не проверяется, так как тогда запуск процессов может стать дорогой операцией.
Поэтому обычно загрузчик проверяет, чтобы была таблица импорта.


Ответ отправлен: 15.04.2004, 08:49
Отправитель: Foamplast


 Вопрос № 5141

Уважаемы эксперты, подскажите пожалуйста в чём может быть дело в следующем случаи.
Есть у меня учебные примеры по использованию расширенного редактора
класс RichEdit20A билиотека riched20.dll, примеры хорошие и в Windows98
всё было без проблем, а вот когда запустил их в Wndows XP то заметил
что сообщение получения выделенного текста "EM_GETSELTEXT"
анлгийские символы всегда выдаёт правильно, а вот русские только
при переключенири раскладки клавиатры на русскую, при английской
раскладке вместо русских букв аккуратно вставляет одни пробелы.
Подскажите отчего это может быть, нельзя ли как-то сделать так чтобы
выделенный текст выдавался как есть при любой раскладке без искажений.
С уважением Kostik.



Вопрос отправлен: 13.04.2004, 04:17
Отправитель: Kostik (mks@norcom.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Добрый день, Kostik!
Необходимо установить язык в функции.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 13.04.2004, 20:51
Отправитель: Евгений Иванов


Отвечает Acid Burn

Доброе время суток, Kostik!
Наверное нельзя, но бог тебе в помощь!!!! Если только ты не ПЕРЕПИШЕШЬ заново ВИНДЫ!!!!


Ответ отправлен: 14.04.2004, 15:22
Отправитель: Acid Burn


Отвечает Foamplast

Добрый день, Kostik!
Используйте RichEdit20W.


Ответ отправлен: 15.04.2004, 08:50
Отправитель: Foamplast


 Вопрос № 5142

Здравствуйте дорогие эксперты!
Вот у меня такой вопрос возник:
Как в WDM драйвере (для WIN98) отловить прерывание? У меня есть часть исходника VxD драйвера:
Строки из инициализации прерывания:
mov EDI,OFFSET32 VMyD_IRQ_Desc;Адрес структуры VPICD_IRQ_Descriptor
VxDCall VPICD_Virtualize_IRQ;Виртуализация устройства
mov IRQ_Handle,EAX
...
mov EAX,IRQ_Handle
VxDCall VPICD_Physically_Unmask
Само прерывание:
BeginProc IRQproc
...
mov EAX,IRQ_Handle
VxDCall VPICD_Phys_EOI
VxDCall VPICD_Physically_Mask
clc
ret
EndProc IRQproc
По этому поводу вопрос:
1. Будут ли эти функции работать из WDM драйвера?
2. Как отключить прерывание?
3. Достаточно ли мне этих функций для работы?
4. Где я могу прочитать об этом?



Вопрос отправлен: 13.04.2004, 09:17
Отправитель: Filgat

[Следующий вопрос >>] [Список вопросов]

Отвечает Foamplast

Приветствую Вас, Filgat!
1. Скорее всего, нет.
2. IoDisconnectInterrupt();
3. Нет.
4. в Windows DDK.
Во-первых, для обработки прерываний необходимо регистрировать их обработчики с помощью IoConnectInterrupt().
Во-вторых, драйвер должен иметь определённые процедуры и разделы файла.
Поэтому советую обратиться к Windows 2000 DDK и wasm.ru, там есть цикл статей про написание драйверов.


Ответ отправлен: 15.04.2004, 08:50
Отправитель: Foamplast


 Вопрос № 5144

Здраствуйте.
У меня masm32 выдает ошибку:
menu.rc<1> error A2044 invalid character in file
...
menu.rc<100> error A2044 invalid character in file
Без строки include menu.rc все компилится нормально, а так он почему то не хочет.При этом у меня в файле ресурсов всего то не больше 20 строк, а он мне выдает АЖ 100 и при чем в каждой строке ошибка.В чем дело?



Вопрос отправлен: 13.04.2004, 13:32
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Здравствуйте, Семен!
Данные для программы надо обрабатывать отдельной программой.
brc32
Компилятор ресурсов .

* EMan: -=- Любовь существует! =-=


Ответ отправлен: 13.04.2004, 20:52
Отправитель: Евгений Иванов


Отвечает SedHg

Добрый день, Семен!
Чего-то я тебя не понял 8). Кто ошибку выдает компоновщик или компилятор ресурсов ? И на будущее, если прога небольшая, лучше кидай исходник, а то сиди, гадай, что там у тебя случилось =).

Ответ отправлен: 13.04.2004, 21:30
Отправитель: SedHg


Отвечает _vt

Доброе время суток, Семен!
Ресурсы компилятся отдельной программой. В MASM она называется rc.exe.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 14.04.2004, 23:40
Отправитель: _vt



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (22)
C / C++ (13)
Perl (1)
Builder / Delphi (18)
Pascal (18)
Basic / VBA (2)
Java / JavaScript (3)
PHP (10)
Криптография (6)
WinAPI (11)
Радиоэлектроника (6)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (48)
"Железо" (25)
Поиск информации (16)
Администратору
Windows NT/2000/XP (24)
Linux / Unix (7)
Юристу
Гражданское право (10)
Семейное право (8)
Трудовое право (8)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное