Функция
CapitalizeEx преобразует каждое предложение в строке в заглавную букву. Предложение считается завершённым, если встречается символ точки (.), восклицательного знака (!) или вопросительного знака (?). Строка должна завершаться (\0) или 0.
Функция
CapitalizeEx не выравнивает стек на 2 байта а сохраняет преобразованное значение на вершине стека и в регистре
AX. Это сделано для того чтобы иметь возможность вызвать функцию
WriteString или
WriteStringEx сразу после вызова функции
CapitalizeEx. Если после вызова функции
CapitalizeEx для вывода преобразованного символа используется функция
WriteString то, выравнивание стека лежит на программисте. Для того чтобы выровнять стек на 2 байта, после вызова функции
WriteString нужно написать следующую команду: add sp, 2.
Параметры:- Указатель на строку, завершающуюся (\0) или 0.
Возвращаемое значение:- AX: Указатель на строку, завершающуюся (\0) или 0.
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Функция преобразует первый символ каждого предложения в верхний регистр.
- Предложение определяется по символам завершения: ., !, ?.
- Функция не изменяет значения регистров, кроме AX.
- Строка должна завершаться (\0), чтобы функция могла определить её конец.
- title Автор: Довгополов Евгений Сергеевич
- .286C
- .model small
- .stack 100h
- data segment public
- ____string db "Введите несколько "
- ___________db "предложений: \0"
- ____buffer db 255 dup(0)
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____include Handymac.inc
- ____main proc
- ________call____SetDataSegment
- ________pushs___ds:[string]
- ________call____WriteStringEx
- ________pushs___ds:[buffer]
- ________call____ReadStringEx
- ________call____PrintNewLine
- ________pushs___ds:[buffer]
- ________call____CapitalizeEx
- ________call____WriteStringEx
- ________push____0
- ________call____ExitProcessEx
- ____main endp
- code ends
- end main