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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 08:09   #1
DroNikfull
Новичок
Джуниор
 
Регистрация: 18.05.2011
Сообщений: 1
По умолчанию Сравнение строк_Turbo_Debugger

Здравствуйте!
Не могу понять в чем ошибка в программе написана на Assembler для Turbo_Dedugger..Надо Сравнить строки и выявить не совпадающие символы.
Вот код программы:

Код:
MODEL 	small
		STACK	256
		.data
		cod1	db	3ah
		match	db      0ah, 0dh, 'Strings are equal ','$'
		failed	db      0ah, 0dh, 'Strings are not equal:mistakes -  ','$'
		string1	db      "RGZ_VARIANT_№5_A", 0ah, 0dh, '$'	;Сравниваемая строка_1
		string2	db      "RGZ_VARIANT_№1_B", '$'                 ;Сравниваемая строка_2
		dest	db  64 dup (?) 	;строка-приемник несовпавших символов и их адресов 

		.code	                
	assume   ds:@data, es:@data	;привязка DS и ES к сегменту данных

main :
        ;загрузка сегментных регистров
		mov	ax, @data	
		mov	ds, ax		
		mov 	es, ax		
	;вывод на экран исходных сравниваемых строк
		mov	ah, 09h
		lea	dx, string1
		int	21h
		lea	dx, string2
		int	21h
	;сброс флага DF – сравнение строк 
        ;в направлении возрастания адресов, т.е. справа налево
		cld
		lea	si, string1		;загрузка в si смещения адреса строки string1
		lea	di, string2		;загрузка в di смещения адреса строки string2
		mov	cx, 16		        ;длина строки для префикса repe
	;сравнение строк,пока сравниваемые элементы строк равны, и выход при
	;обнаружении несовпавшего элемента
		mov	bp, 0000	;переменная для подсчета числа несовпадающих символов
		lea	bx, dest	;занесение в 'bx'начального адреса массива результатов
cycl :
		repe	cmps   string1, string2
		jcxz	equal	
	;cx = 0, то есть,если все элементы строк совпадают то переход по equal
		jne	not_match		;если обнаружены неравные элементы строк,
					        ;то переход по not_match
equal :		cmp	bp,0
		jnz	nos	
	;вывод на экран сообщения о совпадении строк			
		mov	ah, 09h		;вывод сообщения о совпадении строк
		lea	dx, match
		int	21h
nos:		jmp	exit		;выход
not_match: 			
		cmp	bp,0
		jnz	nrep
	;вывод сообщения о несовпадении строк
		mov	ah, 09h
		lea	dx,failed
		int	21h
nrep:
	;теперь, чтобы обработать несовпавшие элементы в строке,
	;необходимо уменьшить значения регистров  si  и  di
		dec	si
		dec	di
	;занести в al несовпавший символ из первой строки по указателю si
		mov	al,[si]
	;занести в ah несовпавший символ из второй строки по указателю di
		mov	ah,[di]		
	;занесение в dest выводимой на экран информации
		add	bx,bp
		mov    	dl,cod1	
		mov	byte ptr[bx],al		;добавление в dest несовпавшего символа первой строки
		mov	[bx+1],dl	
		mov	[bx+2],si	        ;занесение его адреса
		mov     word ptr[bx+4],0000h
		mov	byte ptr[bx+6],ah	;добавление в dest несовпавшего символа второй строки
		mov	[bx+7],dl
		mov	[bx+8],di	        ;занесение его адреса
		mov	word ptr[bx+10],0000h
	;переход к адресам следующих несовпадающих символов
		add	bp,12		 
	;после этого продолжить  поиск в строке:
		inc	si
		inc	di
		jmp	cycl
exit :			
	;выдача на экран несовпадающих символов с их адресами и выход
		mov	ah, 40h
		mov	bx, 01h
		mov	cx,64
		lea	dx,dest
		int	21h	
		
		mov	ax, 4c00h
		int	21h
end			main			;конец программы
Помогите плиз уже после завтра сдавать работу на проверку



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.05.2011 в 10:31.
DroNikfull вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение slavsmo Microsoft Office Excel 2 05.04.2010 17:51
Сравнение текста SoFuWa Microsoft Office Excel 9 19.07.2009 00:38
Сравнение формул Acharia Microsoft Office Excel 13 15.07.2009 17:33
сравнение строк -? Evgenii Общие вопросы Delphi 10 15.07.2009 15:28
Поиск и сравнение vivarius Microsoft Office Excel 9 08.05.2009 12:14