ХАНДЫФАР

Функция StringJoinEx объединяет массив строк, используя указанный разделитель, и сохраняет результат в подготовленном буфере. Функция StringJoinEx автоматически выравнивает стек на 8 байт.

Параметры:

  1. Указатель на массив строк, завершающийся (\0) или 0.
  2. Указатель на буфер, куда будут сохранены строки.
  3. Количество строк для объединения.
  4. Символ разделителя.

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

  • Функция не возвращает значение.

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

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

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

  • Функция не изменяет значения регистров.
  • Буфер должен быть достаточно большим, чтобы вместить объединённые строки и разделители.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____string db "Меня\0", "зовут\0"
  7. ___________db "Евгений\0", "Довгополов\0"
  8. ____buffer db 100 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. ________push____' '
  17. ________push____4
  18. ________pushs___es:[buffer]
  19. ________pushs___ds:[string]
  20. ________call____StringJoinEx
  21. ________pushs___ds:[buffer]
  22. ________call____WriteStringEx
  23. ________push____0_
  24. ________call____ExitProcessEx
  25. ____main endp
  26. code ends
  27. end main
Функция StringJoinEx объединяет массив строк, используя указанный разделитель, и сохраняет результат в подготовленном буфере. Функция StringJoinEx автоматически выравнивает стек на 8 байт.

Параметры:

  1. Указатель на массив строк, завершающийся (\0) или 0.
  2. Указатель на буфер, куда будут сохранены строки.
  3. Количество строк для объединения.
  4. Символ разделителя.

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

  • Функция не возвращает значение.

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

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

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

  • Функция не изменяет значения регистров.
  • Буфер должен быть достаточно большим, чтобы вместить объединённые строки и разделители.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____string db "Меня\0", "зовут\0", "Евгений\0", "Довгополов\0"
  7. ____buffer db 100 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. ________push____' '_____________; 4-й: Ложим на вершину стека значение символа ' '
  16. ________push____4_______________; 3-й: Ложим на вершину стека число 4
  17. ________pushs___es:[buffer]_____; 2-й: Ложим на вершину стека адрес переменной buffer
  18. ________pushs___ds:[string]_____; 1-й: Ложим на вершину стека адрес переменной string
  19. ________call____StringJoinEx____; Вызываем процедуру StringJoinEx(string, buffer, 4, ' ')
  20. ________pushs___ds:[buffer]_____; Ложим на вершину стека адрес переменной buffer
  21. ________call____WriteStringEx___; Вызываем процедуру WriteStringEx(buffer)
  22. ________push____0_______________; Ложим на вершину стека байтовое значение кода возврата
  23. ________call____ExitProcessEx___; Вызываем процедуру ExitProcess(0)
  24. ____main endp
  25. code ends
  26. end main
Made on
Tilda