我对编程一窍不通。
我想写一个用64位masm来显示hello的程序。
我将VS代码与ml64.exe和gcc一起使用。
下面是我写的:
;; file name: hello.asm
printf proto
.data
messenge dq "hello", 0
.code
main proc
sub rsp, 40h
mov rcx, messenge
call printf
add rsp, 40h
ret
main endp
end
然后我编写一个脚本来进行组装、链接和执行:
@:: file name: run.cmd
@ml64 /c hello.asm
@gcc -o hello.exe hello.obj
@del *.obj
@hello.exe
它是这样的:
C:\code\MASM>run.cmd
Microsoft (R) Macro Assembler (x64) Version 14.25.28614.0
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: hello.asm
它没有输出hello字符串。
我该怎么修呢?
2条答案
按热度按时间6bc51xsx1#
我只使用
ml64 hello.asm
(没有gcc)构建了这个。基本上就是迈克尔说的。
zc0qhyus2#
要使ml 64 hello.asm正常工作,需要在命令行上将LIB环境变量设置为:
Microsoft Visual Studio中的所有程序文件都是由Microsoft Visual Studio开发的。C:\程序文件(x86)\Windows工具包\10\Lib\10.0.18362.0\um\x64; C:\程式档(x86)\Windows套件\10\数据库\10.0.18362.0\ucrt\x64
您可以使用文件资源管理器查找x64版本的libcmt.lib、kernel32.lib和ucrt.lib,并将它们替换为上面的LIB设置。
ml64.exe位于C:\程序文件(x86)\Microsoft Visual Studio \2019\社区\VC\工具\MSVC\14.28.29333\bin\Hostx64\x64中,您需要将其添加到PATH变量中。
然后:ml 64 hello. asm
它将创建您可以运行的hello.exe。