1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
| include irvine32.inc .data a dd 12,50,56,79,30,66,21,11,6 .code main proc push offset a push lengthof a call outputarr
push offset a push lengthof a call slectsort
push offset a push lengthof a call outputarr
exit main endp
swap proc push ebp mov ebp,esp pushad
mov eax,[ebp+12] mov ebx,[ebp+8] mov ecx,[eax] mov edx,[ebx] mov [eax],edx mov [ebx],ecx popad pop ebp
ret 8 swap endp
slectsort proc push ebp mov ebp,esp pushad
mov ebx,[ebp+12] mov ecx,[ebp+8] mov esi,0 again_1: mov eax,ecx dec eax cmp esi,eax jge final mov eax,esi mov edi,esi inc edi again_2: cmp edi,ecx jge next mov edx,[ebx+edi*4] cmp edx,[ebx+eax*4] jge L mov eax,edi L: inc edi jmp again_2 next: lea edx,[ebx+eax*4] push edx lea edx,[ebx+esi*4] push edx call swap inc esi jmp again_1 final: popad pop ebp ret 8 slectsort endp
outputarr proc push ebp mov ebp,esp pushad
mov ecx,[ebp+8] mov edi,[ebp+12] mov esi,0 again: cmp esi,ecx jge final mov eax,[a+esi*4] call writedec mov al,' ' call writechar inc esi jmp again final: call crlf
popad pop ebp ret 8 outputarr endp
end main
|