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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 23:41   #1
<Yuliya>
 
Регистрация: 20.01.2010
Сообщений: 6
По умолчанию Работа со строками

Вот код программы, которая считает пробелы в строке, нужно переделать ее для обработки цепочек символов размерностью слово

Код:
MODEL SMALL
STACK 256
.DATA
	str1 db 'Vvedite stroku: $'
	str2 db 'Kolichestvo slov v stroke: $'	
.data?	
	string	db	128 dup (?)

.CODE
Start:
	mov ax,@data
	mov ds,ax
	
	mov bl,1
	

	lea dx,str1
	mov ah,09h
	int 21h

	lea	dx, string
	mov ah,0ch
	mov	aL, 0ah
	int	21h		

	
	lea	si, string
	mov si,OFFSET string	
	cld		

m:
	mov ah,' '	
	lodsb		
	cmp al,0dh
	je exit
	cmp al,ah
	jne  m

 	inc bl
	jmp m


Exit:
	
	mov  dl,10
	mov ah,02h        
      	int  21h
      	mov  dl,13        
     	mov ah,02h
	int  21h

	lea dx,str2
	mov ah,09h
	int 21h


	mov dl,bl
	add dl,'0'
	mov ah,02h
        int 21h
        


	mov ah,04Ch 	
	mov al,0h 	
	int 21h 	


End Start
<Yuliya> вне форума Ответить с цитированием
Старый 21.01.2010, 00:00   #2
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Т.е. один символ == 2 байтам.
А какие значения тогда может принимать это слово?
Входная строка ведь всё равно должна вводиться с клавиатуры.
А как вы с клавиатуры введёте в программу двухбайтное слово?

Замечания по коду:
1.
Код:
lea	si, string
mov si,OFFSET string
Можно одно из двух оставить
2.

Код:
m:
	mov ah,' '
mov ah, ' ' лучше перед меткой m: написать.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 21.01.2010, 14:16   #3
<Yuliya>
 
Регистрация: 20.01.2010
Сообщений: 6
По умолчанию

Тогда я вообще ничего не понимаю!
Задание: написать программу обработки цепочек символов размерностью слово!
<Yuliya> вне форума Ответить с цитированием
Старый 21.01.2010, 14:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
обработки
Так а что обрабатывать? Что со словами потом делать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.01.2010, 17:16   #5
<Yuliya>
 
Регистрация: 20.01.2010
Сообщений: 6
По умолчанию

Нужно найти количество слов в строке, я ограничилась подсчетом пробелов
<Yuliya> вне форума Ответить с цитированием
Старый 21.01.2010, 18:39   #6
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Вобщем, задание чётко не поставлено.
Поэтому вот вам мои предложения.
Так как нужны двухбайтные символы - то можно использовать Юникод.
Так как считывать с клавиатуры символы ASCII, а затем перекодировать их в Юникод не хочется, да и это не основная задача программы, то предлагаю считывать строку не с клавиатуры, а из файла. А файл сделать сразу в кодировке Юникод (хоть прям в блокноте).
Ну а дальше всё как и в приведённом выше примере:

Код:
m:
	lodsw
	cmp ax,000dh
	je exit
	cmp ax,0020h
	jne  m
 	inc bl
	jmp m
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 22.01.2010, 05:21   #7
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Цитата:
Сообщение от Yuliya
Нужно найти количество слов в строке, я ограничилась подсчетом пробелов
Yuliya
Слова в строке ограничиваются не только пробелами, но и знаками препинания, и символами табуляции, и символами перевода на другую строку. Там где может стоять одна запятая (знак препинания, табуляция), может стоять и несколько запятых (знаков препинания, табуляций) подряд. Еще один вопрос: что считается словом? Осмысленное слово на русском (английском, французском) языке или набор символов среди которых нет пробелов, знаков препинания, символов табуляции, символов перевода на другую строку? Тебе или твоему преподавателю нужно очень четко сформулировать задачу и решить, что же вы пишете лабораторную или курсовую работу
Mikl___ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками (Си) Geremy Помощь студентам 5 04.12.2009 21:46
работа со строками lg12 Помощь студентам 7 28.08.2009 17:47
Работа со строками ponchikpk Помощь студентам 13 17.03.2009 21:08
С, работа со строками Надюха Помощь студентам 2 29.05.2008 13:07