Преобразовать текст, превратив строчные буквы в заглавные, а заглавные в строчные - Assembler

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

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

Дана последовательность заглавных и строчных латинских букв (строка текста). Преобразовать текст, превратив строчные буквы в заглавные, а заглавные в строчные. Вывести обе строки на экран. Помогите пожалуйста. Если получиться то распишите подробно действия, я просто только новичок

Решение задачи: «Преобразовать текст, превратив строчные буквы в заглавные, а заглавные в строчные»

textual
Листинг программы
  1. ; fasm code...
  2. ; строчные в заглавные, а заглавные в строчные.
  3.  
  4. org 100h
  5. jmp start
  6.  
  7. mes0   db   13,10,'fghdjGFDEVCB jghfkidlsgGGFDS GHCBVKDHSH tyghfbdj','$'
  8. len    =    ($ - mes0)-3   ; длина строки без 13,10,'$'
  9.  
  10. start: mov   ah,9          ; выводим текущую строку
  11.        mov   dx,mes0       ;
  12.        int   21h           ;
  13.  
  14.        mov   si,mes0+2     ; адрес источника
  15.        mov   di,si         ; он-же приёмник
  16.        mov   cx,len        ; длина строки
  17. kLoop: lodsb               ; берём байт из SI
  18.        cmp   al,' '        ; пробелы не трогаем
  19.        je    fuck          ;
  20.        xor   al,20h        ; у остальных ксорим бит(5)
  21. fuck:  stosb               ; сохраняем изменения
  22.        loop  kLoop         ; мотаем цикл СХ-раз..
  23.  
  24.        mov   ah,9          ; выводим изменённыю строку
  25.        mov   dx,mes0       ;
  26.        int   21h           ;
  27.  
  28. exit:  xor   ax,ax         ; ждём клавишу..
  29.        int   16h           ;
  30.        int   20h           ; выход!

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

Выделила для вас основные этапы работы кода в виде нумерованного списка:

  1. Объявление переменной mes0, которая содержит исходную строку.
  2. Расчёт длины строки (len) без учёта символов 13, 10 и '$'.
  3. Начало выполнения программы (jmp start).
  4. Вывод исходной строки (mov ah,9; mov dx,mes0; int 21h).
  5. Начало цикла kLoop.
  6. Считывание байта из регистра SI.
  7. Проверка: является ли текущий байт пробелом?
  8. Если текущий байт — пробел, то переход к операции stosb.
  9. Если текущий байт не является пробелом, то изменение его регистра (xor al,20h).
  10. Сохранение изменённого символа в регистре SI (stosb).
  11. Выполнение цикла kLoop до тех пор, пока не будет выполнено условие выхода из цикла (cx равна len).
  12. Вывод изменённой строки (mov ah,9; mov dx,mes0; int 21h).
  13. Вход в бесконечный цикл (while), ожидая нажатия клавиши.
  14. Выход из программы (int 16h; int 20h).

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


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

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

12   голосов , оценка 3.75 из 5

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

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

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