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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2010, 20:50   #1
Nafanja20
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 12
По умолчанию Как найти ошибку(строки)

Здравствуйте! Помогите пожалуйста найти ошибки в програме
Надо скопировать строку С к строке V, вставляя после каждой точки два пропуска.Вот что я написала

Код:
INCLUDE LIBMACRO.INC
PROGRAM PR_10_1
.DATA  ;segment inicializovanyx zminnyx 
с	db	"rjadok.dla.testа",'$'
v		db	16 dup (" ")
START   ;tochka startu programy
	assume	ds:@data, es:@data
	mov	ax,@data
	mov	ds, ax
	mov	es, ax
	cld		 		;DF=0
	lea	si,c	;zmischenna v si
	lea	di, v		;zmischenna v di
	mov	cx,20
rep	movs	v, c
;	lea	dx, v
;	mov	ah, 09h
;	int	21h
Wlinez	 v
assume ds:@data, es: @data
	mov	ax, @data
	mov	ds, ax
	push	ds		;запис в стек
	pop	es		;чтениє из стека
	cld			
	mov	cx, 10		
	lea	 di, v		
	mov al, ’.’		
repne	scas	v
	jne	fin	
	dec	di		
	mov	byte ptr v[di], ’ ’	;замена ’.’ на ’ ’
fin:

exit:
	mov	ax, 4c00h
	int	21h
RETURN   ; tochka vгxodu с programy
END PR_10_1

Последний раз редактировалось Stilet; 20.05.2010 в 23:12.
Nafanja20 вне форума Ответить с цитированием
Старый 27.04.2010, 08:19   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Код:
v db 16 dup (" ")
...
mov cx,20
rep movs v, c
определитель для начала с количеством символов в строке
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 27.04.2010, 10:10   #3
Nafanja20
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 12
По умолчанию

Программа выводит только строку v, без замены на пробел
может што не так с выводом?
Nafanja20 вне форума Ответить с цитированием
Старый 28.04.2010, 08:00   #4
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

конечно не так он закомментирован и до замены расположен
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 28.04.2010, 13:48   #5
Nafanja20
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 12
По умолчанию

Спасибо за исправления, но програма выдает ошибку в исходном файле

Код:
INCLUDE LIBMACRO.INC
PROGRAM PR_10_1
.DATA ;segment inicializovanyx zminnyx 
с db "stroka.dla.testа"
v db 16 dup (" ")
START ;tochka startu programy
assume ds:@data, es:@data
mov ax,@data
mov ds, ax
mov es, ax
cld ;DF=0
lea si,c ;zmischenna v si
lea di, v ;zmischenna v di
mov cx,16
rep movs v, c
    
mov ax, @data
mov ds, ax
push ds ;запис в стек
pop es ;чтениє из стека
cld 
mov cx, 16
lea di, v 
mov al, ’.’ 
repne scas v
jne fin 
dec di 
mov byte ptr v[di], ’ ’ ;замена ’.’ на ’ ’
      lea dx, v
      mov ah, 09h
      int 21h
Wlinez v
fin:
exit:
mov ax, 4c00h
int 21h
RETURN ; tochka vгxodu с programy
END PR_10_1

Последний раз редактировалось Stilet; 20.05.2010 в 23:13.
Nafanja20 вне форума Ответить с цитированием
Старый 28.04.2010, 15:40   #6
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

а конец строки при выводе дописать '$'
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 28.04.2010, 20:00   #7
Nafanja20
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 12
По умолчанию

Вывод все ровно не тот, замена на пробел не выводится(
Nafanja20 вне форума Ответить с цитированием
Старый 29.04.2010, 08:43   #8
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

заменить строку
Код:
mov byte ptr v[di], ’ ’ ;замена ’.’ на ’ ’
на
Код:
mov byte ptr [di], ' ' ;замена ’.’ на ’ ’
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 29.04.2010, 17:21   #9
Nafanja20
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 12
По умолчанию

Спасибо большое!
Кажется я написала не эту команду........repne ето же для первого вхождения, и замена выполняется лишь с первым вхождением «.»
теперь нужно все переделывать???

Уже переделала..)
Уважаемые программисты, скажите как сделать, чтобы замена происходила на три символа а не на два : mov word ptr [di] ’ .’ ;замена ’ .’ на ’ ’, а нужно на два пробела и точку

Код:
INCLUDE LIBMACRO.INC
PROGRAM PR_10_1
.DATA 
с db "stroka.dla.testа"
v db 16 dup (" ")
START 
assume ds:@data, es:@data
mov ax,@data
mov ds, ax
mov es, ax
cld ;DF=0
lea si,c 
lea di, v 
mov cx,16
rep movs v, c

mov ax, @data
mov ds, ax
push ds ;запис в стек
pop es ;чтениє из стека
cld 
mov cx, 16
lea di, v 
mov al, ’.’ 

m1:
repne scas v
jne fin 
dec di 
mov word ptr [di], ’ .’ ;замена ’ .’ на ’ ’
inc di
loop m1
fin:

Wlinez v
exit:
mov ax, 4c00h
int 21h
RETURN 
END PR_10_1

Последний раз редактировалось Stilet; 20.05.2010 в 23:13.
Nafanja20 вне форума Ответить с цитированием
Старый 20.05.2010, 23:06   #10
Nafanja20
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 12
По умолчанию

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

Последний раз редактировалось Nafanja20; 20.05.2010 в 23:09.
Nafanja20 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в Паскале, найти ошибку bingooo Помощь студентам 0 07.04.2010 19:24
Программа про строки в стиле C; помогите найти ошибку... vitaliy1392 Помощь студентам 4 29.12.2009 08:00
Корявое копирование строки. Помогите найти ошибку. GonZaleZ Общие вопросы C/C++ 14 02.12.2009 21:58
Строки. Помогите найти ошибку. 5nizza77 Помощь студентам 1 16.10.2009 16:10