Из массива Х размером 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 остается только уникальные элементы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д