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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2012, 19:10   #1
Faceta
Новичок
Джуниор
 
Регистрация: 31.05.2012
Сообщений: 3
По умолчанию Assembler почти решила, не идет дальше

Создайте программу на Assembler, которая вводит строку из набора прописных и строчных символов в буфер, переписывает его во второй буфер с изменениями: входной текст - латинский, первый символ каждого слова строчный, остальные прописные

Код:
dosseg
.MODEL SMALL
.STACK 100h
.DATA
MAX_LENGTH EQU 1000
StringToConvert DB MAX_LENGTH DUP (?)
ConvertString DB MAX_LENGTH DUP (?)
fp db 0
.CODE

begin:
 
	mov ax,@Data 
	mov ds,ax 

	mov ah,3fh 
	mov bx,0 
	mov cx, MAX_LENGTH 
	lea dx, StringToConvert 
	int 21h 

	cmp ax, 0 
	jz Done 
	sub ax,2
	mov cx, ax 
	push cx 
	lea si, StringToConvert
	lea di, ConvertString
	rep movsb
m1:	
	mov rez,'0' 
	mov al,[si]
	
                 
       вот сюда, чет не соображу как правильно сделать



	mov ah, 40h 
	mov bx,1 
	pop cx 
	lea dx, ConvertString 
	int 21h 
Done: 
	mov ah,4ch 
	int 21h 
END start

Последний раз редактировалось Faceta; 31.05.2012 в 19:16.
Faceta вне форума Ответить с цитированием
Старый 31.05.2012, 19:48   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

а зачем отдельно конвертировать? можно сразу же при передаче преобразовывать)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 31.05.2012, 19:53   #3
Faceta
Новичок
Джуниор
 
Регистрация: 31.05.2012
Сообщений: 3
По умолчанию

можно сразу, но вот как сделать конвертацию?
Faceta вне форума Ответить с цитированием
Старый 31.05.2012, 20:00   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

например, xlat...
вроде такого:
Код:
mov bx, offset Translate
lp:
lodsb
cmp al, " "
jne to_cyc
stosb
lodsb
xlat
dec cx
to_cyc:
stosb
loop lp
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 31.05.2012, 20:13   #5
Faceta
Новичок
Джуниор
 
Регистрация: 31.05.2012
Сообщений: 3
По умолчанию

учла всё что сказали, и как-то не поддается

Код:
dosseg
.MODEL SMALL
.STACK 100h
.DATA
MAX_LENGTH EQU 1000
StringToConvert DB MAX_LENGTH DUP (?)
ConvertString DB MAX_LENGTH DUP (?)
fp db 0
.CODE

begin:
 
	mov ax,@Data 
	mov ds,ax 

	mov ah,3fh 
	mov bx,0 
	mov cx, MAX_LENGTH 
	lea dx, StringToConvert 
	int 21h 

	cmp ax, 0 
	jz Done 
	sub ax,2
	mov cx, ax 
	push cx 
	lea si, StringToConvert
	lea di, ConvertString
	                 
	mov bx, offset ConvertString
lp:
	lodsb
	cmp al, " "
	jne to_cyc
	stosb
	lodsb
	xlat
	dec cx
to_cyc:
	stosb
	loop lp

        mov [di], al 
	inc si 
	inc di 
	dec cx 
	 

	mov ah, 40h 
	mov bx,1 
	pop cx 
	lea dx, ConvertString 
	int 21h 
Done: 
	mov ah,4ch 
	int 21h 
END begin
Faceta вне форума Ответить с цитированием
Старый 01.06.2012, 06:51   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
mov bx, offset ConvertString
здесь нужно загружать смещение на таблицу замены, а не исходную строку...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler: выучил язык, а что дальше? Max1548 Помощь студентам 1 27.12.2011 22:22
в чем причина? дальше не идет gabiboi Компьютерное железо 3 20.12.2011 00:12
Паскаль не видет ошибок, но не идет дальше ввода переменных( Koresh321 Паскаль, Turbo Pascal, PascalABC.NET 4 30.01.2011 09:35
(разветвляющиеся выч.проц.) решила задачу,но правильно ли? Эnnа Помощь студентам 3 24.06.2010 12:24
решила задачку на линейный вычислительный процесс,проверьте пожалуйста! Anuto4ka Помощь студентам 2 31.10.2009 20:09