; Да се напише подпрограма, която да сортира във възходящ ред по метода на ; вмъкването масив от думи със знак с начален адрес в регистър RDI и брой ; елементи (поне 2) в регистър RSI. ;void insertionSort(vector& toSort) // Из книгата "Теоретични ;{ // алгоритми на C++" от ; for (int i = 0; i < toSort.size(); ++i) // Кевин де Кайзер (2015 г.) ; for (int j = i - 1; j >= 0; --j) ; if (toSort[j+1] < toSort[j]) ; swap(toSort[j], toSort[j+1]); ; else // Тези 2 реда ги няма в ; break; // горепосочената книга! ;} ; Нека индексът на външния цикъл (i) е RDX, а на вътрешния (j) е RAX. option prologue:none, epilogue:none .code inssort proc _inssort proc .for (RDX = 0: RDX < RSI: RDX++) .for (RAX = RDX, RAX--: !sign?: RAX--) MOV RCX,[RDI+8*RAX+8]; if (toSort[j+1] CMP RCX,[RDI+8*RAX] ; < toSort[j]) .break .if (!less?) XCHG RCX,[RDI+8*RAX] ; swap(toSort[j], MOV [RDI+8*RAX+8],RCX; toSort[j+1]; .endfor .endfor RET _inssort endp inssort endp end