ХАНДЫФАР

Функция CapitalizeEx преобразует каждое предложение в строке в заглавную букву. Предложение считается завершённым, если встречается символ точки (.), восклицательного знака (!) или вопросительного знака (?). Строка должна завершаться (\0) или 0.

Функция CapitalizeEx не выравнивает стек на 2 байта а сохраняет преобразованное значение на вершине стека и в регистре AX. Это сделано для того чтобы иметь возможность вызвать функцию WriteString или WriteStringEx сразу после вызова функции CapitalizeEx. Если после вызова функции CapitalizeEx для вывода преобразованного символа используется функция WriteString то, выравнивание стека лежит на программисте. Для того чтобы выровнять стек на 2 байта, после вызова функции WriteString нужно написать следующую команду: add sp, 2.

Параметры:

  1. Указатель на строку, завершающуюся (\0) или 0.

Возвращаемое значение:

  • AX: Указатель на строку, завершающуюся (\0) или 0.

Состояние флагов:

  • Функция не изменяет состояние флагов.

Особенности:

  • Функция преобразует первый символ каждого предложения в верхний регистр.
  • Предложение определяется по символам завершения: ., !, ?.
  • Функция не изменяет значения регистров, кроме AX.
  • Строка должна завершаться (\0), чтобы функция могла определить её конец.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____string db "Введите несколько "
  7. ___________db "предложений: \0"
  8. ____buffer db 255 dup(0)
  9. data ends
  10. code segment public
  11. ____assume _ds:data, cs:code
  12. ____include Handyfar.inc
  13. ____include Handymac.inc
  14. ____main proc
  15. ________call____SetDataSegment
  16. ________pushs___ds:[string]
  17. ________call____WriteStringEx
  18. ________pushs___ds:[buffer]
  19. ________call____ReadStringEx
  20. ________call____PrintNewLine
  21. ________pushs___ds:[buffer]
  22. ________call____CapitalizeEx
  23. ________call____WriteStringEx
  24. ________push____0
  25. ________call____ExitProcessEx
  26. ____main endp
  27. code ends
  28. end main
Функция CapitalizeEx преобразует каждое предложение в строке в заглавную букву. Предложение считается завершённым, если встречается символ точки (.), восклицательного знака (!) или вопросительного знака (?). Строка должна завершаться (\0) или 0.

Функция CapitalizeEx не выравнивает стек на 2 байта а сохраняет преобразованное значение на вершине стека и в регистре AX. Это сделано для того чтобы иметь возможность вызвать функцию WriteString или WriteStringEx сразу после вызова функции CapitalizeEx. Если после вызова функции CapitalizeEx для вывода преобразованного символа используется функция WriteString то, выравнивание стека лежит на программисте. Для того чтобы выровнять стек на 2 байта, после вызова функции WriteString нужно написать следующую команду: add sp, 2.

Параметры:

  1. Указатель на строку, завершающуюся (\0) или 0.

Возвращаемое значение:

  • AX: Указатель на строку, завершающуюся (\0) или 0.

Состояние флагов:

  • Функция не изменяет состояние флагов.

Особенности:

  • Функция преобразует первый символ каждого предложения в верхний регистр.
  • Предложение определяется по символам завершения: ., !, ?.
  • Функция не изменяет значения регистров, кроме AX.
  • Строка должна завершаться (\0), чтобы функция могла определить её конец.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____string db "Введите несколько предложений: \0"
  7. ____buffer db 255 dup(0)
  8. data ends
  9. code segment public
  10. ____assume _ds:data, cs:code
  11. ____include Handyfar.inc________; Подключаем файл с функциями
  12. ____include Handymac.inc________; Подключаем файл с макросами
  13. ____main proc
  14. ________call____SetDataSegment__; Вызываем процедуру SetDataSegment
  15. ________pushs___ds:[string]_____; Ложим на вершину стека адрес переменной string
  16. ________call____WriteStringEx___; Вызываем процедуру WriteStringEx(string)
  17. ________pushs___ds:[buffer]_____; Ложим на вершину стека адрес переменной buffer
  18. ________call____ReadStringEx____; Вызываем процедуру ReadStringEx(buffer)
  19. ________call____PrintNewLine____; Вызываем процедуру PrintNewLine()
  20. ________pushs___ds:[buffer]_____; Ложим на вершину стека адрес переменной buffer
  21. ________call____CapitalizeEx____; Вызываем процедуру CapitalizeEx(buffer)
  22. ________call____WriteStringEx___; Вызываем процедуру WriteStringEx(значение из стека)
  23. ________push____0_______________; Ложим на вершину стека байтовое значение кода возврата
  24. ________call____ExitProcessEx___; Вызываем процедуру ExitProcess(0)
  25. ____main endp
  26. code ends
  27. end main
Made on
Tilda