Заменить в строке пару символов на один - Assembler

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

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

Доброго времени суток! Помогите, пожалуйста, с программой

Задание:

Составить программу, которая водит произвольный текст(строку). Вывести этот текст, заменив все пары

ph

на букву

f

.

Решение задачи: «Заменить в строке пару символов на один»

textual
Листинг программы
  1. .model small
  2.  
  3. .data
  4. buf db 50,0,50 dup(?)
  5. msg1 db 'input: $'
  6. msg2 db 'output: $'
  7.  
  8. .stack 100h
  9.  
  10. .code
  11. start:
  12. mov ax,@data
  13. mov ds,ax
  14. mov es,ax
  15.  
  16. mov ah,09h
  17. lea dx,msg1
  18. int 21h
  19.  
  20. mov ah,0Ah
  21. lea dx,buf
  22. int 21h
  23.  
  24. lea di,buf+2
  25. xor bh,bh
  26. mov bl,byte ptr [buf+1]
  27. mov byte ptr [bx+di],'$'
  28.  
  29. mov al,'p'
  30. lea di,buf+2
  31. xor ch,ch
  32. mov cl,byte ptr [buf+1]
  33. next:
  34. repne scasb
  35.  
  36. or cx,cx
  37. jz solve
  38.  
  39. cmp byte ptr [di],'h'
  40. jnz next
  41.  
  42. mov byte ptr [di-1],'f'
  43.  
  44. cmp cx,1
  45. jnz skip
  46.  
  47. mov byte ptr [di],'$'
  48.  
  49. jmp solve
  50.  
  51. skip:
  52. dec cx
  53.  
  54. push ax
  55. push cx
  56. push di
  57.  
  58. shift:
  59. mov al,byte ptr [di+1]
  60. mov byte ptr [di],al
  61.  
  62. inc di
  63. loop shift
  64.  
  65. mov byte ptr [di],'$'
  66.  
  67. pop di
  68. pop cx
  69. pop ax
  70.  
  71. jmp next
  72.  
  73. solve:
  74. mov ah,02h
  75. mov dl,0Ah
  76. int 21h
  77.  
  78. mov ah,02h
  79. mov dl,0Dh
  80. int 21h
  81.  
  82. mov ah,09h
  83. lea dx,msg2
  84. int 21h
  85.  
  86. mov ah,09h
  87. lea dx,buf+2
  88. int 21h
  89.  
  90. mov ah,4Ch
  91. mov al,00h
  92. int 21h
  93. end start

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

В этом коде на языке Assembler выполняется следующая задача:

  1. Заменить в строке пару символов на один. В начале кода строка 50,0,50 инициализируется в буфере buf. Затем пользователь приглашается ввести строку для замены в буфер buf+2. После этого выполняется цикл, который ищет пару символов 'h'. Если пара найдена, то выполняется следующая последовательность действий:
  2. Заменяется пара символов 'h' на 'f'.
  3. Выполняется проверка, было ли найдено более одного совпадения (сравнивается счетчик cx с 1).
  4. Если совпадений было более одного, то выполняется сдвиг строки в буфере на одну позицию вправо.
  5. Если совпадений было не более одного, то выполняется замена символа после последнего найденного 'h' на '$'. Если пара символов 'h' не найдена, то выполняется замена последнего символа в строке на '$'. Затем выводится сообщение об успешном выполнении задачи.

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


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

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

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы