Сделать заглавным средний символ слова - Assembler (223654)
Формулировка задачи:
Уважаемые, нужно сделать заглавными средний символ слова, если длина слова нечетная; и символ, предшествующий середине, если длина слова четная. Слова разделяются пробелами. Каждое слово выводить с новой строки.
Понимаю,что нужно вычислить длину слова, поделить на 2 и уменьшить ascii код символа на 32,чтобы получить заглавную букву...но как это написать ...помогите,пожалуйста,чем сможете студенту
Решение задачи: «Сделать заглавным средний символ слова»
textual
Листинг программы
- .model small
- .data
- str db 'yesterday all my troubles seemed so far away',0
- .stack 100h
- .code
- start:
- mov ax,@data
- mov ds,ax
- lea si,str
- cld
- mov ax,3 ; инициализация экрана
- int 10h
- mov ah,0eh ; функция телетайпа
- cycle: ; сканим
- lodsb
- test al,al
- jz fin ; нуль-терминатор - закругляемся
- cmp al,' ' ; пробел - перевод строки
- je NL
- int 10h ; не пробел - просто вывод
- jmp cycle
- NL:call NewLine
- jmp cycle
- fin: ; финализация
- call NewLine ; выделяем среднюю букву в последнем слове
- xor ah,ah ; ждём нажатия и завершаемся
- int 16h
- mov ax,4c00h
- int 21h
- NewLine proc ; процедура выделения средней буквы и перевода строки
- mov ax,300h ; читаем позицию курсора
- int 10h
- dec dl
- shr dl,1 ; находим середину слова
- dec ah ; ставим туда курсор
- int 10h
- mov ah,8 ; и перезаписываем
- int 10h
- sub al,20h ; заглавной буквой
- mov ah,0eh ; возвращаем телетайп
- int 10h ; переходим на новую строку
- mov al,10
- int 10h
- mov al,13
- int 10h
- ret
- NewLine endp
- end
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д