Функция
FindChar выполняет поиск символа в строке, завершающейся (\0) или 0. Если символ найден, возвращается указатель на его первое вхождение. Если символ не найден или указатель на строку равен 0, функция возвращает FFFF и устанавливает флаг CF = 1.
Параметры:- AX: Указатель на строку, завершающуюся (\0) или 0.
- BL: Символ для поиска.
Возвращаемое значение:____AX: Указатель на первое вхождение символа в строке.
____CF = 0.
- Если символ не найден или AX = 0:
____AX = 8000h.
____CF = 1.
Состояние флагов:- Функция влияет на флаг CF, ZF, SF и другие.
Особенности:- Функция выполняет поиск символа в строке, начиная с указателя AX.
- Поиск завершается при достижении конца строки (\0) или 0.
- Если символ найден, возвращается указатель на его первое вхождение.
- Если символ не найден или указатель на строку = 0, функция возвращает 8000h и устанавливает флаг CF = 1.
- Функция не изменяет значения регистров, кроме AX и флагов.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____string_db "Привет, Мир Ассемблера!\0"
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____main proc
- ________call____SetDataSegment
- ________mov_____bl, 'М'
- ________lea_____ax, ds:[string]
- ________call____FindChar
- ________call____WriteString
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main
С помощью цикла можно вывести все вхождения определённого символа.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____string_db "Ирис, словно небесный "
- ___________db "посланник, раскрывает свои "
- ___________db "бархатные лепестки.\0"
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____main proc
- ________call____SetDataSegment
- ________mov_____bl, 'и'
- ________lea_____ax, ds:[string]
- ____MainLoop:
- ________call____FindChar
- ________jc______Done
- ________call____WriteString
- ________call____PrintNewLine
- ________inc_____ax
- ________jmp_____MainLoop
- ____Done:
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main