Функция
ArrayMergeSortEx объединяет два массива в третий массив и сортирует его в порядке возрастания. Функция
ArrayMergeSortEx автоматически выравнивает стек на 12 байт.
Параметры:- Указатель на первый массив.
- Указатель на второй массив.
- Указатель на третий массив, в который будут объединены первые два массива.
- Длина первого массива.
- Длина второго массива.
- ASCENDING = массив сортируется по возрастанию, DESCENDING = массив сортируется по убыванию
Возвращаемое значение:- CX: Количество элементов в третьем массиве.
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Функция не изменяет значения регистров, кроме CX.
- title Автор: Довгополов Евгений Сергеевич
- .286C
- .model small
- .stack 100h
- data segment public
- ____arrayA__dw__4, 5, 2, 3
- ____arrAlen equ ($-arrayA) / 2
- ____arrayB__dw__2, 6, 3, 1, 7, 8
- ____arrBlen equ ($-arrayB) / 2
- ____arrayC__dw__arrAlen + arrBlen 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
- ________push____DESCENDING
- ________push____arrBlen
- ________push____arrAlen
- ________pushs___ds:[arrayC]
- ________pushs___es:[arrayB]
- ________pushs___ds:[arrayA]
- ________call____ArrayMergeSortEx
- ________leabx___ds:[arrayC]
- ________xor_____si, si
- ____PrintArrayLoop:
- ________push____word ptr[bx+si]
- ________leaax___ds:[fmtout]
- ________call____PrintFormatString
- ________add_____sp, 2
- ________incw____si
- ________loop____PrintArrayLoop
- ________push____0
- ________call____ExitProcessEx
- ____main endp
- code ends
- end main