Замена одного символа на два - 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
Объяснение кода листинга программы
- Указатель на область памяти, содержащую символы, которые нужно заменить, хранится в переменной
std
. - Команда
rep movsb
используется для повторяющегося копирования байтов из одной области памяти в другую.rep
указывает, что операция должна быть повторена несколько раз.movsb
копирует один байт из исходной области памяти в указанное место.
- В результате выполнения этой команды, символы, хранящиеся в области памяти, на которую указывает
std
, будут заменены на другие символы или копии самих себя. Точное значение этих символов зависит от того, как именно сконфигурированы перед использованием команды.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д