Сделать заглавным средний символ слова - 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

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

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