Функция
StringSplit разбивает строку на токены, используя разделители, и сохраняет их в подготовленном пользователем буфере. Если указатель на строку равен 0, функция завершает работу без изменений.
Параметры:- DS:AX: Указатель на строку, завершающуюся (\0) или 0.
- ES:BX: Указатель на строку разделителей, завершающуюся (\0) или 0.
- DS:CX: Указатель на подготовленный пользователем буфер для сохранения токенов.
Возвращаемое значение:- CX: Количество токенов, сохранённых в буфере. Если строка или буфер недействительны, возвращается 0.
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Токены сохраняются в подготовленном буфере, каждый токен завершается нулём 0.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____string db "Весенний ветер, лаская "
- ___________db "листву, шепчет тайны, "
- ___________db "даря аромат цветущих "
- ___________db "садов.\0"
- ____buffer db 80 dup(0)
- ____delims db " ,.\0"
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____main proc
- ________call____SetDataSegment
- ________lea_____cx, ds:[buffer]
- ________lea_____bx, es:[delims]
- ________lea_____ax, ds:[string]
- ________call____StringSplit
- ________lea_____si, ds:[buffer]
- ____MainLoop:
- ________lodsb
- ________test____al, al
- ________jz______Skip
- ________call____PutChar
- ________jmp_____MainLoop
- ____Skip:
- ________call____PrintNewLine
- ________loop____MainLoop
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main