sort.sbk (4248B)
1 .486 2 .model flat 3 extrn __fltused:near 4 extrn __ftol:near 5 _DATA segment 6 public _in 7 align 4 8 _in label byte 9 dd 10 10 dd 32 11 dd -1 12 dd 567 13 dd 3 14 dd 18 15 dd 1 16 dd -51 17 dd 789 18 dd 0 19 public _main 20 _DATA ends 21 _TEXT segment 22 _main: 23 push ebx 24 push esi 25 push edi 26 push ebp 27 mov ebp,esp 28 sub esp,4 29 push 10 30 lea edi,(_in) 31 push edi 32 call _sort 33 add esp,8 34 mov dword ptr (-4)[ebp],0 35 jmp L5 36 L2: 37 mov edi,dword ptr (-4)[ebp] 38 mov edi,dword ptr (_in)[edi*4] 39 push edi 40 call _putd 41 add esp,4 42 push 10 43 call _putchar 44 add esp,4 45 L3: 46 inc dword ptr (-4)[ebp] 47 L5: 48 mov edi,dword ptr (-4)[ebp] 49 cmp edi,10 50 jb L2 51 mov eax,0 52 L1: 53 mov esp,ebp 54 pop ebp 55 pop edi 56 pop esi 57 pop ebx 58 ret 59 public _putd 60 _putd: 61 push ebx 62 push esi 63 push edi 64 push ebp 65 mov ebp,esp 66 cmp dword ptr (20)[ebp],0 67 jge L7 68 push 45 69 call _putchar 70 add esp,4 71 neg dword ptr (20)[ebp] 72 L7: 73 mov eax,dword ptr (20)[ebp] 74 mov edi,10 75 cdq 76 idiv edi 77 cmp eax,0 78 je L9 79 mov eax,dword ptr (20)[ebp] 80 mov edi,10 81 cdq 82 idiv edi 83 push eax 84 call _putd 85 add esp,4 86 L9: 87 mov eax,dword ptr (20)[ebp] 88 mov edi,10 89 cdq 90 idiv edi 91 lea edi,(48)[edx] 92 push edi 93 call _putchar 94 add esp,4 95 mov eax,0 96 L6: 97 mov esp,ebp 98 pop ebp 99 pop edi 100 pop esi 101 pop ebx 102 ret 103 public _sort 104 _sort: 105 push ebx 106 push esi 107 push edi 108 push ebp 109 mov ebp,esp 110 mov edi,dword ptr (24)[ebp] 111 sub edi,1 112 mov dword ptr (24)[ebp],edi 113 push edi 114 push 0 115 mov edi,dword ptr (20)[ebp] 116 mov dword ptr (_xx),edi 117 push edi 118 call _quick 119 add esp,12 120 mov eax,0 121 L11: 122 mov esp,ebp 123 pop ebp 124 pop edi 125 pop esi 126 pop ebx 127 ret 128 public _quick 129 _quick: 130 push ebx 131 push esi 132 push edi 133 push ebp 134 mov ebp,esp 135 sub esp,4 136 mov edi,dword ptr (28)[ebp] 137 cmp dword ptr (24)[ebp],edi 138 jl L13 139 jmp L12 140 L13: 141 mov edi,dword ptr (28)[ebp] 142 push edi 143 mov edi,dword ptr (24)[ebp] 144 push edi 145 mov edi,dword ptr (20)[ebp] 146 push edi 147 call _partition 148 add esp,12 149 mov dword ptr (-4)[ebp],eax 150 mov edi,dword ptr (-4)[ebp] 151 sub edi,1 152 push edi 153 mov edi,dword ptr (24)[ebp] 154 push edi 155 mov edi,dword ptr (20)[ebp] 156 push edi 157 call _quick 158 add esp,12 159 mov edi,dword ptr (28)[ebp] 160 push edi 161 mov edi,dword ptr (-4)[ebp] 162 lea edi,(1)[edi] 163 push edi 164 mov edi,dword ptr (20)[ebp] 165 push edi 166 call _quick 167 add esp,12 168 mov eax,0 169 L12: 170 mov esp,ebp 171 pop ebp 172 pop edi 173 pop esi 174 pop ebx 175 ret 176 public _partition 177 _partition: 178 push ebx 179 push esi 180 push edi 181 push ebp 182 mov ebp,esp 183 sub esp,8 184 inc dword ptr (28)[ebp] 185 mov edi,dword ptr (24)[ebp] 186 mov dword ptr (-8)[ebp],edi 187 mov edi,dword ptr (-8)[ebp] 188 mov esi,dword ptr (20)[ebp] 189 mov edi,dword ptr [esi][edi*4] 190 mov dword ptr (-4)[ebp],edi 191 jmp L17 192 L16: 193 inc dword ptr (24)[ebp] 194 jmp L20 195 L19: 196 inc dword ptr (24)[ebp] 197 L20: 198 mov edi,dword ptr (24)[ebp] 199 mov esi,dword ptr (20)[ebp] 200 mov ebx,dword ptr (-4)[ebp] 201 cmp dword ptr [esi][edi*4],ebx 202 jl L19 203 dec dword ptr (28)[ebp] 204 jmp L23 205 L22: 206 dec dword ptr (28)[ebp] 207 L23: 208 mov edi,dword ptr (28)[ebp] 209 mov esi,dword ptr (20)[ebp] 210 mov ebx,dword ptr (-4)[ebp] 211 cmp dword ptr [esi][edi*4],ebx 212 jg L22 213 mov edi,dword ptr (28)[ebp] 214 cmp dword ptr (24)[ebp],edi 215 jge L25 216 mov edi,dword ptr (20)[ebp] 217 mov esi,dword ptr (28)[ebp] 218 lea esi,[edi][esi*4] 219 push esi 220 mov esi,dword ptr (24)[ebp] 221 lea edi,[edi][esi*4] 222 push edi 223 call _exchange 224 add esp,8 225 L25: 226 L17: 227 mov edi,dword ptr (28)[ebp] 228 cmp dword ptr (24)[ebp],edi 229 jl L16 230 mov edi,dword ptr (20)[ebp] 231 mov esi,dword ptr (28)[ebp] 232 lea esi,[edi][esi*4] 233 push esi 234 mov esi,dword ptr (-8)[ebp] 235 lea edi,[edi][esi*4] 236 push edi 237 call _exchange 238 add esp,8 239 mov eax,dword ptr (28)[ebp] 240 L15: 241 mov esp,ebp 242 pop ebp 243 pop edi 244 pop esi 245 pop ebx 246 ret 247 public _exchange 248 _exchange: 249 push ebx 250 push esi 251 push edi 252 push ebp 253 mov ebp,esp 254 sub esp,4 255 mov edi,dword ptr (_xx) 256 mov esi,4 257 mov ebx,dword ptr (24)[ebp] 258 sub ebx,edi 259 mov eax,ebx 260 cdq 261 idiv esi 262 push eax 263 mov ebx,dword ptr (20)[ebp] 264 sub ebx,edi 265 mov eax,ebx 266 cdq 267 idiv esi 268 push eax 269 lea edi,(L28) 270 push edi 271 call _printf 272 add esp,12 273 mov edi,dword ptr (20)[ebp] 274 mov esi,dword ptr [edi] 275 mov dword ptr (-4)[ebp],esi 276 mov esi,dword ptr (24)[ebp] 277 mov esi,dword ptr [esi] 278 mov dword ptr [edi],esi 279 mov edi,dword ptr (24)[ebp] 280 mov esi,dword ptr (-4)[ebp] 281 mov dword ptr [edi],esi 282 mov eax,0 283 L27: 284 mov esp,ebp 285 pop ebp 286 pop edi 287 pop esi 288 pop ebx 289 ret 290 _TEXT ends 291 extrn _printf:near 292 _TEXT segment 293 _TEXT ends 294 extrn _putchar:near 295 _TEXT segment 296 _TEXT ends 297 _DATA segment 298 public _xx 299 align 4 300 _xx label byte 301 db 4 dup (0) 302 _DATA ends 303 _TEXT segment 304 align 1 305 L28 label byte 306 db 101 307 db 120 308 db 99 309 db 104 310 db 97 311 db 110 312 db 103 313 db 101 314 db 40 315 db 37 316 db 100 317 db 44 318 db 37 319 db 100 320 db 41 321 db 10 322 db 0 323 _TEXT ends 324 end