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

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


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

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

Выпуск № 496
от 03.03.2003, 21:00

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


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

Broken Sword
Статус: Профессиональный
Общий рейтинг: 125.63
URL: моя рассылка по Protected Mode
[Подробней >>]
Andrew Vext
Статус: Опытный
Общий рейтинг: 107.68
[Подробней >>]
Eugene
Статус: Опытный
Общий рейтинг: 109.53
URL: мощный файловый архив
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.05
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 144.62
[Подробней >>]
Igoryk
Статус: Профессиональный
Общий рейтинг: 133.13
URL: IgorykSoft
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.56
URL: Программирование
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.49
[Подробней >>]
DiGiT[old]
Статус: Профессиональный
Общий рейтинг: 110.15
[Подробней >>]
 
Топор
Статус: Доверительный
Общий рейтинг: 108.66
[Подробней >>]
Joy
Статус: Доверительный
Общий рейтинг: 124.44
[Подробней >>]
akul
Статус: Начальный
Общий рейтинг: 122.44
[Подробней >>]


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

Вопрос № 2648. Использую SoftIce для отладки ms-dos программы, переходящей в защищенный режим. Для отладки использу... (ответов: 1)
Вопрос № 2649. Здравствуйте Andrew Vext. Если я правильно понял, Вы можете выслать электронный вариант книги Зубко... (ответов: 1)
Вопрос № 2651. Уважаемые эксперты! Прошу простить, за такие вопросы, но помочь можете только вы. 1. Есть программа ... (ответов: 2)
Вопрос № 2652. Уважаемые эксперты! Вопрос следующий. Есть некое приложение, которое ожидает ввода последовательност... (ответов: 5)
Вопрос № 2654. Здравствуйте уважаемые эксперты! При выполнении кода в приложении функция WriteFile возвращает 0 и в... (ответов: 2)
Вопрос № 2655. Всем привет... Расскажите кто-нибудь алгоритм решения "задачи коммивояжера"... Сп... (ответов: 2)
Вопрос № 2656. Будьте добры ответье пожалуйста из-за чего во время отладки СофтАйсом каких-либо прог, температура п... (ответов: 1)
Вопрос № 2657. Привет всем. Я работаю под 98 Виндой и вот всплыла такая себе проблема. Возможно ли выделить одним з... (ответов: 5)
Вопрос № 2658. Уважаемые Товарищи Эксперты! Дело в том, что Я написал кое-какую защиту для одной проги. Защита осно... (ответов: 1)
Вопрос № 2661. Доброго времени суток, многоуважаемые господа эксперты. Никто из вас, случаем, не занимался чтением ... (ответов: 4)
Вопрос № 2662. Доброго времени суток Эксперты. У меня небольшой вопросик. Насколько мне известно, хендл какого нибу... (ответов: 2)

Вопросов: 11, ответов: 26


 Вопрос № 2648

Использую SoftIce для отладки ms-dos программы, переходящей в защищенный режим. Для отладки использую например dldr, попадаю в окно Айса, а далее при вызове любого прерывания по шагам или после нажатия ctrl-d опять всплывает окно с сообщением:
break due to KeBugCheckEx(Unhandled Kernel Mode Exception)
Error = A(IRQL_NOT_LESS_OR_EQUAL) P1=D9BE P2=FF P3=0 P4=975
А если использовать бряк по Int 1, то программа зависает, иногда уходит на перезагрузку.
Информация к размышлению: без Айса прога работает корректно, установлена DriverStudio 2.6, Windows XP.
На всякий случай в приложение сырец данной проги.
Кстати другие досовые проги дают примерно такой же результат.


Приложение:


Вопрос отправлен: 25.02.2003, 00:27
Отправитель: Liss (slipatov@yandex.ru)

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

Отвечает Broken Sword

Приветствую Вас, Liss!
DLDR? нет, это ж отладчик чисто реалмодовский. попробуй просто в айсе это делать (методом int3-intrusion) и скачай наконец 2.7


