Из массива Х размером nx, сформировать массив Y размером ny, что бы элементы из массива X не повторялись в Y - Assembler
Формулировка задачи:
Вот что получилось, но почему-то не удаляет повторяющиеся элементы
Листинг программы
- mov esi,0
- mov ecx,nx
- mov ebx,0
- C1:
- push ecx
- mov ecx,nx
- mov edi,0
- mov col,0
- mov eax,x[esi*4]
- C2:
- cmp eax,x[edi*4]
- je m2
- inc col
- inc edi
- loop C2
- cmp col,1
- jne m2
- mov y[ebx*4],eax
- inc ebx
- m2:
- pop ecx
- inc esi
- loop C1
- mov ny,ebx
Решение задачи: «Из массива Х размером nx, сформировать массив Y размером ny, что бы элементы из массива X не повторялись в Y»
textual
Листинг программы
- x dd 1, 2, 3, 1, 5, 3
- nx = ($ - x) / 4
- y dd nx dup (-1)
- start:
- xor ebx, ebx
- mov esi, x
- @@:
- cmp esi, y
- je @exit
- lodsd
- mov ecx, ebx
- mov edi, y
- repne scasd
- jz @b
- mov [y + ebx*4], eax
- inc ebx
- jmp @b
- @exit:
Объяснение кода листинга программы
- Задается размер массива X - nx, который равен разнице между последним элементом массива X и адресом X в памяти, деленной на 4.
- Инициализируется массив Y размером ny, равным nx, но с заполнителем (-1).
- В цикле сравниваются элементы массива X с элементами массива Y. Если элемент X встречается в массиве Y, то он пропускается.
- Если элемент X не встречается в массиве Y, то он копируется в массив Y.
- После обработки всех элементов массива X, в массиве Y остается только уникальные элементы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д