如何解决如何在汇编中打印Hello World?
我下载了库文件Irvine32,然后在Visual Studio空项目中创建了程序集。我是汇编语言的新手。下面是我的代码。
?.
解决方法
下面是使用Visual Studio的本机库而不是Irvine库的Windows控制台程序的示例代码。 Visual Studio 2015和更高版本将printf内联到已编译的代码中,通常需要使用main()生成C源文件,但是可以通过使用旧版库(包括scanf,printf等)来避免这种情况。
Visual Studio可能不会为.asm文件设置默认版本。在这种情况下,请在解决方案资源管理器窗口中右键单击.asm文件名,然后单击属性。将“从构建中排除”设置为“否”,将项目类型设置为自定义构建工具,然后应用。然后在自定义构建工具窗口中,使用x.asm作为文件名:
command line: ml /c /Zi /Fo$(OutDir)\x.obj x.asm
...
output file: $(OutDir)\x.obj
对调试和发行版都执行此操作。对于发行版,不需要/ Zi:
command line: ml /c /Fo$(OutDir)\x.obj x.asm
示例代码:
.686p ;enable instructions
.xmm ;enable instructions
.model flat,c ;use C naming convention (stdcall is default)
; include C libraries
includelib msvcrtd
includelib oldnames
includelib legacy_stdio_definitions.lib ;for scanf,printf,...
.data ;initialized data
msg db "Hello again,World!",00dh,00ah,000h ;added CR,LF to msg
.data? ;uinitialized data
.stack 4096 ;stack (optional,linker will default)
.code ;code
extrn printf:near
public main
main proc
push offset msg
call printf
add esp,4
xor eax,eax
ret
main endp
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。