Ответ отправлен: 25.02.2003, 06:28
Отправитель: Broken Sword


 Вопрос № 2649

Здравствуйте Andrew Vext.
Если я правильно понял, Вы можете выслать
электронный вариант книги Зубкова. Был бы
очень признателен за посылку на sergeysp@hotmail.com
Уже полгода ищу, но нет ее у нас в Барнауле.
С уважением, Сергей.



Вопрос отправлен: 25.02.2003, 05:30
Отправитель: Sergey

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

Отвечает Andrew Vext

Доброе время суток, Sergey!
Книга Зубкова выложена в свободный доступ
http://www.key4sat.narod.ru/incoming/assm01.zip


Ответ отправлен: 25.02.2003, 17:00
Отправитель: Andrew Vext


 Вопрос № 2651

Уважаемые эксперты! Прошу простить, за такие вопросы, но помочь можете только вы.
1. Есть программа (чужая) в которой используется прерывание 4С (функции 51 и 52). Вопрос: нигде не могу найти описание, у Ральфа Брауна про эти функции ничего не написано (да и про прерывание написано совсем чуть-чуть).
2. Есть библиотеки (*.lib) функций (для DOS), каким образом ими можно воспользоваться из моей программы (asm).
Заранее спасибо!



Вопрос отправлен: 25.02.2003, 08:20
Отправитель: Konstantin

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

Отвечает Eugene

Приветствую Вас, Konstantin!
Не исключено, что это пользовательская функция. Можешь по тексту поискать прерывание доса int 21h, которому предшедствует mov ax,254ch. Если найдёшь, то можно определить адрес обработчика и посмотреть, что он делает. Но это из предположения, что 4ch - это пользовательское прерывание.

Ответ отправлен: 25.02.2003, 09:21
Отправитель: Eugene


Отвечает Broken Sword

