Заместить первые буквы всех слов заглавными, а остальные - строчными буквами - 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

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

  1. В начале кода объявляются переменные на сегменте данных:
    • max - максимальное количество слов в строке (100);
    • kolvo - количество слов в строке;
    • stroka - строка из 100 символов, заполненная пробелами;
    • smallen - массив из 26 строчных букв;
    • bigen - массив из 26 заглавных букв;
    • smallru - массив из 31 строчной буквы русского алфавита;
    • bigru - массив из 31 заглавной буквы русского алфавита;
    • kolvo2 - вспомогательная переменная для хранения результата.
  2. В сегменте кода подключаются необходимые библиотеки и начинается выполнение программы с метки START.
  3. После инициализации сегментов данных и кода, происходит вывод сообщения с просьбой ввести количество слов в строке.
  4. Затем происходит обработка введенного значения:
    • Если введенный символ равен пробелу, то вызывается процедура downs, которая изменяет регистр букв в строке на нижний.
    • Если введенный символ не равен пробелу, то вызывается процедура ups, которая изменяет регистр букв в строке на верхний.
  5. После обработки всех слов в строке, программа выводит результат на экран.
  6. Если введенное количество слов больше максимального значения, то программа выводит сообщение об ошибке и завершается.
  7. Если введенное количество слов равно 0, то программа завершается без изменения строки.
  8. Если введенное количество слов меньше максимального значения, то программа изменяет регистр букв в строке в соответствии с введенным значением и выводит результат на экран.

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


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

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

9   голосов , оценка 4.111 из 5
Похожие ответы