Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "io.inc"
- section .bss
- n resd 1
- a resd 10000
- section .text
- swap:
- push ebp
- mov ebp, esp
- push ebx
- mov eax, dword[ebp + 8]; p1
- mov ebx, dword[ebp + 12]; p2
- mov eax, dword[eax]
- PRINT_DEC 4, eax
- NEWLINE
- mov ebx, dword[ebx]
- PRINT_DEC 4, ebx
- NEWLINE
- mov eax, dword[ebp + 8]; p1
- mov ebx, dword[ebp + 12]; p2
- mov edx, dword[eax]
- mov dword[eax], ebx
- mov dword[ebx], eax
- pop ebx
- mov esp, ebp
- pop ebp
- ret
- sort:
- push ebp
- mov ebp, esp
- push ebx
- ;dword[ebp + 8] pointer to a
- ;dword[ebp + 12] n
- .loop1:
- mov ebx, 1
- .loop2:
- mov ecx, dword[ebp + 8]; a
- mov ecx, dword[ecx + 4 * ebx - 4]; a[i - 1]
- mov edx, dword[ebp + 8]; a
- mov edx, dword[edx + 4 * ebx]; a[i]
- cmp ecx, edx
- jng .skip
- ;swap a[i - 1], a[i]
- mov ecx, dword[ebp + 8]
- lea ecx, [ecx + 4 * ebx - 4]
- mov edx, dword[ebp + 8]
- lea edx, [edx + 4 * ebx]
- push ecx
- push edx
- call swap
- pop edx
- pop edx
- .skip:
- inc ebx
- cmp ebx, dword[ebp + 12]
- jl .loop2
- dec dword[ebp + 12]
- cmp dword[ebp + 12], 0
- jg .loop1
- pop ebx
- mov esp, ebp
- pop ebp
- ret
- global CMAIN
- CMAIN:
- GET_DEC 4, n
- xor eax, eax
- .input_loop:
- GET_DEC 4, [a + 4 * eax]
- inc eax
- cmp eax, dword[n]
- jl .input_loop
- push dword[n]
- push a
- call sort
- pop edx
- pop edx
- xor eax, eax
- .output_loop:
- PRINT_DEC 4, [a + 4 * eax]
- PRINT_CHAR " "
- inc eax
- cmp eax, dword[n]
- jl .output_loop
- .break:
- xor eax, eax
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement