【发布时间】:2018-08-21 21:21:11
【问题描述】:
this introduction中有一个示例代码,如下所示:
; Sample x64 Assembly Program
; Chris Lomont 2009 www.lomont.org
extrn ExitProcess: PROC ; external functions in system libraries
extrn MessageBoxA: PROC
.data
caption db '64-bit hello!', 0
message db 'Hello World!', 0
.code
Start PROC
sub rsp,28h ; shadow space, aligns stack
mov rcx, 0 ; hWnd = HWND_DESKTOP
lea rdx, message ; LPCSTR lpText
lea r8, caption ; LPCSTR lpCaption
mov r9d, 0 ; uType = MB_OK
call MessageBoxA ; call MessageBox API function
mov ecx, eax ; uExitCode = MessageBox(...)
call ExitProcess
Start ENDP
End
上面的代码在hello.asm里面,在Windows上可以编译:
ml64 hello.asm /link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user32.lib /entry:Start
我无法访问 Windows 和 MASM,因为我在 Linux 上使用 NASM。我想如果我在 Linux 上编译代码,我可以用Wine 运行它。但是,我无法弄清楚如何在 Linux 上使用 NASM 编译它,而且我也无法弄清楚与 MASM 等效的 NASM 选项是什么。有人可以帮帮我吗?
【问题讨论】:
-
你应该可以找到一个nasm语法hello world。
-
我推荐阅读一些其他的汇编教程。顺便说一句,另请参阅 Assembler HowTo 并阅读 syscalls(2)
-
@BasileStarynkevitch 我为这些链接添加了书签。我要研究它们。谢谢。
标签: winapi assembly x86-64 nasm masm