汇编环境搭建 -- Visual Studio

1. 创建空项目
3110861-6556492a15b5447b.png
图1.png
2. 生成MASM规则

项目右键 -> 生成自定义 -> 勾选masm选项


3110861-acdc8369b82e32c2.png
图2.png

3110861-06ddc27d17b47054.png
图3.png
3. 添加源文件

选择源文件右键->添加->新建项,新建时将文件的后缀名修改为.asm(注意必须此时改)

3110861-7bc971c1b8f627a6.png
图4.png

4. 设置属性
  • 选中项目右键 ->属性-> 链接器->系统-> 子系统 -> "控制台(SUBSYSTEM:CONSOLE)" -> 应用


    3110861-3b9e567aee3233e7.png
    图5.png
  • 选中项目右键 ->属性 -> 链接器-> 高级 -> 入口点 -> 输入"main@0" -> 应用


    3110861-f9a8aa4da40711ae.png
    图6.png
5. 输入代码
.486        ; 定义32位程序可以接受32位的寄存器和地址
.model flat, stdcall    ; 选择程序的内存模式为平坦模式,stdcall调用习惯
.stack 4096             ; 设置运行的堆栈大小为4096字节
; 分号为单行注释, COMMENT&...&为多行注释
COMMENT &
    定义了一个ExitProcess函数, 它是标准的Windows服务。PROTO是原型关键字, 
    并定义了一个DWORD类型的输入参数, 函数返回0认为我们执行成功
&
ExitProcess PROTO, dwExitCode: DWORD    

.data
    sum  DWORD 0    ; 定义变量

.code
main PROC           ; 定义主函数开始位置
    mov eax, 5      ; 将eax寄存器的值设置为5
    add eax, 6      ; 为eax寄存器加5
    mov sum, eax    ; 将eax的设置给sum变量

    INVOKE ExitProcess, 0   ; 退出程序
main ENDP           ; 函数结束位置, ENDP 之前的内容,要与PROC 
END main            ; 设置了函数的入口与出口
6. 运行

注:此时运行无任何效果,因为程序中没有打印

7. 调试查看值
3110861-d47f7b5a6e861687.gif
效果图.gif
8. 特别说明

之前搭建了一篇汇编环境搭建 -- MASM32,此文将开发工具由MASM32更改为Visual Studio的原因为:

  • Assembly Language for x86 Processors (7th Edition) 一书的作者在文中使用此工具
  • 汇编语言的不可移植性
  • MASM32 开发复杂,工具的不完善性,此工具可查看堆栈信息,方便调试
  • 可以看出在不同工具下的汇编代码框架是不同的,因此程序要因开发工具特定
9. Visual Studio 快捷键
  • Ctrl+F5:编译-链接-运行
  • F5:调试
  • 修改字体大小:工具 -> 选项 -> 环境 -> 字体和颜色
  • 添加行号:工具 -> 选项 -> 文本编辑器 -> 纯文本 -> 常规 -> 行号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值