Заменить в строке пару символов на один - 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' не найдена, то выполняется замена последнего символа в строке на '$'. Затем выводится сообщение об успешном выполнении задачи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д