Функция
ArrayMergeSort объединяет два массива в третий массив и сортирует его в порядке возрастания.
Параметры:- DS:AX: Указатель на первый массив.
- ES:BX: Указатель на второй массив.
- DS:CX: Указатель на третий массив, в _______который будут объединены первые _______два массива.
- SI: ___Длина первого массива. Если
_________SI = 0, функция завершает работу.
- DI: ___Длина второго массива. Если
_________DI = 0, функция завершает работу.
Возвращаемое значение:- CX: Количество элементов в третьем массиве.
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Функция не изменяет значения регистров, кроме CX.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____arrayC _dw _4, 5, 2, 3
- ____arrClen equ ($-arrayC) / 2
- ____arrayD _dw _2, 6, 3, 1, 7, 8
- ____arrDlen equ ($-arrayD) / 2
- ____arrayB _dw__arrClen + arrDlen 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_____di, arrDlen
- ________mov_____si, arrClen
- ________lea_____cx, ds:[arrayB]
- ________lea_____bx, es:[arrayD]
- ________lea_____ax, ds:[arrayC]
- ________call____ArrayMergeSort
- ________lea_____si, ds:[arrayB]
- ____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