Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2009, 11:00   #1
AQSW
Новичок
Джуниор
 
Регистрация: 07.07.2009
Сообщений: 2
Восклицание Сравнение строки обратно с STD - бага

Нужно сравнить строки в обратной последовательности, не работает код. Не знаю где копать

--------
Код:
Function CompareStr_Back(const pStrA,pStrB;Length:integer):boolean;
asm
 PUSH ESI // сохраним регистры
 PUSH EDI
   MOV  ESI,EAX  
   MOV  EDI,EDX
   ADD  EDI,Length  // поставим смещение на конец строки
   ADD  ESI,Length
   MOV ECX,Length // СЧЕТЧИК
   SHR  ECX,2  // что бы сравнивать 4 байтами
  XOR EAX,EAX
    STD // флаг DF=1
   REPE CMPSD
    CLD // обратно флаг 
   JNE  @EXIT
   MOV EAX,1 
@EXIT
   POP EDI
   POP ESI
end;
--------
PS: Знаю, что нужно еще остаток проверять, этот код применый.
Если длинные строки, то не правильное сравнение, хоть тресни
слева-направо нормально, а права на лево глюк.

Последний раз редактировалось rpy3uH; 07.07.2009 в 14:13.
AQSW вне форума Ответить с цитированием
Старый 07.07.2009, 11:41   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

во-первых: к edi и esi нужно прибавлять не Length, а Length-4 потому что если этого не сделать, то сравнение будет начинаться со слова следующего за строкой!
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 07.07.2009, 16:01   #3
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Может у вас параметры ф-ии заданы не совсем верно?
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 07.07.2009, 16:04   #4
AQSW
Новичок
Джуниор
 
Регистрация: 07.07.2009
Сообщений: 2
По умолчанию

alexcoder - Вы правы, спасибо!
AQSW вне форума Ответить с цитированием
Старый 07.07.2009, 21:40   #5
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

пожалуйста
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из строки в число и обратно AsmBeginer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 22.05.2010 18:49
Что же это, бага vs2005, или VC++ 6.0? evil_factory Visual C++ 1 24.07.2008 22:30
сравнение и пометка строки с записями kayman БД в Delphi 2 24.10.2007 00:06
как перевести из integer в real(и обратно), и из real в string(и обратно) Ga-sergey Общие вопросы Delphi 2 08.06.2007 21:13