Заменить в строке пару символов на один - Assembler
Формулировка задачи:
Доброго времени суток! Помогите, пожалуйста, с программой
Задание:
Составить программу, которая водит произвольный текст(строку). Вывести этот текст, заменив все парыph
на буквуf
.Решение задачи: «Заменить в строке пару символов на один»
textual
Листинг программы
- .model small
- .data
- buf db 50,0,50 dup(?)
- msg1 db 'input: $'
- msg2 db 'output: $'
- .stack 100h
- .code
- start:
- mov ax,@data
- mov ds,ax
- mov es,ax
- mov ah,09h
- lea dx,msg1
- int 21h
- mov ah,0Ah
- lea dx,buf
- int 21h
- lea di,buf+2
- xor bh,bh
- mov bl,byte ptr [buf+1]
- mov byte ptr [bx+di],'$'
- mov al,'p'
- lea di,buf+2
- xor ch,ch
- mov cl,byte ptr [buf+1]
- next:
- repne scasb
- or cx,cx
- jz solve
- cmp byte ptr [di],'h'
- jnz next
- mov byte ptr [di-1],'f'
- cmp cx,1
- jnz skip
- mov byte ptr [di],'$'
- jmp solve
- skip:
- dec cx
- push ax
- push cx
- push di
- shift:
- mov al,byte ptr [di+1]
- mov byte ptr [di],al
- inc di
- loop shift
- mov byte ptr [di],'$'
- pop di
- pop cx
- pop ax
- jmp next
- solve:
- mov ah,02h
- mov dl,0Ah
- int 21h
- mov ah,02h
- mov dl,0Dh
- int 21h
- mov ah,09h
- lea dx,msg2
- int 21h
- mov ah,09h
- lea dx,buf+2
- int 21h
- mov ah,4Ch
- mov al,00h
- int 21h
- end start
Объяснение кода листинга программы
В этом коде на языке Assembler выполняется следующая задача:
- Заменить в строке пару символов на один.
В начале кода строка
50,0,50
инициализируется в буфереbuf
. Затем пользователь приглашается ввести строку для замены в буферbuf+2
. После этого выполняется цикл, который ищет пару символов 'h'. Если пара найдена, то выполняется следующая последовательность действий: - Заменяется пара символов 'h' на 'f'.
- Выполняется проверка, было ли найдено более одного совпадения (сравнивается счетчик
cx
с 1). - Если совпадений было более одного, то выполняется сдвиг строки в буфере на одну позицию вправо.
- Если совпадений было не более одного, то выполняется замена символа после последнего найденного 'h' на '$'. Если пара символов 'h' не найдена, то выполняется замена последнего символа в строке на '$'. Затем выводится сообщение об успешном выполнении задачи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д