Приветствую Вас, Konstantin!
1. Советую тебе поискать строки mov AX,3551h int 21h (или mov dword ptr ds:[51*4]... понимаешь к чему клоню?

Ответ отправлен: 25.02.2003, 16:41
Отправитель: Broken Sword


 Вопрос № 2652

Уважаемые эксперты!
Вопрос следующий. Есть некое приложение, которое ожидает ввода последовательности символов с клавиатуры. Каким образом можно из своей программы программно имитировать нажатие клавиш клавиатуры для другой программы. Все это под win.
Заранее спасибо.



Вопрос отправлен: 25.02.2003, 15:39
Отправитель: Konstantin

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

Отвечает Gibbel

Приветствую Вас, Konstantin!
Сообщения WM_KEYDOWN, WM_KEYUP, WM_CHAR

Ответ отправлен: 25.02.2003, 16:28
Отправитель: Gibbel


Отвечает masquer

Здравствуйте, Konstantin!
Либо сообщения окну посылай, либо, что почти то же самое, функцию keybd_event используй.

Ответ отправлен: 25.02.2003, 18:20
Отправитель: masquer


Отвечает Igoryk

Добрый день, Konstantin!
Функцией keybd_event

Ответ отправлен: 26.02.2003, 13:22
Отправитель: Igoryk


Отвечает Bob Johnson

Приветствую Вас, Konstantin!
Если приложение оконное - то послать ему WM_CHAR (или WM_KEYDOWN + WM_KEYUP). Если консольное - то перенаправить устройство стандартного ввода (перед запуском программы).


Ответ отправлен: 26.02.2003, 15:35
Отправитель: Bob Johnson


Отвечает Andrew Vext

Доброе время суток, Konstantin!
Вам следует в программе генерировать события WM_KEYDOWN и WM_KEYUP. На этом принципе строятся все системы автоматизированного тестирования.

Ответ отправлен: 26.02.2003, 17:11
Отправитель: Andrew Vext


 Вопрос № 2654

Здравствуйте уважаемые эксперты!
При выполнении кода в приложении функция WriteFile возвращает 0 и в файл ничего не пишет.
CreateFile и SetFilePointer выполняются правильно.
Что я делаю не так?
Спасибо.


Приложение:


Вопрос отправлен: 25.02.2003, 17:38
Отправитель: Sledge

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

Отвечает masquer

Доброе время суток, Sledge!
А у тебя есть гарантия, что после SetFilePointer ebx не изменится?

Ответ отправлен: 25.02.2003, 18:17
Отправитель: masquer


Отвечает Bob Johnson

Здравствуйте, Sledge!
В таком случае после WriteFile (которая возвращает 0) следует вызвать GetLastError и посмотреть в списке error codes, что произошло.


Ответ отправлен: 26.02.2003, 15:35
Отправитель: Bob Johnson


 Вопрос № 2655

Всем привет...
Расскажите кто-нибудь алгоритм решения "задачи коммивояжера"... Спасибо.



Вопрос отправлен: 25.02.2003, 22:06
Отправитель: baldr (baldr@pisem.net)

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

Отвечает Ayl

Доброе время суток, baldr!
Ну, блин... Если я тебя правильно понял, то тебя интересует задача обхода графа с минимальной длиной пути (в каждую вершину надо попасть ровно 1 раз). Вообще-то, это классический пример NP-полной задачи, то есть для ее решения требуется осуществить полный перебор всех вариантов. На данный момент нет алгоритма решения без перебора. Есть несколько алгоритмов приближенного решения, например с помощью метода ветвей и границ.
А вообще что, сложно в Яндексе набрать "задача комивояжера" и прочитать? Мне выдало порядка 225 серверов. Часть ссылок см. в Приложении. Можно еще поискать по фразам "теория графов", "дискретная математика" и т.п.
Вот еще на форуме вычитал (http://www.sound.lv/forum/viewtopic.php?t=3576&sid=166c58146a0f340dbbce88945ffcb8e3):
"Приведённая задача - классическая проблема в теории графов - задача комивояжера: кратчайший гамильтонов цикл в графе:
в общем случае рационального решения неимеет(ненайдено пока), решение перебором p! = 30! = 265252859812191058636308480000000 перестановок... поэтому перебор для этой задачи применяют при очень малом кол-ве вершин. Имеется ряд решений с упрощениями - таких алгоритмов хватает и лучше поискать по ключевым словам. Собственно алгоритмы изобретать незачем, конечно если не хочешь на эту тему диссертацию написать, все "велосипеды" собраны в "Искусство программирования" Дональда Кнута(если найдешь полное последнее издание, там примеры на Java - чиркни, мне тоже интересно).
Ещё есть "Дискретная математика для программистов" Ф.А. Новиков - не идеал, но с примерами, сейчас теорию я из неё процитировал."

Приложение:

Ответ отправлен: 26.02.2003, 12:33
Отправитель: Ayl


Отвечает DiGiT[old]

Здравствуйте, baldr!
Если я тебя правильно понял. Это задача нахождения кратчайшего пути между двумя точками. Для данного типа задач не существует алгоритма решения, если он не перебор. Однако этот перебор можно сделать более разумным.
Млин год назад изучал метод(по исследованию операций, соответсвенно в этих книгах есть ответ ), но плоховато помню. Смысл там такой: от конечной точки измеряешь все пути до соседних точек и выбираешь минимальный. Затем следующей итерацией, до следующих и т.д.

Приложение:

Ответ отправлен: 26.02.2003, 06:46
Отправитель: DiGiT[old]


 Вопрос № 2656

Будьте добры ответье пожалуйста из-за чего во время отладки
СофтАйсом каких-либо прог, температура процессора значительно увеличивается, так же как например при выполнении таких производительных задач как рендеринг 3-Д графики, декодирование видео. Не ужто SoftIce так сильно грузит "камень".



Вопрос отправлен: 26.02.2003, 02:17
Отправитель: Speedy Gonsalez

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

Отвечает Broken Sword

Здравствуйте, Speedy Gonsalez!
я бы сказал - только при установке условных брейкпоинтов, которые часто вызывают ложные срабатывания. Например, если какая-то переменная (служебная), к которой ядро обращатеся неск. десятков раз в секунду и ты на нее поставишь bmpb if... то могу поспорить что комп вообще повиснет...


Ответ отправлен: 26.02.2003, 07:45
Отправитель: Broken Sword


 Вопрос № 2657

Привет всем. Я работаю под 98 Виндой и вот всплыла такая себе проблема. Возможно ли выделить одним запросом кусок паияти, больший 2Гб и даже больший 4Гб, и если это возможно, то как это сделать. И еще, процессор то у меня 32-х битный и физически не возможно адресовать больше 4Гб. Ситуация как под досом. Что делать? Спасибо.



Вопрос отправлен: 26.02.2003, 04:25
Отправитель: s17

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

Отвечает Топор

Здравствуйте, s17!
Невозможно. Да и зачем тебе памяти заведомо больше собственного ОЗУ, даже вместе со свопом, непонятно.


Ответ отправлен: 26.02.2003, 11:45
Отправитель: Топор


Отвечает masquer

Добрый день, s17!
Больше 4-х не выделишь, меньше - можно. А что, нужно больше 4 Гиг? Ну, подожди чуть-чуть, скоро винда 64-битная выйдет, купишь 64-битный проц и будет тебе счастье...

Ответ отправлен: 26.02.2003, 10:47
Отправитель: masquer


Отвечает Eugene

Добрый день, s17!
А обойтись последовательным чтением по страницам тебя не устроит?

Ответ отправлен: 26.02.2003, 09:26
Отправитель: Eugene


Отвечает Joy

Здравствуйте, s17!
Интересно, зачем тебе такой объем? Так вот, если у тя камень Пень второй или выше, то адресовать он может 64 Гб (написано, помоему, у Юрова, или у Зубкова, если надо могу уточнить). А 4 Гб могли адресовать и 386 камни.

Ответ отправлен: 26.02.2003, 13:00
Отправитель: Joy


Отвечает Bob Johnson

Доброе время суток, s17!
Предполагаю, что нет. Больше 4-х нет - это точно, т.к. windows 98 ничего (кроме размера файла в теории) не знает о 64-битах. Больше 2-х тоже вряд ли.
> Ситуация как под досом
Неплохо... Это куда ж тебе надо 4 Гб памяти...


Ответ отправлен: 26.02.2003, 20:27
Отправитель: Bob Johnson


 Вопрос № 2658

Уважаемые Товарищи Эксперты!
Дело в том, что Я написал кое-какую защиту для одной проги.
Защита основана на проверки crc32-кода секций ресурсов и кода
во время исполнения программы. Сделано так: берётся exe-шник,
считается значение crc32, прошивается куда надо в прогу.
Во время исполнения в некий момент времени прога тоже вычисляет
значение этого crc32, основываясь на модуле, загруженном в память.
Потом эти значения сравниваются и т.д. Вопрос такой. Секция кода,
например, расположенная в exe-шнике и эта же секция, отображённая
загрузчиком в память, - они одинаковы или нет. Я долгое время думал,
что да. Но однажды Я задумался (вчера), как происходит обращение
к данным, если программу загрузчик отобразил не туда, куда указывает
поле ImageBase в заголовке. Ведь все обращения к данным заточены
под этот заголовочный ImageBase. Нашёл доки, что-то про поправки
написано немного... Я сперва испугался: ведь если загрузчик вздумает
модифицировать секцию кода, то её crc32 изменится, и моя защита
принесёт лишь головную боль. Кинулся, настроил линкер в VC так, чтобы
он компоновал файл проги с ImageBase'ом, равным 0x10000.
А секция .reloc не генерится! Так... под W2k всё работает.
В под 98-ми нет... Ну ясно, .reloc'а-то нет. Не понимаю, как и что
делает загрузчик, когда отображает прогу (или dll-льку) не туда, куда
написано в заголовке файла. Объясните, пожалуйста. Заранее спасибо.
P.S. Насколько безопасно собирать exe-файлы без секции .reloc?
VC7 собирает именно так. Вероятно, винда уж exe-шники всегда может
отобразить по адресу 0x400000...



Вопрос отправлен: 26.02.2003, 06:12
Отправитель: UE

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

Отвечает masquer

Добрый день, UE!
Кое-какую? Вот так и будет работать. Во-первых crc чего ты считаешь - непонятно, дальше секция на диске не обязательно равна секции в памяти. По поводу релоков - нахрена они тебе вообще нужны? Ты как в памяти собрался рассчитывать crc секции, что тебе релоки понадобились, а? :)))))
В качестве совета - почитай Рихтера, а не лезь в дебри...

