Answer the question
In order to leave comments, you need to log in
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'
.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
.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
Answer the question
In order to leave comments, you need to log in
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 questionAsk a Question
731 491 924 answers to any question