ХАНДЫФАР

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

Параметры:

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

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "8783274ABCDEFGH1234\0"
  6. ____search db "0123456789\0"
  7. data ends
  8. code segment public
  9. ____assume _ds:data, cs:code
  10. ____include Handyfar.inc
  11. ____main proc
  12. ________call____SetDataSegment
  13. ________lea_____bx, es:[search]
  14. ________lea_____ax, ds:[string]
  15. ________call____StringSpan
  16. ________call____WriteString
  17. ________xor_____al, al
  18. ________call____ExitProcess
  19. ____main endp
  20. code ends
  21. end main
Функция StringSpan возвращает длину максимального начального сегмента первой строки, который состоит только из символов, найденных во второй строке.

Параметры:

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

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "8783274ABCDEFGH1234\0"
  6. ____search db "0123456789\0"
  7. data ends
  8. code segment public _____________; Начало сегмента кода
  9. ____assume _ds:data, cs:code
  10. ____include Handyfar.inc_________; Подключаем файл с функциями
  11. ____main proc ___________________; Начало процедуры main
  12. ________call____SetDataSegment___; Вызываем процедуру SetDataSegment
  13. ________lea_____bx, es:[search]__; Загружаем адрес переменной search в регистр es:bx
  14. ________lea_____ax, ds:[string]__; Загружаем адрес переменной string в регистр ds:ax
  15. ________call____StringSpan_______; Вызываем процедуру StringSpan(ds:ax, es:bx) := AX
  16. ________call____WriteString______; Вызываем процедуру WriteString(ax)
  17. ________xor_____al, al___________; Обнуляем регистр al
  18. ________call____ExitProcess______; Вызываем процедуру ExitProcess
  19. ____main endp ___________________; Конец процедуры main
  20. code ends _______________________; Конец сегмента кода
  21. end main ________________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda