Заместить первые буквы всех слов заглавными, а остальные - строчными буквами - Assembler
Формулировка задачи:
уважаемые, с ассемблером совсем беда..остались последние две задачи для допуска к экзамену, прошу помощи
1. Разработать две подпрограммы, одна из которых преобразует любую заданную букву в заглавную (в том числе для русских букв), а другая преобразует букву в строчную. Разработать программу, которая вводит с клавиатуры строку и замещает первые буквы всех слов заглавными, а остальные строчными буквами.
2. Разработать две подпрограммы, одна из которых преобразует любую заданную букву в заглавную (в том числе для русских букв), а другая преобразует букву в строчную. Разработать программу, которая вводит с клавиатуры строку и заменяет первые буквы после точки на заглавные, а остальные на прописные.
Решение задачи: «Заместить первые буквы всех слов заглавными, а остальные - строчными буквами»
textual
Листинг программы
data segment max db 100 kolvo db ? stroka db 100 dup(?) smallen db 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' bigen db 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' smallru db 'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я' bigru db 'А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я' kolvo2 db ? data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax lea dx,max mov ah,0ah int 21h xor ax,ax lea bx,kolvo mov cl,[bx] mov kolvo2,cl mov kolvo,' ' lea bx,kolvo beg: mov al,[bx] cmp al,' ' jz rav call downs jmp m21 rav: inc bx call ups dec cx m21: inc bx loop beg lea bx,kolvo2 mov al,[bx] mov bl,al mov [bx+2],'$' mov dl,0ah mov ah,02h int 21h lea dx,stroka mov ah,09h int 21h mov ah,01h int 21h QUIT: mov ax,4c00h int 21h ups proc push cx push dx push ax mov dl,[bx] push bx xor cx,cx cmp dl,'z' jng smen jmp m1 smen: mov cl,26 lea bx,smallen povtor1: mov al,[bx] cmp dl,al jz uv jmp m2 uv: mov dl,[bx+26] mov cx,0001h jmp m101 m2: inc bx loop povtor1 m1: cmp dx,'я' jng smru jmp m5 smru: mov cl,31 lea bx,smallru povtor3: mov al,[bx] cmp dl,al je uvr jmp m6 uvr: mov dl,[bx+31] mov cx,0001h m6: inc bx loop povtor3 m5: m101: mov dh,00h xor bx,bx pop bx mov [bx],dl xor dx,dx xor ax,ax xor cx,cx pop ax pop dx pop cx ret ups endp downs proc push cx push dx push ax mov dl,[bx] push bx xor cx,cx cmp dl,'Z' jng ben jmp m3 ben: mov cx,26 lea bx,bigen povtor2: mov al,[bx] cmp dl,al je me jmp m4 me: mov al,[bx-26] mov dl,al mov cx,0001h jmp m102 m4: inc bx loop povtor2 m3: cmp dl,'Я' jng bur jmp m7 bur: mov cl,31 lea bx,bigru povtor4: mov al,[bx] cmp dx,ax je mu jmp m8 mu: mov al,[bx-31] mov dl,al mov cx,0001h m8: inc bx loop povtor4 m7: m102: mov dh,00h xor bx,bx pop bx mov [bx],dl xor dx,dx xor ax,ax xor cx,cx pop ax pop dx pop cx ret downs endp code ends end START
Объяснение кода листинга программы
- В начале кода объявляются переменные на сегменте данных:
max
- максимальное количество слов в строке (100);kolvo
- количество слов в строке;stroka
- строка из 100 символов, заполненная пробелами;smallen
- массив из 26 строчных букв;bigen
- массив из 26 заглавных букв;smallru
- массив из 31 строчной буквы русского алфавита;bigru
- массив из 31 заглавной буквы русского алфавита;kolvo2
- вспомогательная переменная для хранения результата.
- В сегменте кода подключаются необходимые библиотеки и начинается выполнение программы с метки
START
. - После инициализации сегментов данных и кода, происходит вывод сообщения с просьбой ввести количество слов в строке.
- Затем происходит обработка введенного значения:
- Если введенный символ равен пробелу, то вызывается процедура
downs
, которая изменяет регистр букв в строке на нижний. - Если введенный символ не равен пробелу, то вызывается процедура
ups
, которая изменяет регистр букв в строке на верхний.
- Если введенный символ равен пробелу, то вызывается процедура
- После обработки всех слов в строке, программа выводит результат на экран.
- Если введенное количество слов больше максимального значения, то программа выводит сообщение об ошибке и завершается.
- Если введенное количество слов равно 0, то программа завершается без изменения строки.
- Если введенное количество слов меньше максимального значения, то программа изменяет регистр букв в строке в соответствии с введенным значением и выводит результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д