Note that there are some explanatory texts on larger screens.

plurals
  1. POInsertion sort in assembler doesn't work
    text
    copied!<p>I have to do insertion sort of numbers in NASM. I have a file which generates random numbers and generate output file with numbers in binary form. My program loads this as input file and should give output with numbers sorted using insertion sort, also in binary form.</p> <p>My code:</p> <pre><code>; Template assembler source file section .text global _start _start: ; put your code here mov eax, 3 mov ebx, 0 mov ecx, array mov edx, 4*32768 int 80h mov [fileLength], eax shr eax,2 dec eax mov [number], eax mov ebx, 1 outerloop: mov ecx,[array + 4*ebx] mov [item],ecx mov ecx,ebx interloop: mov edx,ecx dec edx mov esi, [array + 4*edx] cmp esi,[array + 4*ecx] jb koniec mov eax,[array + 4*edx] mov [array + 4*ecx],eax loop interloop koniec: mov edx,[item] mov [array + 4*ecx],edx inc ebx cmp ebx,[number] jne outerloop mov eax, 4 mov ebx, 1 mov ecx, array mov edx, [fileLength] int 80h ; exit to linux mov eax,1 mov ebx,0 int 80h ; initialized data section ; use directives DB (byte), DW (word), DD (doubleword), DQ (quadword) section .data ; uninitialized data section ; use directives RESB (byte), RESW (word), RESD (doubleword), RESQ (quadword) section .bss fileLength resd 1 number resd 1 array resd 32768 item resd 1 </code></pre> <p>Pseudo code that I used to write insertion sort:</p> <pre><code>for i ← 1 to i ← length(A)-1 { // A[ i ] is added in the sorted sequence A[0, .. i-1] // save A[i] to make a hole at index iHole item ← A[i] iHole ← i // keep moving the hole to next smaller index until A[iHole - 1] is &lt;= item while iHole &gt; 0 and A[iHole - 1] &gt; item { // move hole to next smaller index A[iHole] ← A[iHole - 1] iHole ← iHole - 1 } // put item in the hole A[iHole] ← item } </code></pre> <p>source: <a href="http://en.wikipedia.org/wiki/Insertion_sort" rel="nofollow">http://en.wikipedia.org/wiki/Insertion_sort</a></p> <p>My knowledge about it is pretty small and I don't know what goes wrong. It sometimes sorts first few numbers but the rest of them is not sorted correctly.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload