Функция
StringCompareEx выполняет лексикографическое сравнение двух строк, завершающихся (\0) или 0. Если одна из строк равна 0, функция завершает работу и возвращает результат сравнения. Функция
StringCompareEx автоматически выравнивает стек на 4 байта.
Параметры:- Указатель на первую строку, завершающуюся (\0) или 0.
- Указатель на вторую строку, завершающуюся (\0) или 0.
Возвращаемое значение:- Если строки равны лексикографически:
____AX = 0.
____ZF = 1.
AX = 1: Первый отличающийся символ в первой строке больше соответствующего символа во второй строке.
AX = -1: Первый отличающийся символ в первой строке меньше соответствующего символа во второй строке.
ZF = 0.
Состояние флагов:- Функция влияет на все флаги, включая флаг ZF, SF и другие.
Особенности:- Если строки равны до конца, функция возвращает AX = 0 и устанавливает ZF = 1.
- Функция не изменяет значения регистров, кроме AX и флагов.
- title Автор: Довгополов Евгений Сергеевич
- .286C
- .model small
- .stack 100h
- data segment public
- ____string1 _db "Довгополов Евгений\0"
- ____string2 _db "Довгополов Сергей\0"
- ____equal____db "Строки равны!\0"
- ____notEqual db "Строки не равны!\0"
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____include Handymac.inc
- ____main proc
- ________call____SetDataSegment
- ________pushs___es:[string2]
- ________pushs___ds:[string1]
- ________call____StringCompareEx
- ________jne_____@StringsNotEqual
- ________pushs___ds:[equal]
- ________jmp_____@Done
- ____@StringsNotEqual:
- ________pushs___ds:[notEqual]
- ____@Done:
- ________call____WriteStringEx
- ________push____0
- ________call____ExitProcessEx
- ____main endp
- code ends
- end main