Автор
|
Тема: Сравнить две текстовые строки
|
Adramelek |
опубликован 31-10-2001 06:02 MSK
В Win32ASM я не очень... Как сравнить две текстовые строки? Желательно с примерчиком.
|
devilray
|
опубликован 31-10-2001 10:22 MSK
Это из Win32APIint lstrcmp( LPCTSTR lpString1, // address of first string LPCTSTR lpString2 // address of second string ); Это из исходников LINUX extern inline int strcmp(const char * cs,const char * ct) { register int __res; __asm__ __volatile__( "cld\n" "1:\tlodsb\n\t" "scasb\n\t" "jne 2f\n\t" "testb %%al,%%al\n\t" "jne 1b\n\t" "xorl %%eax,%%eax\n\t" "jmp 3f\n" "2:\tsbbl %%eax,%%eax\n\t" "orb $1,%%eax\n" "3:" :"=a" (__res):"S" (cs),"D" (ct):"si","di"); return __res; } |
devilray
|
опубликован 31-10-2001 10:29 MSK
Пардон, забыл сказать, строковые функции лежат в kernel32.dll. То есть надо включить kernel32.inc А на счет примера, там все просто |
Adramelek
|
опубликован 01-11-2001 01:42 MSK
А всё-таки хотелось бы примерчик. Тем более, что говорил я про ASM, а ответ, если не ошибся, на Cи, который для меня -- китайская грамота. |
devilray
|
опубликован 06-11-2001 10:01 MSK
.386 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib.data MsgCaption db "Caption",0 MsgBoxText db "Caption",0 Eqv db "EQUILL !!!", 0 Neqv db "NOT EQUILL !!!", 0 .code start: invoke lstrcmp, addr MsgCaption, addr MsgBoxText .if eax == 0 invoke MessageBox, NULL, addr Eqv, addr MsgCaption, MB_OK .else invoke MessageBox, NULL, addr Neqv, addr MsgCaption, MB_OK .endif invoke ExitProcess,NULL end start |