Archived
Практика
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
%define SUCCESS 0
|
||||
%define MIN_MAX_NUMBER 3
|
||||
%define MAX_MAX_NUMBER 4294967294
|
||||
|
||||
global _main
|
||||
extern _printf
|
||||
extern _scanf
|
||||
extern _malloc
|
||||
extern _free
|
||||
|
||||
SECTION .text
|
||||
_main:
|
||||
enter 0, 0
|
||||
|
||||
;ââîä ìàêñèìàëüíîãî ÷èñëà
|
||||
call input_max_number
|
||||
cmp edx, SUCCESS
|
||||
jne .custom_exit
|
||||
mov [max_number], eax
|
||||
|
||||
;âûäåëÿåì ïàìÿòü äëÿ ìàññèâà ôëàãîâ
|
||||
mov eax, [max_number]
|
||||
call allocate_flags_memory
|
||||
cmp edx, SUCCESS
|
||||
jne .custom_exit
|
||||
mov [primes_pointer], eax
|
||||
|
||||
;îòñåÿòü ñîñòàâíûå ÷èñëà
|
||||
mov eax, [primes_pointer]
|
||||
mov ebx, [max_number]
|
||||
call find_primes_with_eratosthenes_sieve
|
||||
|
||||
;âûâåñòè ÷èñëà
|
||||
mov eax, [primes_pointer]
|
||||
mov ebx, [max_number]
|
||||
call print_primes
|
||||
|
||||
;îñâîáîäèòü ïàìÿòü îò ìàññèâà ôëàãîâ
|
||||
mov eax, [primes_pointer]
|
||||
call free_flags_memory
|
||||
|
||||
;âûõîä
|
||||
.success:
|
||||
push str_exit_success
|
||||
call _printf
|
||||
jmp .return
|
||||
|
||||
.custom_exit:
|
||||
push edx
|
||||
call _printf
|
||||
|
||||
.return:
|
||||
mov eax, SUCCESS
|
||||
leave
|
||||
ret
|
||||
|
||||
%include "functions.asm"
|
||||
|
||||
SECTION .data
|
||||
max_number: dd 0
|
||||
primes_pointer: dd 0
|
||||
|
||||
%include "string_constatns.asm"
|
||||
Reference in New Issue
Block a user