@DartNyan

Как исправить код так, чтобы заменялись все символы (tasm/masm)?

Приветствую.
Проходим команды работы со строками.
Циклом могу написать, а командами обработки строк - нет.

Циклом меняем все 'А' на 'a'
spoiler
.model small
.stack 100
.data
	s db 50 dup(?), '$'
	message db "Enter the string", 10, 13, '$'
.code
.startup
	mov ax,@data
	mov ds,ax

	mov ah, 09h
	lea dx, message		; вывод сообщения
	int 21h


	mov ah, 3fh
	lea dx, s			; ввод строки
	mov bx, 0	
	mov cx, ax			; в cx помещаем длину строки
	int 21h   

	mov si, 0

m2: cmp s[si], 'A'		; сравниваем элемент с 'A'
	jne m1				; если != переходим на m1
	mov s[si], 'a'		; если = заменяем символ на 'а'
m1: inc si				; переход на след элемент
	loop m2				; повторяем m2


	mov ah, 09h
	lea dx, s			; вывод строки результата
	int 21h
	   
	mov ah,4ch
	int 21h

end


Надо так же командами
У меня есть похожее (меняет только первый символ)
spoiler
.model small
.stack 100
.data
	s db 50 dup(?), '$'
	message db "Enter the string", 10, 13, '$'
	ast db "A"
	oct db "a"
.code
.startup
	mov ax, @data
	mov ds, ax
	mov es, ax

	mov ah, 09h
	lea dx, message			; вывод сообщения
	int 21h

	mov ah, 3fh
	lea dx, s				; ввод строки
	mov bx, 0	
	mov cx, ax				; в cx помещаем длину строки
	int 21h   

	lea di, s 				; s строка приёмник
	mov al, ast

	cld 					; читаем строку слева направо

	repne scasb  			; поиск совпадения

	cmp cx, 0				; если символ не найден переход на m1
	je m1

	mov al, oct
	dec di
	stosb  					; замена символа
	jmp m1


m1:	mov ah, 09h
	lea dx, s				; вывод строки результата
	int 21h
	   
	   
	mov ah,4ch
	int 21h

end

Как сделать так, чтобы менял все 'А' в строке?
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Что-то такое должно быть во втором примере:

...
  lea di, s 				; s строка приёмник

  cld 					; читаем строку слева направо
m0:
  mov al, ast
  repne scasb  				; поиск совпадения
  jne m1				; если символ не найден переход на m1

  mov al, oct
  dec di
  stosb  				; замена символа
  jmp m0

m1:	mov ah, 09h
  ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы