You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
881 B
NASM
79 lines
881 B
NASM
global main
|
|
extern printf
|
|
extern scanf
|
|
extern qsort
|
|
|
|
section .text
|
|
main:
|
|
; read N
|
|
push n
|
|
push readn
|
|
call scanf
|
|
add esp ,8
|
|
|
|
; read loop for x
|
|
xor ebx, ebx
|
|
|
|
loop1:
|
|
cmp bx, word [n]
|
|
je nya1
|
|
lea eax, [x + 4 * ebx]
|
|
push eax
|
|
push nya
|
|
call scanf
|
|
add esp, 8
|
|
inc ebx
|
|
jmp loop1
|
|
|
|
nya1:
|
|
push compare
|
|
push dword 4
|
|
push dword [n]
|
|
push x
|
|
call qsort
|
|
add esp, 16
|
|
|
|
xor ebx, ebx
|
|
|
|
loop2:
|
|
cmp ebx, dword [n]
|
|
je nya2
|
|
lea eax, [x + 4 * ebx]
|
|
|
|
xor edx, edx
|
|
mov edx, dword [eax]
|
|
push edx
|
|
push write
|
|
call printf
|
|
add esp, 8
|
|
inc ebx
|
|
jmp loop2
|
|
|
|
nya2:
|
|
xor eax, eax
|
|
ret
|
|
|
|
compare:
|
|
xor edx, edx
|
|
xor ecx, ecx
|
|
lea eax, [esp+4]
|
|
mov eax, [eax]
|
|
mov ecx, dword [eax]
|
|
|
|
lea ebx, [esp+8]
|
|
mov ebx, [ebx]
|
|
mov edx, dword [ebx]
|
|
sub ecx, edx
|
|
;mov ax, cx
|
|
;cwde
|
|
mov eax, ecx
|
|
ret
|
|
|
|
section .data
|
|
write db "%d ", 0
|
|
nya db "%d", 0
|
|
readn db "%d", 0
|
|
section .bss
|
|
n resd 1
|
|
x resd 10000
|