Ответ отправлен: 26.02.2003, 10:54
Отправитель: masquer


 Вопрос № 2661

Доброго времени суток, многоуважаемые господа эксперты.
Никто из вас, случаем, не занимался чтением из файла Excel??? Если есть такие, просьба откликнуться, желательно кинув в меня исходником.
Интересуют собственные(!) работы.



Вопрос отправлен: 27.02.2003, 12:11
Отправитель: Gibbel (Gibbel@Rambler.Ru)

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

Отвечает DiGiT[old]

Доброе время суток, Gibbel!
Гы OLE excel или OLE DB.

Ответ отправлен: 28.02.2003, 05:02
Отправитель: DiGiT[old]


Отвечает masquer

Добрый день, Gibbel!
Используя Dde все делается элементарно, в примере запись в ячейку происходит. Копирайт не мой, но все работает как часы. Подробности, как всегда, в МСДН.

Ответ отправлен: 27.02.2003, 13:08
Отправитель: masquer


Отвечает Joy

Доброе время суток, Gibbel!
Я работал с xls файлами, но делал это через ....
На Делфи создавал ОЛЕ объект Excel и открывал уже им файлы и читал с них информацию. Все эти операции настолько просты, что ты их описание найдешь в любом ФАКе (на память не помню, давно это было). На мой взляд это самый простой способ работы с файлами xls.

