WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  ASM
  Сравнить две текстовые строки

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Сравнить две текстовые строки
Adramelek опубликован 31-10-2001 06:02 MSK   Click Here to See the Profile for Adramelek   Click Here to Email Adramelek  
В Win32ASM я не очень... Как сравнить две текстовые строки? Желательно с примерчиком.
devilray опубликован 31-10-2001 10:22 MSK     Click Here to See the Profile for devilray  Click Here to Email devilray     
Это из 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;
}

devilray опубликован 31-10-2001 10:29 MSK     Click Here to See the Profile for devilray  Click Here to Email devilray     
Пардон, забыл сказать, строковые функции лежат в kernel32.dll. То есть надо включить kernel32.inc А на счет примера, там все просто
Adramelek опубликован 01-11-2001 01:42 MSK     Click Here to See the Profile for Adramelek  Click Here to Email Adramelek     
А всё-таки хотелось бы примерчик. Тем более, что говорил я про ASM, а ответ, если не ошибся, на Cи, который для меня -- китайская грамота.
devilray опубликован 06-11-2001 10:01 MSK     Click Here to See the Profile for devilray  Click Here to Email devilray     
.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

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.