1、开发环境搭建
我们用VS2013进行汇编测试,步骤截图如下:
(1)创建一个空项目
(2)下一步 右键选择生成依赖项-》生成自定义
(3)下一步 选择 masm
(4)下一步 右键打开工程属性
(5)选择子系统为控制台和设置程序入口点
6、创建文件
7、运行代码如下
.386 ;指令集
.model flat,stdcall ;存储模式,平坦内存模式flat 语言类型为stdcall 从右向左压栈
option casemap:none ;大小写敏感
includelib msvcrt.lib ; 引入静态数据链接库,相当于#include<stdio.h>
printf proto C:VARARG ;声明需要使用的函数头,函数不由被调用者清栈,而是由调用者负责清栈
.data ;全局静态区
msg db "Hello World!", ;分配字符串空间,存储“Hello World!”
0dh, 0ah, 0 ;//回车 换行
.code ;代码区
start: ;start标号,无实际意义,也可将它修改成其他名字
call main ;调用main函数
ret ;近返回,出栈1个字单元,改变EIP指向;远返回为retf
main proc ;main子程序
push offset msg ;获取msg的偏移值 压栈
call printf ;调用上面声明的printf
add esp,4 ; 子程序结束,弹出4字节,平衡堆栈
ret
main endp
end start
8、调试运行结果截图
参考网址:https://blog.youkuaiyun.com/huhaoxuan2010/article/details/77197911