Объединение множеств ассемблер

есть следующее задание. Даны два множества заданные в виде массивов А(I) и В(I); I=1,2,..,10. Найти сумму (об’единение) множеств. C(J) - сумма двух множеств есть множество всех элементов принадлежащих А или В. Например, {1,2,3} U {2,3,4} = {1,2,3,4}. Задачу добавления нового элемента массива оформить в виде подпрограммы. Программа работает не корректно, как можно исправить?

.stack 100h
.data
timeCx dw ? ;
A db 1,3,4,6,7,9,12,13,15,16
B db 1,2,4,5,7,8,10,13,15,17
C db 20 dup (0)
len equ 10;
.code

start:
push @data ;инициализируем ds физическим адресом данных
pop ds ;
mov cx,len ;
xor si,si ;
xor di,di ;
xor ax,ax ;обнулили

mov timeCx, 0 ; Количество элементов в массиве С пока нулевое
    mov si, offset A ; Указатель в массиве A
    mov di, offset C ; Указатель в массиве C
    mov cx, len ; Цикл будет по числу элементов в массиве A
copying:
    mov al, [si] ; Прочли элемент из массива A
    mov [di], al ; Записали его в массив C
    inc si ; Продвинули указатель в массиве A
    inc di ; Продвинули указатель в массиве C
    inc timeCx ; В массиве C стало на один элемент больше
    loop    copying ; Завернули цикл len раз
; Значение регистра DI тут можно дальше использовать
; как указатель для продолжения заполнения массива C
exit: 
mov ax, 4c00h
int 21h
end start

Ответы (0 шт):