Функция
StringReverse обращает строку в обратном порядке, начиная с указанных позиций, заданных в регистрах BL (начальная позиция) и BH (конечная позиция). Если оба регистра BL и BH равны 0, функция обращает всю строку. Если указатель на строку равен 0, функция завершает работу без изменений.
Параметры:- AX: Указатель на строку, завершающуюся (\0) или 0.
- BL: Начальная позиция (индекс) для начала обращения строки.
- BH: Конечная позиция (индекс) для завершения обращения строки.
Возвращаемое значение:- Функция не возвращает значение.
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Функция обращает строку в обратном порядке в пределах указанных позиций.
- Если BL и BH равны 0, обращается вся строка.
- Если указатель на строку равен 0, функция завершает работу без изменений.
ПРИМЕР 1:
Следующий пример демонстрирует как перевернуть всю строку.
- 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
- ________xor_____bx, bx
- ________lea_____ax, ds:[string]
- ________call____StringReverse
- ________call____WriteString
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main
ПРИМЕР 2:
Следующий пример демонстрирует как перевернуть строку с указанной позиции и до конца. В данном примере мы перевернём Евгений Сергеевич.
- 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_____bh, 0
- ________mov_____bl, 11
- ________lea_____ax, ds:[string]
- ________call____StringReverse_
- ________call____WriteString
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main
ПРИМЕР 3:
Следующий пример демонстрирует как перевернуть строку с указанной позиции и до указанной позиции. В данном примере мы перевернём Евгений.
- 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_____bh, 18
- ________mov_____bl, 11
- ________lea_____ax, ds:[string]
- ________call____StringReverse
- ________call____WriteString
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main