Hello World на ассемблер. Компоновка с системной библиотекой Си - Assembler/NASM
Формулировка задачи:
Доброго времени суток.
Нужно написать программу Hello World на NASM windows x64.
Делаю все по методичке с той лишь разницей, что изменяю действия под х64.
Запустил скрипт vcvars64.bat, переписал программу
Ассемблирую файл hello.asm командой:
extern printf extern exit global mystart section .text mystart: push msg call printf add esp, 4 push dword 0 call exit section .data msg: db 'hello world', 13, 10, 0
nasm -f win64 hello1.asm
Компаную:link /subsystem:console /entry:mystart hello1.obj msvcrt.lib
Но после компановки мне выдает сообщение: неразрешенный символ "printf" и "exit". Я так понял, исходя из методички, скомпоновав файл с msvcrt.lib можно импортировать символы printf и exit. Но у меня почему то не получается, хотя делаю все по инструкции. Кто подскажет, что я делаю не так и как мне использовать функции из системной библиотеки Си?Решение задачи: «Hello World на ассемблер. Компоновка с системной библиотекой Си»
textual
Листинг программы
"d:\Program Files\SASM\Windows\NASM\nasm.exe" --prefix _ -f win32 %AsmSourceName%.asm d:\masm32\bin\link.exe /SUBSYSTEM:CONSOLE /entry:mystart %AsmSourceName%.obj d:\masm32\lib\msvcrt.lib
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д