| .486 |
| .model flat |
| extrn __fltused:near |
| extrn __ftol:near |
| _DATA segment |
| public _in |
| align 4 |
| _in label byte |
| dd 10 |
| dd 32 |
| dd -1 |
| dd 567 |
| dd 3 |
| dd 18 |
| dd 1 |
| dd -51 |
| dd 789 |
| dd 0 |
| public _main |
| _DATA ends |
| _TEXT segment |
| _main: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,4 |
| push 10 |
| lea edi,(_in) |
| push edi |
| call _sort |
| add esp,8 |
| mov dword ptr (-4)[ebp],0 |
| jmp L5 |
| L2: |
| mov edi,dword ptr (-4)[ebp] |
| mov edi,dword ptr (_in)[edi*4] |
| push edi |
| call _putd |
| add esp,4 |
| push 10 |
| call _putchar |
| add esp,4 |
| L3: |
| inc dword ptr (-4)[ebp] |
| L5: |
| mov edi,dword ptr (-4)[ebp] |
| cmp edi,10 |
| jb L2 |
| mov eax,0 |
| L1: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _putd |
| _putd: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| cmp dword ptr (20)[ebp],0 |
| jge L7 |
| push 45 |
| call _putchar |
| add esp,4 |
| neg dword ptr (20)[ebp] |
| L7: |
| mov eax,dword ptr (20)[ebp] |
| mov edi,10 |
| cdq |
| idiv edi |
| cmp eax,0 |
| je L9 |
| mov eax,dword ptr (20)[ebp] |
| mov edi,10 |
| cdq |
| idiv edi |
| push eax |
| call _putd |
| add esp,4 |
| L9: |
| mov eax,dword ptr (20)[ebp] |
| mov edi,10 |
| cdq |
| idiv edi |
| lea edi,(48)[edx] |
| push edi |
| call _putchar |
| add esp,4 |
| mov eax,0 |
| L6: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _sort |
| _sort: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| mov edi,dword ptr (24)[ebp] |
| sub edi,1 |
| mov dword ptr (24)[ebp],edi |
| push edi |
| push 0 |
| mov edi,dword ptr (20)[ebp] |
| mov dword ptr (_xx),edi |
| push edi |
| call _quick |
| add esp,12 |
| mov eax,0 |
| L11: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _quick |
| _quick: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,4 |
| mov edi,dword ptr (28)[ebp] |
| cmp dword ptr (24)[ebp],edi |
| jl L13 |
| mov eax,0 |
| jmp L12 |
| L13: |
| mov edi,dword ptr (28)[ebp] |
| push edi |
| mov edi,dword ptr (24)[ebp] |
| push edi |
| mov edi,dword ptr (20)[ebp] |
| push edi |
| call _partition |
| add esp,12 |
| mov dword ptr (-4)[ebp],eax |
| mov edi,dword ptr (-4)[ebp] |
| sub edi,1 |
| push edi |
| mov edi,dword ptr (24)[ebp] |
| push edi |
| mov edi,dword ptr (20)[ebp] |
| push edi |
| call _quick |
| add esp,12 |
| mov edi,dword ptr (28)[ebp] |
| push edi |
| mov edi,dword ptr (-4)[ebp] |
| lea edi,(1)[edi] |
| push edi |
| mov edi,dword ptr (20)[ebp] |
| push edi |
| call _quick |
| add esp,12 |
| mov eax,0 |
| L12: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _partition |
| _partition: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,8 |
| inc dword ptr (28)[ebp] |
| mov edi,dword ptr (24)[ebp] |
| mov dword ptr (-8)[ebp],edi |
| mov edi,dword ptr (-8)[ebp] |
| mov esi,dword ptr (20)[ebp] |
| mov edi,dword ptr [esi][edi*4] |
| mov dword ptr (-4)[ebp],edi |
| jmp L17 |
| L16: |
| inc dword ptr (24)[ebp] |
| jmp L20 |
| L19: |
| inc dword ptr (24)[ebp] |
| L20: |
| mov edi,dword ptr (24)[ebp] |
| mov esi,dword ptr (20)[ebp] |
| mov ebx,dword ptr (-4)[ebp] |
| cmp dword ptr [esi][edi*4],ebx |
| jl L19 |
| dec dword ptr (28)[ebp] |
| jmp L23 |
| L22: |
| dec dword ptr (28)[ebp] |
| L23: |
| mov edi,dword ptr (28)[ebp] |
| mov esi,dword ptr (20)[ebp] |
| mov ebx,dword ptr (-4)[ebp] |
| cmp dword ptr [esi][edi*4],ebx |
| jg L22 |
| mov edi,dword ptr (28)[ebp] |
| cmp dword ptr (24)[ebp],edi |
| jge L25 |
| mov edi,dword ptr (20)[ebp] |
| mov esi,dword ptr (28)[ebp] |
| lea esi,[edi][esi*4] |
| push esi |
| mov esi,dword ptr (24)[ebp] |
| lea edi,[edi][esi*4] |
| push edi |
| call _exchange |
| add esp,8 |
| L25: |
| L17: |
| mov edi,dword ptr (28)[ebp] |
| cmp dword ptr (24)[ebp],edi |
| jl L16 |
| mov edi,dword ptr (20)[ebp] |
| mov esi,dword ptr (28)[ebp] |
| lea esi,[edi][esi*4] |
| push esi |
| mov esi,dword ptr (-8)[ebp] |
| lea edi,[edi][esi*4] |
| push edi |
| call _exchange |
| add esp,8 |
| mov eax,dword ptr (28)[ebp] |
| L15: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _exchange |
| _exchange: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,4 |
| mov edi,dword ptr (_xx) |
| mov esi,4 |
| mov ebx,dword ptr (24)[ebp] |
| sub ebx,edi |
| mov eax,ebx |
| cdq |
| idiv esi |
| push eax |
| mov ebx,dword ptr (20)[ebp] |
| sub ebx,edi |
| mov eax,ebx |
| cdq |
| idiv esi |
| push eax |
| lea edi,(L28) |
| push edi |
| call _printf |
| add esp,12 |
| mov edi,dword ptr (20)[ebp] |
| mov esi,dword ptr [edi] |
| mov dword ptr (-4)[ebp],esi |
| mov esi,dword ptr (24)[ebp] |
| mov esi,dword ptr [esi] |
| mov dword ptr [edi],esi |
| mov edi,dword ptr (24)[ebp] |
| mov esi,dword ptr (-4)[ebp] |
| mov dword ptr [edi],esi |
| mov eax,0 |
| L27: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| _TEXT ends |
| extrn _printf:near |
| _TEXT segment |
| _TEXT ends |
| extrn _putchar:near |
| _TEXT segment |
| _TEXT ends |
| _DATA segment |
| public _xx |
| align 4 |
| _xx label byte |
| db 4 dup (0) |
| _DATA ends |
| _TEXT segment |
| align 1 |
| L28 label byte |
| db 101 |
| db 120 |
| db 99 |
| db 104 |
| db 97 |
| db 110 |
| db 103 |
| db 101 |
| db 40 |
| db 37 |
| db 100 |
| db 44 |
| db 37 |
| db 100 |
| db 41 |
| db 10 |
| db 0 |
| _TEXT ends |
| end |