ХАНДЫФАР

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

Параметры:

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

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

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

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

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

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

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

ПРИМЕР 1:

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "____Привет Мир!_\0"
  6. ____buffer_db 20 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. ________xor_____cl, cl
  14. ________lea_____bx, es:[buffer]
  15. ________lea_____ax, ds:[string]
  16. ________call____StringTrim_
  17. ________lea_____ax, ds:[buffer]
  18. ________call____WriteString
  19. ________xor_____al, al
  20. ________call____ExitProcess
  21. ____main endp
  22. code ends
  23. end main

ПРИМЕР 2:

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

Параметры:

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

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

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

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

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

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

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

ПРИМЕР 1:

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "____Привет Мир!_\0"
  6. ____buffer_db 20 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. ________xor_____cl, cl___________; Обнуляем регистр cl, по умолчанию удаляет пробелы
  14. ________lea_____bx, es:[buffer]__; Загружаем адрес переменной buffer в регистр es:bx
  15. ________lea_____ax, ds:[string]__; Загружаем адрес переменной string в регистр ds:ax
  16. ________call____StringTrim_______; Вызываем процедуру StringTrim(ds:ax, es:bx, cl:0)
  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

ПРИМЕР 2:

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "-----Привет Мир!-\0"
  6. ____buffer_db 20 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. ________mov_____cl, '-'__________; Копируем значение символа '-' в регистр cl
  14. ________lea_____bx, es:[buffer]__; Загружаем адрес переменной buffer в регистр es:bx
  15. ________lea_____ax, ds:[string]__; Загружаем адрес переменной string в регистр ds:ax
  16. ________call____StringTrim_______; Вызываем процедуру StringTrim(ds:ax, es:bx, cl:'-')
  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