Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.192.73.68] |
|
Сообщ.
#1
,
|
|
|
В Win32ASM я не очень... Как сравнить две текстовые строки? Желательно с примерчиком.
|
Сообщ.
#2
,
|
|
|
Это из Win32API
int 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; } |
Сообщ.
#3
,
|
|
|
Пардон, забыл сказать, строковые функции лежат в kernel32.dll. То есть надо включить kernel32.inc А на счет примера, там все просто
|
Сообщ.
#4
,
|
|
|
А всё-таки хотелось бы примерчик. Тем более, что говорил я про ASM, а ответ, если не ошибся, на Cи, который для меня -- китайская грамота.
|
Сообщ.
#5
,
|
|
|
.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 |