Ответ отправлен: 01.03.2003, 12:16
Отправитель: Joy


Отвечает Bob Johnson

Приветствую Вас, Gibbel!
На асме ты имеешь ввиду? Это достаточно странно...
Чтобы прочесть файл xl надо использовать OLE или ADO (ODBC). И первой, и второе их асма сделать достаточно трудоемко. Тут лучше использовать delphi - там все это значительно проще.


Ответ отправлен: 28.02.2003, 15:57
Отправитель: Bob Johnson


 Вопрос № 2662

Доброго времени суток Эксперты.
У меня небольшой вопросик.
Насколько мне известно, хендл какого нибудь накопителя можно получить используя API
hDevice = CreateFile (param....) Но беда в том что это похоже работает только под NT/2K/XP, а под 9x есть что либо подобное?
Зарание спасибо.



Вопрос отправлен: 27.02.2003, 20:50
Отправитель: Евгений

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

Отвечает akul

Доброе время суток, Евгений!
В MSDN четко написано
Windows 95/98/Me: This technique does not work for opening a logical drive. Specifying a string in this form causes CreateFile to return an error.
то есть нету.
но в общем то никто не запрещает ломиться посекторно к дискам из дос-машины через int21 или из любого режима через порты :)
в принципе можно еще попробовать поработать с драйвером нужного устойства через CreateFile/DeviceIOControl но тут без Win98 DDK не обойдешься.


Ответ отправлен: 27.02.2003, 21:09
Отправитель: akul


Отвечает Bob Johnson

Здравствуйте, Евгений!
Нет. Но там можно легко попасть в нулевое кольцо и выполнить все, что тебе нужно через драйверы (или порты).


Ответ отправлен: 28.02.2003, 15:57
Отправитель: Bob Johnson



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

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (31)
C / C++ (26)
Perl (6)
Delphi (14)
Pascal (20)
Basic / VBA (10)
Java / JavaScript (9)
PHP (6)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (23)
"Железо" (28)
Поиск информации (14)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (12)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (4)
КоАП (3)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное