Заменить в строке встречающийся символ "d" на символ "s" - Assembler

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

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

Ввести строку символьных данных, задавая буфер равный 40 байт. Заменить в этой строке встречающийся символ "d" на символ "s", Выдать полученную строку символов в первую строку экрана, начиная с 10 позиции. Заранее благодарю.

Решение задачи: «Заменить в строке встречающийся символ "d" на символ "s"»

textual
Листинг программы
  1. ; fasm code........
  2. org  100h
  3.         push  start
  4.         db    0c3h
  5. mes0    db    13,10,'String..: $'
  6. buff    db    40 dup(0)
  7. tara    db    08 dup(0)
  8. outp    =     900h
  9.  
  10. start:  push  ds 0
  11.         pop   ds
  12.         mov   di,tara
  13.         mov   ax,word[ds:64]
  14.         stosw
  15.         mov   ax,word[ds:66]
  16.         stosw
  17.         mov   ax,word[ds:132]
  18.         stosw
  19.         mov   ax,word[ds:134]
  20.         stosw
  21.         pop   ds
  22.  
  23.         mov   ax,3
  24.         pushf
  25.         call  dword[tara]
  26.  
  27.         mov   ax,outp
  28.         mov   dx,mes0
  29.         pushf
  30.         call  dword[tara+4]
  31.         xor   ax,ax
  32.         imul  cx,0
  33.         mov   di,buff
  34.         inc   ah
  35. save:   pushf
  36.         call  dword[tara+4]
  37.         cmp   al,0dh
  38.         je    next
  39.         cmp   al,'d'
  40.         jne   fuck
  41.         mov   al,'s'
  42. fuck:   stosb
  43.         inc   cx
  44.         jmp   save
  45.  
  46. next:   push  0b800h
  47.         pop   es
  48.         mov   di,20
  49.         mov   si,buff
  50.         mov   ah,0eh
  51. @@1:    lodsb
  52.         stosw
  53.         loop  @@1
  54.         jmp   $$+3

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

В этом коде выполняется замена всех встречных символов d на символ s в строке, которая начинается с 13-го столбца (после $) и продолжается до конца экрана (до 20-го столбца). Вот список действий:

  1. Код начинается с размещения сегментного регистра на 100h.
  2. Строка String..: $ размещается в буфере с именем mes0.
  3. Буфер с именем buff инициализируется 40-ю нулями.
  4. Буфер с именем tara инициализируется 8-ю нулями.
  5. Сегментный регистр изменения на 900h для вывода на экран.
  6. Начинается цикл, который проходит через каждый символ в строке.
  7. Если текущий символ не равен d, он копируется в буфер buff.
  8. Если текущий символ равен d, он заменяется на s в буфере buff.
  9. После завершения цикла, буфер buff выводится на экран.
  10. Код завершается.

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


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

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

13   голосов , оценка 4.154 из 5

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

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

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