global main section .data arr1: dq 3,-5,7,21,-3,12,0,11,-14,2 arr2: dq 0,0,0,0,0,0,0,0,0,0 section .text main: ;-- Копирование отрицательных элементов во временный массив xor rsi,rsi ;Индекс элемента исходного массива xor rdi,rdi ;Индекс элемента конечного массива mov rcx,10 loopone: mov rbx,arr1 mov rax,[rbx+rsi] cmp rax,0 jl copyit jmp donotcopyit copyit: mov rbx,arr2 mov [rbx+rdi],rax add rdi,8 donotcopyit: add rsi,8 loop loopone ;;--Сортировка отрицательных элементов по возрастанию xor rcx,rcx mov rax,rdi mov bl,8;> div bl ;> Количество элементов, а не байтов xor rdx,rdx mov dl,al ; Количество отобранных отрицательных элементов mov rcx,rdx ; В дебаге здесь 3, все ок ; dec rcx ; от i = 0 до COUNT-1 xor rsi,rsi ; Индексатор для внешнего цикла xor rbp,rbp ; Индекс минимального элемента outta_loop: push rcx ; Сохраняем счетчик xor rdi,rdi ; Индексатор для внутреннего цикла add rdi,8; Начать с j+1(2) mov rcx,rdx dec rcx ; Проходится не вся последовательность inner_loop: mov rax,[arr2+rdi] push rdi mov rdi,rbp cmp rax,[arr2+rdi] pop rdi jl less jmp noe less: mov rbp,rdi noe: add rdi,8 loop inner_loop mov rax,[arr2+rsi] push rsi mov rsi,rbp xchg rax,[arr2+rsi] pop rsi mov [arr2+rsi],rax pop rcx ; Восстанавливаем счетчик add rsi,8 loop outta_loop ;======В arr2 получаем отсортированные отрицательные элементы. Вроде как все верно. mov rcx,10 xor rsi,rsi mov rdi,rdx ; Количество отрицательных в arr2 | Вроде здесь лежит 3 mov rax,8 mul rdi mov rdi,rax shiet_loop: mov rax,[arr1+rsi] cmp rax,0 jge poesitive jmp negative poesitive: mov [arr2+rdi],rax add rdi,8 negative: add rsi,8 loop shiet_loop ;=====Массивом результата будет arr1 kek: ;finedin meax (rdx) mov rcx,9 xor rsi,rsi mov rdx,[arr2 + rsi] add rsi,8 meax_loop: mov rax,[arr2 + rsi] cmp rax,rdx jg meax jmp nonmeax meax: mov rdx,rax nonmeax: add rsi,8 loop meax_loop kek1488: sub rsi,8 add rdx,[arr2 + rsi] mov rax,rdx xor rdx,rdx mov rsi,2 kek14885: div rsi kek148855: mov rdx,rax kek1489: ;==вилкой чисти mov rcx,10 xor rsi,rsi vilkoy_loop: xor rdi,rdi mov [arr1 + rsi],rdi add rsi,8 loop vilkoy_loop xor rsi,rsi xor rdi,rdi mov rcx,10 final_loop: mov rax,[arr2 + rsi] cmp rax,rdx jg greater jmp nyet greater: mov [arr1 + rdi],rax add rdi,8 nyet: add rsi,8 loop final_loop kek3: ret