【发布时间】:2014-08-16 21:36:22
【问题描述】:
我正在尝试在 Windows 下的 x86 程序集中运行以下 Hello Word 示例:
global _main
extern _GetStdHandle@4
extern _WriteFile@20
extern _ExitProcess@4
section.text
_main :
; DWORD bytes;
mov ebp, esp
sub esp, 4
; hStdOut = GetstdHandle(STD_OUTPUT_HANDLE)
push - 11
call _GetStdHandle@4
mov ebx, eax
; WriteFile(hstdOut, message, length(message), &bytes, 0);
push 0
lea eax, [ebp - 4]
push eax
push(message_end - message)
push message
push ebx
call _WriteFile@20
; ExitProcess(0)
push 0
call _ExitProcess@4
; never here
hlt
message :
db 'Hello, World', 10
message_end :
但是在尝试链接组装的 .obj 文件时出现以下错误:
错误 LNK2001:无法解析的外部符号 _GetStdHandle@4
错误 LNK2001:无法解析的外部符号 _WriteFile@20
错误 LNK2001:未解析的外部符号 _ExitProcess@4
致命错误 LNK1120:3 个未解决的外部问题
我的例子来源:How to write hello world in assembler under Windows?
如何解决这些问题?或者,为什么这个例子对我不起作用?
【问题讨论】:
标签: windows winapi assembly x86 nasm