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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2013, 18:44   #1
Rolana
 
Аватар для Rolana
 
Регистрация: 29.11.2013
Сообщений: 9
Стрелка Обработка строковых переменных

Ооооочень нужна помощь. У нас Ассемблер изучается ознакомительно, а лабораторные сдавать надо.

Задание: Ввести строку текста. Проверить, является ли этот текст гиперссылкой в формате «http:\\www.abc.ua». Если да, то напечатать сообщение: «Это гиперссылка» в другом случае: «Это не гиперссылка».

Был дан пример работы со строковыми переменными:
Код:
.model	small
.stack	100h
.data
	string db 80 dup(?)
 	promt db 0Dh,0Ah,'Enter password: $'
 	all db 0Dh,0Ah,'That is all$'
 	ok db 0Dh,0Ah,'Working!!! $'
 	password db 'pass$'
 	pass_len dw 3
.code 
start:
	mov	ax,@data
	mov	ds,ax		;В АХ-адреса початку сегмента даних
@beg1:
 	mov 	ah,09h 	;Вивiд запиту на введення пароля
 	mov 	dx,offset promt ;Адреса запиту
 	inc 	dx
 	int 	21h
 				;Введемо пароль
 	mov 	bx,0 	 	;iнiцiалiзацiя iндексацiї введення
 	lea	si, string
@pass:
 	mov 	ah,08h 	;Функцiя введення символу в AL без ехо
 	int 	21h
 	cmp 	al,13 		;<Enter> ?
 	je 	@compare	;Так, на порiвняння
 	mov 	[si],al
 	mov	ah,02
 	mov 	dl,'*' 		;Запишемо на екран *
 	int 	21h
 	inc 	si
 	jmp 	@pass 	;Повторювати
				;Порiвняння введеного пароля з дiйсним (порiвняння рядкiв)
@compare:
 	push 	ds 		;Встановити ES на сегмент даних
 	pop 	es
 	lea 	si,string 	;DS:SI- початок string
 	inc 	si
 	lea 	di,password 	;ES:DI- початок password
 	inc 	di
 	cld 			;DF=0- перегляд вперед
 	mov 	cx,pass_len 	;Встановити лiчильник порiвняння
 	repe 	cmpsb 	;Порiвнювати, поки CX<>0 i ZF=1 (тобто повторювати
				;поки символи двох рядкiв спiвпадають, але не бiльш CX раз)
 	jne 	@err 		;Рядки не рiвнi
				;Виведення повiдомлення ОК, пiдтверджуючого правильнiсть пароля
 	mov 	ah,09h
 	mov 	dx,offset OK
 	inc 	dx
 	int 	21h
 	jmp 	@end1
@err:
 	jmp 	@beg1 	;Повторити введення пароля
@end1:
 	mov 	ah,09h
 	mov 	dx,offset All
 	inc 	dx
 	int 	21h
 	jmp 	@beg1
	MOV 	AH,4ch 	;DOS-функцiя завершення роботи програми
	INT 	21h 		;Виклик переривання DOS
start end
end
Я что-то там пыталась переделывать. Например, чтобы подсчитывало длину строки... на этом и заглохло всё((
Rolana вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перебор строковых переменных neprogrammist Паскаль, Turbo Pascal, PascalABC.NET 0 07.03.2013 14:57
Сравнение двух строковых переменных в C# ilshat09 Помощь студентам 7 27.02.2011 18:52
Абстракция. Обработка символьных и строковых переменных. articoli Помощь студентам 0 05.12.2010 22:35