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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2010, 19:33   #1
aza_kaz
Новичок
Джуниор
 
Регистрация: 01.01.2010
Сообщений: 2
По умолчанию сравнение двух строк

помогите пожалуйста с заданием
Даны две строки по длине не превышающие 255 символов. Определить идентичные фрагменты строк.
Основной модуль на Турбо-Паскале должен содержать диалоговый ввод необходимых данных, вызов функции или процедуры на ассемблере и вывод результатов;
второй модуль - функция или процедура на ассемблере, выполняющая заданную обработку и вызывающая для печати диагностических сообщений процедуру на Турбо-Паскале
в принципе с модулем на паскале и на ассемблере нет проблем. проблема именно в определении идентичных фрагментов. и записью их в другую переменную

Заранее спасибо
aza_kaz вне форума Ответить с цитированием
Старый 01.01.2010, 21:04   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Код:
...
str1 db 'blabla' ;1-я строка
str2 db 'blabla' ;2-я строка
...
cld
mov ESI,offset str1 
mov EDI, off set str2
mov ECX,6 
repe cmpsb 
je sovpadaut ;совпадают
Nesovpadaut:
 ;Продолжение, если строки не совпадают
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 01.01.2010 в 21:14.
MalCer вне форума Ответить с цитированием
Старый 01.01.2010, 22:33   #3
aza_kaz
Новичок
Джуниор
 
Регистрация: 01.01.2010
Сообщений: 2
По умолчанию

а вот как записать единтичные фрагменты строк в отдельную переменную, чтоб в дальнейшем вывести их на экран.
aza_kaz вне форума Ответить с цитированием
Старый 01.01.2010, 23:40   #4
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Тупо, но все же:
Код:
...
str1 dd "str1",0 
str2 dd "str1",0
res  dd ?
...
CLD
MOV ECX,4
LEA ESI,str1
LEA EDI,str2
REPE CMPSB
JNE NO_SAME
JMP _SAME
NO_SAME:
  invoke ExitProcess,0      
_SAME:
mov eax,str1
mov [res],eax
или пройдитесь циклом выбирая каждую букву отдельно и записывая ее в переменную, что правильнее:
Код:
_SAME:
MOV ECX,4
LEA ESI,str1 
LEA EDI,res 
L1:
    MOV AL,[ESI]
    MOV [EDI],AL
    INC EDI
    INC ESI
LOOP L1
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух прайсов qwerty1 Microsoft Office Excel 10 15.01.2015 18:32
Сравнение двух таблиц scaramangi Microsoft Office Excel 0 17.09.2009 17:15
сравнение двух фаилов al508 Microsoft Office Excel 4 24.06.2009 07:55
сравнение двух баз. Layk Microsoft Office Access 2 04.06.2009 23:37
Сравнение двух списков lelik759 Microsoft Office Excel 7 13.04.2008 22:19