Функция
ArraySort выполняет сортировку массива по возрастанию или по убыванию в зависимости от значения параметра CL.
Параметры:- DS:AX: Указатель на массив.
- BX: ___Длина массива (количество элементов). Если BX = 0, функция завершает работу.
- CL:____Режим сортировки:
Если
CL = ASCENDING, массив сортируется по возрастанию.
Если
CL = DESCENDING, массив сортируется по убыванию
Возвращаемое значение:- Функция не возвращает значений.
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Функция сортирует массив на месте, используя алгоритм сортировки (например, пузырьковую сортировку).
- Функция не изменяет значения регистров.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____array__dw__5, 5, 2, 6, 5, 10, 4, 2
- ___________dw__10, 0, 0, 1, 8, 2, 3, 9
- ___________dw__0, 7
- ____arrlen equ ($-array) / 2
- ____arrbuf dw__arrlen dup(0)
- ____fmtout db__"[%d] \0"
- data ends
- code segment public
- ____assume _ds:data, cs:code
- ____include Handyfar.inc
- ____include Handymac.inc
- ____main proc
- ________call____SetDataSegment
- ________mov_____cx, arrlen
- ________lea_____bx, es:[arrbuf]
- ________lea_____ax, ds:[array]
- ________call____ArrayMakeUnique
- ________xchg____bx, cx
- ________mov_____cl, DESCENDING
- ________lea_____ax, ds:[arrbuf]
- ________call____ArraySort
- ________lea_____si, ds:[arrbuf]
- ____PrintArrayLoop:
- ________push____word ptr[si]
- ________lea_____ax, ds:[fmtout]
- ________call____PrintFormatString
- ________add_____sp, 2
- ________incw____si
- ________loop____PrintArrayLoop
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main