|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 17, 2004 10:30:20 При выполнении проги buffer2 забивается сообщениями, которые я патаюсь зарезать. Пробую вот так: buffer1 db 48 dup(0) buffer2 db 48 dup(0) ... _clear_ proc _2:DWORD invoke lstrcpy, _2, offset buffer1 ret _clear_ endp ... invoke _clear_, offset buffer2 Дебаггер показывает что обнуляется только первый символ, либо адрес параметра передаётся не правильно. Я в ASMe не так давно, помогите разобраться. |
|
|
Дата: Янв 17, 2004 12:16:57 Так какой же это clear. Ты просто копируешь первый буфер во второй как строку. Т.к. первый буфер у тя, видимо, пуст, то lstrcpy и копирует всего один нулевой байт считая, что это пустая строка. Для обнуления используй RtlZeroMemory, offset buffer2, sizeof buffer2 |
|
|
Дата: Янв 17, 2004 13:33:06 Спасибо! Я предполагал что lstrcpy просто заменит инфу на пустую строку. |
|
|
Дата: Янв 17, 2004 17:48:44 Он и делает это. Пустая строка - это и есть "первый символ - нуль, а потом - хоть потоп". |
|
|
Дата: Янв 18, 2004 00:00:56 Этого-то я не знал. |
|
|
Дата: Янв 18, 2004 20:10:42 Правка Four-F А RtlZeroMemory не сильно погружается в недра системы? Т.е. не сильно ли это "тяжёлая" функция, вызов которой чреват потерей многих сотен тактов процессора? Может, имеет смысл обычная процедурка, вроде тех, что в MASM32/LIB? |
|
|
Дата: Янв 19, 2004 02:20:25 IceStudent Странное предположение :-) |
|
|
Дата: Янв 19, 2004 03:26:14 [ IceStudent: Т.е. не сильно ли это "тяжёлая" функция,... ] Может оно и так - смотреть лень. Но в любом случае, для начинающего в самый раз будет. |
|
|
Дата: Янв 19, 2004 03:54:32 IceStudent А RtlZeroMemory не сильно погружается в недра системы? Т.е. не сильно ли это "тяжёлая" функция, вызов которой чреват потерей многих сотен тактов процессора? Не пробовал смотреть kernel32.dll и/или ntdll.dll? Из ntdll.dll Exported fn(): RtlZeroMemory - Ord:02B2h :77FBC7F5 57 push edi :77FBC7F6 8B7C2408 mov edi, dword ptr [esp+08] :77FBC7FA 8B4C240C mov ecx, dword ptr [esp+0C] :77FBC7FE 33C0 xor eax, eax :77FBC800 FC cld :77FBC801 8BD1 mov edx, ecx :77FBC803 83E203 and edx, 00000003 :77FBC806 C1E902 shr ecx, 02 :77FBC809 F3 repz :77FBC80A AB stosd :77FBC80B 0BCA or ecx, edx :77FBC80D 7504 jne 77FBC813 :77FBC80F 5F pop edi :77FBC810 C20800 ret 0008 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:77FBC80D(C) | :77FBC813 F3 repz :77FBC814 AA stosb :77FBC815 5F pop edi :77FBC816 C20800 ret 0008 |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.115 |