Windows平台编写汇编语言


写在前面

原本使用notepad++编写汇编语言,如今因为需要加入图形界面,所以这里引入MASM32工具包

安装时注意回弹出一个窗口选择安装的根目录位置,一般选择C盘,防止后续出现权限不足的清空

使用方法详见教程

VS2022配置汇编语言环境

注意,默认vs2022所带的平台工具集版本版本较高,无法正常支持masm32, 需要按照低版本的工具集。

如果已经安装了vs,则在菜单栏选择工具 -> 获取工具和功能 -> 修改,正常安装从官网下载

选择C++开发组件后,在单个组件里找到如下3个组件

设置好安装位置(缓存可以不保留),这里不建议保存在C盘,设置好后右下角安装

安装完毕后,创建新项目,选择控制台应用,设置好创建的文件夹

移除已有cpp,在弹出的窗口中选择删除

在下图蓝色项目名称中右键,生成依赖项->生成自定义->选中masm

接着在源文件中右键添加新项目,以.asm命名

因为masm是32位的,所以设置解决方案平台配置为x86

右键项目名称,选择属性,在链接器中找到高级,设置入口点为mainT

同时在VC++目录中设置包含目录为之前安装的masm32路径

这里我的路径是C:\masm32\include;$(IncludePath)

在链接器-常规中设置附加库目录

这里我的路径是C:\masm32\lib;%(AdditionalLibraryDirectories)

在配置属性-常规中设置windows sdk版本和平台工具集vs2015(v140)

现在可以开始写代码了,注意入口mainT

.386
.model flat, stdcall
.stack 4096
option casemap:none
 
include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
 
.data
	szCaption	db	'A MessageBox !',0
	szText		db	'Hello, World !',0
; 代码段
.code
mainT PROC
	invoke	MessageBox,NULL,offset szText,offset szCaption,MB_OK
	invoke	ExitProcess,NULL
 
mainT ENDP
 
END mainT

参考

参考1

参考2

参考3


文章作者: Alex Lee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex Lee !
评论
  目录