Я пытаюсь скомпилировать эту программу под NASM (x86-64, Windows).
; prime.asm
global _main
extern _scanf
extern _printf
section .data:
n: dd 0
i: dd 2
format_string_scanf: db '%d', 0x0A
format_string_no_printf: db 'The number %d is not prime', 0x0A
format_string_yes_printf: db 'The number %d is prime', 0x0A
section .text
_main:
push n
push format_string_scanf
call _scanf
cmp dword [n], 1
je NOT_PRIME
cmp dword [n], 0
je NOT_PRIME
FOR_LOOP:
mov eax, [i]
mul dword [i]
cmp eax, [n]
jg IS_PRIME
mov edx, 0
mov eax, [n]
div dword [i]
cmp edx, 0
je NOT_PRIME
jmp FOR_LOOP
IS_PRIME:
push qword [n]
push format_string_yes_printf
call _printf
jmp PROGRAM_END
NOT_PRIME:
push qword [n]
push format_string_no_printf
call _printf
PROGRAM_END:
ret
Вот параметры, которые я использую:
nasm.exe -f win64 -o prime.obj prime.asm
link.exe prime.obj /subsystem:console /entry:_main
NASM работает нормально, однакоlink.exe
выдает 2 ошибки:
prime.obj : error LNK2001: unresolved external symbol _scanf
prime.obj : error LNK2001: unresolved external symbol _printf
prime.obj : fatal error LNK1120: 2 unresolved externals
Я полагаю, что он не в состоянии связаться с C Runtime так или иначе. Может кто-нибудь помочь мне решить эти 2 ошибки?