我想开始学习汇编,但它没有运行任何方式。首先,我尝试与py il与python,但它没有工作。现在我有一个Visual Studio 2022,我安装了MASM32。问题是Visual Studio给一个A1000错误,所以它找不到文件,第二个错误:
- MSB3721命令"ml.exe/c/nologo/Zi/Fo"调试\Main. obj "/W3/errorReport:提示符/TaMain.asm "已退出,代码为1。模板C:\程序文件\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\生成自定义项\masm.targets *
所以我检查了模板文件的属性〉链接器:输出文件:D:组装
其他库目录:C:\用户\用户\来源\repos\模板\模板
检查Main.asm文件的属性〉常规〉Ithem类型后:Microsoft宏汇编程序
我的密码是:
INCLUDE Irvine32.inc
.386
.model flat, stdcall
.stack 4049
ExitProcess PROTO, dwExitCode:DWORD
.data
; define your variables here
.code
main PROC
; write your assembly code here
mov eax, 3
mov ebx, 5
add eax, ebx
INVOKE ExitProcess, 0
main ENDP
END main
可能是什么问题?谢谢你的回答!
1条答案
按热度按时间e4yzc0pl1#
Visual Studio 2022和之前的版本包括32位masm(ml.exe)和64位masm(ml64.exe)。我没有使用项目默认值,而是从空项目开始并添加自定义生成信息。我使用的步骤如下:
创建空的控制台项目,使用相同的目录...,创建一个目录。 shell 化并将源文件复制到目录中。添加现有项以将源文件添加到项目中。双击文件名以使其显示在主窗口中。
我使用的项目特性:
我使用的源文件属性:
对于64位版本,请使用ml 64(64位汇编程序)而不是ml。
当进行构建时,忽略关于/LTCG(整个代码优化)的链接警告,打开它不是问题。随机基址会影响一些处理器上的基准测试,这就是为什么我关闭它。
链接到包含源代码示例的先前答案:
https://stackoverflow.com/a/64676049/3282056
Irvine32.inc有可能需要修改才能与Visual Studio一起使用(我从来没有用过它)。前面答案中的示例masm代码使用Visual Studio包含文件(用于.lib引用)。正如前面答案中所指出的,自VS 2015以来,printf和scanf需要使用遗留库。
当我对使用某些库或命名约定(如C++ mangled函数名)有疑问时,我会用C编写代码|C编写,并让Visual Studio生成汇编代码以获取调用序列代码。