Напечатать текст, заменив ph на букву f - Assembler

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

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

Может ли кто написать код до такого задания. Язык программирования Assembler. Заранее спасибо. Составить программу, которая вводит произвольный текст, который заканчивается символом "*". Напечатать этот текст, заменив ph на букву f.

Решение задачи: «Напечатать текст, заменив ph на букву f»

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 100h
  6.  
  7. .data
  8.         StopChar        db      '*'     ;символ, ограничитель строки
  9.         String          db      256 dup(?)
  10.  
  11.         msgInpString    db      'Введите строку, признак окончания строки - символ "*":', 0Dh, 0Ah, '$'
  12.         msgResString    db      'Итоговая строка:', 0Dh, 0Ah, '$'
  13.         CrLf            db      0Dh, 0Ah, '$'
  14. .code
  15.  
  16. main    proc
  17.         mov     ax,     @data
  18.         mov     ds,     ax
  19.  
  20.         mov     ah,     09h
  21.         lea     dx,     msgInpString
  22.         int     21h
  23.  
  24.         push    ds
  25.         pop     es
  26.         lea     di,     String
  27.         cld
  28. @@InpWhile:
  29.         mov     ah,     01h
  30.         int     21h
  31.         stosb
  32.         cmp     al,     StopChar
  33.         jne     @@InpWhile
  34.         mov     [di],   byte ptr '$'
  35.  
  36.         mov     ah,     09h
  37.         lea     dx,     CrLf
  38.         int     21h
  39.  
  40.         ;вывод результатов
  41.         ;Результирующая строка
  42.         mov     ah,     09h
  43.         lea     dx,     msgResString
  44.         int     21h
  45.  
  46.         lea     si,     String
  47. @@OutWhile:
  48.         lodsb
  49.         cmp     al,     StopChar        ;если это признак конца строки - выйти
  50.         je      @@OutBreak
  51.         cmp     al,     'p'             ;если это символ 'p' - проверить следующий символ
  52.         jne     @@ShowChar
  53.         cmp     [si],   byte ptr 'h'
  54.         jne     @@ShowChar
  55.         mov     al,     'f'             ;если это сочетание 'ph' - заменить на 'f'
  56.         inc     si
  57. @@ShowChar:
  58.         mov     ah,     02h
  59.         mov     dl,     al
  60.         int     21h
  61.         jmp     @@OutWhile
  62. @@OutBreak:
  63.  
  64.         mov     ah,     09h
  65.         lea     dx,     CrLf
  66.         int     21h
  67.  
  68.         ;завершение программы
  69.         mov     ax,     4C00h
  70.         int     21h
  71. main    endp
  72.  
  73. end     main

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

  1. Объявление локальных переменных
  2. Определение модели памяти как small
  3. Выделение стека размером в 100 байт
  4. Объявление данных:
    • Переменная StopChar устанавливается как символ *
    • Переменная String описывается как массив из 256 элементов с начальными значениями неопределенности
    • Переменные msgInpString, msgResString и CrLf описывают текстовые строки с сообщениями и символами новой строки
  5. Вступление в секцию кода
  6. Процедура main начинается
    • Содержимое регистра ax копируется в регистр ds
    • Реализуется вывод сообщения Введите строку, признак окончания строки - символ*`:``
    • Передача сегмента данных в регистр es, адрес переменной String загружается в регистр di, устанавливается направление увеличения
    • Запускается цикл ввода строк, символы записываются в String, пока не встретится символ *
    • Добавление признака конца строки $ в String
    • Вывод CrLf символов
    • Вывод сообщения Итоговая строка:
    • Цикл вывода строк String, при обнаружении символов ph они заменяются на f
    • Вывод символов CrLf
    • Завершение программы
  7. Завершение main процедуры
  8. Завершение программы Код выполняет ввод строки, заменяет указанный символ в строке и выводит итоговую строку.

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


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

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

8   голосов , оценка 3.625 из 5

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

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

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