ХАНДЫФАР

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

Параметры:

  1. Указатель на строку, завершающуюся нулём (\0) или 0.
  2. Указатель на вторую строку (набор допустимых символов), завершающуюся (\0) или 0.

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

  • DS:AX: Длина максимального начального сегмента первой строки, который содержит только символы из второй строки. Если такой сегмент не найден, возвращается 0.

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

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

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

  • Функция не изменяет значения регистров, кроме AX.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .286C
  3. .model small
  4. .stack 100h
  5. data segment public
  6. ____string db "8783274ABCDEFGH1234\0"
  7. ____search db "0123456789\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
  15. ________pushs___es:[search]
  16. ________pushs___ds:[string]
  17. ________call____StringSpanEx
  18. ________push____ax
  19. ________call____WriteStringEx
  20. ________push____0
  21. ________call____ExitProcessEx
  22. ____main endp
  23. code ends
  24. end main
Функция StringSpanEx возвращает длину максимального начального сегмента первой строки, который состоит только из символов, найденных во второй строке. Функция StringSpanEx автоматически выравнивает стек на 4 байта.

Параметры:

  1. Указатель на строку, завершающуюся нулём (\0) или 0.
  2. Указатель на вторую строку (набор допустимых символов), завершающуюся (\0) или 0.

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

  • DS:AX: Длина максимального начального сегмента первой строки, который содержит только символы из второй строки. Если такой сегмент не найден, возвращается 0.

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

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

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

  • Функция не изменяет значения регистров, кроме AX.

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