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

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

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

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

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

textual
Листинг программы
; fasm code........
org  100h
        push  start
        db    0c3h
mes0    db    13,10,'String..: $'
buff    db    40 dup(0)
tara    db    08 dup(0)
outp    =     900h
 
start:  push  ds 0
        pop   ds
        mov   di,tara
        mov   ax,word[ds:64]
        stosw
        mov   ax,word[ds:66]
        stosw
        mov   ax,word[ds:132]
        stosw
        mov   ax,word[ds:134]
        stosw
        pop   ds
 
        mov   ax,3
        pushf
        call  dword[tara]
 
        mov   ax,outp
        mov   dx,mes0
        pushf
        call  dword[tara+4]
        xor   ax,ax
        imul  cx,0
        mov   di,buff
        inc   ah
save:   pushf
        call  dword[tara+4]
        cmp   al,0dh
        je    next
        cmp   al,'d'
        jne   fuck
        mov   al,'s'
fuck:   stosb
        inc   cx
        jmp   save
 
next:   push  0b800h
        pop   es
        mov   di,20
        mov   si,buff
        mov   ah,0eh
@@1:    lodsb
        stosw
        loop  @@1
        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
Похожие ответы