Замена одного символа на два - Assembler

Узнай цену своей работы

Формулировка задачи:

Нужно заменить в строке все символы # на &&. Нужно применять цепочечные команды. После первой замены исходная строка перестает копироваться в результирующую. При исходной строке 123#12345 в результат копируется только 123&&.
 data segment para public "data"
 
source db 127 dup('$')
marker  db 127 dup('#')
result db 256 dup('$')
tmp_cx db ?
 
alt_si db 0
first db 1
iter db 0

data ends
 
code segment para public "code"
 
start:
assume ds:data,cs:code,es:data
mov ax,data
mov ds,ax
mov es,ax
cld
 
prog:
 
mov si,0
mov cx,127
inp:
mov ah, 01h
int 21h
cmp al,0dh
je inp_end
mov source[si], al
inc si
 
loop inp
 
inp_end:
xor bx,bx
mov bx,0
lea si,source
lea di,marker
 
xor cx,cx

mov cx,127
n1:
repne cmps source,marker
cmp cx,0
je nxt
 
mov tmp_cx,cl
xor cx,cx
mov cl,126
 
sub cl,tmp_cx
lp:
mov al,source[bx]
add bl,iter
mov result[bx],al
sub bl,iter
inc bx
loop lp

mov result[bx],'&'
inc bx
mov result[bx],'&'
inc iter
mov cl,tmp_cx
inc si
inc di
loop n1
nxt:
 
mov si,0
mov cx,255
outp:
cmp result[si],'$'
;je stp
mov ah,02h
mov dl, result[si]
 
int 21h
inc si
loop outp
stp:
mov AX,4c00h
int 21h
 
code ends
 
end start

Решение задачи: «Замена одного символа на два»

textual
Листинг программы
    std
rep movsb

Объяснение кода листинга программы

  1. Указатель на область памяти, содержащую символы, которые нужно заменить, хранится в переменной std.
  2. Команда rep movsb используется для повторяющегося копирования байтов из одной области памяти в другую.
    • rep указывает, что операция должна быть повторена несколько раз.
    • movsb копирует один байт из исходной области памяти в указанное место.
  3. В результате выполнения этой команды, символы, хранящиеся в области памяти, на которую указывает std, будут заменены на другие символы или копии самих себя. Точное значение этих символов зависит от того, как именно сконфигурированы перед использованием команды.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5