Hello World на ассемблер. Компоновка с системной библиотекой Си - Assembler/NASM

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Нужно написать программу Hello World на NASM windows x64. Делаю все по методичке с той лишь разницей, что изменяю действия под х64.
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
Запустил скрипт vcvars64.bat, переписал программу Ассемблирую файл hello.asm командой:

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5