Функция
ArrayMakeUnique копирует уникальные элементы из первого массива во второй массив.
Параметры:- DS:AX: Указатель на первый массив (источник).
- ES:BX: Указатель на второй массив (назначение).
- CX:____Длина первого массива (количество элементов). Если CX = 0, функция завершает работу.
Возвращаемое значение:- CX: Количество уникальных элементов, скопированных из первого массива во второй массив.
Состояние флагов:- Функция не изменяет состояние флагов.
Особенности:- Если элемент уже присутствует во втором массиве, он не копируется повторно.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____origin dw _7, 5, 8, 3, 7, 5, 6, 3, 8
- ___________dw _1, 9, 5
- ____arrlen equ ($-origin) / 2
- ____unique 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:[unique]
- ________lea_____ax, ds:[origin]
- ________call____ArrayMakeUnique
- ____PrintArrayLoop:
- ________push____word ptr[bx]
- ________lea_____ax, ds:[fmtout]
- ________call____PrintFormatString
- ________add_____sp, 2
- ________incw____bx
- ________loop____PrintArrayLoop
- ________xor_____al, al
- ________call____ExitProcess
- ____main endp
- code ends
- end main