D
D
DartNyan2015-12-07 22:10:07
assembler
DartNyan, 2015-12-07 22:10:07

How to fix the code so that all characters are replaced (tasm/masm)?

Greetings.
We go through the commands for working with strings.
I can write with a cycle, but not with string processing commands.
Cycle change all 'A' to '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

It is also necessary with commands
I have a similar one (changes only the first character)
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

How can I change all 'A's in a string?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
J
jcmvbkbc, 2015-12-08
@DartNyan

Something like this should be in the second example:

...
  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
  ...

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question