IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Робота со строками, Нужна помощь
AlonZo
сообщение 16.10.2008 9:06
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Задача такая: дана строка из 30 символов. Нужно сжать строку, удалив пробелы, которые стоят подряд 2 или больше раз(в итоге оставить 1 пробел между символами). Вот что делал(masm32):
.686
.model flat
.data
.code
_str db 'ADC  DEFGH  IJKLM  NIKLMN   T'
_start:
mov edi,offset _str
mov ecx,100		;не уверен насчет счетчика, поставил произвольно
mov ax,2020h		 ;для поиска рядомстоящих двух пробелов
cld					;направление вверх
m1:
REPNE scasw		;находим нужные пробелы
jcxz _exit				;если нет, выход
mov esi,edi			 ;переносим строку после пробелов (?) 
dec edi					  
rep movsb		;для удаления пробела и сдвига строки (????) не работает
loop m1
_exit:
ret
end _start


Вобщем вопрос сколько занести в счетчик? Как мне сдвинуть строку вместо пробела? Что не так в том, что я написал?

Сообщение отредактировано: volvo - 3.11.2009 23:01
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 3:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"