ХАНДЫФАР

Функция StringCopyIf копирует элементы строки, завершающейся (\0) или 0, в подготовленный буфер на основании условия, заданного функцией, переданной через указатель.

Параметры:

  • DS:AX: Указатель на строку, завершающуюся (\0) или 0.
  • ES:BX: Указатель на буфер, завершающийся (\0) или 0.
  • CX:___ Указатель на функцию, которая определяет, должен ли символ быть скопирован. _______Допустимые функции:

____IsDigit: Проверяет, является ли символ цифрой.
____IsLower: Проверяет, является ли символ строчной буквой.
____IsUpper: Проверяет, является ли символ заглавной буквой.
____IsAlpha: Проверяет, является ли символ буквой.
____IsAlnum: Проверяет, является ли символ буквой или цифрой.
____IsSpace: Проверяет, является ли символ пробельным символом.
____IsPrint: Проверяет, является ли символ печатаемым.
____IsGraph: Проверяет, является ли символ графическим символом.
____IsPunct: Проверяет, является ли символ знаком пунктуации.

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "При1ве3т Ми5р!\0"
  6. ____buffer db 10 dup(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_____cx, IsDigit
  14. ________lea_____bx, es:[buffer]
  15. ________lea_____ax, ds:[string]
  16. ________call____StringCopyIf
  17. ________lea_____ax, ds:[buffer]
  18. ________call____WriteString
  19. ________xor_____al, al
  20. ________call____ExitProcess
  21. ____main endp
  22. code ends
  23. end main
Функция StringCopyIf копирует элементы строки, завершающейся (\0) или 0, в подготовленный буфер на основании условия, заданного функцией, переданной через указатель.

Параметры:

  • DS:AX: Указатель на строку, завершающуюся (\0) или 0.
  • ES:BX: Указатель на буфер, завершающийся (\0) или 0.
  • CX:___ Указатель на функцию, которая определяет, должен ли символ быть скопирован. _______Допустимые функции:

____IsDigit: Проверяет, является ли символ цифрой.
____IsLower: Проверяет, является ли символ строчной буквой.
____IsUpper: Проверяет, является ли символ заглавной буквой.
____IsAlpha: Проверяет, является ли символ буквой.
____IsAlnum: Проверяет, является ли символ буквой или цифрой.
____IsSpace: Проверяет, является ли символ пробельным символом.
____IsPrint: Проверяет, является ли символ печатаемым.
____IsGraph: Проверяет, является ли символ графическим символом.
____IsPunct: Проверяет, является ли символ знаком пунктуации.

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

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

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "При1ве3т Ми5р!\0"
  6. ____buffer db 10 dup(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_____cx, IsDigit______; Загружаем адрес процедуры IsDigit в регистр cx
  14. ________lea_____bx, es:[buffer]__; Загружаем адрес переменной buffer в регистр es:bx
  15. ________lea_____ax, ds:[string]__; Загружаем адрес переменной string в регистр ds:ax
  16. ________call____StringCopyIf_____; Вызываем процедуру StringCopyIf(ds:ax, es:bx, cx)
  17. ________lea_____ax, ds:[buffer]__; Загружаем адрес переменной buffer в регистр ds:ax
  18. ________call____WriteString______; Вызываем процедуру WriteString(ax:buffer)
  19. ________xor_____al, al___________; Обнуляем регистр al
  20. ________call____ExitProcess______; Вызываем процедуру ExitProcess
  21. ____main endp ___________________; Конец процедуры main
  22. code ends _______________________; Конец сегмента кода
  23. end main ________________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda