ASM32 4 masm32汇编环境配置和简单代码示例
masm32汇编环境配置
下载并安装masm32
打开http://www.masm32.com/download/masm32v11r.zip
下载masm32,并将压缩包解压,解压完成后,运行安装文件install.exe,具体安装步骤除了指定路径,就一路YES|OK就可以。
然后在这两处添加masm32中lib和include文件夹的地址


容易出现的问题
可能在编译的时候出现错误:A2026 constant expected
解决方案:https://blog.csdn.net/weixin_50836014/article/details/124880063
代码示例
1 | .386 ;指令集 |
这是一个简单的 Windows 应用程序框架,用于创建一个窗口并处理基本的消息循环。代码是用 x86 汇编语言编写的,下面是对每一行代码的分析:
指令集和模型设置
1 | .386 ; 指令集,表示使用 80386 及以上的指令集 |
.386:指明代码使用 80386 或更高版本的指令集。.model flat,stdcall:选择平面内存模型和stdcall调用约定。OPTION CASEMAP:none:关闭大小写不敏感处理,区分大小写。
引入必要的库和头文件
1 | include windows.inc |
include windows.inc等:包含 Windows API 函数的声明。includelib:链接所需的 Windows 库,这些库包含了 Windows API 的实现。
常量定义
1 | .const |
CLASS_NAME和WINDOW_NAME定义了窗口类名和窗口名的字符串。
主窗口过程 (Window Procedure)
1 | .code |
MainWndProc proc:这是窗口过程的入口,处理发送到窗口的消息。uMsg == WM_CLOSE:如果收到WM_CLOSE消息(窗口关闭),调用PostQuitMessage结束消息循环。invoke DefWindowProc:对于未处理的消息,调用默认的窗口过程。ret:返回结果。
程序入口点 (Entry Point)
1 | START proc |
START proc:程序的入口点,定义局部变量。@wcx:WNDCLASSEX:定义一个WNDCLASSEX结构,用于注册窗口类。@hInstance:HINSTANCE:存储应用程序的实例句柄。@hWnd:HWND:存储创建的窗口句柄。@msg:MSG:存储消息结构,用于消息循环。
注册窗口类
1 | mov @wcx.cbSize,sizeof @wcx |
- 设置
@wcx的各个字段,用于窗口类的注册:cbSize:结构体的大小。style:窗口类的风格,这里是横向和纵向重新绘制。lpfnWndProc:窗口过程的指针。hInstance:应用程序的实例句柄。hIcon:窗口的图标。hCursor:窗口的光标。hbrBackground:窗口背景的画刷。lpszClassName:窗口类名。
注册窗口类并创建窗口
1 | invoke RegisterClassEx,addr @wcx |
invoke RegisterClassEx:注册窗口类。invoke CreateWindowEx:创建窗口。- 如果注册或创建失败,程序会返回(退出)。
显示窗口
1 | mov @hWnd,eax |
ShowWindow:显示创建的窗口。
消息循环
1 | .while TRUE |
while TRUE:开始消息循环。GetMessage:从消息队列中获取消息。TranslateMessage:将虚拟按键消息翻译为字符消息。DispatchMessage:将消息分发到窗口过程。ExitProcess:当消息循环结束时,退出程序。
运行结果

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo!