Преобразовать текст, превратив строчные буквы в заглавные, а заглавные в строчные - Assembler
Формулировка задачи:
Дана последовательность заглавных и строчных латинских букв (строка текста). Преобразовать текст, превратив строчные буквы в заглавные, а заглавные в строчные. Вывести обе строки на экран. Помогите пожалуйста. Если получиться то распишите подробно действия, я просто только новичок
Решение задачи: «Преобразовать текст, превратив строчные буквы в заглавные, а заглавные в строчные»
textual
Листинг программы
- ; fasm code...
- ; строчные в заглавные, а заглавные в строчные.
- org 100h
- jmp start
- mes0 db 13,10,'fghdjGFDEVCB jghfkidlsgGGFDS GHCBVKDHSH tyghfbdj','$'
- len = ($ - mes0)-3 ; длина строки без 13,10,'$'
- start: mov ah,9 ; выводим текущую строку
- mov dx,mes0 ;
- int 21h ;
- mov si,mes0+2 ; адрес источника
- mov di,si ; он-же приёмник
- mov cx,len ; длина строки
- kLoop: lodsb ; берём байт из SI
- cmp al,' ' ; пробелы не трогаем
- je fuck ;
- xor al,20h ; у остальных ксорим бит(5)
- fuck: stosb ; сохраняем изменения
- loop kLoop ; мотаем цикл СХ-раз..
- mov ah,9 ; выводим изменённыю строку
- mov dx,mes0 ;
- int 21h ;
- exit: xor ax,ax ; ждём клавишу..
- int 16h ;
- int 20h ; выход!
Объяснение кода листинга программы
Выделила для вас основные этапы работы кода в виде нумерованного списка:
- Объявление переменной mes0, которая содержит исходную строку.
- Расчёт длины строки (len) без учёта символов 13, 10 и '$'.
- Начало выполнения программы (jmp start).
- Вывод исходной строки (mov ah,9; mov dx,mes0; int 21h).
- Начало цикла kLoop.
- Считывание байта из регистра SI.
- Проверка: является ли текущий байт пробелом?
- Если текущий байт — пробел, то переход к операции stosb.
- Если текущий байт не является пробелом, то изменение его регистра (xor al,20h).
- Сохранение изменённого символа в регистре SI (stosb).
- Выполнение цикла kLoop до тех пор, пока не будет выполнено условие выхода из цикла (cx равна len).
- Вывод изменённой строки (mov ah,9; mov dx,mes0; int 21h).
- Вход в бесконечный цикл (while), ожидая нажатия клавиши.
- Выход из программы (int 16h; int 20h).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д